From 475cd28e6764137c93a3f66453f9b678e2c5a08f Mon Sep 17 00:00:00 2001 From: Michal Simek Date: Fri, 21 Oct 2016 12:58:17 +0200 Subject: [PATCH] tools: mkimage: Extend mkimage to also include pmufw This is generated command line when PMUFW_INIT_FILE is setup. ./tools/mkimage -T zynqmpimage -R ./"" -n ./"board/xilinx/zynqmp/pmufw.bin" -d spl/u-boot-spl.bin spl/boot.bin pmufw has to be in binary format and mkimage is using dynamic header size generation without using calloc function based on pmufw size. Boot.bin header is filled with pmufw size and pmufw is copied to header data section. When header is generated mkimage append u-boot-spl.bin. This patch also add pmufw to the u-boot tree with enabling it for zcu100 and zcu102. Signed-off-by: Michal Simek Signed-off-by: Michal Simek --- arch/arm/cpu/armv8/zynqmp/Kconfig | 8 ++ board/xilinx/zynqmp/pmufw.bin | Bin 0 -> 129760 bytes configs/xilinx_zynqmp_zcu102_defconfig | 1 + scripts/Makefile.spl | 3 +- tools/zynqmpimage.c | 100 ++++++++++++++++++++++++- 5 files changed, 110 insertions(+), 2 deletions(-) create mode 100755 board/xilinx/zynqmp/pmufw.bin diff --git a/arch/arm/cpu/armv8/zynqmp/Kconfig b/arch/arm/cpu/armv8/zynqmp/Kconfig index e847cba3f0b..34df59db9f0 100644 --- a/arch/arm/cpu/armv8/zynqmp/Kconfig +++ b/arch/arm/cpu/armv8/zynqmp/Kconfig @@ -19,11 +19,19 @@ config SYS_CONFIG_NAME config BOOT_INIT_FILE string "boot.bin init register filename" + depends on SPL default "" help Add register writes to boot.bin format (max 256 pairs). Expect a table of register-value pairs, e.g. "0x12345678 0x4321" +config PMUFW_INIT_FILE + string "PMU firwmare" + depends on SPL + default "" + help + Include PMUFW to boot.bin. + config ZYNQMP_QSPI bool "Configure ZynqMP QSPI" select DM_SPI diff --git a/board/xilinx/zynqmp/pmufw.bin b/board/xilinx/zynqmp/pmufw.bin new file mode 100755 index 0000000000000000000000000000000000000000..8151a5a0b2737c507cb0eba89d6e0166c1d90a5a GIT binary patch literal 129760 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 literal 0 Hc-jL100001 diff --git a/configs/xilinx_zynqmp_zcu102_defconfig b/configs/xilinx_zynqmp_zcu102_defconfig index 627f6364f06..4616406bdca 100644 --- a/configs/xilinx_zynqmp_zcu102_defconfig +++ b/configs/xilinx_zynqmp_zcu102_defconfig @@ -6,6 +6,7 @@ CONFIG_SPL_SYS_MALLOC_SIMPLE=y CONFIG_SPL_DM=y CONFIG_DM_SPI_FLASH=y CONFIG_DM_GPIO=y +CONFIG_PMUFW_INIT_FILE="board/xilinx/zynqmp/pmufw.bin" CONFIG_ZYNQMP_QSPI=y CONFIG_ZYNQMP_USB=y CONFIG_SYS_TEXT_BASE=0x8000000 diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl index 5005c464263..7ceb4909c56 100644 --- a/scripts/Makefile.spl +++ b/scripts/Makefile.spl @@ -138,7 +138,8 @@ ifdef CONFIG_ARCH_ZYNQ MKIMAGEFLAGS_boot.bin = -T zynqimage -R $(srctree)/$(CONFIG_BOOT_INIT_FILE) endif ifdef CONFIG_ARCH_ZYNQMP -MKIMAGEFLAGS_boot.bin = -T zynqmpimage -R $(srctree)/$(CONFIG_BOOT_INIT_FILE) +MKIMAGEFLAGS_boot.bin = -T zynqmpimage -R $(srctree)/$(CONFIG_BOOT_INIT_FILE) \ + -n $(srctree)/$(CONFIG_PMUFW_INIT_FILE) endif spl/boot.bin: $(obj)/u-boot-spl.bin FORCE diff --git a/tools/zynqmpimage.c b/tools/zynqmpimage.c index 60d8ed23b4a..8260e5dd152 100644 --- a/tools/zynqmpimage.c +++ b/tools/zynqmpimage.c @@ -99,6 +99,8 @@ struct zynqmp_header { }; static struct zynqmp_header zynqmpimage_header; +static void *dynamic_header; +static FILE *fpmu; static uint32_t zynqmpimage_checksum(struct zynqmp_header *ptr) { @@ -181,6 +183,13 @@ static void zynqmpimage_print_header(const void *ptr) printf("Image Size : %lu bytes (%lu bytes packed)\n", (unsigned long)le32_to_cpu(zynqhdr->image_size), (unsigned long)le32_to_cpu(zynqhdr->image_stored_size)); + + if (zynqhdr->pfw_image_length) + printf("PMUFW Size : %lu bytes (%lu bytes packed)\n", + (unsigned long)le32_to_cpu(zynqhdr->pfw_image_length), + (unsigned long)le32_to_cpu( + zynqhdr->total_pfw_image_length)); + printf("Image Load : 0x%08x\n", le32_to_cpu(zynqhdr->image_load)); printf("Checksum : 0x%08x\n", le32_to_cpu(zynqhdr->checksum)); @@ -203,6 +212,8 @@ static void zynqmpimage_print_header(const void *ptr) le32_to_cpu(zynqhdr->register_init[i].address), le32_to_cpu(zynqhdr->register_init[i].data)); } + + free(dynamic_header); } static int zynqmpimage_check_params(struct image_tool_params *params) @@ -234,6 +245,44 @@ static int zynqmpimage_check_image_types(uint8_t type) return EXIT_FAILURE; } +static int fsize(FILE *fp) +{ + int size; + int origin = ftell(fp); + + fseek(fp, 0L, SEEK_END); + size = ftell(fp); + + /* going back */ + fseek(fp, origin, SEEK_SET); + + return size; +} + +static void zynqmpimage_pmufw(struct zynqmp_header *zynqhdr, + const char *filename) +{ + uint32_t size; + + /* Setup PMU fw size */ + zynqhdr->pfw_image_length = fsize(fpmu); + zynqhdr->total_pfw_image_length = zynqhdr->pfw_image_length; + + zynqhdr->image_size -= zynqhdr->pfw_image_length; + zynqhdr->image_stored_size -= zynqhdr->total_pfw_image_length; + + /* Read the whole PMUFW to the header */ + size = fread(&zynqhdr->__reserved4[66], 1, + zynqhdr->pfw_image_length, fpmu); + if (size != zynqhdr->pfw_image_length) { + fprintf(stderr, "Cannot read PMUFW file: %s\n", filename); + fclose(fpmu); + exit(1); + } + + fclose(fpmu); +} + static void zynqmpimage_parse_initparams(struct zynqmp_header *zynqhdr, const char *filename) { @@ -284,6 +333,10 @@ static void zynqmpimage_set_header(void *ptr, struct stat *sbuf, int ifd, if (params->eflag) zynqhdr->image_load = cpu_to_le32((uint32_t)params->ep); + /* PMUFW */ + if (fpmu) + zynqmpimage_pmufw(zynqhdr, params->imagename); + /* User can pass in text file with init list */ if (strlen(params->imagename2)) zynqmpimage_parse_initparams(zynqhdr, params->imagename2); @@ -291,6 +344,51 @@ static void zynqmpimage_set_header(void *ptr, struct stat *sbuf, int ifd, zynqhdr->checksum = zynqmpimage_checksum(zynqhdr); } + +static int zynqmpimage_vrec_header(struct image_tool_params *params, + struct image_type_params *tparams) +{ + struct stat path_stat; + char *filename = params->imagename; + int err; + + /* Handle static case without PMUFW */ + tparams->header_size = sizeof(struct zynqmp_header); + tparams->hdr = (void *)&zynqmpimage_header; + + /* PMUFW name is passed via params->imagename */ + if (strlen(filename) == 0) + return EXIT_SUCCESS; + + fpmu = fopen(filename, "r"); + if (!fpmu) { + fprintf(stderr, "Cannot open PMUFW file: %s\n", filename); + return EXIT_FAILURE; + } + + err = fstat(fileno(fpmu), &path_stat); + if (err) { + fclose(fpmu); + fpmu = NULL; + return EXIT_FAILURE; + } + + if (!S_ISREG(path_stat.st_mode)) { + fclose(fpmu); + fpmu = NULL; + return EXIT_FAILURE; + } + + /* Increase header size by PMUFW file size */ + tparams->header_size += fsize(fpmu); + + /* Allocate buffer with space for PMUFW */ + dynamic_header = calloc(1, tparams->header_size); + tparams->hdr = dynamic_header; + + return EXIT_SUCCESS; +} + U_BOOT_IMAGE_TYPE( zynqmpimage, "Xilinx ZynqMP Boot Image support", @@ -303,5 +401,5 @@ U_BOOT_IMAGE_TYPE( NULL, zynqmpimage_check_image_types, NULL, - NULL + zynqmpimage_vrec_header ); -- 2.47.3