[U-Boot] [PATCH v2 REPOST 1/3] [COSMETIC] checkpatch whitespace cleanups

This avoids the following checkpatch warning in later patches:
ERROR: "(foo*)" should be "(foo *)" ERROR: space required before the open brace '{' ERROR: space prohibited before that close parenthesis ')' ERROR: spaces required around that '||' (ctx:WxV) WARNING: space prohibited between function name and open parenthesis '(' WARNING: line over 80 characters
This fixes all the white-space warnings/errors in my subsequent patch, and within this current patch. A number of other checkpatch warnings and errors are still present in this patch itself, but are beyond simple whitespace fixes, so are not solved by this patch.
v2: New patch
Signed-off-by: Stephen Warren swarren@nvidia.com --- common/cmd_bootm.c | 547 ++++++++++++----------- common/cmd_ximg.c | 72 ++-- common/image.c | 1187 ++++++++++++++++++++++++++----------------------- common/lynxkdi.c | 34 +- include/image.h | 230 +++++----- tools/default_image.c | 56 ++-- 6 files changed, 1101 insertions(+), 1025 deletions(-)
diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c index bb9b698..b96ab07 100644 --- a/common/cmd_bootm.c +++ b/common/cmd_bootm.c @@ -72,27 +72,28 @@ extern void bz_internal_error(int); #endif
#if defined(CONFIG_CMD_IMI) -static int image_info (unsigned long addr); +static int image_info(unsigned long addr); #endif
#if defined(CONFIG_CMD_IMLS) #include <flash.h> #include <mtd/cfi_flash.h> extern flash_info_t flash_info[]; /* info for FLASH chips */ -static int do_imls (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]); +static int do_imls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]); #endif
#ifdef CONFIG_SILENT_CONSOLE -static void fixup_silent_linux (void); +static void fixup_silent_linux(void); #endif
-static image_header_t *image_get_kernel (ulong img_addr, int verify); +static image_header_t *image_get_kernel(ulong img_addr, int verify); #if defined(CONFIG_FIT) -static int fit_check_kernel (const void *fit, int os_noffset, int verify); +static int fit_check_kernel(const void *fit, int os_noffset, int verify); #endif
-static void *boot_get_kernel (cmd_tbl_t *cmdtp, int flag,int argc, char * const argv[], - bootm_headers_t *images, ulong *os_data, ulong *os_len); +static void *boot_get_kernel(cmd_tbl_t *cmdtp, int flag, int argc, + char * const argv[], bootm_headers_t *images, + ulong *os_data, ulong *os_len);
/* * Continue booting an OS image; caller already has: @@ -102,7 +103,7 @@ static void *boot_get_kernel (cmd_tbl_t *cmdtp, int flag,int argc, char * const * - loaded (first part of) image to header load address, * - disabled interrupts. */ -typedef int boot_os_fn (int flag, int argc, char * const argv[], +typedef int boot_os_fn(int flag, int argc, char * const argv[], bootm_headers_t *images); /* pointers to os/initrd/fdt */
#ifdef CONFIG_BOOTM_LINUX @@ -113,7 +114,7 @@ static boot_os_fn do_bootm_netbsd; #endif #if defined(CONFIG_LYNXKDI) static boot_os_fn do_bootm_lynxkdi; -extern void lynxkdi_boot (image_header_t *); +extern void lynxkdi_boot(image_header_t *); #endif #ifdef CONFIG_BOOTM_RTEMS static boot_os_fn do_bootm_rtems; @@ -124,8 +125,8 @@ static boot_os_fn do_bootm_ose; #if defined(CONFIG_CMD_ELF) static boot_os_fn do_bootm_vxworks; static boot_os_fn do_bootm_qnxelf; -int do_bootvx (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]); -int do_bootelf (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]); +int do_bootvx(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]); +int do_bootelf(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]); #endif #if defined(CONFIG_INTEGRITY) static boot_os_fn do_bootm_integrity; @@ -192,81 +193,81 @@ static int bootm_start(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[] void *os_hdr; int ret;
- memset ((void *)&images, 0, sizeof (images)); - images.verify = getenv_yesno ("verify"); + memset((void *)&images, 0, sizeof(images)); + images.verify = getenv_yesno("verify");
bootm_start_lmb();
/* get kernel image header, start address and length */ - os_hdr = boot_get_kernel (cmdtp, flag, argc, argv, + os_hdr = boot_get_kernel(cmdtp, flag, argc, argv, &images, &images.os.image_start, &images.os.image_len); if (images.os.image_len == 0) { - puts ("ERROR: can't get kernel image!\n"); + puts("ERROR: can't get kernel image!\n"); return 1; }
/* get image parameters */ - switch (genimg_get_format (os_hdr)) { + switch (genimg_get_format(os_hdr)) { case IMAGE_FORMAT_LEGACY: - images.os.type = image_get_type (os_hdr); - images.os.comp = image_get_comp (os_hdr); - images.os.os = image_get_os (os_hdr); + images.os.type = image_get_type(os_hdr); + images.os.comp = image_get_comp(os_hdr); + images.os.os = image_get_os(os_hdr);
- images.os.end = image_get_image_end (os_hdr); - images.os.load = image_get_load (os_hdr); + images.os.end = image_get_image_end(os_hdr); + images.os.load = image_get_load(os_hdr); break; #if defined(CONFIG_FIT) case IMAGE_FORMAT_FIT: - if (fit_image_get_type (images.fit_hdr_os, + if (fit_image_get_type(images.fit_hdr_os, images.fit_noffset_os, &images.os.type)) { - puts ("Can't get image type!\n"); - show_boot_progress (-109); + puts("Can't get image type!\n"); + show_boot_progress(-109); return 1; }
- if (fit_image_get_comp (images.fit_hdr_os, + if (fit_image_get_comp(images.fit_hdr_os, images.fit_noffset_os, &images.os.comp)) { - puts ("Can't get image compression!\n"); - show_boot_progress (-110); + puts("Can't get image compression!\n"); + show_boot_progress(-110); return 1; }
- if (fit_image_get_os (images.fit_hdr_os, + if (fit_image_get_os(images.fit_hdr_os, images.fit_noffset_os, &images.os.os)) { - puts ("Can't get image OS!\n"); - show_boot_progress (-111); + puts("Can't get image OS!\n"); + show_boot_progress(-111); return 1; }
- images.os.end = fit_get_end (images.fit_hdr_os); + images.os.end = fit_get_end(images.fit_hdr_os);
- if (fit_image_get_load (images.fit_hdr_os, images.fit_noffset_os, + if (fit_image_get_load(images.fit_hdr_os, images.fit_noffset_os, &images.os.load)) { - puts ("Can't get image load address!\n"); - show_boot_progress (-112); + puts("Can't get image load address!\n"); + show_boot_progress(-112); return 1; } break; #endif default: - puts ("ERROR: unknown image format type!\n"); + puts("ERROR: unknown image format type!\n"); return 1; }
/* find kernel entry point */ if (images.legacy_hdr_valid) { - images.ep = image_get_ep (&images.legacy_hdr_os_copy); + images.ep = image_get_ep(&images.legacy_hdr_os_copy); #if defined(CONFIG_FIT) } else if (images.fit_uname_os) { - ret = fit_image_get_entry (images.fit_hdr_os, + ret = fit_image_get_entry(images.fit_hdr_os, images.fit_noffset_os, &images.ep); if (ret) { - puts ("Can't get entry point property!\n"); + puts("Can't get entry point property!\n"); return 1; } #endif } else { - puts ("Could not find kernel entry point!\n"); + puts("Could not find kernel entry point!\n"); return 1; }
@@ -274,19 +275,19 @@ static int bootm_start(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[] (images.os.type == IH_TYPE_MULTI)) && (images.os.os == IH_OS_LINUX)) { /* find ramdisk */ - ret = boot_get_ramdisk (argc, argv, &images, IH_INITRD_ARCH, + ret = boot_get_ramdisk(argc, argv, &images, IH_INITRD_ARCH, &images.rd_start, &images.rd_end); if (ret) { - puts ("Ramdisk image is corrupt or invalid\n"); + puts("Ramdisk image is corrupt or invalid\n"); return 1; }
#if defined(CONFIG_OF_LIBFDT) /* find flattened device tree */ - ret = boot_get_fdt (flag, argc, argv, &images, - &images.ft_addr, &images.ft_len); + ret = boot_get_fdt(flag, argc, argv, &images, + &images.ft_addr, &images.ft_len); if (ret) { - puts ("Could not find a valid device tree\n"); + puts("Could not find a valid device tree\n"); return 1; }
@@ -316,15 +317,15 @@ static int bootm_load_os(image_info_t os, ulong *load_end, int boot_progress) int ret; #endif /* defined(CONFIG_LZMA) || defined(CONFIG_LZO) */
- const char *type_name = genimg_get_type_name (os.type); + const char *type_name = genimg_get_type_name(os.type);
switch (comp) { case IH_COMP_NONE: if (load == blob_start || load == image_start) { - printf (" XIP %s ... ", type_name); + printf(" XIP %s ... ", type_name); } else { - printf (" Loading %s ... ", type_name); - memmove_wd ((void *)load, (void *)image_start, + printf(" Loading %s ... ", type_name); + memmove_wd((void *)load, (void *)image_start, image_len, CHUNKSZ); } *load_end = load + image_len; @@ -332,13 +333,13 @@ static int bootm_load_os(image_info_t os, ulong *load_end, int boot_progress) break; #ifdef CONFIG_GZIP case IH_COMP_GZIP: - printf (" Uncompressing %s ... ", type_name); - if (gunzip ((void *)load, unc_len, - (uchar *)image_start, &image_len) != 0) { - puts ("GUNZIP: uncompress, out-of-mem or overwrite error " - "- must RESET board to recover\n"); + printf(" Uncompressing %s ... ", type_name); + if (gunzip((void *)load, unc_len, + (uchar *)image_start, &image_len) != 0) { + puts("GUNZIP: uncompress, out-of-mem or overwrite " + "error - must RESET board to recover\n"); if (boot_progress) - show_boot_progress (-6); + show_boot_progress(-6); return BOOTM_ERR_RESET; }
@@ -347,20 +348,20 @@ static int bootm_load_os(image_info_t os, ulong *load_end, int boot_progress) #endif /* CONFIG_GZIP */ #ifdef CONFIG_BZIP2 case IH_COMP_BZIP2: - printf (" Uncompressing %s ... ", type_name); + printf(" Uncompressing %s ... ", type_name); /* * If we've got less than 4 MB of malloc() space, * use slower decompression algorithm which requires * at most 2300 KB of memory. */ - int i = BZ2_bzBuffToBuffDecompress ((char*)load, + int i = BZ2_bzBuffToBuffDecompress((char *)load, &unc_len, (char *)image_start, image_len, CONFIG_SYS_MALLOC_LEN < (4096 * 1024), 0); if (i != BZ_OK) { - printf ("BUNZIP2: uncompress or overwrite error %d " + printf("BUNZIP2: uncompress or overwrite error %d " "- must RESET board to recover\n", i); if (boot_progress) - show_boot_progress (-6); + show_boot_progress(-6); return BOOTM_ERR_RESET; }
@@ -370,16 +371,16 @@ static int bootm_load_os(image_info_t os, ulong *load_end, int boot_progress) #ifdef CONFIG_LZMA case IH_COMP_LZMA: { SizeT lzma_len = unc_len; - printf (" Uncompressing %s ... ", type_name); + printf(" Uncompressing %s ... ", type_name);
ret = lzmaBuffToBuffDecompress( (unsigned char *)load, &lzma_len, (unsigned char *)image_start, image_len); unc_len = lzma_len; if (ret != SZ_OK) { - printf ("LZMA: uncompress or overwrite error %d " + printf("LZMA: uncompress or overwrite error %d " "- must RESET board to recover\n", ret); - show_boot_progress (-6); + show_boot_progress(-6); return BOOTM_ERR_RESET; } *load_end = load + unc_len; @@ -388,16 +389,16 @@ static int bootm_load_os(image_info_t os, ulong *load_end, int boot_progress) #endif /* CONFIG_LZMA */ #ifdef CONFIG_LZO case IH_COMP_LZO: - printf (" Uncompressing %s ... ", type_name); + printf(" Uncompressing %s ... ", type_name);
ret = lzop_decompress((const unsigned char *)image_start, image_len, (unsigned char *)load, &unc_len); if (ret != LZO_E_OK) { - printf ("LZO: uncompress or overwrite error %d " + printf("LZO: uncompress or overwrite error %d " "- must RESET board to recover\n", ret); if (boot_progress) - show_boot_progress (-6); + show_boot_progress(-6); return BOOTM_ERR_RESET; }
@@ -405,20 +406,22 @@ static int bootm_load_os(image_info_t os, ulong *load_end, int boot_progress) break; #endif /* CONFIG_LZO */ default: - printf ("Unimplemented compression type %d\n", comp); + printf("Unimplemented compression type %d\n", comp); return BOOTM_ERR_UNIMPLEMENTED; }
flush_cache(load, (*load_end - load) * sizeof(ulong));
- puts ("OK\n"); - debug (" kernel loaded at 0x%08lx, end = 0x%08lx\n", load, *load_end); + puts("OK\n"); + debug(" kernel loaded at 0x%08lx, end = 0x%08lx\n", load, *load_end); if (boot_progress) - show_boot_progress (7); + show_boot_progress(7);
if ((load < blob_end) && (*load_end > blob_start)) { - debug ("images.os.start = 0x%lX, images.os.end = 0x%lx\n", blob_start, blob_end); - debug ("images.os.load = 0x%lx, load_end = 0x%lx\n", load, *load_end); + debug("images.os.start = 0x%lX, images.os.end = 0x%lx\n", + blob_start, blob_end); + debug("images.os.load = 0x%lx, load_end = 0x%lx\n", load, + *load_end);
return BOOTM_ERR_OVERLAP; } @@ -460,7 +463,8 @@ static cmd_tbl_t cmd_bootm_sub[] = { U_BOOT_CMD_MKENT(go, 0, 1, (void *)BOOTM_STATE_OS_GO, "", ""), };
-int do_bootm_subcommand (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +int do_bootm_subcommand(cmd_tbl_t *cmdtp, int flag, int argc, + char * const argv[]) { int ret = 0; long state; @@ -484,7 +488,7 @@ int do_bootm_subcommand (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv }
if (images.state >= state) { - printf ("Trying to execute a command out of order\n"); + printf("Trying to execute a command out of order\n"); return cmd_usage(cmdtp); }
@@ -535,17 +539,17 @@ int do_bootm_subcommand (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv case BOOTM_STATE_OS_CMDLINE: ret = boot_fn(BOOTM_STATE_OS_CMDLINE, argc, argv, &images); if (ret) - printf ("cmdline subcommand not supported\n"); + printf("cmdline subcommand not supported\n"); break; case BOOTM_STATE_OS_BD_T: ret = boot_fn(BOOTM_STATE_OS_BD_T, argc, argv, &images); if (ret) - printf ("bdt subcommand not supported\n"); + printf("bdt subcommand not supported\n"); break; case BOOTM_STATE_OS_PREP: ret = boot_fn(BOOTM_STATE_OS_PREP, argc, argv, &images); if (ret) - printf ("prep subcommand not supported\n"); + printf("prep subcommand not supported\n"); break; case BOOTM_STATE_OS_GO: disable_interrupts(); @@ -561,7 +565,7 @@ int do_bootm_subcommand (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv /* bootm - boot application image from image in memory */ /*******************************************************************/
-int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +int do_bootm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { ulong iflag; ulong load_end = 0; @@ -624,23 +628,26 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
if (ret < 0) { if (ret == BOOTM_ERR_RESET) - do_reset (cmdtp, flag, argc, argv); + do_reset(cmdtp, flag, argc, argv); if (ret == BOOTM_ERR_OVERLAP) { if (images.legacy_hdr_valid) { - if (image_get_type (&images.legacy_hdr_os_copy) == IH_TYPE_MULTI) - puts ("WARNING: legacy format multi component " - "image overwritten\n"); + image_header_t *hdr; + hdr = &images.legacy_hdr_os_copy; + if (image_get_type(hdr) == IH_TYPE_MULTI) + puts("WARNING: legacy format multi " + "component image " + "overwritten\n"); } else { - puts ("ERROR: new format image overwritten - " + puts("ERROR: new format image overwritten - " "must RESET the board to recover\n"); - show_boot_progress (-113); - do_reset (cmdtp, flag, argc, argv); + show_boot_progress(-113); + do_reset(cmdtp, flag, argc, argv); } } if (ret == BOOTM_ERR_UNIMPLEMENTED) { if (iflag) enable_interrupts(); - show_boot_progress (-7); + show_boot_progress(-7); return 1; } } @@ -655,7 +662,7 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) return 0; }
- show_boot_progress (8); + show_boot_progress(8);
#ifdef CONFIG_SILENT_CONSOLE if (images.os.os == IH_OS_LINUX) @@ -667,9 +674,9 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) if (boot_fn == NULL) { if (iflag) enable_interrupts(); - printf ("ERROR: booting os '%s' (%d) is not supported\n", + printf("ERROR: booting os '%s' (%d) is not supported\n", genimg_get_os_name(images.os.os), images.os.os); - show_boot_progress (-8); + show_boot_progress(-8); return 1; }
@@ -677,11 +684,11 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
boot_fn(0, argc, argv, &images);
- show_boot_progress (-9); + show_boot_progress(-9); #ifdef DEBUG - puts ("\n## Control returned to monitor - resetting...\n"); + puts("\n## Control returned to monitor - resetting...\n"); #endif - do_reset (cmdtp, flag, argc, argv); + do_reset(cmdtp, flag, argc, argv);
return 1; } @@ -713,40 +720,40 @@ int bootm_maybe_autostart(cmd_tbl_t *cmdtp, const char *cmd) * pointer to a legacy image header if valid image was found * otherwise return NULL */ -static image_header_t *image_get_kernel (ulong img_addr, int verify) +static image_header_t *image_get_kernel(ulong img_addr, int verify) { image_header_t *hdr = (image_header_t *)img_addr;
if (!image_check_magic(hdr)) { - puts ("Bad Magic Number\n"); - show_boot_progress (-1); + puts("Bad Magic Number\n"); + show_boot_progress(-1); return NULL; } - show_boot_progress (2); + show_boot_progress(2);
- if (!image_check_hcrc (hdr)) { - puts ("Bad Header Checksum\n"); - show_boot_progress (-2); + if (!image_check_hcrc(hdr)) { + puts("Bad Header Checksum\n"); + show_boot_progress(-2); return NULL; }
- show_boot_progress (3); - image_print_contents (hdr); + show_boot_progress(3); + image_print_contents(hdr);
if (verify) { - puts (" Verifying Checksum ... "); - if (!image_check_dcrc (hdr)) { - printf ("Bad Data CRC\n"); - show_boot_progress (-3); + puts(" Verifying Checksum ... "); + if (!image_check_dcrc(hdr)) { + printf("Bad Data CRC\n"); + show_boot_progress(-3); return NULL; } - puts ("OK\n"); + puts("OK\n"); } - show_boot_progress (4); + show_boot_progress(4);
- if (!image_check_target_arch (hdr)) { - printf ("Unsupported Architecture 0x%x\n", image_get_arch (hdr)); - show_boot_progress (-4); + if (!image_check_target_arch(hdr)) { + printf("Unsupported Architecture 0x%x\n", image_get_arch(hdr)); + show_boot_progress(-4); return NULL; } return hdr; @@ -765,36 +772,36 @@ static image_header_t *image_get_kernel (ulong img_addr, int verify) * 1, on success * 0, on failure */ -#if defined (CONFIG_FIT) -static int fit_check_kernel (const void *fit, int os_noffset, int verify) +#if defined(CONFIG_FIT) +static int fit_check_kernel(const void *fit, int os_noffset, int verify) { - fit_image_print (fit, os_noffset, " "); + fit_image_print(fit, os_noffset, " ");
if (verify) { - puts (" Verifying Hash Integrity ... "); - if (!fit_image_check_hashes (fit, os_noffset)) { - puts ("Bad Data Hash\n"); - show_boot_progress (-104); + puts(" Verifying Hash Integrity ... "); + if (!fit_image_check_hashes(fit, os_noffset)) { + puts("Bad Data Hash\n"); + show_boot_progress(-104); return 0; } - puts ("OK\n"); + puts("OK\n"); } - show_boot_progress (105); + show_boot_progress(105);
- if (!fit_image_check_target_arch (fit, os_noffset)) { - puts ("Unsupported Architecture\n"); - show_boot_progress (-105); + if (!fit_image_check_target_arch(fit, os_noffset)) { + puts("Unsupported Architecture\n"); + show_boot_progress(-105); return 0; }
- show_boot_progress (106); - if (!fit_image_check_type (fit, os_noffset, IH_TYPE_KERNEL)) { - puts ("Not a kernel image\n"); - show_boot_progress (-106); + show_boot_progress(106); + if (!fit_image_check_type(fit, os_noffset, IH_TYPE_KERNEL)) { + puts("Not a kernel image\n"); + show_boot_progress(-106); return 0; }
- show_boot_progress (107); + show_boot_progress(107); return 1; } #endif /* CONFIG_FIT */ @@ -811,8 +818,9 @@ static int fit_check_kernel (const void *fit, int os_noffset, int verify) * pointer to image header if valid image was found, plus kernel start * address and length, otherwise NULL */ -static void *boot_get_kernel (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[], - bootm_headers_t *images, ulong *os_data, ulong *os_len) +static void *boot_get_kernel(cmd_tbl_t *cmdtp, int flag, int argc, + char * const argv[], bootm_headers_t *images, ulong *os_data, + ulong *os_len) { image_header_t *hdr; ulong img_addr; @@ -829,127 +837,137 @@ static void *boot_get_kernel (cmd_tbl_t *cmdtp, int flag, int argc, char * const /* find out kernel image address */ if (argc < 2) { img_addr = load_addr; - debug ("* kernel: default image load address = 0x%08lx\n", + debug("* kernel: default image load address = 0x%08lx\n", load_addr); #if defined(CONFIG_FIT) - } else if (fit_parse_conf (argv[1], load_addr, &img_addr, + } else if (fit_parse_conf(argv[1], load_addr, &img_addr, &fit_uname_config)) { - debug ("* kernel: config '%s' from image at 0x%08lx\n", + debug("* kernel: config '%s' from image at 0x%08lx\n", fit_uname_config, img_addr); - } else if (fit_parse_subimage (argv[1], load_addr, &img_addr, + } else if (fit_parse_subimage(argv[1], load_addr, &img_addr, &fit_uname_kernel)) { - debug ("* kernel: subimage '%s' from image at 0x%08lx\n", + debug("* kernel: subimage '%s' from image at 0x%08lx\n", fit_uname_kernel, img_addr); #endif } else { img_addr = simple_strtoul(argv[1], NULL, 16); - debug ("* kernel: cmdline image address = 0x%08lx\n", img_addr); + debug("* kernel: cmdline image address = 0x%08lx\n", img_addr); }
- show_boot_progress (1); + show_boot_progress(1);
/* copy from dataflash if needed */ - img_addr = genimg_get_image (img_addr); + img_addr = genimg_get_image(img_addr);
/* check image type, for FIT images get FIT kernel node */ *os_data = *os_len = 0; - switch (genimg_get_format ((void *)img_addr)) { + switch (genimg_get_format((void *)img_addr)) { case IMAGE_FORMAT_LEGACY: - printf ("## Booting kernel from Legacy Image at %08lx ...\n", + printf("## Booting kernel from Legacy Image at %08lx ...\n", img_addr); - hdr = image_get_kernel (img_addr, images->verify); + hdr = image_get_kernel(img_addr, images->verify); if (!hdr) return NULL; - show_boot_progress (5); + show_boot_progress(5);
/* get os_data and os_len */ - switch (image_get_type (hdr)) { + switch (image_get_type(hdr)) { case IH_TYPE_KERNEL: - *os_data = image_get_data (hdr); - *os_len = image_get_data_size (hdr); + *os_data = image_get_data(hdr); + *os_len = image_get_data_size(hdr); break; case IH_TYPE_MULTI: - image_multi_getimg (hdr, 0, os_data, os_len); + image_multi_getimg(hdr, 0, os_data, os_len); break; case IH_TYPE_STANDALONE: - *os_data = image_get_data (hdr); - *os_len = image_get_data_size (hdr); + *os_data = image_get_data(hdr); + *os_len = image_get_data_size(hdr); break; default: - printf ("Wrong Image Type for %s command\n", cmdtp->name); - show_boot_progress (-5); + printf("Wrong Image Type for %s command\n", + cmdtp->name); + show_boot_progress(-5); return NULL; }
/* - * copy image header to allow for image overwrites during kernel - * decompression. + * copy image header to allow for image overwrites during + * kernel decompression. */ - memmove (&images->legacy_hdr_os_copy, hdr, sizeof(image_header_t)); + memmove(&images->legacy_hdr_os_copy, hdr, + sizeof(image_header_t));
/* save pointer to image header */ images->legacy_hdr_os = hdr;
images->legacy_hdr_valid = 1; - show_boot_progress (6); + show_boot_progress(6); break; #if defined(CONFIG_FIT) case IMAGE_FORMAT_FIT: fit_hdr = (void *)img_addr; - printf ("## Booting kernel from FIT Image at %08lx ...\n", + printf("## Booting kernel from FIT Image at %08lx ...\n", img_addr);
- if (!fit_check_format (fit_hdr)) { - puts ("Bad FIT kernel image format!\n"); - show_boot_progress (-100); + if (!fit_check_format(fit_hdr)) { + puts("Bad FIT kernel image format!\n"); + show_boot_progress(-100); return NULL; } - show_boot_progress (100); + show_boot_progress(100);
if (!fit_uname_kernel) { /* * no kernel image node unit name, try to get config * node first. If config unit node name is NULL - * fit_conf_get_node() will try to find default config node + * fit_conf_get_node() will try to find default config + * node */ - show_boot_progress (101); - cfg_noffset = fit_conf_get_node (fit_hdr, fit_uname_config); + show_boot_progress(101); + cfg_noffset = fit_conf_get_node(fit_hdr, + fit_uname_config); if (cfg_noffset < 0) { - show_boot_progress (-101); + show_boot_progress(-101); return NULL; } /* save configuration uname provided in the first * bootm argument */ - images->fit_uname_cfg = fdt_get_name (fit_hdr, cfg_noffset, NULL); - printf (" Using '%s' configuration\n", images->fit_uname_cfg); - show_boot_progress (103); - - os_noffset = fit_conf_get_kernel_node (fit_hdr, cfg_noffset); - fit_uname_kernel = fit_get_name (fit_hdr, os_noffset, NULL); + images->fit_uname_cfg = fdt_get_name(fit_hdr, + cfg_noffset, + NULL); + printf(" Using '%s' configuration\n", + images->fit_uname_cfg); + show_boot_progress(103); + + os_noffset = fit_conf_get_kernel_node(fit_hdr, + cfg_noffset); + fit_uname_kernel = fit_get_name(fit_hdr, os_noffset, + NULL); } else { /* get kernel component image node offset */ - show_boot_progress (102); - os_noffset = fit_image_get_node (fit_hdr, fit_uname_kernel); + show_boot_progress(102); + os_noffset = fit_image_get_node(fit_hdr, + fit_uname_kernel); } if (os_noffset < 0) { - show_boot_progress (-103); + show_boot_progress(-103); return NULL; }
- printf (" Trying '%s' kernel subimage\n", fit_uname_kernel); + printf(" Trying '%s' kernel subimage\n", fit_uname_kernel);
- show_boot_progress (104); - if (!fit_check_kernel (fit_hdr, os_noffset, images->verify)) + show_boot_progress(104); + if (!fit_check_kernel(fit_hdr, os_noffset, images->verify)) return NULL;
/* get kernel image data address and length */ - if (fit_image_get_data (fit_hdr, os_noffset, &data, &len)) { - puts ("Could not find kernel subimage data!\n"); - show_boot_progress (-107); + if (fit_image_get_data(fit_hdr, os_noffset, &data, &len)) { + puts("Could not find kernel subimage data!\n"); + show_boot_progress(-107); return NULL; } - show_boot_progress (108); + show_boot_progress(108);
*os_len = len; *os_data = (ulong)data; @@ -959,12 +977,12 @@ static void *boot_get_kernel (cmd_tbl_t *cmdtp, int flag, int argc, char * const break; #endif default: - printf ("Wrong Image Format for %s command\n", cmdtp->name); - show_boot_progress (-108); + printf("Wrong Image Format for %s command\n", cmdtp->name); + show_boot_progress(-108); return NULL; }
- debug (" kernel data at 0x%08lx, len = 0x%08lx (%ld)\n", + debug(" kernel data at 0x%08lx, len = 0x%08lx (%ld)\n", *os_data, *os_len, *os_len);
return (void *)img_addr; @@ -1012,15 +1030,15 @@ U_BOOT_CMD( /* bootd - boot default image */ /*******************************************************************/ #if defined(CONFIG_CMD_BOOTD) -int do_bootd (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +int do_bootd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { int rcode = 0;
#ifndef CONFIG_SYS_HUSH_PARSER - if (run_command (getenv ("bootcmd"), flag) < 0) + if (run_command(getenv("bootcmd"), flag) < 0) rcode = 1; #else - if (parse_string_outer (getenv ("bootcmd"), + if (parse_string_outer(getenv("bootcmd"), FLAG_PARSE_SEMICOLON | FLAG_EXIT_FROM_LOOP) != 0) rcode = 1; #endif @@ -1047,72 +1065,72 @@ U_BOOT_CMD( /* iminfo - print header info for a requested image */ /*******************************************************************/ #if defined(CONFIG_CMD_IMI) -int do_iminfo (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +int do_iminfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { int arg; ulong addr; int rcode = 0;
if (argc < 2) { - return image_info (load_addr); + return image_info(load_addr); }
for (arg = 1; arg < argc; ++arg) { - addr = simple_strtoul (argv[arg], NULL, 16); - if (image_info (addr) != 0) + addr = simple_strtoul(argv[arg], NULL, 16); + if (image_info(addr) != 0) rcode = 1; } return rcode; }
-static int image_info (ulong addr) +static int image_info(ulong addr) { void *hdr = (void *)addr;
- printf ("\n## Checking Image at %08lx ...\n", addr); + printf("\n## Checking Image at %08lx ...\n", addr);
- switch (genimg_get_format (hdr)) { + switch (genimg_get_format(hdr)) { case IMAGE_FORMAT_LEGACY: - puts (" Legacy image found\n"); - if (!image_check_magic (hdr)) { - puts (" Bad Magic Number\n"); + puts(" Legacy image found\n"); + if (!image_check_magic(hdr)) { + puts(" Bad Magic Number\n"); return 1; }
- if (!image_check_hcrc (hdr)) { - puts (" Bad Header Checksum\n"); + if (!image_check_hcrc(hdr)) { + puts(" Bad Header Checksum\n"); return 1; }
- image_print_contents (hdr); + image_print_contents(hdr);
- puts (" Verifying Checksum ... "); - if (!image_check_dcrc (hdr)) { - puts (" Bad Data CRC\n"); + puts(" Verifying Checksum ... "); + if (!image_check_dcrc(hdr)) { + puts(" Bad Data CRC\n"); return 1; } - puts ("OK\n"); + puts("OK\n"); return 0; #if defined(CONFIG_FIT) case IMAGE_FORMAT_FIT: - puts (" FIT image found\n"); + puts(" FIT image found\n");
- if (!fit_check_format (hdr)) { - puts ("Bad FIT image format!\n"); + if (!fit_check_format(hdr)) { + puts("Bad FIT image format!\n"); return 1; }
- fit_print_contents (hdr); + fit_print_contents(hdr);
- if (!fit_all_image_check_hashes (hdr)) { - puts ("Bad hash in FIT image!\n"); + if (!fit_all_image_check_hashes(hdr)) { + puts("Bad hash in FIT image!\n"); return 1; }
return 0; #endif default: - puts ("Unknown image format!\n"); + puts("Unknown image format!\n"); break; }
@@ -1134,7 +1152,7 @@ U_BOOT_CMD( /* imls - list all images found in flash */ /*******************************************************************/ #if defined(CONFIG_CMD_IMLS) -int do_imls (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +int do_imls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { flash_info_t *info; int i, j; @@ -1151,28 +1169,28 @@ int do_imls (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) if (!hdr) goto next_sector;
- switch (genimg_get_format (hdr)) { + switch (genimg_get_format(hdr)) { case IMAGE_FORMAT_LEGACY: - if (!image_check_hcrc (hdr)) + if (!image_check_hcrc(hdr)) goto next_sector;
- printf ("Legacy Image at %08lX:\n", (ulong)hdr); - image_print_contents (hdr); + printf("Legacy Image at %08lX:\n", (ulong)hdr); + image_print_contents(hdr);
- puts (" Verifying Checksum ... "); - if (!image_check_dcrc (hdr)) { - puts ("Bad Data CRC\n"); + puts(" Verifying Checksum ... "); + if (!image_check_dcrc(hdr)) { + puts("Bad Data CRC\n"); } else { - puts ("OK\n"); + puts("OK\n"); } break; #if defined(CONFIG_FIT) case IMAGE_FORMAT_FIT: - if (!fit_check_format (hdr)) + if (!fit_check_format(hdr)) goto next_sector;
- printf ("FIT Image at %08lX:\n", (ulong)hdr); - fit_print_contents (hdr); + printf("FIT Image at %08lX:\n", (ulong)hdr); + fit_print_contents(hdr); break; #endif default: @@ -1200,34 +1218,34 @@ U_BOOT_CMD( /* helper routines */ /*******************************************************************/ #ifdef CONFIG_SILENT_CONSOLE -static void fixup_silent_linux () +static void fixup_silent_linux() { char buf[256], *start, *end; - char *cmdline = getenv ("bootargs"); + char *cmdline = getenv("bootargs");
/* Only fix cmdline when requested */ if (!(gd->flags & GD_FLG_SILENT)) return;
- debug ("before silent fix-up: %s\n", cmdline); + debug("before silent fix-up: %s\n", cmdline); if (cmdline) { - if ((start = strstr (cmdline, "console=")) != NULL) { - end = strchr (start, ' '); - strncpy (buf, cmdline, (start - cmdline + 8)); + if ((start = strstr(cmdline, "console=")) != NULL) { + end = strchr(start, ' '); + strncpy(buf, cmdline, (start - cmdline + 8)); if (end) - strcpy (buf + (start - cmdline + 8), end); + strcpy(buf + (start - cmdline + 8), end); else buf[start - cmdline + 8] = '\0'; } else { - strcpy (buf, cmdline); - strcat (buf, " console="); + strcpy(buf, cmdline); + strcat(buf, " console="); } } else { - strcpy (buf, "console="); + strcpy(buf, "console="); }
- setenv ("bootargs", buf); - debug ("after silent fix-up: %s\n", buf); + setenv("bootargs", buf); + debug("after silent fix-up: %s\n", buf); } #endif /* CONFIG_SILENT_CONSOLE */
@@ -1237,7 +1255,7 @@ static void fixup_silent_linux () /*******************************************************************/
#ifdef CONFIG_BOOTM_NETBSD -static int do_bootm_netbsd (int flag, int argc, char * const argv[], +static int do_bootm_netbsd(int flag, int argc, char * const argv[], bootm_headers_t *images) { void (*loader)(bd_t *, image_header_t *, char *, char *); @@ -1251,7 +1269,7 @@ static int do_bootm_netbsd (int flag, int argc, char * const argv[],
#if defined(CONFIG_FIT) if (!images->legacy_hdr_valid) { - fit_unsupported_reset ("NetBSD"); + fit_unsupported_reset("NetBSD"); return 1; } #endif @@ -1269,20 +1287,20 @@ static int do_bootm_netbsd (int flag, int argc, char * const argv[], * address of the original image header. */ os_hdr = NULL; - if (image_check_type (&images->legacy_hdr_os_copy, IH_TYPE_MULTI)) { - image_multi_getimg (hdr, 1, &kernel_data, &kernel_len); + if (image_check_type(&images->legacy_hdr_os_copy, IH_TYPE_MULTI)) { + image_multi_getimg(hdr, 1, &kernel_data, &kernel_len); if (kernel_len) os_hdr = hdr; }
consdev = ""; -#if defined (CONFIG_8xx_CONS_SMC1) +#if defined(CONFIG_8xx_CONS_SMC1) consdev = "smc1"; -#elif defined (CONFIG_8xx_CONS_SMC2) +#elif defined(CONFIG_8xx_CONS_SMC2) consdev = "smc2"; -#elif defined (CONFIG_8xx_CONS_SCC2) +#elif defined(CONFIG_8xx_CONS_SCC2) consdev = "scc2"; -#elif defined (CONFIG_8xx_CONS_SCC3) +#elif defined(CONFIG_8xx_CONS_SCC3) consdev = "scc3"; #endif
@@ -1291,25 +1309,26 @@ static int do_bootm_netbsd (int flag, int argc, char * const argv[], int i;
for (i = 2, len = 0; i < argc; i += 1) - len += strlen (argv[i]) + 1; - cmdline = malloc (len); + len += strlen(argv[i]) + 1; + cmdline = malloc(len);
for (i = 2, len = 0; i < argc; i += 1) { if (i > 2) cmdline[len++] = ' '; - strcpy (&cmdline[len], argv[i]); - len += strlen (argv[i]); + strcpy(&cmdline[len], argv[i]); + len += strlen(argv[i]); } - } else if ((cmdline = getenv ("bootargs")) == NULL) { + } else if ((cmdline = getenv("bootargs")) == NULL) { cmdline = ""; }
loader = (void (*)(bd_t *, image_header_t *, char *, char *))images->ep;
- printf ("## Transferring control to NetBSD stage-2 loader (at address %08lx) ...\n", + printf("## Transferring control to NetBSD stage-2 loader " + "(at address %08lx) ...\n", (ulong)loader);
- show_boot_progress (15); + show_boot_progress(15);
/* * NetBSD Stage-2 Loader Parameters: @@ -1318,14 +1337,14 @@ static int do_bootm_netbsd (int flag, int argc, char * const argv[], * r5: console device * r6: boot args string */ - (*loader) (gd->bd, os_hdr, consdev, cmdline); + (*loader)(gd->bd, os_hdr, consdev, cmdline);
return 1; } #endif /* CONFIG_BOOTM_NETBSD*/
#ifdef CONFIG_LYNXKDI -static int do_bootm_lynxkdi (int flag, int argc, char * const argv[], +static int do_bootm_lynxkdi(int flag, int argc, char * const argv[], bootm_headers_t *images) { image_header_t *hdr = &images->legacy_hdr_os_copy; @@ -1335,19 +1354,19 @@ static int do_bootm_lynxkdi (int flag, int argc, char * const argv[],
#if defined(CONFIG_FIT) if (!images->legacy_hdr_valid) { - fit_unsupported_reset ("Lynx"); + fit_unsupported_reset("Lynx"); return 1; } #endif
- lynxkdi_boot ((image_header_t *)hdr); + lynxkdi_boot((image_header_t *)hdr);
return 1; } #endif /* CONFIG_LYNXKDI */
#ifdef CONFIG_BOOTM_RTEMS -static int do_bootm_rtems (int flag, int argc, char * const argv[], +static int do_bootm_rtems(int flag, int argc, char * const argv[], bootm_headers_t *images) { void (*entry_point)(bd_t *); @@ -1357,17 +1376,17 @@ static int do_bootm_rtems (int flag, int argc, char * const argv[],
#if defined(CONFIG_FIT) if (!images->legacy_hdr_valid) { - fit_unsupported_reset ("RTEMS"); + fit_unsupported_reset("RTEMS"); return 1; } #endif
entry_point = (void (*)(bd_t *))images->ep;
- printf ("## Transferring control to RTEMS (at address %08lx) ...\n", + printf("## Transferring control to RTEMS (at address %08lx) ...\n", (ulong)entry_point);
- show_boot_progress (15); + show_boot_progress(15);
/* * RTEMS Parameters: @@ -1380,7 +1399,7 @@ static int do_bootm_rtems (int flag, int argc, char * const argv[], #endif /* CONFIG_BOOTM_RTEMS */
#if defined(CONFIG_BOOTM_OSE) -static int do_bootm_ose (int flag, int argc, char * const argv[], +static int do_bootm_ose(int flag, int argc, char * const argv[], bootm_headers_t *images) { void (*entry_point)(void); @@ -1390,17 +1409,17 @@ static int do_bootm_ose (int flag, int argc, char * const argv[],
#if defined(CONFIG_FIT) if (!images->legacy_hdr_valid) { - fit_unsupported_reset ("OSE"); + fit_unsupported_reset("OSE"); return 1; } #endif
entry_point = (void (*)(void))images->ep;
- printf ("## Transferring control to OSE (at address %08lx) ...\n", + printf("## Transferring control to OSE (at address %08lx) ...\n", (ulong)entry_point);
- show_boot_progress (15); + show_boot_progress(15);
/* * OSE Parameters: @@ -1413,7 +1432,7 @@ static int do_bootm_ose (int flag, int argc, char * const argv[], #endif /* CONFIG_BOOTM_OSE */
#if defined(CONFIG_CMD_ELF) -static int do_bootm_vxworks (int flag, int argc, char * const argv[], +static int do_bootm_vxworks(int flag, int argc, char * const argv[], bootm_headers_t *images) { char str[80]; @@ -1423,7 +1442,7 @@ static int do_bootm_vxworks (int flag, int argc, char * const argv[],
#if defined(CONFIG_FIT) if (!images->legacy_hdr_valid) { - fit_unsupported_reset ("VxWorks"); + fit_unsupported_reset("VxWorks"); return 1; } #endif @@ -1446,7 +1465,7 @@ static int do_bootm_qnxelf(int flag, int argc, char * const argv[],
#if defined(CONFIG_FIT) if (!images->legacy_hdr_valid) { - fit_unsupported_reset ("QNX"); + fit_unsupported_reset("QNX"); return 1; } #endif @@ -1461,7 +1480,7 @@ static int do_bootm_qnxelf(int flag, int argc, char * const argv[], #endif
#ifdef CONFIG_INTEGRITY -static int do_bootm_integrity (int flag, int argc, char * const argv[], +static int do_bootm_integrity(int flag, int argc, char * const argv[], bootm_headers_t *images) { void (*entry_point)(void); @@ -1471,17 +1490,17 @@ static int do_bootm_integrity (int flag, int argc, char * const argv[],
#if defined(CONFIG_FIT) if (!images->legacy_hdr_valid) { - fit_unsupported_reset ("INTEGRITY"); + fit_unsupported_reset("INTEGRITY"); return 1; } #endif
entry_point = (void (*)(void))images->ep;
- printf ("## Transferring control to INTEGRITY (at address %08lx) ...\n", + printf("## Transferring control to INTEGRITY (at address %08lx) ...\n", (ulong)entry_point);
- show_boot_progress (15); + show_boot_progress(15);
/* * INTEGRITY Parameters: diff --git a/common/cmd_ximg.c b/common/cmd_ximg.c index 850188e..0414589 100644 --- a/common/cmd_ximg.c +++ b/common/cmd_ximg.c @@ -62,7 +62,7 @@ do_imgextract(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[]) uint unc_len = CONFIG_SYS_XIMG_LEN; uint8_t comp;
- verify = getenv_yesno ("verify"); + verify = getenv_yesno("verify");
if (argc > 1) { addr = simple_strtoul(argv[1], NULL, 16); @@ -77,33 +77,33 @@ do_imgextract(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[]) dest = simple_strtoul(argv[3], NULL, 16); }
- switch (genimg_get_format ((void *)addr)) { + switch (genimg_get_format((void *)addr)) { case IMAGE_FORMAT_LEGACY:
printf("## Copying part %d from legacy image " "at %08lx ...\n", part, addr);
hdr = (image_header_t *)addr; - if (!image_check_magic (hdr)) { + if (!image_check_magic(hdr)) { printf("Bad Magic Number\n"); return 1; }
- if (!image_check_hcrc (hdr)) { + if (!image_check_hcrc(hdr)) { printf("Bad Header Checksum\n"); return 1; } #ifdef DEBUG - image_print_contents (hdr); + image_print_contents(hdr); #endif
- if (!image_check_type (hdr, IH_TYPE_MULTI)) { + if (!image_check_type(hdr, IH_TYPE_MULTI)) { printf("Wrong Image Type for %s command\n", cmdtp->name); return 1; }
- comp = image_get_comp (hdr); + comp = image_get_comp(hdr); if ((comp != IH_COMP_NONE) && (argc < 4)) { printf("Must specify load address for %s command " "with compressed image\n", @@ -113,25 +113,25 @@ do_imgextract(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
if (verify) { printf(" Verifying Checksum ... "); - if (!image_check_dcrc (hdr)) { + if (!image_check_dcrc(hdr)) { printf("Bad Data CRC\n"); return 1; } printf("OK\n"); }
- count = image_multi_count (hdr); + count = image_multi_count(hdr); if (part >= count) { printf("Bad Image Part\n"); return 1; }
- image_multi_getimg (hdr, part, &data, &len); + image_multi_getimg(hdr, part, &data, &len); break; #if defined(CONFIG_FIT) case IMAGE_FORMAT_FIT: if (uname == NULL) { - puts ("No FIT subimage unit name\n"); + puts("No FIT subimage unit name\n"); return 1; }
@@ -139,19 +139,19 @@ do_imgextract(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[]) "at %08lx ...\n", uname, addr);
fit_hdr = (const void *)addr; - if (!fit_check_format (fit_hdr)) { - puts ("Bad FIT image format\n"); + if (!fit_check_format(fit_hdr)) { + puts("Bad FIT image format\n"); return 1; }
/* get subimage node offset */ - noffset = fit_image_get_node (fit_hdr, uname); + noffset = fit_image_get_node(fit_hdr, uname); if (noffset < 0) { - printf ("Can't find '%s' FIT subimage\n", uname); + printf("Can't find '%s' FIT subimage\n", uname); return 1; }
- if (fit_image_check_comp (fit_hdr, noffset, IH_COMP_NONE) + if (fit_image_check_comp(fit_hdr, noffset, IH_COMP_NONE) && (argc < 4)) { printf("Must specify load address for %s command " "with compressed image\n", @@ -161,21 +161,21 @@ do_imgextract(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
/* verify integrity */ if (verify) { - if (!fit_image_check_hashes (fit_hdr, noffset)) { - puts ("Bad Data Hash\n"); + if (!fit_image_check_hashes(fit_hdr, noffset)) { + puts("Bad Data Hash\n"); return 1; } }
/* get subimage data address and length */ - if (fit_image_get_data (fit_hdr, noffset, + if (fit_image_get_data(fit_hdr, noffset, &fit_data, &fit_len)) { - puts ("Could not find script subimage data\n"); + puts("Could not find script subimage data\n"); return 1; }
- if (fit_image_get_comp (fit_hdr, noffset, &comp)) { - puts ("Could not find script subimage " + if (fit_image_get_comp(fit_hdr, noffset, &comp)) { + puts("Could not find script subimage " "compression type\n"); return 1; } @@ -185,7 +185,7 @@ do_imgextract(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[]) break; #endif default: - puts ("Invalid image type for imxtract\n"); + puts("Invalid image type for imxtract\n"); return 1; }
@@ -199,28 +199,28 @@ do_imgextract(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[]) void *to = (void *) dest; void *from = (void *)data;
- printf (" Loading part %d ... ", part); + printf(" Loading part %d ... ", part);
while (l > 0) { tail = (l > CHUNKSZ) ? CHUNKSZ : l; WATCHDOG_RESET(); - memmove (to, from, tail); + memmove(to, from, tail); to += tail; from += tail; l -= tail; } } #else /* !(CONFIG_HW_WATCHDOG || CONFIG_WATCHDOG) */ - printf (" Loading part %d ... ", part); - memmove ((char *) dest, (char *)data, len); + printf(" Loading part %d ... ", part); + memmove((char *) dest, (char *)data, len); #endif /* CONFIG_HW_WATCHDOG || CONFIG_WATCHDOG */ break; #ifdef CONFIG_GZIP case IH_COMP_GZIP: - printf (" Uncompressing part %d ... ", part); - if (gunzip ((void *) dest, unc_len, - (uchar *) data, &len) != 0) { - puts ("GUNZIP ERROR - image not loaded\n"); + printf(" Uncompressing part %d ... ", part); + if (gunzip((void *) dest, unc_len, + (uchar *) data, &len) != 0) { + puts("GUNZIP ERROR - image not loaded\n"); return 1; } break; @@ -230,19 +230,19 @@ do_imgextract(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[]) { int i;
- printf (" Uncompressing part %d ... ", part); + printf(" Uncompressing part %d ... ", part); /* * If we've got less than 4 MB of malloc() * space, use slower decompression algorithm * which requires at most 2300 KB of memory. */ i = BZ2_bzBuffToBuffDecompress( - (char*)ntohl(hdr->ih_load), + (char *)ntohl(hdr->ih_load), &unc_len, (char *)data, len, CONFIG_SYS_MALLOC_LEN < (4096 * 1024), 0); if (i != BZ_OK) { - printf ("BUNZIP2 ERROR %d - " + printf("BUNZIP2 ERROR %d - " "image not loaded\n", i); return 1; } @@ -250,10 +250,10 @@ do_imgextract(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[]) break; #endif /* CONFIG_BZIP2 */ default: - printf ("Unimplemented compression type %d\n", comp); + printf("Unimplemented compression type %d\n", comp); return 1; } - puts ("OK\n"); + puts("OK\n"); }
sprintf(pbuf, "%8lx", data); diff --git a/common/image.c b/common/image.c index 32ad4da..33ae916 100644 --- a/common/image.c +++ b/common/image.c @@ -45,7 +45,7 @@
#include <image.h>
-#if defined(CONFIG_FIT) || defined (CONFIG_OF_LIBFDT) +#if defined(CONFIG_FIT) || defined(CONFIG_OF_LIBFDT) #include <fdt.h> #include <libfdt.h> #include <fdt_support.h> @@ -55,7 +55,7 @@ #include <u-boot/md5.h> #include <sha1.h>
-static int fit_check_ramdisk (const void *fit, int os_noffset, +static int fit_check_ramdisk(const void *fit, int os_noffset, uint8_t arch, int verify); #endif
@@ -65,7 +65,7 @@ extern int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
DECLARE_GLOBAL_DATA_PTR;
-static const image_header_t* image_get_ramdisk (ulong rd_addr, uint8_t arch, +static const image_header_t *image_get_ramdisk(ulong rd_addr, uint8_t arch, int verify); #else #include "mkimage.h" @@ -155,37 +155,37 @@ static const table_entry_t uimage_comp[] = { { -1, "", "", }, };
-uint32_t crc32 (uint32_t, const unsigned char *, uint); -uint32_t crc32_wd (uint32_t, const unsigned char *, uint, uint); +uint32_t crc32(uint32_t, const unsigned char *, uint); +uint32_t crc32_wd(uint32_t, const unsigned char *, uint, uint); #if defined(CONFIG_TIMESTAMP) || defined(CONFIG_CMD_DATE) || defined(USE_HOSTCC) -static void genimg_print_time (time_t timestamp); +static void genimg_print_time(time_t timestamp); #endif
/*****************************************************************************/ /* Legacy format routines */ /*****************************************************************************/ -int image_check_hcrc (const image_header_t *hdr) +int image_check_hcrc(const image_header_t *hdr) { ulong hcrc; - ulong len = image_get_header_size (); + ulong len = image_get_header_size(); image_header_t header;
/* Copy header so we can blank CRC field for re-calculation */ - memmove (&header, (char *)hdr, image_get_header_size ()); - image_set_hcrc (&header, 0); + memmove(&header, (char *)hdr, image_get_header_size()); + image_set_hcrc(&header, 0);
- hcrc = crc32 (0, (unsigned char *)&header, len); + hcrc = crc32(0, (unsigned char *)&header, len);
- return (hcrc == image_get_hcrc (hdr)); + return (hcrc == image_get_hcrc(hdr)); }
-int image_check_dcrc (const image_header_t *hdr) +int image_check_dcrc(const image_header_t *hdr) { - ulong data = image_get_data (hdr); - ulong len = image_get_data_size (hdr); - ulong dcrc = crc32_wd (0, (unsigned char *)data, len, CHUNKSZ_CRC32); + ulong data = image_get_data(hdr); + ulong len = image_get_data_size(hdr); + ulong dcrc = crc32_wd(0, (unsigned char *)data, len, CHUNKSZ_CRC32);
- return (dcrc == image_get_dcrc (hdr)); + return (dcrc == image_get_dcrc(hdr)); }
/** @@ -201,14 +201,14 @@ int image_check_dcrc (const image_header_t *hdr) * returns: * number of components */ -ulong image_multi_count (const image_header_t *hdr) +ulong image_multi_count(const image_header_t *hdr) { ulong i, count = 0; uint32_t *size;
/* get start of the image payload, which in case of multi * component images that points to a table of component sizes */ - size = (uint32_t *)image_get_data (hdr); + size = (uint32_t *)image_get_data(hdr);
/* count non empty slots */ for (i = 0; size[i]; ++i) @@ -234,7 +234,7 @@ ulong image_multi_count (const image_header_t *hdr) * data address and size of the component, if idx is valid * 0 in data and len, if idx is out of range */ -void image_multi_getimg (const image_header_t *hdr, ulong idx, +void image_multi_getimg(const image_header_t *hdr, ulong idx, ulong *data, ulong *len) { int i; @@ -242,24 +242,24 @@ void image_multi_getimg (const image_header_t *hdr, ulong idx, ulong offset, count, img_data;
/* get number of component */ - count = image_multi_count (hdr); + count = image_multi_count(hdr);
/* get start of the image payload, which in case of multi * component images that points to a table of component sizes */ - size = (uint32_t *)image_get_data (hdr); + size = (uint32_t *)image_get_data(hdr);
/* get address of the proper component data start, which means * skipping sizes table (add 1 for last, null entry) */ - img_data = image_get_data (hdr) + (count + 1) * sizeof (uint32_t); + img_data = image_get_data(hdr) + (count + 1) * sizeof(uint32_t);
if (idx < count) { - *len = uimage_to_cpu (size[idx]); + *len = uimage_to_cpu(size[idx]); offset = 0;
/* go over all indices preceding requested component idx */ for (i = 0; i < idx; i++) { /* add up i-th component size, rounding up to 4 bytes */ - offset += (uimage_to_cpu (size[i]) + 3) & ~3 ; + offset += (uimage_to_cpu(size[i]) + 3) & ~3 ; }
/* calculate idx-th component data address */ @@ -270,16 +270,16 @@ void image_multi_getimg (const image_header_t *hdr, ulong idx, } }
-static void image_print_type (const image_header_t *hdr) +static void image_print_type(const image_header_t *hdr) { const char *os, *arch, *type, *comp;
- os = genimg_get_os_name (image_get_os (hdr)); - arch = genimg_get_arch_name (image_get_arch (hdr)); - type = genimg_get_type_name (image_get_type (hdr)); - comp = genimg_get_comp_name (image_get_comp (hdr)); + os = genimg_get_os_name(image_get_os(hdr)); + arch = genimg_get_arch_name(image_get_arch(hdr)); + type = genimg_get_type_name(image_get_type(hdr)); + comp = genimg_get_comp_name(image_get_comp(hdr));
- printf ("%s %s %s (%s)\n", arch, os, type, comp); + printf("%s %s %s (%s)\n", arch, os, type, comp); }
/** @@ -294,7 +294,7 @@ static void image_print_type (const image_header_t *hdr) * returns: * no returned results */ -void image_print_contents (const void *ptr) +void image_print_contents(const void *ptr) { const image_header_t *hdr = (const image_header_t *)ptr; const char *p; @@ -305,38 +305,38 @@ void image_print_contents (const void *ptr) p = " "; #endif
- printf ("%sImage Name: %.*s\n", p, IH_NMLEN, image_get_name (hdr)); + printf("%sImage Name: %.*s\n", p, IH_NMLEN, image_get_name(hdr)); #if defined(CONFIG_TIMESTAMP) || defined(CONFIG_CMD_DATE) || defined(USE_HOSTCC) - printf ("%sCreated: ", p); - genimg_print_time ((time_t)image_get_time (hdr)); + printf("%sCreated: ", p); + genimg_print_time((time_t)image_get_time(hdr)); #endif - printf ("%sImage Type: ", p); - image_print_type (hdr); - printf ("%sData Size: ", p); - genimg_print_size (image_get_data_size (hdr)); - printf ("%sLoad Address: %08x\n", p, image_get_load (hdr)); - printf ("%sEntry Point: %08x\n", p, image_get_ep (hdr)); - - if (image_check_type (hdr, IH_TYPE_MULTI) || - image_check_type (hdr, IH_TYPE_SCRIPT)) { + printf("%sImage Type: ", p); + image_print_type(hdr); + printf("%sData Size: ", p); + genimg_print_size(image_get_data_size(hdr)); + printf("%sLoad Address: %08x\n", p, image_get_load(hdr)); + printf("%sEntry Point: %08x\n", p, image_get_ep(hdr)); + + if (image_check_type(hdr, IH_TYPE_MULTI) || + image_check_type(hdr, IH_TYPE_SCRIPT)) { int i; ulong data, len; - ulong count = image_multi_count (hdr); + ulong count = image_multi_count(hdr);
- printf ("%sContents:\n", p); + printf("%sContents:\n", p); for (i = 0; i < count; i++) { - image_multi_getimg (hdr, i, &data, &len); + image_multi_getimg(hdr, i, &data, &len);
- printf ("%s Image %d: ", p, i); - genimg_print_size (len); + printf("%s Image %d: ", p, i); + genimg_print_size(len);
- if (image_check_type (hdr, IH_TYPE_SCRIPT) && i > 0) { + if (image_check_type(hdr, IH_TYPE_SCRIPT) && i > 0) { /* * the user may need to know offsets * if planning to do something with * multiple files */ - printf ("%s Offset = 0x%08lx\n", p, data); + printf("%s Offset = 0x%08lx\n", p, data); } } } @@ -362,44 +362,44 @@ void image_print_contents (const void *ptr) * pointer to a ramdisk image header, if image was found and valid * otherwise, return NULL */ -static const image_header_t *image_get_ramdisk (ulong rd_addr, uint8_t arch, +static const image_header_t *image_get_ramdisk(ulong rd_addr, uint8_t arch, int verify) { const image_header_t *rd_hdr = (const image_header_t *)rd_addr;
- if (!image_check_magic (rd_hdr)) { - puts ("Bad Magic Number\n"); - show_boot_progress (-10); + if (!image_check_magic(rd_hdr)) { + puts("Bad Magic Number\n"); + show_boot_progress(-10); return NULL; }
- if (!image_check_hcrc (rd_hdr)) { - puts ("Bad Header Checksum\n"); - show_boot_progress (-11); + if (!image_check_hcrc(rd_hdr)) { + puts("Bad Header Checksum\n"); + show_boot_progress(-11); return NULL; }
- show_boot_progress (10); - image_print_contents (rd_hdr); + show_boot_progress(10); + image_print_contents(rd_hdr);
if (verify) { puts(" Verifying Checksum ... "); - if (!image_check_dcrc (rd_hdr)) { - puts ("Bad Data CRC\n"); - show_boot_progress (-12); + if (!image_check_dcrc(rd_hdr)) { + puts("Bad Data CRC\n"); + show_boot_progress(-12); return NULL; } puts("OK\n"); }
- show_boot_progress (11); + show_boot_progress(11);
- if (!image_check_os (rd_hdr, IH_OS_LINUX) || - !image_check_arch (rd_hdr, arch) || - !image_check_type (rd_hdr, IH_TYPE_RAMDISK)) { - printf ("No Linux %s Ramdisk Image\n", + if (!image_check_os(rd_hdr, IH_OS_LINUX) || + !image_check_arch(rd_hdr, arch) || + !image_check_type(rd_hdr, IH_TYPE_RAMDISK)) { + printf("No Linux %s Ramdisk Image\n", genimg_get_arch_name(arch)); - show_boot_progress (-13); + show_boot_progress(-13); return NULL; }
@@ -411,17 +411,17 @@ static const image_header_t *image_get_ramdisk (ulong rd_addr, uint8_t arch, /* Shared dual-format routines */ /*****************************************************************************/ #ifndef USE_HOSTCC -int getenv_yesno (char *var) +int getenv_yesno(char *var) { - char *s = getenv (var); + char *s = getenv(var); return (s && (*s == 'n')) ? 0 : 1; }
ulong getenv_bootm_low(void) { - char *s = getenv ("bootm_low"); + char *s = getenv("bootm_low"); if (s) { - ulong tmp = simple_strtoul (s, NULL, 16); + ulong tmp = simple_strtoul(s, NULL, 16); return tmp; }
@@ -437,14 +437,14 @@ ulong getenv_bootm_low(void) phys_size_t getenv_bootm_size(void) { phys_size_t tmp; - char *s = getenv ("bootm_size"); + char *s = getenv("bootm_size"); if (s) { - tmp = (phys_size_t)simple_strtoull (s, NULL, 16); + tmp = (phys_size_t)simple_strtoull(s, NULL, 16); return tmp; } s = getenv("bootm_low"); if (s) - tmp = (phys_size_t)simple_strtoull (s, NULL, 16); + tmp = (phys_size_t)simple_strtoull(s, NULL, 16); else tmp = 0;
@@ -459,9 +459,9 @@ phys_size_t getenv_bootm_size(void) phys_size_t getenv_bootm_mapsize(void) { phys_size_t tmp; - char *s = getenv ("bootm_mapsize"); + char *s = getenv("bootm_mapsize"); if (s) { - tmp = (phys_size_t)simple_strtoull (s, NULL, 16); + tmp = (phys_size_t)simple_strtoull(s, NULL, 16); return tmp; }
@@ -472,7 +472,7 @@ phys_size_t getenv_bootm_mapsize(void) #endif }
-void memmove_wd (void *to, void *from, size_t len, ulong chunksz) +void memmove_wd(void *to, void *from, size_t len, ulong chunksz) { if (to == from) return; @@ -480,42 +480,42 @@ void memmove_wd (void *to, void *from, size_t len, ulong chunksz) #if defined(CONFIG_HW_WATCHDOG) || defined(CONFIG_WATCHDOG) while (len > 0) { size_t tail = (len > chunksz) ? chunksz : len; - WATCHDOG_RESET (); - memmove (to, from, tail); + WATCHDOG_RESET(); + memmove(to, from, tail); to += tail; from += tail; len -= tail; } #else /* !(CONFIG_HW_WATCHDOG || CONFIG_WATCHDOG) */ - memmove (to, from, len); + memmove(to, from, len); #endif /* CONFIG_HW_WATCHDOG || CONFIG_WATCHDOG */ } #endif /* !USE_HOSTCC */
-void genimg_print_size (uint32_t size) +void genimg_print_size(uint32_t size) { #ifndef USE_HOSTCC - printf ("%d Bytes = ", size); - print_size (size, "\n"); + printf("%d Bytes = ", size); + print_size(size, "\n"); #else - printf ("%d Bytes = %.2f kB = %.2f MB\n", + printf("%d Bytes = %.2f kB = %.2f MB\n", size, (double)size / 1.024e3, (double)size / 1.048576e6); #endif }
#if defined(CONFIG_TIMESTAMP) || defined(CONFIG_CMD_DATE) || defined(USE_HOSTCC) -static void genimg_print_time (time_t timestamp) +static void genimg_print_time(time_t timestamp) { #ifndef USE_HOSTCC struct rtc_time tm;
- to_tm (timestamp, &tm); - printf ("%4d-%02d-%02d %2d:%02d:%02d UTC\n", + to_tm(timestamp, &tm); + printf("%4d-%02d-%02d %2d:%02d:%02d UTC\n", tm.tm_year, tm.tm_mon, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec); #else - printf ("%s", ctime(×tamp)); + printf("%s", ctime(×tamp)); #endif } #endif /* CONFIG_TIMESTAMP || CONFIG_CMD_DATE || USE_HOSTCC */ @@ -547,24 +547,26 @@ char *get_table_entry_name(const table_entry_t *table, char *msg, int id) return (msg); }
-const char *genimg_get_os_name (uint8_t os) +const char *genimg_get_os_name(uint8_t os) { - return (get_table_entry_name (uimage_os, "Unknown OS", os)); + return (get_table_entry_name(uimage_os, "Unknown OS", os)); }
-const char *genimg_get_arch_name (uint8_t arch) +const char *genimg_get_arch_name(uint8_t arch) { - return (get_table_entry_name (uimage_arch, "Unknown Architecture", arch)); + return (get_table_entry_name(uimage_arch, "Unknown Architecture", + arch)); }
-const char *genimg_get_type_name (uint8_t type) +const char *genimg_get_type_name(uint8_t type) { - return (get_table_entry_name (uimage_type, "Unknown Image", type)); + return (get_table_entry_name(uimage_type, "Unknown Image", type)); }
-const char *genimg_get_comp_name (uint8_t comp) +const char *genimg_get_comp_name(uint8_t comp) { - return (get_table_entry_name (uimage_comp, "Unknown Compression", comp)); + return (get_table_entry_name(uimage_comp, "Unknown Compression", + comp)); }
/** @@ -590,17 +592,17 @@ int get_table_entry_id(const table_entry_t *table,
for (t = table; t->id >= 0; ++t) { if (t->sname && strcasecmp(t->sname, name) == 0) - return (t->id); + return(t->id); }
- fprintf (stderr, "\nInvalid %s Type - valid names are", table_name); + fprintf(stderr, "\nInvalid %s Type - valid names are", table_name); for (t = table; t->id >= 0; ++t) { if (t->sname == NULL) continue; - fprintf (stderr, "%c %s", (first) ? ':' : ',', t->sname); + fprintf(stderr, "%c %s", (first) ? ':' : ',', t->sname); first = 0; } - fprintf (stderr, "\n"); + fprintf(stderr, "\n"); #else for (t = table; t->id >= 0; ++t) { #ifdef CONFIG_NEEDS_MANUAL_RELOC @@ -610,29 +612,29 @@ int get_table_entry_id(const table_entry_t *table, #endif return (t->id); } - debug ("Invalid %s Type: %s\n", table_name, name); + debug("Invalid %s Type: %s\n", table_name, name); #endif /* USE_HOSTCC */ return (-1); }
-int genimg_get_os_id (const char *name) +int genimg_get_os_id(const char *name) { - return (get_table_entry_id (uimage_os, "OS", name)); + return (get_table_entry_id(uimage_os, "OS", name)); }
-int genimg_get_arch_id (const char *name) +int genimg_get_arch_id(const char *name) { - return (get_table_entry_id (uimage_arch, "CPU", name)); + return (get_table_entry_id(uimage_arch, "CPU", name)); }
-int genimg_get_type_id (const char *name) +int genimg_get_type_id(const char *name) { - return (get_table_entry_id (uimage_type, "Image", name)); + return (get_table_entry_id(uimage_type, "Image", name)); }
-int genimg_get_comp_id (const char *name) +int genimg_get_comp_id(const char *name) { - return (get_table_entry_id (uimage_comp, "Compression", name)); + return (get_table_entry_id(uimage_comp, "Compression", name)); }
#ifndef USE_HOSTCC @@ -650,7 +652,7 @@ int genimg_get_comp_id (const char *name) * returns: * image format type or IMAGE_FORMAT_INVALID if no image is present */ -int genimg_get_format (void *img_addr) +int genimg_get_format(void *img_addr) { ulong format = IMAGE_FORMAT_INVALID; const image_header_t *hdr; @@ -664,7 +666,7 @@ int genimg_get_format (void *img_addr) #if defined(CONFIG_FIT) || defined(CONFIG_OF_LIBFDT) else { fit_hdr = (char *)img_addr; - if (fdt_check_header (fit_hdr) == 0) + if (fdt_check_header(fit_hdr) == 0) format = IMAGE_FORMAT_FIT; } #endif @@ -682,55 +684,59 @@ int genimg_get_format (void *img_addr) * returns: * image start address after possible relocation from special storage */ -ulong genimg_get_image (ulong img_addr) +ulong genimg_get_image(ulong img_addr) { ulong ram_addr = img_addr;
#ifdef CONFIG_HAS_DATAFLASH ulong h_size, d_size;
- if (addr_dataflash (img_addr)){ + if (addr_dataflash(img_addr)) { /* ger RAM address */ ram_addr = CONFIG_SYS_LOAD_ADDR;
/* get header size */ - h_size = image_get_header_size (); + h_size = image_get_header_size(); #if defined(CONFIG_FIT) if (sizeof(struct fdt_header) > h_size) h_size = sizeof(struct fdt_header); #endif
/* read in header */ - debug (" Reading image header from dataflash address " + debug(" Reading image header from dataflash address " "%08lx to RAM address %08lx\n", img_addr, ram_addr);
- read_dataflash (img_addr, h_size, (char *)ram_addr); + read_dataflash(img_addr, h_size, (char *)ram_addr);
/* get data size */ - switch (genimg_get_format ((void *)ram_addr)) { + switch (genimg_get_format((void *)ram_addr)) { case IMAGE_FORMAT_LEGACY: - d_size = image_get_data_size ((const image_header_t *)ram_addr); - debug (" Legacy format image found at 0x%08lx, size 0x%08lx\n", + d_size = image_get_data_size( + (const image_header_t *)ram_addr); + debug(" Legacy format image found at 0x%08lx, " + "size 0x%08lx\n", ram_addr, d_size); break; #if defined(CONFIG_FIT) case IMAGE_FORMAT_FIT: - d_size = fit_get_size ((const void *)ram_addr) - h_size; - debug (" FIT/FDT format image found at 0x%08lx, size 0x%08lx\n", + d_size = fit_get_size((const void *)ram_addr) - h_size; + debug(" FIT/FDT format image found at 0x%08lx, " + "size 0x%08lx\n", ram_addr, d_size); break; #endif default: - printf (" No valid image found at 0x%08lx\n", img_addr); + printf(" No valid image found at 0x%08lx\n", + img_addr); return ram_addr; }
/* read in image data */ - debug (" Reading image remaining data from dataflash address " + debug(" Reading image remaining data from dataflash address " "%08lx to RAM address %08lx\n", img_addr + h_size, ram_addr + h_size);
- read_dataflash (img_addr + h_size, d_size, + read_dataflash(img_addr + h_size, d_size, (char *)(ram_addr + h_size));
} @@ -750,7 +756,7 @@ ulong genimg_get_image (ulong img_addr) * 0, no FIT support or no configuration found * 1, configuration found */ -int genimg_has_config (bootm_headers_t *images) +int genimg_has_config(bootm_headers_t *images) { #if defined(CONFIG_FIT) if (images->fit_uname_cfg) @@ -781,7 +787,7 @@ int genimg_has_config (bootm_headers_t *images) * 1, if ramdisk image is found but corrupted, or invalid * rd_start and rd_end are set to 0 if no ramdisk exists */ -int boot_get_ramdisk (int argc, char * const argv[], bootm_headers_t *images, +int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images, uint8_t arch, ulong *rd_start, ulong *rd_end) { ulong rd_addr, rd_load; @@ -806,9 +812,9 @@ int boot_get_ramdisk (int argc, char * const argv[], bootm_headers_t *images, * ramdisk argument */ if ((argc >= 3) && (strcmp(argv[2], "-") == 0)) { - debug ("## Skipping init Ramdisk\n"); + debug("## Skipping init Ramdisk\n"); rd_len = rd_data = 0; - } else if (argc >= 3 || genimg_has_config (images)) { + } else if (argc >= 3 || genimg_has_config(images)) { #if defined(CONFIG_FIT) if (argc >= 3) { /* @@ -822,19 +828,22 @@ int boot_get_ramdisk (int argc, char * const argv[], bootm_headers_t *images, else default_addr = load_addr;
- if (fit_parse_conf (argv[2], default_addr, + if (fit_parse_conf(argv[2], default_addr, &rd_addr, &fit_uname_config)) { - debug ("* ramdisk: config '%s' from image at 0x%08lx\n", + debug("* ramdisk: config '%s' from image at " + "0x%08lx\n", fit_uname_config, rd_addr); - } else if (fit_parse_subimage (argv[2], default_addr, + } else if (fit_parse_subimage(argv[2], default_addr, &rd_addr, &fit_uname_ramdisk)) { - debug ("* ramdisk: subimage '%s' from image at 0x%08lx\n", + debug("* ramdisk: subimage '%s' from image at " + "0x%08lx\n", fit_uname_ramdisk, rd_addr); } else #endif { rd_addr = simple_strtoul(argv[2], NULL, 16); - debug ("* ramdisk: cmdline image address = 0x%08lx\n", + debug("* ramdisk: cmdline image address = " + "0x%08lx\n", rd_addr); } #if defined(CONFIG_FIT) @@ -844,7 +853,8 @@ int boot_get_ramdisk (int argc, char * const argv[], bootm_headers_t *images, */ rd_addr = (ulong)images->fit_hdr_os; fit_uname_config = images->fit_uname_cfg; - debug ("* ramdisk: using config '%s' from image at 0x%08lx\n", + debug("* ramdisk: using config '%s' from image " + "at 0x%08lx\n", fit_uname_config, rd_addr);
/* @@ -852,57 +862,59 @@ int boot_get_ramdisk (int argc, char * const argv[], bootm_headers_t *images, * if not, don't try to use it, quit silently. */ fit_hdr = (void *)rd_addr; - cfg_noffset = fit_conf_get_node (fit_hdr, fit_uname_config); + cfg_noffset = fit_conf_get_node(fit_hdr, + fit_uname_config); if (cfg_noffset < 0) { - debug ("* ramdisk: no such config\n"); + debug("* ramdisk: no such config\n"); return 1; }
- rd_noffset = fit_conf_get_ramdisk_node (fit_hdr, cfg_noffset); + rd_noffset = fit_conf_get_ramdisk_node(fit_hdr, + cfg_noffset); if (rd_noffset < 0) { - debug ("* ramdisk: no ramdisk in config\n"); + debug("* ramdisk: no ramdisk in config\n"); return 0; } } #endif
/* copy from dataflash if needed */ - rd_addr = genimg_get_image (rd_addr); + rd_addr = genimg_get_image(rd_addr);
/* * Check if there is an initrd image at the * address provided in the second bootm argument * check image type, for FIT images get FIT node. */ - switch (genimg_get_format ((void *)rd_addr)) { + switch (genimg_get_format((void *)rd_addr)) { case IMAGE_FORMAT_LEGACY: - printf ("## Loading init Ramdisk from Legacy " + printf("## Loading init Ramdisk from Legacy " "Image at %08lx ...\n", rd_addr);
- show_boot_progress (9); - rd_hdr = image_get_ramdisk (rd_addr, arch, + show_boot_progress(9); + rd_hdr = image_get_ramdisk(rd_addr, arch, images->verify);
if (rd_hdr == NULL) return 1;
- rd_data = image_get_data (rd_hdr); - rd_len = image_get_data_size (rd_hdr); - rd_load = image_get_load (rd_hdr); + rd_data = image_get_data(rd_hdr); + rd_len = image_get_data_size(rd_hdr); + rd_load = image_get_load(rd_hdr); break; #if defined(CONFIG_FIT) case IMAGE_FORMAT_FIT: fit_hdr = (void *)rd_addr; - printf ("## Loading init Ramdisk from FIT " + printf("## Loading init Ramdisk from FIT " "Image at %08lx ...\n", rd_addr);
- show_boot_progress (120); - if (!fit_check_format (fit_hdr)) { - puts ("Bad FIT ramdisk image format!\n"); - show_boot_progress (-120); + show_boot_progress(120); + if (!fit_check_format(fit_hdr)) { + puts("Bad FIT ramdisk image format!\n"); + show_boot_progress(-120); return 1; } - show_boot_progress (121); + show_boot_progress(121);
if (!fit_uname_ramdisk) { /* @@ -910,52 +922,63 @@ int boot_get_ramdisk (int argc, char * const argv[], bootm_headers_t *images, * node first. If config unit node name is NULL * fit_conf_get_node() will try to find default config node */ - show_boot_progress (122); - cfg_noffset = fit_conf_get_node (fit_hdr, fit_uname_config); + show_boot_progress(122); + cfg_noffset = fit_conf_get_node(fit_hdr, + fit_uname_config); if (cfg_noffset < 0) { - puts ("Could not find configuration node\n"); - show_boot_progress (-122); + puts("Could not find configuration " + "node\n"); + show_boot_progress(-122); return 1; } - fit_uname_config = fdt_get_name (fit_hdr, cfg_noffset, NULL); - printf (" Using '%s' configuration\n", fit_uname_config); + fit_uname_config = fdt_get_name(fit_hdr, + cfg_noffset, NULL); + printf(" Using '%s' configuration\n", + fit_uname_config);
- rd_noffset = fit_conf_get_ramdisk_node (fit_hdr, cfg_noffset); - fit_uname_ramdisk = fit_get_name (fit_hdr, rd_noffset, NULL); + rd_noffset = fit_conf_get_ramdisk_node(fit_hdr, + cfg_noffset); + fit_uname_ramdisk = fit_get_name(fit_hdr, + rd_noffset, NULL); } else { /* get ramdisk component image node offset */ - show_boot_progress (123); - rd_noffset = fit_image_get_node (fit_hdr, fit_uname_ramdisk); + show_boot_progress(123); + rd_noffset = fit_image_get_node(fit_hdr, + fit_uname_ramdisk); } if (rd_noffset < 0) { - puts ("Could not find subimage node\n"); - show_boot_progress (-124); + puts("Could not find subimage node\n"); + show_boot_progress(-124); return 1; }
- printf (" Trying '%s' ramdisk subimage\n", fit_uname_ramdisk); + printf(" Trying '%s' ramdisk subimage\n", + fit_uname_ramdisk);
- show_boot_progress (125); - if (!fit_check_ramdisk (fit_hdr, rd_noffset, arch, images->verify)) + show_boot_progress(125); + if (!fit_check_ramdisk(fit_hdr, rd_noffset, arch, + images->verify)) return 1;
/* get ramdisk image data address and length */ - if (fit_image_get_data (fit_hdr, rd_noffset, &data, &size)) { - puts ("Could not find ramdisk subimage data!\n"); - show_boot_progress (-127); + if (fit_image_get_data(fit_hdr, rd_noffset, &data, + &size)) { + puts("Could not find ramdisk subimage data!\n"); + show_boot_progress(-127); return 1; } - show_boot_progress (128); + show_boot_progress(128);
rd_data = (ulong)data; rd_len = size;
- if (fit_image_get_load (fit_hdr, rd_noffset, &rd_load)) { - puts ("Can't get ramdisk subimage load address!\n"); - show_boot_progress (-129); + if (fit_image_get_load(fit_hdr, rd_noffset, &rd_load)) { + puts("Can't get ramdisk subimage load " + "address!\n"); + show_boot_progress(-129); return 1; } - show_boot_progress (129); + show_boot_progress(129);
images->fit_hdr_rd = fit_hdr; images->fit_uname_rd = fit_uname_ramdisk; @@ -963,37 +986,39 @@ int boot_get_ramdisk (int argc, char * const argv[], bootm_headers_t *images, break; #endif default: - puts ("Wrong Ramdisk Image Format\n"); + puts("Wrong Ramdisk Image Format\n"); rd_data = rd_len = rd_load = 0; return 1; } } else if (images->legacy_hdr_valid && - image_check_type (&images->legacy_hdr_os_copy, IH_TYPE_MULTI)) { + image_check_type(&images->legacy_hdr_os_copy, + IH_TYPE_MULTI)) { + /* * Now check if we have a legacy mult-component image, * get second entry data start address and len. */ - show_boot_progress (13); - printf ("## Loading init Ramdisk from multi component " + show_boot_progress(13); + printf("## Loading init Ramdisk from multi component " "Legacy Image at %08lx ...\n", (ulong)images->legacy_hdr_os);
- image_multi_getimg (images->legacy_hdr_os, 1, &rd_data, &rd_len); + image_multi_getimg(images->legacy_hdr_os, 1, &rd_data, &rd_len); } else { /* * no initrd image */ - show_boot_progress (14); + show_boot_progress(14); rd_len = rd_data = 0; }
if (!rd_data) { - debug ("## No init Ramdisk\n"); + debug("## No init Ramdisk\n"); } else { *rd_start = rd_data; *rd_end = rd_data + rd_len; } - debug (" ramdisk start = 0x%08lx, ramdisk end = 0x%08lx\n", + debug(" ramdisk start = 0x%08lx, ramdisk end = 0x%08lx\n", *rd_start, *rd_end);
return 0; @@ -1021,18 +1046,18 @@ int boot_get_ramdisk (int argc, char * const argv[], bootm_headers_t *images, * 0 - success * -1 - failure */ -int boot_ramdisk_high (struct lmb *lmb, ulong rd_data, ulong rd_len, +int boot_ramdisk_high(struct lmb *lmb, ulong rd_data, ulong rd_len, ulong *initrd_start, ulong *initrd_end) { char *s; ulong initrd_high; int initrd_copy_to_ram = 1;
- if ((s = getenv ("initrd_high")) != NULL) { + if ((s = getenv("initrd_high")) != NULL) { /* a value of "no" or a similar string will act like 0, * turning the "load high" feature off. This is intentional. */ - initrd_high = simple_strtoul (s, NULL, 16); + initrd_high = simple_strtoul(s, NULL, 16); if (initrd_high == ~0) initrd_copy_to_ram = 0; } else { @@ -1046,41 +1071,43 @@ int boot_ramdisk_high (struct lmb *lmb, ulong rd_data, ulong rd_len, lmb_reserve(lmb, logbuffer_base() - LOGBUFF_OVERHEAD, LOGBUFF_RESERVE); #endif
- debug ("## initrd_high = 0x%08lx, copy_to_ram = %d\n", + debug("## initrd_high = 0x%08lx, copy_to_ram = %d\n", initrd_high, initrd_copy_to_ram);
if (rd_data) { if (!initrd_copy_to_ram) { /* zero-copy ramdisk support */ - debug (" in-place initrd\n"); + debug(" in-place initrd\n"); *initrd_start = rd_data; *initrd_end = rd_data + rd_len; lmb_reserve(lmb, rd_data, rd_len); } else { if (initrd_high) - *initrd_start = (ulong)lmb_alloc_base (lmb, rd_len, 0x1000, initrd_high); + *initrd_start = (ulong)lmb_alloc_base(lmb, + rd_len, 0x1000, initrd_high); else - *initrd_start = (ulong)lmb_alloc (lmb, rd_len, 0x1000); + *initrd_start = (ulong)lmb_alloc(lmb, rd_len, + 0x1000);
if (*initrd_start == 0) { - puts ("ramdisk - allocation error\n"); + puts("ramdisk - allocation error\n"); goto error; } - show_boot_progress (12); + show_boot_progress(12);
*initrd_end = *initrd_start + rd_len; - printf (" Loading Ramdisk to %08lx, end %08lx ... ", + printf(" Loading Ramdisk to %08lx, end %08lx ... ", *initrd_start, *initrd_end);
- memmove_wd ((void *)*initrd_start, + memmove_wd((void *)*initrd_start, (void *)rd_data, rd_len, CHUNKSZ);
- puts ("OK\n"); + puts("OK\n"); } } else { *initrd_start = 0; *initrd_end = 0; } - debug (" ramdisk load start = 0x%08lx, ramdisk load end = 0x%08lx\n", + debug(" ramdisk load start = 0x%08lx, ramdisk load end = 0x%08lx\n", *initrd_start, *initrd_end);
return 0; @@ -1091,41 +1118,41 @@ error: #endif /* CONFIG_SYS_BOOT_RAMDISK_HIGH */
#ifdef CONFIG_OF_LIBFDT -static void fdt_error (const char *msg) +static void fdt_error(const char *msg) { - puts ("ERROR: "); - puts (msg); - puts (" - must RESET the board to recover.\n"); + puts("ERROR: "); + puts(msg); + puts(" - must RESET the board to recover.\n"); }
-static const image_header_t *image_get_fdt (ulong fdt_addr) +static const image_header_t *image_get_fdt(ulong fdt_addr) { const image_header_t *fdt_hdr = (const image_header_t *)fdt_addr;
- image_print_contents (fdt_hdr); + image_print_contents(fdt_hdr);
- puts (" Verifying Checksum ... "); - if (!image_check_hcrc (fdt_hdr)) { - fdt_error ("fdt header checksum invalid"); + puts(" Verifying Checksum ... "); + if (!image_check_hcrc(fdt_hdr)) { + fdt_error("fdt header checksum invalid"); return NULL; }
- if (!image_check_dcrc (fdt_hdr)) { - fdt_error ("fdt checksum invalid"); + if (!image_check_dcrc(fdt_hdr)) { + fdt_error("fdt checksum invalid"); return NULL; } - puts ("OK\n"); + puts("OK\n");
- if (!image_check_type (fdt_hdr, IH_TYPE_FLATDT)) { - fdt_error ("uImage is not a fdt"); + if (!image_check_type(fdt_hdr, IH_TYPE_FLATDT)) { + fdt_error("uImage is not a fdt"); return NULL; } - if (image_get_comp (fdt_hdr) != IH_COMP_NONE) { - fdt_error ("uImage is compressed"); + if (image_get_comp(fdt_hdr) != IH_COMP_NONE) { + fdt_error("uImage is compressed"); return NULL; } - if (fdt_check_header ((char *)image_get_data (fdt_hdr)) != 0) { - fdt_error ("uImage data is not a fdt"); + if (fdt_check_header((char *)image_get_data(fdt_hdr)) != 0) { + fdt_error("uImage data is not a fdt"); return NULL; } return fdt_hdr; @@ -1145,26 +1172,26 @@ static const image_header_t *image_get_fdt (ulong fdt_addr) * 0, on failure */ #if defined(CONFIG_FIT) -static int fit_check_fdt (const void *fit, int fdt_noffset, int verify) +static int fit_check_fdt(const void *fit, int fdt_noffset, int verify) { - fit_image_print (fit, fdt_noffset, " "); + fit_image_print(fit, fdt_noffset, " ");
if (verify) { - puts (" Verifying Hash Integrity ... "); - if (!fit_image_check_hashes (fit, fdt_noffset)) { - fdt_error ("Bad Data Hash"); + puts(" Verifying Hash Integrity ... "); + if (!fit_image_check_hashes(fit, fdt_noffset)) { + fdt_error("Bad Data Hash"); return 0; } - puts ("OK\n"); + puts("OK\n"); }
- if (!fit_image_check_type (fit, fdt_noffset, IH_TYPE_FLATDT)) { - fdt_error ("Not a FDT image"); + if (!fit_image_check_type(fit, fdt_noffset, IH_TYPE_FLATDT)) { + fdt_error("Not a FDT image"); return 0; }
- if (!fit_image_check_comp (fit, fdt_noffset, IH_COMP_NONE)) { - fdt_error ("FDT image is compressed"); + if (!fit_image_check_comp(fit, fdt_noffset, IH_COMP_NONE)) { + fdt_error("FDT image is compressed"); return 0; }
@@ -1191,7 +1218,7 @@ void boot_fdt_add_mem_rsv_regions(struct lmb *lmb, void *fdt_blob) uint64_t addr, size; int i, total;
- if (fdt_check_header (fdt_blob) != 0) + if (fdt_check_header(fdt_blob) != 0) return;
total = fdt_num_mem_rsv(fdt_blob); @@ -1221,7 +1248,7 @@ void boot_fdt_add_mem_rsv_regions(struct lmb *lmb, void *fdt_blob) * 0 - success * 1 - failure */ -int boot_relocate_fdt (struct lmb *lmb, char **of_flat_tree, ulong *of_size) +int boot_relocate_fdt(struct lmb *lmb, char **of_flat_tree, ulong *of_size) { void *fdt_blob = *of_flat_tree; void *of_start = 0; @@ -1234,8 +1261,8 @@ int boot_relocate_fdt (struct lmb *lmb, char **of_flat_tree, ulong *of_size) if (*of_size == 0) return 0;
- if (fdt_check_header (fdt_blob) != 0) { - fdt_error ("image is not a fdt"); + if (fdt_check_header(fdt_blob) != 0) { + fdt_error("image is not a fdt"); goto error; }
@@ -1285,18 +1312,18 @@ int boot_relocate_fdt (struct lmb *lmb, char **of_flat_tree, ulong *of_size) printf(" Using Device Tree in place at %p, end %p\n", of_start, of_start + of_len - 1); } else { - debug ("## device tree at %p ... %p (len=%ld [0x%lX])\n", + debug("## device tree at %p ... %p (len=%ld [0x%lX])\n", fdt_blob, fdt_blob + *of_size - 1, of_len, of_len);
- printf (" Loading Device Tree to %p, end %p ... ", + printf(" Loading Device Tree to %p, end %p ... ", of_start, of_start + of_len - 1);
- err = fdt_open_into (fdt_blob, of_start, of_len); + err = fdt_open_into(fdt_blob, of_start, of_len); if (err != 0) { - fdt_error ("fdt move failed"); + fdt_error("fdt move failed"); goto error; } - puts ("OK\n"); + puts("OK\n"); }
*of_flat_tree = of_start; @@ -1331,8 +1358,8 @@ error: * 1, if fdt image is found but corrupted * of_flat_tree and of_size are set to 0 if no fdt exists */ -int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *images, - char **of_flat_tree, ulong *of_size) +int boot_get_fdt(int flag, int argc, char * const argv[], + bootm_headers_t *images, char **of_flat_tree, ulong *of_size) { const image_header_t *fdt_hdr; ulong fdt_addr; @@ -1353,7 +1380,7 @@ int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *imag *of_flat_tree = NULL; *of_size = 0;
- if (argc > 3 || genimg_has_config (images)) { + if (argc > 3 || genimg_has_config(images)) { #if defined(CONFIG_FIT) if (argc > 3) { /* @@ -1369,19 +1396,22 @@ int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *imag else default_addr = load_addr;
- if (fit_parse_conf (argv[3], default_addr, + if (fit_parse_conf(argv[3], default_addr, &fdt_addr, &fit_uname_config)) { - debug ("* fdt: config '%s' from image at 0x%08lx\n", + debug("* fdt: config '%s' from image at " + "0x%08lx\n", fit_uname_config, fdt_addr); - } else if (fit_parse_subimage (argv[3], default_addr, + } else if (fit_parse_subimage(argv[3], default_addr, &fdt_addr, &fit_uname_fdt)) { - debug ("* fdt: subimage '%s' from image at 0x%08lx\n", + debug("* fdt: subimage '%s' from image at " + "0x%08lx\n", fit_uname_fdt, fdt_addr); } else #endif { fdt_addr = simple_strtoul(argv[3], NULL, 16); - debug ("* fdt: cmdline image address = 0x%08lx\n", + debug("* fdt: cmdline image address = " + "0x%08lx\n", fdt_addr); } #if defined(CONFIG_FIT) @@ -1391,7 +1421,8 @@ int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *imag */ fdt_addr = (ulong)images->fit_hdr_os; fit_uname_config = images->fit_uname_cfg; - debug ("* fdt: using config '%s' from image at 0x%08lx\n", + debug("* fdt: using config '%s' from image " + "at 0x%08lx\n", fit_uname_config, fdt_addr);
/* @@ -1399,39 +1430,40 @@ int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *imag * if not quit silently. */ fit_hdr = (void *)fdt_addr; - cfg_noffset = fit_conf_get_node (fit_hdr, + cfg_noffset = fit_conf_get_node(fit_hdr, fit_uname_config); if (cfg_noffset < 0) { - debug ("* fdt: no such config\n"); + debug("* fdt: no such config\n"); return 0; }
- fdt_noffset = fit_conf_get_fdt_node (fit_hdr, + fdt_noffset = fit_conf_get_fdt_node(fit_hdr, cfg_noffset); if (fdt_noffset < 0) { - debug ("* fdt: no fdt in config\n"); + debug("* fdt: no fdt in config\n"); return 0; } } #endif
- debug ("## Checking for 'FDT'/'FDT Image' at %08lx\n", + debug("## Checking for 'FDT'/'FDT Image' at %08lx\n", fdt_addr);
/* copy from dataflash if needed */ - fdt_addr = genimg_get_image (fdt_addr); + fdt_addr = genimg_get_image(fdt_addr);
/* * Check if there is an FDT image at the * address provided in the second bootm argument * check image type, for FIT images get a FIT node. */ - switch (genimg_get_format ((void *)fdt_addr)) { + switch (genimg_get_format((void *)fdt_addr)) { case IMAGE_FORMAT_LEGACY: /* verify fdt_addr points to a valid image header */ - printf ("## Flattened Device Tree from Legacy Image at %08lx\n", + printf("## Flattened Device Tree from Legacy Image " + "at %08lx\n", fdt_addr); - fdt_hdr = image_get_fdt (fdt_addr); + fdt_hdr = image_get_fdt(fdt_addr); if (!fdt_hdr) goto error;
@@ -1440,22 +1472,22 @@ int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *imag * make sure we don't overwrite initial image */ image_start = (ulong)fdt_hdr; - image_end = image_get_image_end (fdt_hdr); + image_end = image_get_image_end(fdt_hdr);
- load_start = image_get_load (fdt_hdr); - load_end = load_start + image_get_data_size (fdt_hdr); + load_start = image_get_load(fdt_hdr); + load_end = load_start + image_get_data_size(fdt_hdr);
if ((load_start < image_end) && (load_end > image_start)) { - fdt_error ("fdt overwritten"); + fdt_error("fdt overwritten"); goto error; }
- debug (" Loading FDT from 0x%08lx to 0x%08lx\n", - image_get_data (fdt_hdr), load_start); + debug(" Loading FDT from 0x%08lx to 0x%08lx\n", + image_get_data(fdt_hdr), load_start);
- memmove ((void *)load_start, - (void *)image_get_data (fdt_hdr), - image_get_data_size (fdt_hdr)); + memmove((void *)load_start, + (void *)image_get_data(fdt_hdr), + image_get_data_size(fdt_hdr));
fdt_blob = (char *)load_start; break; @@ -1467,12 +1499,13 @@ int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *imag */ #if defined(CONFIG_FIT) /* check FDT blob vs FIT blob */ - if (fit_check_format ((const void *)fdt_addr)) { + if (fit_check_format((const void *)fdt_addr)) { /* * FIT image */ fit_hdr = (void *)fdt_addr; - printf ("## Flattened Device Tree from FIT Image at %08lx\n", + printf("## Flattened Device Tree from FIT " + "Image at %08lx\n", fdt_addr);
if (!fit_uname_fdt) { @@ -1483,50 +1516,56 @@ int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *imag * fit_conf_get_node() will try to * find default config node */ - cfg_noffset = fit_conf_get_node (fit_hdr, + cfg_noffset = fit_conf_get_node(fit_hdr, fit_uname_config);
if (cfg_noffset < 0) { - fdt_error ("Could not find configuration node\n"); + fdt_error("Could not find " + "configuration " + "node\n"); goto error; }
- fit_uname_config = fdt_get_name (fit_hdr, + fit_uname_config = fdt_get_name(fit_hdr, cfg_noffset, NULL); - printf (" Using '%s' configuration\n", + printf(" Using '%s' configuration\n", fit_uname_config);
- fdt_noffset = fit_conf_get_fdt_node (fit_hdr, + fdt_noffset = fit_conf_get_fdt_node( + fit_hdr, cfg_noffset); - fit_uname_fdt = fit_get_name (fit_hdr, + fit_uname_fdt = fit_get_name(fit_hdr, fdt_noffset, NULL); } else { /* get FDT component image node offset */ - fdt_noffset = fit_image_get_node (fit_hdr, - fit_uname_fdt); + fdt_noffset = fit_image_get_node( + fit_hdr, + fit_uname_fdt); } if (fdt_noffset < 0) { - fdt_error ("Could not find subimage node\n"); + fdt_error("Could not find subimage " + "node\n"); goto error; }
- printf (" Trying '%s' FDT blob subimage\n", + printf(" Trying '%s' FDT blob subimage\n", fit_uname_fdt);
- if (!fit_check_fdt (fit_hdr, fdt_noffset, + if (!fit_check_fdt(fit_hdr, fdt_noffset, images->verify)) goto error;
/* get ramdisk image data address and length */ - if (fit_image_get_data (fit_hdr, fdt_noffset, + if (fit_image_get_data(fit_hdr, fdt_noffset, &data, &size)) { - fdt_error ("Could not find FDT subimage data"); + fdt_error("Could not find FDT " + "subimage data"); goto error; }
/* verift that image data is a proper FDT blob */ - if (fdt_check_header ((char *)data) != 0) { - fdt_error ("Subimage data is not a FTD"); + if (fdt_check_header((char *)data) != 0) { + fdt_error("Subimage data is not a FTD"); goto error; }
@@ -1535,22 +1574,24 @@ int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *imag * make sure we don't overwrite initial image */ image_start = (ulong)fit_hdr; - image_end = fit_get_end (fit_hdr); + image_end = fit_get_end(fit_hdr);
- if (fit_image_get_load (fit_hdr, fdt_noffset, + if (fit_image_get_load(fit_hdr, fdt_noffset, &load_start) == 0) { load_end = load_start + size;
if ((load_start < image_end) && (load_end > image_start)) { - fdt_error ("FDT overwritten"); + fdt_error("FDT overwritten"); goto error; }
- printf (" Loading FDT from 0x%08lx to 0x%08lx\n", - (ulong)data, load_start); + printf(" Loading FDT from 0x%08lx " + "to 0x%08lx\n", + (ulong)data, + load_start);
- memmove ((void *)load_start, + memmove((void *)load_start, (void *)data, size);
fdt_blob = (char *)load_start; @@ -1569,19 +1610,22 @@ int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *imag * FDT blob */ fdt_blob = (char *)fdt_addr; - debug ("* fdt: raw FDT blob\n"); - printf ("## Flattened Device Tree blob at %08lx\n", (long)fdt_blob); + debug("* fdt: raw FDT blob\n"); + printf("## Flattened Device Tree blob at " + "%08lx\n", (long)fdt_blob); } break; default: - puts ("ERROR: Did not find a cmdline Flattened Device Tree\n"); + puts("ERROR: Did not find a cmdline Flattened Device " + "Tree\n"); goto error; }
printf(" Booting using the fdt blob at 0x%p\n", fdt_blob);
} else if (images->legacy_hdr_valid && - image_check_type (&images->legacy_hdr_os_copy, IH_TYPE_MULTI)) { + image_check_type(&images->legacy_hdr_os_copy, + IH_TYPE_MULTI)) {
ulong fdt_data, fdt_len;
@@ -1589,37 +1633,38 @@ int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *imag * Now check if we have a legacy multi-component image, * get second entry data start address and len. */ - printf ("## Flattened Device Tree from multi " + printf("## Flattened Device Tree from multi " "component Image at %08lX\n", (ulong)images->legacy_hdr_os);
- image_multi_getimg (images->legacy_hdr_os, 2, &fdt_data, &fdt_len); + image_multi_getimg(images->legacy_hdr_os, 2, &fdt_data, + &fdt_len); if (fdt_len) {
fdt_blob = (char *)fdt_data; printf(" Booting using the fdt at 0x%p\n", fdt_blob);
- if (fdt_check_header (fdt_blob) != 0) { - fdt_error ("image is not a fdt"); + if (fdt_check_header(fdt_blob) != 0) { + fdt_error("image is not a fdt"); goto error; }
if (fdt_totalsize(fdt_blob) != fdt_len) { - fdt_error ("fdt size != image size"); + fdt_error("fdt size != image size"); goto error; } } else { - debug ("## No Flattened Device Tree\n"); + debug("## No Flattened Device Tree\n"); return 0; } } else { - debug ("## No Flattened Device Tree\n"); + debug("## No Flattened Device Tree\n"); return 0; }
*of_flat_tree = fdt_blob; *of_size = fdt_totalsize(fdt_blob); - debug (" of_flat_tree at 0x%08lx size 0x%08lx\n", + debug(" of_flat_tree at 0x%08lx size 0x%08lx\n", (ulong)*of_flat_tree, *of_size);
return 0; @@ -1647,7 +1692,7 @@ error: * 0 - success * -1 - failure */ -int boot_get_cmdline (struct lmb *lmb, ulong *cmd_start, ulong *cmd_end) +int boot_get_cmdline(struct lmb *lmb, ulong *cmd_start, ulong *cmd_end) { char *cmdline; char *s; @@ -1666,7 +1711,7 @@ int boot_get_cmdline (struct lmb *lmb, ulong *cmd_start, ulong *cmd_end) *cmd_start = (ulong) & cmdline[0]; *cmd_end = *cmd_start + strlen(cmdline);
- debug ("## cmdline at 0x%08lx ... 0x%08lx\n", *cmd_start, *cmd_end); + debug("## cmdline at 0x%08lx ... 0x%08lx\n", *cmd_start, *cmd_end);
return 0; } @@ -1686,7 +1731,7 @@ int boot_get_cmdline (struct lmb *lmb, ulong *cmd_start, ulong *cmd_end) * 0 - success * -1 - failure */ -int boot_get_kbd (struct lmb *lmb, bd_t **kbd) +int boot_get_kbd(struct lmb *lmb, bd_t **kbd) { *kbd = (bd_t *)(ulong)lmb_alloc_base(lmb, sizeof(bd_t), 0xf, getenv_bootm_mapsize() + getenv_bootm_low()); @@ -1695,7 +1740,7 @@ int boot_get_kbd (struct lmb *lmb, bd_t **kbd)
**kbd = *(gd->bd);
- debug ("## kernel board info at 0x%08lx\n", (ulong)*kbd); + debug("## kernel board info at 0x%08lx\n", (ulong)*kbd);
#if defined(DEBUG) && defined(CONFIG_CMD_BDI) do_bdinfo(NULL, 0, 0, NULL); @@ -1711,7 +1756,7 @@ int boot_get_kbd (struct lmb *lmb, bd_t **kbd) /* New uImage format routines */ /*****************************************************************************/ #ifndef USE_HOSTCC -static int fit_parse_spec (const char *spec, char sepc, ulong addr_curr, +static int fit_parse_spec(const char *spec, char sepc, ulong addr_curr, ulong *addr, const char **name) { const char *sep; @@ -1719,10 +1764,10 @@ static int fit_parse_spec (const char *spec, char sepc, ulong addr_curr, *addr = addr_curr; *name = NULL;
- sep = strchr (spec, sepc); + sep = strchr(spec, sepc); if (sep) { if (sep - spec > 0) - *addr = simple_strtoul (spec, NULL, 16); + *addr = simple_strtoul(spec, NULL, 16);
*name = sep + 1; return 1; @@ -1752,10 +1797,10 @@ static int fit_parse_spec (const char *spec, char sepc, ulong addr_curr, * addr and conf_name are set accordingly * 0 otherwise */ -inline int fit_parse_conf (const char *spec, ulong addr_curr, +inline int fit_parse_conf(const char *spec, ulong addr_curr, ulong *addr, const char **conf_name) { - return fit_parse_spec (spec, '#', addr_curr, addr, conf_name); + return fit_parse_spec(spec, '#', addr_curr, addr, conf_name); }
/** @@ -1778,21 +1823,21 @@ inline int fit_parse_conf (const char *spec, ulong addr_curr, * addr and image_name are set accordingly * 0 otherwise */ -inline int fit_parse_subimage (const char *spec, ulong addr_curr, +inline int fit_parse_subimage(const char *spec, ulong addr_curr, ulong *addr, const char **image_name) { - return fit_parse_spec (spec, ':', addr_curr, addr, image_name); + return fit_parse_spec(spec, ':', addr_curr, addr, image_name); } #endif /* !USE_HOSTCC */
-static void fit_get_debug (const void *fit, int noffset, +static void fit_get_debug(const void *fit, int noffset, char *prop_name, int err) { - debug ("Can't get '%s' property from FIT 0x%08lx, " + debug("Can't get '%s' property from FIT 0x%08lx, " "node: offset %d, name %s (%s)\n", prop_name, (ulong)fit, noffset, - fit_get_name (fit, noffset, NULL), - fdt_strerror (err)); + fit_get_name(fit, noffset, NULL), + fdt_strerror(err)); }
/** @@ -1807,7 +1852,7 @@ static void fit_get_debug (const void *fit, int noffset, * returns: * no returned results */ -void fit_print_contents (const void *fit) +void fit_print_contents(const void *fit) { char *desc; char *uname; @@ -1829,72 +1874,74 @@ void fit_print_contents (const void *fit) #endif
/* Root node properties */ - ret = fit_get_desc (fit, 0, &desc); - printf ("%sFIT description: ", p); + ret = fit_get_desc(fit, 0, &desc); + printf("%sFIT description: ", p); if (ret) - printf ("unavailable\n"); + printf("unavailable\n"); else - printf ("%s\n", desc); + printf("%s\n", desc);
#if defined(CONFIG_TIMESTAMP) || defined(CONFIG_CMD_DATE) || defined(USE_HOSTCC) - ret = fit_get_timestamp (fit, 0, ×tamp); - printf ("%sCreated: ", p); + ret = fit_get_timestamp(fit, 0, ×tamp); + printf("%sCreated: ", p); if (ret) - printf ("unavailable\n"); + printf("unavailable\n"); else - genimg_print_time (timestamp); + genimg_print_time(timestamp); #endif
/* Find images parent node offset */ - images_noffset = fdt_path_offset (fit, FIT_IMAGES_PATH); + images_noffset = fdt_path_offset(fit, FIT_IMAGES_PATH); if (images_noffset < 0) { - printf ("Can't find images parent node '%s' (%s)\n", - FIT_IMAGES_PATH, fdt_strerror (images_noffset)); + printf("Can't find images parent node '%s' (%s)\n", + FIT_IMAGES_PATH, fdt_strerror(images_noffset)); return; }
/* Process its subnodes, print out component images details */ - for (ndepth = 0, count = 0, noffset = fdt_next_node (fit, images_noffset, &ndepth); + for (ndepth = 0, count = 0, + noffset = fdt_next_node(fit, images_noffset, &ndepth); (noffset >= 0) && (ndepth > 0); - noffset = fdt_next_node (fit, noffset, &ndepth)) { + noffset = fdt_next_node(fit, noffset, &ndepth)) { if (ndepth == 1) { /* * Direct child node of the images parent node, * i.e. component image node. */ - printf ("%s Image %u (%s)\n", p, count++, + printf("%s Image %u (%s)\n", p, count++, fit_get_name(fit, noffset, NULL));
- fit_image_print (fit, noffset, p); + fit_image_print(fit, noffset, p); } }
/* Find configurations parent node offset */ - confs_noffset = fdt_path_offset (fit, FIT_CONFS_PATH); + confs_noffset = fdt_path_offset(fit, FIT_CONFS_PATH); if (confs_noffset < 0) { - debug ("Can't get configurations parent node '%s' (%s)\n", - FIT_CONFS_PATH, fdt_strerror (confs_noffset)); + debug("Can't get configurations parent node '%s' (%s)\n", + FIT_CONFS_PATH, fdt_strerror(confs_noffset)); return; }
/* get default configuration unit name from default property */ - uname = (char *)fdt_getprop (fit, noffset, FIT_DEFAULT_PROP, NULL); + uname = (char *)fdt_getprop(fit, noffset, FIT_DEFAULT_PROP, NULL); if (uname) - printf ("%s Default Configuration: '%s'\n", p, uname); + printf("%s Default Configuration: '%s'\n", p, uname);
/* Process its subnodes, print out configurations details */ - for (ndepth = 0, count = 0, noffset = fdt_next_node (fit, confs_noffset, &ndepth); + for (ndepth = 0, count = 0, + noffset = fdt_next_node(fit, confs_noffset, &ndepth); (noffset >= 0) && (ndepth > 0); - noffset = fdt_next_node (fit, noffset, &ndepth)) { + noffset = fdt_next_node(fit, noffset, &ndepth)) { if (ndepth == 1) { /* * Direct child node of the configurations parent node, * i.e. configuration node. */ - printf ("%s Configuration %u (%s)\n", p, count++, + printf("%s Configuration %u (%s)\n", p, count++, fit_get_name(fit, noffset, NULL));
- fit_conf_print (fit, noffset, p); + fit_conf_print(fit, noffset, p); } } } @@ -1914,7 +1961,7 @@ void fit_print_contents (const void *fit) * returns: * no returned results */ -void fit_image_print (const void *fit, int image_noffset, const char *p) +void fit_image_print(const void *fit, int image_noffset, const char *p) { char *desc; uint8_t type, arch, os, comp; @@ -1926,74 +1973,74 @@ void fit_image_print (const void *fit, int image_noffset, const char *p) int ret;
/* Mandatory properties */ - ret = fit_get_desc (fit, image_noffset, &desc); - printf ("%s Description: ", p); + ret = fit_get_desc(fit, image_noffset, &desc); + printf("%s Description: ", p); if (ret) - printf ("unavailable\n"); + printf("unavailable\n"); else - printf ("%s\n", desc); + printf("%s\n", desc);
- fit_image_get_type (fit, image_noffset, &type); - printf ("%s Type: %s\n", p, genimg_get_type_name (type)); + fit_image_get_type(fit, image_noffset, &type); + printf("%s Type: %s\n", p, genimg_get_type_name(type));
- fit_image_get_comp (fit, image_noffset, &comp); - printf ("%s Compression: %s\n", p, genimg_get_comp_name (comp)); + fit_image_get_comp(fit, image_noffset, &comp); + printf("%s Compression: %s\n", p, genimg_get_comp_name(comp));
- ret = fit_image_get_data (fit, image_noffset, &data, &size); + ret = fit_image_get_data(fit, image_noffset, &data, &size);
#ifndef USE_HOSTCC - printf ("%s Data Start: ", p); + printf("%s Data Start: ", p); if (ret) - printf ("unavailable\n"); + printf("unavailable\n"); else - printf ("0x%08lx\n", (ulong)data); + printf("0x%08lx\n", (ulong)data); #endif
- printf ("%s Data Size: ", p); + printf("%s Data Size: ", p); if (ret) - printf ("unavailable\n"); + printf("unavailable\n"); else - genimg_print_size (size); + genimg_print_size(size);
/* Remaining, type dependent properties */ if ((type == IH_TYPE_KERNEL) || (type == IH_TYPE_STANDALONE) || (type == IH_TYPE_RAMDISK) || (type == IH_TYPE_FIRMWARE) || (type == IH_TYPE_FLATDT)) { - fit_image_get_arch (fit, image_noffset, &arch); - printf ("%s Architecture: %s\n", p, genimg_get_arch_name (arch)); + fit_image_get_arch(fit, image_noffset, &arch); + printf("%s Architecture: %s\n", p, genimg_get_arch_name(arch)); }
if (type == IH_TYPE_KERNEL) { - fit_image_get_os (fit, image_noffset, &os); - printf ("%s OS: %s\n", p, genimg_get_os_name (os)); + fit_image_get_os(fit, image_noffset, &os); + printf("%s OS: %s\n", p, genimg_get_os_name(os)); }
if ((type == IH_TYPE_KERNEL) || (type == IH_TYPE_STANDALONE) || (type == IH_TYPE_FIRMWARE)) { - ret = fit_image_get_load (fit, image_noffset, &load); - printf ("%s Load Address: ", p); + ret = fit_image_get_load(fit, image_noffset, &load); + printf("%s Load Address: ", p); if (ret) - printf ("unavailable\n"); + printf("unavailable\n"); else - printf ("0x%08lx\n", load); + printf("0x%08lx\n", load); }
if ((type == IH_TYPE_KERNEL) || (type == IH_TYPE_STANDALONE)) { - fit_image_get_entry (fit, image_noffset, &entry); - printf ("%s Entry Point: ", p); + fit_image_get_entry(fit, image_noffset, &entry); + printf("%s Entry Point: ", p); if (ret) - printf ("unavailable\n"); + printf("unavailable\n"); else - printf ("0x%08lx\n", entry); + printf("0x%08lx\n", entry); }
/* Process all hash subnodes of the component image node */ - for (ndepth = 0, noffset = fdt_next_node (fit, image_noffset, &ndepth); + for (ndepth = 0, noffset = fdt_next_node(fit, image_noffset, &ndepth); (noffset >= 0) && (ndepth > 0); - noffset = fdt_next_node (fit, noffset, &ndepth)) { + noffset = fdt_next_node(fit, noffset, &ndepth)) { if (ndepth == 1) { /* Direct child node of the component image node */ - fit_image_print_hash (fit, noffset, p); + fit_image_print_hash(fit, noffset, p); } } } @@ -2009,7 +2056,7 @@ void fit_image_print (const void *fit, int image_noffset, const char *p) * returns: * no returned results */ -void fit_image_print_hash (const void *fit, int noffset, const char *p) +void fit_image_print_hash(const void *fit, int noffset, const char *p) { char *algo; uint8_t *value; @@ -2021,33 +2068,33 @@ void fit_image_print_hash (const void *fit, int noffset, const char *p) * Multiple hash nodes require unique unit node * names, e.g. hash@1, hash@2, etc. */ - if (strncmp (fit_get_name(fit, noffset, NULL), + if (strncmp(fit_get_name(fit, noffset, NULL), FIT_HASH_NODENAME, strlen(FIT_HASH_NODENAME)) != 0) return;
- debug ("%s Hash node: '%s'\n", p, - fit_get_name (fit, noffset, NULL)); + debug("%s Hash node: '%s'\n", p, + fit_get_name(fit, noffset, NULL));
- printf ("%s Hash algo: ", p); - if (fit_image_hash_get_algo (fit, noffset, &algo)) { - printf ("invalid/unsupported\n"); + printf("%s Hash algo: ", p); + if (fit_image_hash_get_algo(fit, noffset, &algo)) { + printf("invalid/unsupported\n"); return; } - printf ("%s\n", algo); + printf("%s\n", algo);
- ret = fit_image_hash_get_value (fit, noffset, &value, + ret = fit_image_hash_get_value(fit, noffset, &value, &value_len); - printf ("%s Hash value: ", p); + printf("%s Hash value: ", p); if (ret) { - printf ("unavailable\n"); + printf("unavailable\n"); } else { for (i = 0; i < value_len; i++) - printf ("%02x", value[i]); - printf ("\n"); + printf("%02x", value[i]); + printf("\n"); }
- debug ("%s Hash len: %d\n", p, value_len); + debug("%s Hash len: %d\n", p, value_len); }
/** @@ -2063,13 +2110,13 @@ void fit_image_print_hash (const void *fit, int noffset, const char *p) * 0, on success * -1, on failure */ -int fit_get_desc (const void *fit, int noffset, char **desc) +int fit_get_desc(const void *fit, int noffset, char **desc) { int len;
- *desc = (char *)fdt_getprop (fit, noffset, FIT_DESC_PROP, &len); + *desc = (char *)fdt_getprop(fit, noffset, FIT_DESC_PROP, &len); if (*desc == NULL) { - fit_get_debug (fit, noffset, FIT_DESC_PROP, len); + fit_get_debug(fit, noffset, FIT_DESC_PROP, len); return -1; }
@@ -2091,22 +2138,22 @@ int fit_get_desc (const void *fit, int noffset, char **desc) * -1, on property read failure * -2, on wrong timestamp size */ -int fit_get_timestamp (const void *fit, int noffset, time_t *timestamp) +int fit_get_timestamp(const void *fit, int noffset, time_t *timestamp) { int len; const void *data;
- data = fdt_getprop (fit, noffset, FIT_TIMESTAMP_PROP, &len); + data = fdt_getprop(fit, noffset, FIT_TIMESTAMP_PROP, &len); if (data == NULL) { - fit_get_debug (fit, noffset, FIT_TIMESTAMP_PROP, len); + fit_get_debug(fit, noffset, FIT_TIMESTAMP_PROP, len); return -1; } - if (len != sizeof (uint32_t)) { - debug ("FIT timestamp with incorrect size of (%u)\n", len); + if (len != sizeof(uint32_t)) { + debug("FIT timestamp with incorrect size of (%u)\n", len); return -2; }
- *timestamp = uimage_to_cpu (*((uint32_t *)data)); + *timestamp = uimage_to_cpu(*((uint32_t *)data)); return 0; }
@@ -2123,21 +2170,21 @@ int fit_get_timestamp (const void *fit, int noffset, time_t *timestamp) * image node offset when found (>=0) * negative number on failure (FDT_ERR_* code) */ -int fit_image_get_node (const void *fit, const char *image_uname) +int fit_image_get_node(const void *fit, const char *image_uname) { int noffset, images_noffset;
- images_noffset = fdt_path_offset (fit, FIT_IMAGES_PATH); + images_noffset = fdt_path_offset(fit, FIT_IMAGES_PATH); if (images_noffset < 0) { - debug ("Can't find images parent node '%s' (%s)\n", - FIT_IMAGES_PATH, fdt_strerror (images_noffset)); + debug("Can't find images parent node '%s' (%s)\n", + FIT_IMAGES_PATH, fdt_strerror(images_noffset)); return images_noffset; }
- noffset = fdt_subnode_offset (fit, images_noffset, image_uname); + noffset = fdt_subnode_offset(fit, images_noffset, image_uname); if (noffset < 0) { - debug ("Can't get node offset for image unit name: '%s' (%s)\n", - image_uname, fdt_strerror (noffset)); + debug("Can't get node offset for image unit name: '%s' (%s)\n", + image_uname, fdt_strerror(noffset)); }
return noffset; @@ -2157,21 +2204,21 @@ int fit_image_get_node (const void *fit, const char *image_uname) * 0, on success * -1, on failure */ -int fit_image_get_os (const void *fit, int noffset, uint8_t *os) +int fit_image_get_os(const void *fit, int noffset, uint8_t *os) { int len; const void *data;
/* Get OS name from property data */ - data = fdt_getprop (fit, noffset, FIT_OS_PROP, &len); + data = fdt_getprop(fit, noffset, FIT_OS_PROP, &len); if (data == NULL) { - fit_get_debug (fit, noffset, FIT_OS_PROP, len); + fit_get_debug(fit, noffset, FIT_OS_PROP, len); *os = -1; return -1; }
/* Translate OS name to id */ - *os = genimg_get_os_id (data); + *os = genimg_get_os_id(data); return 0; }
@@ -2189,21 +2236,21 @@ int fit_image_get_os (const void *fit, int noffset, uint8_t *os) * 0, on success * -1, on failure */ -int fit_image_get_arch (const void *fit, int noffset, uint8_t *arch) +int fit_image_get_arch(const void *fit, int noffset, uint8_t *arch) { int len; const void *data;
/* Get architecture name from property data */ - data = fdt_getprop (fit, noffset, FIT_ARCH_PROP, &len); + data = fdt_getprop(fit, noffset, FIT_ARCH_PROP, &len); if (data == NULL) { - fit_get_debug (fit, noffset, FIT_ARCH_PROP, len); + fit_get_debug(fit, noffset, FIT_ARCH_PROP, len); *arch = -1; return -1; }
/* Translate architecture name to id */ - *arch = genimg_get_arch_id (data); + *arch = genimg_get_arch_id(data); return 0; }
@@ -2221,21 +2268,21 @@ int fit_image_get_arch (const void *fit, int noffset, uint8_t *arch) * 0, on success * -1, on failure */ -int fit_image_get_type (const void *fit, int noffset, uint8_t *type) +int fit_image_get_type(const void *fit, int noffset, uint8_t *type) { int len; const void *data;
/* Get image type name from property data */ - data = fdt_getprop (fit, noffset, FIT_TYPE_PROP, &len); + data = fdt_getprop(fit, noffset, FIT_TYPE_PROP, &len); if (data == NULL) { - fit_get_debug (fit, noffset, FIT_TYPE_PROP, len); + fit_get_debug(fit, noffset, FIT_TYPE_PROP, len); *type = -1; return -1; }
/* Translate image type name to id */ - *type = genimg_get_type_id (data); + *type = genimg_get_type_id(data); return 0; }
@@ -2253,21 +2300,21 @@ int fit_image_get_type (const void *fit, int noffset, uint8_t *type) * 0, on success * -1, on failure */ -int fit_image_get_comp (const void *fit, int noffset, uint8_t *comp) +int fit_image_get_comp(const void *fit, int noffset, uint8_t *comp) { int len; const void *data;
/* Get compression name from property data */ - data = fdt_getprop (fit, noffset, FIT_COMP_PROP, &len); + data = fdt_getprop(fit, noffset, FIT_COMP_PROP, &len); if (data == NULL) { - fit_get_debug (fit, noffset, FIT_COMP_PROP, len); + fit_get_debug(fit, noffset, FIT_COMP_PROP, len); *comp = -1; return -1; }
/* Translate compression name to id */ - *comp = genimg_get_comp_id (data); + *comp = genimg_get_comp_id(data); return 0; }
@@ -2284,18 +2331,18 @@ int fit_image_get_comp (const void *fit, int noffset, uint8_t *comp) * 0, on success * -1, on failure */ -int fit_image_get_load (const void *fit, int noffset, ulong *load) +int fit_image_get_load(const void *fit, int noffset, ulong *load) { int len; const uint32_t *data;
- data = fdt_getprop (fit, noffset, FIT_LOAD_PROP, &len); + data = fdt_getprop(fit, noffset, FIT_LOAD_PROP, &len); if (data == NULL) { - fit_get_debug (fit, noffset, FIT_LOAD_PROP, len); + fit_get_debug(fit, noffset, FIT_LOAD_PROP, len); return -1; }
- *load = uimage_to_cpu (*data); + *load = uimage_to_cpu(*data); return 0; }
@@ -2312,18 +2359,18 @@ int fit_image_get_load (const void *fit, int noffset, ulong *load) * 0, on success * -1, on failure */ -int fit_image_get_entry (const void *fit, int noffset, ulong *entry) +int fit_image_get_entry(const void *fit, int noffset, ulong *entry) { int len; const uint32_t *data;
- data = fdt_getprop (fit, noffset, FIT_ENTRY_PROP, &len); + data = fdt_getprop(fit, noffset, FIT_ENTRY_PROP, &len); if (data == NULL) { - fit_get_debug (fit, noffset, FIT_ENTRY_PROP, len); + fit_get_debug(fit, noffset, FIT_ENTRY_PROP, len); return -1; }
- *entry = uimage_to_cpu (*data); + *entry = uimage_to_cpu(*data); return 0; }
@@ -2342,14 +2389,14 @@ int fit_image_get_entry (const void *fit, int noffset, ulong *entry) * 0, on success * -1, on failure */ -int fit_image_get_data (const void *fit, int noffset, +int fit_image_get_data(const void *fit, int noffset, const void **data, size_t *size) { int len;
- *data = fdt_getprop (fit, noffset, FIT_DATA_PROP, &len); + *data = fdt_getprop(fit, noffset, FIT_DATA_PROP, &len); if (*data == NULL) { - fit_get_debug (fit, noffset, FIT_DATA_PROP, len); + fit_get_debug(fit, noffset, FIT_DATA_PROP, len); *size = 0; return -1; } @@ -2371,13 +2418,13 @@ int fit_image_get_data (const void *fit, int noffset, * 0, on success * -1, on failure */ -int fit_image_hash_get_algo (const void *fit, int noffset, char **algo) +int fit_image_hash_get_algo(const void *fit, int noffset, char **algo) { int len;
- *algo = (char *)fdt_getprop (fit, noffset, FIT_ALGO_PROP, &len); + *algo = (char *)fdt_getprop(fit, noffset, FIT_ALGO_PROP, &len); if (*algo == NULL) { - fit_get_debug (fit, noffset, FIT_ALGO_PROP, len); + fit_get_debug(fit, noffset, FIT_ALGO_PROP, len); return -1; }
@@ -2399,14 +2446,14 @@ int fit_image_hash_get_algo (const void *fit, int noffset, char **algo) * 0, on success * -1, on failure */ -int fit_image_hash_get_value (const void *fit, int noffset, uint8_t **value, +int fit_image_hash_get_value(const void *fit, int noffset, uint8_t **value, int *value_len) { int len;
- *value = (uint8_t *)fdt_getprop (fit, noffset, FIT_VALUE_PROP, &len); + *value = (uint8_t *)fdt_getprop(fit, noffset, FIT_VALUE_PROP, &len); if (*value == NULL) { - fit_get_debug (fit, noffset, FIT_VALUE_PROP, len); + fit_get_debug(fit, noffset, FIT_VALUE_PROP, len); *value_len = 0; return -1; } @@ -2428,18 +2475,18 @@ int fit_image_hash_get_value (const void *fit, int noffset, uint8_t **value, * 0, on success * -1, on property read failure */ -int fit_set_timestamp (void *fit, int noffset, time_t timestamp) +int fit_set_timestamp(void *fit, int noffset, time_t timestamp) { uint32_t t; int ret;
- t = cpu_to_uimage (timestamp); - ret = fdt_setprop (fit, noffset, FIT_TIMESTAMP_PROP, &t, - sizeof (uint32_t)); + t = cpu_to_uimage(timestamp); + ret = fdt_setprop(fit, noffset, FIT_TIMESTAMP_PROP, &t, + sizeof(uint32_t)); if (ret) { - printf ("Can't set '%s' property for '%s' node (%s)\n", - FIT_TIMESTAMP_PROP, fit_get_name (fit, noffset, NULL), - fdt_strerror (ret)); + printf("Can't set '%s' property for '%s' node (%s)\n", + FIT_TIMESTAMP_PROP, fit_get_name(fit, noffset, NULL), + fdt_strerror(ret)); return -1; }
@@ -2463,23 +2510,23 @@ int fit_set_timestamp (void *fit, int noffset, time_t timestamp) * 0, on success * -1, when algo is unsupported */ -static int calculate_hash (const void *data, int data_len, const char *algo, +static int calculate_hash(const void *data, int data_len, const char *algo, uint8_t *value, int *value_len) { - if (strcmp (algo, "crc32") == 0 ) { - *((uint32_t *)value) = crc32_wd (0, data, data_len, + if (strcmp(algo, "crc32") == 0) { + *((uint32_t *)value) = crc32_wd(0, data, data_len, CHUNKSZ_CRC32); - *((uint32_t *)value) = cpu_to_uimage (*((uint32_t *)value)); + *((uint32_t *)value) = cpu_to_uimage(*((uint32_t *)value)); *value_len = 4; - } else if (strcmp (algo, "sha1") == 0 ) { - sha1_csum_wd ((unsigned char *) data, data_len, + } else if (strcmp(algo, "sha1") == 0) { + sha1_csum_wd((unsigned char *) data, data_len, (unsigned char *) value, CHUNKSZ_SHA1); *value_len = 20; - } else if (strcmp (algo, "md5") == 0 ) { - md5_wd ((unsigned char *)data, data_len, value, CHUNKSZ_MD5); + } else if (strcmp(algo, "md5") == 0) { + md5_wd((unsigned char *)data, data_len, value, CHUNKSZ_MD5); *value_len = 16; } else { - debug ("Unsupported hash alogrithm\n"); + debug("Unsupported hash alogrithm\n"); return -1; } return 0; @@ -2498,7 +2545,7 @@ static int calculate_hash (const void *data, int data_len, const char *algo, * 0, on success * libfdt error code, on failure */ -int fit_set_hashes (void *fit) +int fit_set_hashes(void *fit) { int images_noffset; int noffset; @@ -2506,23 +2553,23 @@ int fit_set_hashes (void *fit) int ret;
/* Find images parent node offset */ - images_noffset = fdt_path_offset (fit, FIT_IMAGES_PATH); + images_noffset = fdt_path_offset(fit, FIT_IMAGES_PATH); if (images_noffset < 0) { - printf ("Can't find images parent node '%s' (%s)\n", - FIT_IMAGES_PATH, fdt_strerror (images_noffset)); + printf("Can't find images parent node '%s' (%s)\n", + FIT_IMAGES_PATH, fdt_strerror(images_noffset)); return images_noffset; }
/* Process its subnodes, print out component images details */ - for (ndepth = 0, noffset = fdt_next_node (fit, images_noffset, &ndepth); + for (ndepth = 0, noffset = fdt_next_node(fit, images_noffset, &ndepth); (noffset >= 0) && (ndepth > 0); - noffset = fdt_next_node (fit, noffset, &ndepth)) { + noffset = fdt_next_node(fit, noffset, &ndepth)) { if (ndepth == 1) { /* * Direct child node of the images parent node, * i.e. component image node. */ - ret = fit_image_set_hashes (fit, noffset); + ret = fit_image_set_hashes(fit, noffset); if (ret) return ret; } @@ -2560,7 +2607,7 @@ int fit_set_hashes (void *fit) * 0 on sucess * <0 on failure */ -int fit_image_set_hashes (void *fit, int image_noffset) +int fit_image_set_hashes(void *fit, int image_noffset) { const void *data; size_t size; @@ -2571,15 +2618,15 @@ int fit_image_set_hashes (void *fit, int image_noffset) int ndepth;
/* Get image data and data length */ - if (fit_image_get_data (fit, image_noffset, &data, &size)) { - printf ("Can't get image data/size\n"); + if (fit_image_get_data(fit, image_noffset, &data, &size)) { + printf("Can't get image data/size\n"); return -1; }
/* Process all hash subnodes of the component image node */ - for (ndepth = 0, noffset = fdt_next_node (fit, image_noffset, &ndepth); + for (ndepth = 0, noffset = fdt_next_node(fit, image_noffset, &ndepth); (noffset >= 0) && (ndepth > 0); - noffset = fdt_next_node (fit, noffset, &ndepth)) { + noffset = fdt_next_node(fit, noffset, &ndepth)) { if (ndepth == 1) { /* Direct child node of the component image node */
@@ -2588,35 +2635,37 @@ int fit_image_set_hashes (void *fit, int image_noffset) * Multiple hash nodes require unique unit node * names, e.g. hash@1, hash@2, etc. */ - if (strncmp (fit_get_name(fit, noffset, NULL), + if (strncmp(fit_get_name(fit, noffset, NULL), FIT_HASH_NODENAME, strlen(FIT_HASH_NODENAME)) != 0) { /* Not a hash subnode, skip it */ continue; }
- if (fit_image_hash_get_algo (fit, noffset, &algo)) { - printf ("Can't get hash algo property for " + if (fit_image_hash_get_algo(fit, noffset, &algo)) { + printf("Can't get hash algo property for " "'%s' hash node in '%s' image node\n", - fit_get_name (fit, noffset, NULL), - fit_get_name (fit, image_noffset, NULL)); + fit_get_name(fit, noffset, NULL), + fit_get_name(fit, image_noffset, NULL)); return -1; }
- if (calculate_hash (data, size, algo, value, &value_len)) { - printf ("Unsupported hash algorithm (%s) for " + if (calculate_hash(data, size, algo, value, + &value_len)) { + printf("Unsupported hash algorithm (%s) for " "'%s' hash node in '%s' image node\n", - algo, fit_get_name (fit, noffset, NULL), - fit_get_name (fit, image_noffset, NULL)); + algo, fit_get_name(fit, noffset, NULL), + fit_get_name(fit, image_noffset, + NULL)); return -1; }
- if (fit_image_hash_set_value (fit, noffset, value, + if (fit_image_hash_set_value(fit, noffset, value, value_len)) { - printf ("Can't set hash value for " + printf("Can't set hash value for " "'%s' hash node in '%s' image node\n", - fit_get_name (fit, noffset, NULL), - fit_get_name (fit, image_noffset, NULL)); + fit_get_name(fit, noffset, NULL), + fit_get_name(fit, image_noffset, NULL)); return -1; } } @@ -2639,16 +2688,16 @@ int fit_image_set_hashes (void *fit, int image_noffset) * 0, on success * -1, on failure */ -int fit_image_hash_set_value (void *fit, int noffset, uint8_t *value, +int fit_image_hash_set_value(void *fit, int noffset, uint8_t *value, int value_len) { int ret;
- ret = fdt_setprop (fit, noffset, FIT_VALUE_PROP, value, value_len); + ret = fdt_setprop(fit, noffset, FIT_VALUE_PROP, value, value_len); if (ret) { - printf ("Can't set hash '%s' property for '%s' node (%s)\n", - FIT_VALUE_PROP, fit_get_name (fit, noffset, NULL), - fdt_strerror (ret)); + printf("Can't set hash '%s' property for '%s' node(%s)\n", + FIT_VALUE_PROP, fit_get_name(fit, noffset, NULL), + fdt_strerror(ret)); return -1; }
@@ -2669,7 +2718,7 @@ int fit_image_hash_set_value (void *fit, int noffset, uint8_t *value, * 1, if all hashes are valid * 0, otherwise (or on error) */ -int fit_image_check_hashes (const void *fit, int image_noffset) +int fit_image_check_hashes(const void *fit, int image_noffset) { const void *data; size_t size; @@ -2683,15 +2732,15 @@ int fit_image_check_hashes (const void *fit, int image_noffset) char *err_msg = "";
/* Get image data and data length */ - if (fit_image_get_data (fit, image_noffset, &data, &size)) { - printf ("Can't get image data/size\n"); + if (fit_image_get_data(fit, image_noffset, &data, &size)) { + printf("Can't get image data/size\n"); return 0; }
/* Process all hash subnodes of the component image node */ - for (ndepth = 0, noffset = fdt_next_node (fit, image_noffset, &ndepth); + for (ndepth = 0, noffset = fdt_next_node(fit, image_noffset, &ndepth); (noffset >= 0) && (ndepth > 0); - noffset = fdt_next_node (fit, noffset, &ndepth)) { + noffset = fdt_next_node(fit, noffset, &ndepth)) { if (ndepth == 1) { /* Direct child node of the component image node */
@@ -2700,47 +2749,49 @@ int fit_image_check_hashes (const void *fit, int image_noffset) * Multiple hash nodes require unique unit node * names, e.g. hash@1, hash@2, etc. */ - if (strncmp (fit_get_name(fit, noffset, NULL), + if (strncmp(fit_get_name(fit, noffset, NULL), FIT_HASH_NODENAME, strlen(FIT_HASH_NODENAME)) != 0) continue;
- if (fit_image_hash_get_algo (fit, noffset, &algo)) { + if (fit_image_hash_get_algo(fit, noffset, &algo)) { err_msg = " error!\nCan't get hash algo " "property"; goto error; } - printf ("%s", algo); + printf("%s", algo);
- if (fit_image_hash_get_value (fit, noffset, &fit_value, + if (fit_image_hash_get_value(fit, noffset, &fit_value, &fit_value_len)) { err_msg = " error!\nCan't get hash value " "property"; goto error; }
- if (calculate_hash (data, size, algo, value, &value_len)) { - err_msg = " error!\nUnsupported hash algorithm"; + if (calculate_hash(data, size, algo, value, + &value_len)) { + err_msg = " error!\n" + "Unsupported hash algorithm"; goto error; }
if (value_len != fit_value_len) { err_msg = " error !\nBad hash value len"; goto error; - } else if (memcmp (value, fit_value, value_len) != 0) { + } else if (memcmp(value, fit_value, value_len) != 0) { err_msg = " error!\nBad hash value"; goto error; } - printf ("+ "); + printf("+ "); } }
return 1;
error: - printf ("%s for '%s' hash node in '%s' image node\n", - err_msg, fit_get_name (fit, noffset, NULL), - fit_get_name (fit, image_noffset, NULL)); + printf("%s for '%s' hash node in '%s' image node\n", + err_msg, fit_get_name(fit, noffset, NULL), + fit_get_name(fit, image_noffset, NULL)); return 0; }
@@ -2755,7 +2806,7 @@ error: * 1, if all hashes of all images are valid * 0, otherwise (or on error) */ -int fit_all_image_check_hashes (const void *fit) +int fit_all_image_check_hashes(const void *fit) { int images_noffset; int noffset; @@ -2763,31 +2814,31 @@ int fit_all_image_check_hashes (const void *fit) int count;
/* Find images parent node offset */ - images_noffset = fdt_path_offset (fit, FIT_IMAGES_PATH); + images_noffset = fdt_path_offset(fit, FIT_IMAGES_PATH); if (images_noffset < 0) { - printf ("Can't find images parent node '%s' (%s)\n", - FIT_IMAGES_PATH, fdt_strerror (images_noffset)); + printf("Can't find images parent node '%s' (%s)\n", + FIT_IMAGES_PATH, fdt_strerror(images_noffset)); return 0; }
/* Process all image subnodes, check hashes for each */ - printf ("## Checking hash(es) for FIT Image at %08lx ...\n", + printf("## Checking hash(es) for FIT Image at %08lx ...\n", (ulong)fit); for (ndepth = 0, count = 0, - noffset = fdt_next_node (fit, images_noffset, &ndepth); + noffset = fdt_next_node(fit, images_noffset, &ndepth); (noffset >= 0) && (ndepth > 0); - noffset = fdt_next_node (fit, noffset, &ndepth)) { + noffset = fdt_next_node(fit, noffset, &ndepth)) { if (ndepth == 1) { /* * Direct child node of the images parent node, * i.e. component image node. */ - printf (" Hash(es) for Image %u (%s): ", count++, - fit_get_name (fit, noffset, NULL)); + printf(" Hash(es) for Image %u (%s): ", count++, + fit_get_name(fit, noffset, NULL));
- if (!fit_image_check_hashes (fit, noffset)) + if (!fit_image_check_hashes(fit, noffset)) return 0; - printf ("\n"); + printf("\n"); } } return 1; @@ -2806,11 +2857,11 @@ int fit_all_image_check_hashes (const void *fit) * 1 if image is of given os type * 0 otherwise (or on error) */ -int fit_image_check_os (const void *fit, int noffset, uint8_t os) +int fit_image_check_os(const void *fit, int noffset, uint8_t os) { uint8_t image_os;
- if (fit_image_get_os (fit, noffset, &image_os)) + if (fit_image_get_os(fit, noffset, &image_os)) return 0; return (os == image_os); } @@ -2828,11 +2879,11 @@ int fit_image_check_os (const void *fit, int noffset, uint8_t os) * 1 if image is of given arch * 0 otherwise (or on error) */ -int fit_image_check_arch (const void *fit, int noffset, uint8_t arch) +int fit_image_check_arch(const void *fit, int noffset, uint8_t arch) { uint8_t image_arch;
- if (fit_image_get_arch (fit, noffset, &image_arch)) + if (fit_image_get_arch(fit, noffset, &image_arch)) return 0; return (arch == image_arch); } @@ -2850,11 +2901,11 @@ int fit_image_check_arch (const void *fit, int noffset, uint8_t arch) * 1 if image is of given type * 0 otherwise (or on error) */ -int fit_image_check_type (const void *fit, int noffset, uint8_t type) +int fit_image_check_type(const void *fit, int noffset, uint8_t type) { uint8_t image_type;
- if (fit_image_get_type (fit, noffset, &image_type)) + if (fit_image_get_type(fit, noffset, &image_type)) return 0; return (type == image_type); } @@ -2873,11 +2924,11 @@ int fit_image_check_type (const void *fit, int noffset, uint8_t type) * 1 if image uses requested compression * 0 otherwise (or on error) */ -int fit_image_check_comp (const void *fit, int noffset, uint8_t comp) +int fit_image_check_comp(const void *fit, int noffset, uint8_t comp) { uint8_t image_comp;
- if (fit_image_get_comp (fit, noffset, &image_comp)) + if (fit_image_get_comp(fit, noffset, &image_comp)) return 0; return (comp == image_comp); } @@ -2893,25 +2944,25 @@ int fit_image_check_comp (const void *fit, int noffset, uint8_t comp) * 1, on success * 0, on failure */ -int fit_check_format (const void *fit) +int fit_check_format(const void *fit) { /* mandatory / node 'description' property */ - if (fdt_getprop (fit, 0, FIT_DESC_PROP, NULL) == NULL) { - debug ("Wrong FIT format: no description\n"); + if (fdt_getprop(fit, 0, FIT_DESC_PROP, NULL) == NULL) { + debug("Wrong FIT format: no description\n"); return 0; }
#if defined(CONFIG_TIMESTAMP) || defined(CONFIG_CMD_DATE) || defined(USE_HOSTCC) /* mandatory / node 'timestamp' property */ - if (fdt_getprop (fit, 0, FIT_TIMESTAMP_PROP, NULL) == NULL) { - debug ("Wrong FIT format: no timestamp\n"); + if (fdt_getprop(fit, 0, FIT_TIMESTAMP_PROP, NULL) == NULL) { + debug("Wrong FIT format: no timestamp\n"); return 0; } #endif
/* mandatory subimages parent '/images' node */ - if (fdt_path_offset (fit, FIT_IMAGES_PATH) < 0) { - debug ("Wrong FIT format: no images parent node\n"); + if (fdt_path_offset(fit, FIT_IMAGES_PATH) < 0) { + debug("Wrong FIT format: no images parent node\n"); return 0; }
@@ -2935,50 +2986,53 @@ int fit_check_format (const void *fit) * configuration node offset when found (>=0) * negative number on failure (FDT_ERR_* code) */ -int fit_conf_get_node (const void *fit, const char *conf_uname) +int fit_conf_get_node(const void *fit, const char *conf_uname) { int noffset, confs_noffset; int len;
- confs_noffset = fdt_path_offset (fit, FIT_CONFS_PATH); + confs_noffset = fdt_path_offset(fit, FIT_CONFS_PATH); if (confs_noffset < 0) { - debug ("Can't find configurations parent node '%s' (%s)\n", - FIT_CONFS_PATH, fdt_strerror (confs_noffset)); + debug("Can't find configurations parent node '%s' (%s)\n", + FIT_CONFS_PATH, fdt_strerror(confs_noffset)); return confs_noffset; }
if (conf_uname == NULL) { /* get configuration unit name from the default property */ - debug ("No configuration specified, trying default...\n"); - conf_uname = (char *)fdt_getprop (fit, confs_noffset, FIT_DEFAULT_PROP, &len); + debug("No configuration specified, trying default...\n"); + conf_uname = (char *)fdt_getprop(fit, confs_noffset, + FIT_DEFAULT_PROP, &len); if (conf_uname == NULL) { - fit_get_debug (fit, confs_noffset, FIT_DEFAULT_PROP, len); + fit_get_debug(fit, confs_noffset, FIT_DEFAULT_PROP, + len); return len; } - debug ("Found default configuration: '%s'\n", conf_uname); + debug("Found default configuration: '%s'\n", conf_uname); }
- noffset = fdt_subnode_offset (fit, confs_noffset, conf_uname); + noffset = fdt_subnode_offset(fit, confs_noffset, conf_uname); if (noffset < 0) { - debug ("Can't get node offset for configuration unit name: '%s' (%s)\n", - conf_uname, fdt_strerror (noffset)); + debug("Can't get node offset for configuration unit name: " + "'%s' (%s)\n", + conf_uname, fdt_strerror(noffset)); }
return noffset; }
-static int __fit_conf_get_prop_node (const void *fit, int noffset, +static int __fit_conf_get_prop_node(const void *fit, int noffset, const char *prop_name) { char *uname; int len;
/* get kernel image unit name from configuration kernel property */ - uname = (char *)fdt_getprop (fit, noffset, prop_name, &len); + uname = (char *)fdt_getprop(fit, noffset, prop_name, &len); if (uname == NULL) return len;
- return fit_image_get_node (fit, uname); + return fit_image_get_node(fit, uname); }
/** @@ -2995,9 +3049,9 @@ static int __fit_conf_get_prop_node (const void *fit, int noffset, * image node offset when found (>=0) * negative number on failure (FDT_ERR_* code) */ -int fit_conf_get_kernel_node (const void *fit, int noffset) +int fit_conf_get_kernel_node(const void *fit, int noffset) { - return __fit_conf_get_prop_node (fit, noffset, FIT_KERNEL_PROP); + return __fit_conf_get_prop_node(fit, noffset, FIT_KERNEL_PROP); }
/** @@ -3014,9 +3068,9 @@ int fit_conf_get_kernel_node (const void *fit, int noffset) * image node offset when found (>=0) * negative number on failure (FDT_ERR_* code) */ -int fit_conf_get_ramdisk_node (const void *fit, int noffset) +int fit_conf_get_ramdisk_node(const void *fit, int noffset) { - return __fit_conf_get_prop_node (fit, noffset, FIT_RAMDISK_PROP); + return __fit_conf_get_prop_node(fit, noffset, FIT_RAMDISK_PROP); }
/** @@ -3033,9 +3087,9 @@ int fit_conf_get_ramdisk_node (const void *fit, int noffset) * image node offset when found (>=0) * negative number on failure (FDT_ERR_* code) */ -int fit_conf_get_fdt_node (const void *fit, int noffset) +int fit_conf_get_fdt_node(const void *fit, int noffset) { - return __fit_conf_get_prop_node (fit, noffset, FIT_FDT_PROP); + return __fit_conf_get_prop_node(fit, noffset, FIT_FDT_PROP); }
/** @@ -3050,35 +3104,35 @@ int fit_conf_get_fdt_node (const void *fit, int noffset) * returns: * no returned results */ -void fit_conf_print (const void *fit, int noffset, const char *p) +void fit_conf_print(const void *fit, int noffset, const char *p) { char *desc; char *uname; int ret;
/* Mandatory properties */ - ret = fit_get_desc (fit, noffset, &desc); - printf ("%s Description: ", p); + ret = fit_get_desc(fit, noffset, &desc); + printf("%s Description: ", p); if (ret) - printf ("unavailable\n"); + printf("unavailable\n"); else - printf ("%s\n", desc); + printf("%s\n", desc);
- uname = (char *)fdt_getprop (fit, noffset, FIT_KERNEL_PROP, NULL); - printf ("%s Kernel: ", p); + uname = (char *)fdt_getprop(fit, noffset, FIT_KERNEL_PROP, NULL); + printf("%s Kernel: ", p); if (uname == NULL) - printf ("unavailable\n"); + printf("unavailable\n"); else - printf ("%s\n", uname); + printf("%s\n", uname);
/* Optional properties */ - uname = (char *)fdt_getprop (fit, noffset, FIT_RAMDISK_PROP, NULL); + uname = (char *)fdt_getprop(fit, noffset, FIT_RAMDISK_PROP, NULL); if (uname) - printf ("%s Init Ramdisk: %s\n", p, uname); + printf("%s Init Ramdisk: %s\n", p, uname);
- uname = (char *)fdt_getprop (fit, noffset, FIT_FDT_PROP, NULL); + uname = (char *)fdt_getprop(fit, noffset, FIT_FDT_PROP, NULL); if (uname) - printf ("%s FDT: %s\n", p, uname); + printf("%s FDT: %s\n", p, uname); }
/** @@ -3096,31 +3150,32 @@ void fit_conf_print (const void *fit, int noffset, const char *p) * 0, on failure */ #ifndef USE_HOSTCC -static int fit_check_ramdisk (const void *fit, int rd_noffset, uint8_t arch, int verify) +static int fit_check_ramdisk(const void *fit, int rd_noffset, uint8_t arch, + int verify) { - fit_image_print (fit, rd_noffset, " "); + fit_image_print(fit, rd_noffset, " ");
if (verify) { - puts (" Verifying Hash Integrity ... "); - if (!fit_image_check_hashes (fit, rd_noffset)) { - puts ("Bad Data Hash\n"); - show_boot_progress (-125); + puts(" Verifying Hash Integrity ... "); + if (!fit_image_check_hashes(fit, rd_noffset)) { + puts("Bad Data Hash\n"); + show_boot_progress(-125); return 0; } - puts ("OK\n"); + puts("OK\n"); }
- show_boot_progress (126); - if (!fit_image_check_os (fit, rd_noffset, IH_OS_LINUX) || - !fit_image_check_arch (fit, rd_noffset, arch) || - !fit_image_check_type (fit, rd_noffset, IH_TYPE_RAMDISK)) { - printf ("No Linux %s Ramdisk Image\n", + show_boot_progress(126); + if (!fit_image_check_os(fit, rd_noffset, IH_OS_LINUX) || + !fit_image_check_arch(fit, rd_noffset, arch) || + !fit_image_check_type(fit, rd_noffset, IH_TYPE_RAMDISK)) { + printf("No Linux %s Ramdisk Image\n", genimg_get_arch_name(arch)); - show_boot_progress (-126); + show_boot_progress(-126); return 0; }
- show_boot_progress (127); + show_boot_progress(127); return 1; } #endif /* USE_HOSTCC */ diff --git a/common/lynxkdi.c b/common/lynxkdi.c index b23135b..22ad384 100644 --- a/common/lynxkdi.c +++ b/common/lynxkdi.c @@ -23,45 +23,47 @@ DECLARE_GLOBAL_DATA_PTR;
#if defined(CONFIG_MPC8260) || defined(CONFIG_440EP) || defined(CONFIG_440GR) -void lynxkdi_boot (image_header_t *hdr) +void lynxkdi_boot(image_header_t *hdr) { - void (*lynxkdi)(void) = (void(*)(void))image_get_ep (hdr); + void (*lynxkdi)(void) = (void(*)(void))image_get_ep(hdr); lynxos_bootparms_t *parms = (lynxos_bootparms_t *)0x0020; bd_t *kbd; - u32 *psz = (u32 *)(image_get_load (hdr) + 0x0204); + u32 *psz = (u32 *)(image_get_load(hdr) + 0x0204);
- memset (parms, 0, sizeof(*parms)); + memset(parms, 0, sizeof(*parms)); kbd = gd->bd; parms->clock_ref = kbd->bi_busfreq; parms->dramsz = kbd->bi_memsize; eth_getenv_enetaddr("ethaddr", parms->ethaddr); - mtspr (SPRN_SPRG2, 0x0020); + mtspr(SPRN_SPRG2, 0x0020);
/* Do a simple check for Bluecat so we can pass the * kernel command line parameters. */ - if (le32_to_cpu (*psz) == image_get_data_size (hdr)) { /* FIXME: NOT SURE HERE ! */ + /* FIXME: NOT SURE HERE ! */ + if (le32_to_cpu(*psz) == image_get_data_size(hdr)) { char *args; - char *cmdline = (char *)(image_get_load (hdr) + 0x020c); + char *cmdline = (char *)(image_get_load(hdr) + 0x020c); int len;
- printf ("Booting Bluecat KDI ...\n"); - udelay (200*1000); /* Allow serial port to flush */ - if ((args = getenv ("bootargs")) == NULL) + printf("Booting Bluecat KDI ...\n"); + udelay(200*1000); /* Allow serial port to flush */ + if ((args = getenv("bootargs")) == NULL) args = ""; /* Prepend the cmdline */ - len = strlen (args); - if (len && (len + strlen (cmdline) + 2 < (0x0400 - 0x020c))) { - memmove (cmdline + strlen (args) + 1, cmdline, strlen (cmdline)); - strcpy (cmdline, args); + len = strlen(args); + if (len && (len + strlen(cmdline) + 2 < (0x0400 - 0x020c))) { + memmove(cmdline + strlen(args) + 1, cmdline, + strlen(cmdline)); + strcpy(cmdline, args); cmdline[len] = ' '; } } else { - printf ("Booting LynxOS KDI ...\n"); + printf("Booting LynxOS KDI ...\n"); }
- lynxkdi (); + lynxkdi(); } #else #error "Lynx KDI support not implemented for configured CPU" diff --git a/include/image.h b/include/image.h index b7caaa6..7a99273 100644 --- a/include/image.h +++ b/include/image.h @@ -312,15 +312,15 @@ int get_table_entry_id(const table_entry_t *table, */ char *get_table_entry_name(const table_entry_t *table, char *msg, int id);
-const char *genimg_get_os_name (uint8_t os); -const char *genimg_get_arch_name (uint8_t arch); -const char *genimg_get_type_name (uint8_t type); -const char *genimg_get_comp_name (uint8_t comp); -int genimg_get_os_id (const char *name); -int genimg_get_arch_id (const char *name); -int genimg_get_type_id (const char *name); -int genimg_get_comp_id (const char *name); -void genimg_print_size (uint32_t size); +const char *genimg_get_os_name(uint8_t os); +const char *genimg_get_arch_name(uint8_t arch); +const char *genimg_get_type_name(uint8_t type); +const char *genimg_get_comp_name(uint8_t comp); +int genimg_get_os_id(const char *name); +int genimg_get_arch_id(const char *name); +int genimg_get_type_id(const char *name); +int genimg_get_comp_id(const char *name); +void genimg_print_size(uint32_t size);
#ifndef USE_HOSTCC /* Image format types, returned by _get_format() routine */ @@ -328,72 +328,72 @@ void genimg_print_size (uint32_t size); #define IMAGE_FORMAT_LEGACY 0x01 /* legacy image_header based format */ #define IMAGE_FORMAT_FIT 0x02 /* new, libfdt based format */
-int genimg_get_format (void *img_addr); -int genimg_has_config (bootm_headers_t *images); -ulong genimg_get_image (ulong img_addr); +int genimg_get_format(void *img_addr); +int genimg_has_config(bootm_headers_t *images); +ulong genimg_get_image(ulong img_addr);
-int boot_get_ramdisk (int argc, char * const argv[], bootm_headers_t *images, +int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images, uint8_t arch, ulong *rd_start, ulong *rd_end);
#ifdef CONFIG_OF_LIBFDT -int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *images, - char **of_flat_tree, ulong *of_size); +int boot_get_fdt(int flag, int argc, char * const argv[], + bootm_headers_t *images, char **of_flat_tree, ulong *of_size); void boot_fdt_add_mem_rsv_regions(struct lmb *lmb, void *fdt_blob); -int boot_relocate_fdt (struct lmb *lmb, char **of_flat_tree, ulong *of_size); +int boot_relocate_fdt(struct lmb *lmb, char **of_flat_tree, ulong *of_size); #endif
#ifdef CONFIG_SYS_BOOT_RAMDISK_HIGH -int boot_ramdisk_high (struct lmb *lmb, ulong rd_data, ulong rd_len, +int boot_ramdisk_high(struct lmb *lmb, ulong rd_data, ulong rd_len, ulong *initrd_start, ulong *initrd_end); #endif /* CONFIG_SYS_BOOT_RAMDISK_HIGH */ #ifdef CONFIG_SYS_BOOT_GET_CMDLINE -int boot_get_cmdline (struct lmb *lmb, ulong *cmd_start, ulong *cmd_end); +int boot_get_cmdline(struct lmb *lmb, ulong *cmd_start, ulong *cmd_end); #endif /* CONFIG_SYS_BOOT_GET_CMDLINE */ #ifdef CONFIG_SYS_BOOT_GET_KBD -int boot_get_kbd (struct lmb *lmb, bd_t **kbd); +int boot_get_kbd(struct lmb *lmb, bd_t **kbd); #endif /* CONFIG_SYS_BOOT_GET_KBD */ #endif /* !USE_HOSTCC */
/*******************************************************************/ /* Legacy format specific code (prefixed with image_) */ /*******************************************************************/ -static inline uint32_t image_get_header_size (void) +static inline uint32_t image_get_header_size(void) { - return (sizeof (image_header_t)); + return (sizeof(image_header_t)); }
#define image_get_hdr_l(f) \ static inline uint32_t image_get_##f(const image_header_t *hdr) \ { \ - return uimage_to_cpu (hdr->ih_##f); \ + return uimage_to_cpu(hdr->ih_##f); \ } -image_get_hdr_l (magic) /* image_get_magic */ -image_get_hdr_l (hcrc) /* image_get_hcrc */ -image_get_hdr_l (time) /* image_get_time */ -image_get_hdr_l (size) /* image_get_size */ -image_get_hdr_l (load) /* image_get_load */ -image_get_hdr_l (ep) /* image_get_ep */ -image_get_hdr_l (dcrc) /* image_get_dcrc */ +image_get_hdr_l(magic) /* image_get_magic */ +image_get_hdr_l(hcrc) /* image_get_hcrc */ +image_get_hdr_l(time) /* image_get_time */ +image_get_hdr_l(size) /* image_get_size */ +image_get_hdr_l(load) /* image_get_load */ +image_get_hdr_l(ep) /* image_get_ep */ +image_get_hdr_l(dcrc) /* image_get_dcrc */
#define image_get_hdr_b(f) \ static inline uint8_t image_get_##f(const image_header_t *hdr) \ { \ return hdr->ih_##f; \ } -image_get_hdr_b (os) /* image_get_os */ -image_get_hdr_b (arch) /* image_get_arch */ -image_get_hdr_b (type) /* image_get_type */ -image_get_hdr_b (comp) /* image_get_comp */ +image_get_hdr_b(os) /* image_get_os */ +image_get_hdr_b(arch) /* image_get_arch */ +image_get_hdr_b(type) /* image_get_type */ +image_get_hdr_b(comp) /* image_get_comp */
-static inline char *image_get_name (const image_header_t *hdr) +static inline char *image_get_name(const image_header_t *hdr) { return (char *)hdr->ih_name; }
-static inline uint32_t image_get_data_size (const image_header_t *hdr) +static inline uint32_t image_get_data_size(const image_header_t *hdr) { - return image_get_size (hdr); + return image_get_size(hdr); }
/** @@ -407,83 +407,83 @@ static inline uint32_t image_get_data_size (const image_header_t *hdr) * returns: * image payload data start address */ -static inline ulong image_get_data (const image_header_t *hdr) +static inline ulong image_get_data(const image_header_t *hdr) { - return ((ulong)hdr + image_get_header_size ()); + return ((ulong)hdr + image_get_header_size()); }
-static inline uint32_t image_get_image_size (const image_header_t *hdr) +static inline uint32_t image_get_image_size(const image_header_t *hdr) { - return (image_get_size (hdr) + image_get_header_size ()); + return (image_get_size(hdr) + image_get_header_size()); } -static inline ulong image_get_image_end (const image_header_t *hdr) +static inline ulong image_get_image_end(const image_header_t *hdr) { - return ((ulong)hdr + image_get_image_size (hdr)); + return ((ulong)hdr + image_get_image_size(hdr)); }
#define image_set_hdr_l(f) \ static inline void image_set_##f(image_header_t *hdr, uint32_t val) \ { \ - hdr->ih_##f = cpu_to_uimage (val); \ + hdr->ih_##f = cpu_to_uimage(val); \ } -image_set_hdr_l (magic) /* image_set_magic */ -image_set_hdr_l (hcrc) /* image_set_hcrc */ -image_set_hdr_l (time) /* image_set_time */ -image_set_hdr_l (size) /* image_set_size */ -image_set_hdr_l (load) /* image_set_load */ -image_set_hdr_l (ep) /* image_set_ep */ -image_set_hdr_l (dcrc) /* image_set_dcrc */ +image_set_hdr_l(magic) /* image_set_magic */ +image_set_hdr_l(hcrc) /* image_set_hcrc */ +image_set_hdr_l(time) /* image_set_time */ +image_set_hdr_l(size) /* image_set_size */ +image_set_hdr_l(load) /* image_set_load */ +image_set_hdr_l(ep) /* image_set_ep */ +image_set_hdr_l(dcrc) /* image_set_dcrc */
#define image_set_hdr_b(f) \ static inline void image_set_##f(image_header_t *hdr, uint8_t val) \ { \ hdr->ih_##f = val; \ } -image_set_hdr_b (os) /* image_set_os */ -image_set_hdr_b (arch) /* image_set_arch */ -image_set_hdr_b (type) /* image_set_type */ -image_set_hdr_b (comp) /* image_set_comp */ +image_set_hdr_b(os) /* image_set_os */ +image_set_hdr_b(arch) /* image_set_arch */ +image_set_hdr_b(type) /* image_set_type */ +image_set_hdr_b(comp) /* image_set_comp */
-static inline void image_set_name (image_header_t *hdr, const char *name) +static inline void image_set_name(image_header_t *hdr, const char *name) { - strncpy (image_get_name (hdr), name, IH_NMLEN); + strncpy(image_get_name(hdr), name, IH_NMLEN); }
-int image_check_hcrc (const image_header_t *hdr); -int image_check_dcrc (const image_header_t *hdr); +int image_check_hcrc(const image_header_t *hdr); +int image_check_dcrc(const image_header_t *hdr); #ifndef USE_HOSTCC -int getenv_yesno (char *var); +int getenv_yesno(char *var); ulong getenv_bootm_low(void); phys_size_t getenv_bootm_size(void); phys_size_t getenv_bootm_mapsize(void); -void memmove_wd (void *to, void *from, size_t len, ulong chunksz); +void memmove_wd(void *to, void *from, size_t len, ulong chunksz); #endif
-static inline int image_check_magic (const image_header_t *hdr) +static inline int image_check_magic(const image_header_t *hdr) { - return (image_get_magic (hdr) == IH_MAGIC); + return (image_get_magic(hdr) == IH_MAGIC); } -static inline int image_check_type (const image_header_t *hdr, uint8_t type) +static inline int image_check_type(const image_header_t *hdr, uint8_t type) { - return (image_get_type (hdr) == type); + return (image_get_type(hdr) == type); } -static inline int image_check_arch (const image_header_t *hdr, uint8_t arch) +static inline int image_check_arch(const image_header_t *hdr, uint8_t arch) { - return (image_get_arch (hdr) == arch); + return (image_get_arch(hdr) == arch); } -static inline int image_check_os (const image_header_t *hdr, uint8_t os) +static inline int image_check_os(const image_header_t *hdr, uint8_t os) { - return (image_get_os (hdr) == os); + return (image_get_os(hdr) == os); }
-ulong image_multi_count (const image_header_t *hdr); -void image_multi_getimg (const image_header_t *hdr, ulong idx, +ulong image_multi_count(const image_header_t *hdr); +void image_multi_getimg(const image_header_t *hdr, ulong idx, ulong *data, ulong *len);
-void image_print_contents (const void *hdr); +void image_print_contents(const void *hdr);
#ifndef USE_HOSTCC -static inline int image_check_target_arch (const image_header_t *hdr) +static inline int image_check_target_arch(const image_header_t *hdr) { #ifndef IH_ARCH_DEFAULT # error "please define IH_ARCH_DEFAULT in your arch asm/u-boot.h" @@ -525,14 +525,14 @@ static inline int image_check_target_arch (const image_header_t *hdr) #define FIT_MAX_HASH_LEN 20 /* max(crc32_len(4), sha1_len(20)) */
/* cmdline argument format parsing */ -inline int fit_parse_conf (const char *spec, ulong addr_curr, +inline int fit_parse_conf(const char *spec, ulong addr_curr, ulong *addr, const char **conf_name); -inline int fit_parse_subimage (const char *spec, ulong addr_curr, +inline int fit_parse_subimage(const char *spec, ulong addr_curr, ulong *addr, const char **image_name);
-void fit_print_contents (const void *fit); -void fit_image_print (const void *fit, int noffset, const char *p); -void fit_image_print_hash (const void *fit, int noffset, const char *p); +void fit_print_contents(const void *fit); +void fit_image_print(const void *fit, int noffset, const char *p); +void fit_image_print_hash(const void *fit, int noffset, const char *p);
/** * fit_get_end - get FIT image size @@ -541,9 +541,9 @@ void fit_image_print_hash (const void *fit, int noffset, const char *p); * returns: * size of the FIT image (blob) in memory */ -static inline ulong fit_get_size (const void *fit) +static inline ulong fit_get_size(const void *fit) { - return fdt_totalsize (fit); + return fdt_totalsize(fit); }
/** @@ -553,9 +553,9 @@ static inline ulong fit_get_size (const void *fit) * returns: * end address of the FIT image (blob) in memory */ -static inline ulong fit_get_end (const void *fit) +static inline ulong fit_get_end(const void *fit) { - return (ulong)fit + fdt_totalsize (fit); + return (ulong)fit + fdt_totalsize(fit); }
/** @@ -566,63 +566,63 @@ static inline ulong fit_get_end (const void *fit) * NULL, on error * pointer to node name, on success */ -static inline const char *fit_get_name (const void *fit_hdr, +static inline const char *fit_get_name(const void *fit_hdr, int noffset, int *len) { - return fdt_get_name (fit_hdr, noffset, len); + return fdt_get_name(fit_hdr, noffset, len); }
-int fit_get_desc (const void *fit, int noffset, char **desc); -int fit_get_timestamp (const void *fit, int noffset, time_t *timestamp); - -int fit_image_get_node (const void *fit, const char *image_uname); -int fit_image_get_os (const void *fit, int noffset, uint8_t *os); -int fit_image_get_arch (const void *fit, int noffset, uint8_t *arch); -int fit_image_get_type (const void *fit, int noffset, uint8_t *type); -int fit_image_get_comp (const void *fit, int noffset, uint8_t *comp); -int fit_image_get_load (const void *fit, int noffset, ulong *load); -int fit_image_get_entry (const void *fit, int noffset, ulong *entry); -int fit_image_get_data (const void *fit, int noffset, +int fit_get_desc(const void *fit, int noffset, char **desc); +int fit_get_timestamp(const void *fit, int noffset, time_t *timestamp); + +int fit_image_get_node(const void *fit, const char *image_uname); +int fit_image_get_os(const void *fit, int noffset, uint8_t *os); +int fit_image_get_arch(const void *fit, int noffset, uint8_t *arch); +int fit_image_get_type(const void *fit, int noffset, uint8_t *type); +int fit_image_get_comp(const void *fit, int noffset, uint8_t *comp); +int fit_image_get_load(const void *fit, int noffset, ulong *load); +int fit_image_get_entry(const void *fit, int noffset, ulong *entry); +int fit_image_get_data(const void *fit, int noffset, const void **data, size_t *size);
-int fit_image_hash_get_algo (const void *fit, int noffset, char **algo); -int fit_image_hash_get_value (const void *fit, int noffset, uint8_t **value, +int fit_image_hash_get_algo(const void *fit, int noffset, char **algo); +int fit_image_hash_get_value(const void *fit, int noffset, uint8_t **value, int *value_len);
-int fit_set_timestamp (void *fit, int noffset, time_t timestamp); -int fit_set_hashes (void *fit); -int fit_image_set_hashes (void *fit, int image_noffset); -int fit_image_hash_set_value (void *fit, int noffset, uint8_t *value, +int fit_set_timestamp(void *fit, int noffset, time_t timestamp); +int fit_set_hashes(void *fit); +int fit_image_set_hashes(void *fit, int image_noffset); +int fit_image_hash_set_value(void *fit, int noffset, uint8_t *value, int value_len);
-int fit_image_check_hashes (const void *fit, int noffset); -int fit_all_image_check_hashes (const void *fit); -int fit_image_check_os (const void *fit, int noffset, uint8_t os); -int fit_image_check_arch (const void *fit, int noffset, uint8_t arch); -int fit_image_check_type (const void *fit, int noffset, uint8_t type); -int fit_image_check_comp (const void *fit, int noffset, uint8_t comp); -int fit_check_format (const void *fit); +int fit_image_check_hashes(const void *fit, int noffset); +int fit_all_image_check_hashes(const void *fit); +int fit_image_check_os(const void *fit, int noffset, uint8_t os); +int fit_image_check_arch(const void *fit, int noffset, uint8_t arch); +int fit_image_check_type(const void *fit, int noffset, uint8_t type); +int fit_image_check_comp(const void *fit, int noffset, uint8_t comp); +int fit_check_format(const void *fit);
-int fit_conf_get_node (const void *fit, const char *conf_uname); -int fit_conf_get_kernel_node (const void *fit, int noffset); -int fit_conf_get_ramdisk_node (const void *fit, int noffset); -int fit_conf_get_fdt_node (const void *fit, int noffset); +int fit_conf_get_node(const void *fit, const char *conf_uname); +int fit_conf_get_kernel_node(const void *fit, int noffset); +int fit_conf_get_ramdisk_node(const void *fit, int noffset); +int fit_conf_get_fdt_node(const void *fit, int noffset);
-void fit_conf_print (const void *fit, int noffset, const char *p); +void fit_conf_print(const void *fit, int noffset, const char *p);
#ifndef USE_HOSTCC -static inline int fit_image_check_target_arch (const void *fdt, int node) +static inline int fit_image_check_target_arch(const void *fdt, int node) { return !fit_image_check_arch(fdt, node, IH_ARCH_DEFAULT); } #endif /* USE_HOSTCC */
#ifdef CONFIG_FIT_VERBOSE -#define fit_unsupported(msg) printf ("! %s:%d " \ +#define fit_unsupported(msg) printf("! %s:%d " \ "FIT images not supported for '%s'\n", \ __FILE__, __LINE__, (msg))
-#define fit_unsupported_reset(msg) printf ("! %s:%d " \ +#define fit_unsupported_reset(msg) printf("! %s:%d " \ "FIT images not supported for '%s' " \ "- must reset board to recover!\n", \ __FILE__, __LINE__, (msg)) diff --git a/tools/default_image.c b/tools/default_image.c index f5bad47..6ea3b46 100644 --- a/tools/default_image.c +++ b/tools/default_image.c @@ -33,7 +33,7 @@
static image_header_t header;
-static int image_check_image_types (uint8_t type) +static int image_check_image_types(uint8_t type) { if ((type > IH_TYPE_INVALID) && (type < IH_TYPE_FLATDT)) return EXIT_SUCCESS; @@ -41,14 +41,14 @@ static int image_check_image_types (uint8_t type) return EXIT_FAILURE; }
-static int image_check_params (struct mkimage_params *params) +static int image_check_params(struct mkimage_params *params) { return ((params->dflag && (params->fflag || params->lflag)) || (params->fflag && (params->dflag || params->lflag)) || (params->lflag && (params->dflag || params->fflag))); }
-static int image_verify_header (unsigned char *ptr, int image_size, +static int image_verify_header(unsigned char *ptr, int image_size, struct mkimage_params *params) { uint32_t len; @@ -62,10 +62,10 @@ static int image_verify_header (unsigned char *ptr, int image_size, * checksum field for checking - this can't be done * on the PROT_READ mapped data. */ - memcpy (hdr, ptr, sizeof(image_header_t)); + memcpy(hdr, ptr, sizeof(image_header_t));
if (be32_to_cpu(hdr->ih_magic) != IH_MAGIC) { - fprintf (stderr, + fprintf(stderr, "%s: Bad Magic Number: "%s" is no valid image\n", params->cmdname, params->imagefile); return -FDT_ERR_BADMAGIC; @@ -77,8 +77,8 @@ static int image_verify_header (unsigned char *ptr, int image_size, checksum = be32_to_cpu(hdr->ih_hcrc); hdr->ih_hcrc = cpu_to_be32(0); /* clear for re-calculation */
- if (crc32 (0, data, len) != checksum) { - fprintf (stderr, + if (crc32(0, data, len) != checksum) { + fprintf(stderr, "%s: ERROR: "%s" has bad header checksum!\n", params->cmdname, params->imagefile); return -FDT_ERR_BADSTATE; @@ -88,8 +88,8 @@ static int image_verify_header (unsigned char *ptr, int image_size, len = image_size - sizeof(image_header_t) ;
checksum = be32_to_cpu(hdr->ih_dcrc); - if (crc32 (0, data, len) != checksum) { - fprintf (stderr, + if (crc32(0, data, len) != checksum) { + fprintf(stderr, "%s: ERROR: "%s" has corrupted data!\n", params->cmdname, params->imagefile); return -FDT_ERR_BADSTRUCTURE; @@ -97,36 +97,36 @@ static int image_verify_header (unsigned char *ptr, int image_size, return 0; }
-static void image_set_header (void *ptr, struct stat *sbuf, int ifd, +static void image_set_header(void *ptr, struct stat *sbuf, int ifd, struct mkimage_params *params) { uint32_t checksum;
image_header_t * hdr = (image_header_t *)ptr;
- checksum = crc32 (0, + checksum = crc32(0, (const unsigned char *)(ptr + sizeof(image_header_t)), sbuf->st_size - sizeof(image_header_t));
/* Build new header */ - image_set_magic (hdr, IH_MAGIC); - image_set_time (hdr, sbuf->st_mtime); - image_set_size (hdr, sbuf->st_size - sizeof(image_header_t)); - image_set_load (hdr, params->addr); - image_set_ep (hdr, params->ep); - image_set_dcrc (hdr, checksum); - image_set_os (hdr, params->os); - image_set_arch (hdr, params->arch); - image_set_type (hdr, params->type); - image_set_comp (hdr, params->comp); - - image_set_name (hdr, params->imagename); - - checksum = crc32 (0, (const unsigned char *)hdr, + image_set_magic(hdr, IH_MAGIC); + image_set_time(hdr, sbuf->st_mtime); + image_set_size(hdr, sbuf->st_size - sizeof(image_header_t)); + image_set_load(hdr, params->addr); + image_set_ep(hdr, params->ep); + image_set_dcrc(hdr, checksum); + image_set_os(hdr, params->os); + image_set_arch(hdr, params->arch); + image_set_type(hdr, params->type); + image_set_comp(hdr, params->comp); + + image_set_name(hdr, params->imagename); + + checksum = crc32(0, (const unsigned char *)hdr, sizeof(image_header_t));
- image_set_hcrc (hdr, checksum); + image_set_hcrc(hdr, checksum); }
/* @@ -143,7 +143,7 @@ static struct image_type_params defimage_params = { .check_params = image_check_params, };
-void init_default_image_type (void) +void init_default_image_type(void) { - mkimage_register (&defimage_params); + mkimage_register(&defimage_params); }

uImage files contain absolute "load" and "entry" addresses. Such a concept is incompatible with using the same kernel image on multiple SoCs, each with a potentially different SDRAM base. To support that, create a new image type IH_TYPE_KERNEL_REL, which is handled identically to IH_TYPE_KERNEL, except that the "load" and "entry" properties are an offset from the base of SDRAM, rather than an absolute address.
v2: * Add IH_TYPE_FLATDT_REL. * Expanded documentation of "an offset from the base of SDRAM". * Put all new code under #ifdef CONFIG_SYS_RELATIVE_IMAGEs, to prevent code bloat for platforms not wanting this feature. For me, this still results in a 32-byte .text increase; I'm not sure why. * A few trivial cleanups (now completely checkpatch clean). * Tested with MAKEALL -a arm; as best I can tell, this introduces no new issues.
Signed-off-by: Stephen Warren swarren@nvidia.com --- arch/arm/cpu/armv7/omap-common/spl.c | 2 +- arch/sh/lib/bootm.c | 2 +- common/cmd_bootm.c | 21 ++- common/cmd_ximg.c | 2 +- common/image.c | 270 +++++++++++++++++++++++++++++----- common/lynxkdi.c | 6 +- common/update.c | 2 +- include/image.h | 60 +++++++- tools/default_image.c | 10 +- 9 files changed, 318 insertions(+), 57 deletions(-)
diff --git a/arch/arm/cpu/armv7/omap-common/spl.c b/arch/arm/cpu/armv7/omap-common/spl.c index 01fd58a..4773ec3 100644 --- a/arch/arm/cpu/armv7/omap-common/spl.c +++ b/arch/arm/cpu/armv7/omap-common/spl.c @@ -68,7 +68,7 @@ void spl_parse_image_header(const struct image_header *header)
if (__be32_to_cpu(header->ih_magic) == IH_MAGIC) { spl_image.size = __be32_to_cpu(header->ih_size) + header_size; - spl_image.entry_point = __be32_to_cpu(header->ih_load); + spl_image.entry_point = __be32_to_cpu(header->ih_load_raw); /* Load including the header */ spl_image.load_addr = spl_image.entry_point - header_size; spl_image.os = header->ih_os; diff --git a/arch/sh/lib/bootm.c b/arch/sh/lib/bootm.c index 57273fa..71a42b1 100644 --- a/arch/sh/lib/bootm.c +++ b/arch/sh/lib/bootm.c @@ -72,7 +72,7 @@ int do_bootm_linux(int flag, int argc, char * const argv[], bootm_headers_t *ima void (*kernel) (void) = (void (*)(void))images->ep; /* empty_zero_page */ unsigned char *param - = (unsigned char *)image_get_load(images->legacy_hdr_os); + = (unsigned char *)image_get_load_raw(images->legacy_hdr_os); /* Linux kernel command line */ char *cmdline = (char *)param + COMMAND_LINE; /* PAGE_SIZE */ diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c index b96ab07..b58258c 100644 --- a/common/cmd_bootm.c +++ b/common/cmd_bootm.c @@ -214,7 +214,7 @@ static int bootm_start(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[] images.os.os = image_get_os(os_hdr);
images.os.end = image_get_image_end(os_hdr); - images.os.load = image_get_load(os_hdr); + images.os.load = image_get_load_abs(os_hdr); break; #if defined(CONFIG_FIT) case IMAGE_FORMAT_FIT: @@ -241,7 +241,8 @@ static int bootm_start(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]
images.os.end = fit_get_end(images.fit_hdr_os);
- if (fit_image_get_load(images.fit_hdr_os, images.fit_noffset_os, + if (fit_image_get_load_abs(images.fit_hdr_os, + images.fit_noffset_os, &images.os.load)) { puts("Can't get image load address!\n"); show_boot_progress(-112); @@ -256,10 +257,10 @@ static int bootm_start(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]
/* find kernel entry point */ if (images.legacy_hdr_valid) { - images.ep = image_get_ep(&images.legacy_hdr_os_copy); + images.ep = image_get_ep_abs(&images.legacy_hdr_os_copy); #if defined(CONFIG_FIT) } else if (images.fit_uname_os) { - ret = fit_image_get_entry(images.fit_hdr_os, + ret = fit_image_get_entry_abs(images.fit_hdr_os, images.fit_noffset_os, &images.ep); if (ret) { puts("Can't get entry point property!\n"); @@ -272,6 +273,9 @@ static int bootm_start(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[] }
if (((images.os.type == IH_TYPE_KERNEL) || +#ifdef CONFIG_SYS_RELATIVE_IMAGES + (images.os.type == IH_TYPE_KERNEL_REL) || +#endif (images.os.type == IH_TYPE_MULTI)) && (images.os.os == IH_OS_LINUX)) { /* find ramdisk */ @@ -795,7 +799,11 @@ static int fit_check_kernel(const void *fit, int os_noffset, int verify) }
show_boot_progress(106); - if (!fit_image_check_type(fit, os_noffset, IH_TYPE_KERNEL)) { + if (!fit_image_check_type(fit, os_noffset, IH_TYPE_KERNEL) +#ifdef CONFIG_SYS_RELATIVE_IMAGES + && !fit_image_check_type(fit, os_noffset, IH_TYPE_KERNEL_REL) +#endif + ) { puts("Not a kernel image\n"); show_boot_progress(-106); return 0; @@ -873,6 +881,9 @@ static void *boot_get_kernel(cmd_tbl_t *cmdtp, int flag, int argc, /* get os_data and os_len */ switch (image_get_type(hdr)) { case IH_TYPE_KERNEL: +#ifdef CONFIG_SYS_RELATIVE_IMAGES + case IH_TYPE_KERNEL_REL: +#endif *os_data = image_get_data(hdr); *os_len = image_get_data_size(hdr); break; diff --git a/common/cmd_ximg.c b/common/cmd_ximg.c index 0414589..c53a326 100644 --- a/common/cmd_ximg.c +++ b/common/cmd_ximg.c @@ -237,7 +237,7 @@ do_imgextract(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[]) * which requires at most 2300 KB of memory. */ i = BZ2_bzBuffToBuffDecompress( - (char *)ntohl(hdr->ih_load), + (char *)ntohl(hdr->ih_load_raw), &unc_len, (char *)data, len, CONFIG_SYS_MALLOC_LEN < (4096 * 1024), 0); diff --git a/common/image.c b/common/image.c index 33ae916..988c3a8 100644 --- a/common/image.c +++ b/common/image.c @@ -133,7 +133,14 @@ static const table_entry_t uimage_type[] = { { IH_TYPE_FILESYSTEM, "filesystem", "Filesystem Image", }, { IH_TYPE_FIRMWARE, "firmware", "Firmware", }, { IH_TYPE_FLATDT, "flat_dt", "Flat Device Tree", }, +#ifdef CONFIG_SYS_RELATIVE_IMAGES + { IH_TYPE_FLATDT_REL, "flat_dt_rel", + "Relative Flat Device Tree",}, +#endif { IH_TYPE_KERNEL, "kernel", "Kernel Image", }, +#ifdef CONFIG_SYS_RELATIVE_IMAGES + { IH_TYPE_KERNEL_REL, "kernel_rel", "Relative Kernel Image",}, +#endif { IH_TYPE_MULTI, "multi", "Multi-File Image", }, { IH_TYPE_RAMDISK, "ramdisk", "RAMDisk Image", }, { IH_TYPE_SCRIPT, "script", "Script", }, @@ -157,6 +164,9 @@ static const table_entry_t uimage_comp[] = {
uint32_t crc32(uint32_t, const unsigned char *, uint); uint32_t crc32_wd(uint32_t, const unsigned char *, uint, uint); +#ifdef CONFIG_SYS_RELATIVE_IMAGES +static ulong image_addr_raw_to_abs(uint8_t type, ulong raw); +#endif #if defined(CONFIG_TIMESTAMP) || defined(CONFIG_CMD_DATE) || defined(USE_HOSTCC) static void genimg_print_time(time_t timestamp); #endif @@ -188,6 +198,20 @@ int image_check_dcrc(const image_header_t *hdr) return (dcrc == image_get_dcrc(hdr)); }
+#ifdef CONFIG_SYS_RELATIVE_IMAGES +uint32_t image_get_load_abs(const image_header_t *hdr) +{ + return image_addr_raw_to_abs(image_get_type(hdr), + image_get_load_raw(hdr)); +} + +uint32_t image_get_ep_abs(const image_header_t *hdr) +{ + return image_addr_raw_to_abs(image_get_type(hdr), + image_get_ep_raw(hdr)); +} +#endif + /** * image_multi_count - get component (sub-image) count * @hdr: pointer to the header of the multi component image @@ -298,6 +322,10 @@ void image_print_contents(const void *ptr) { const image_header_t *hdr = (const image_header_t *)ptr; const char *p; + uint32_t abs; +#ifdef CONFIG_SYS_RELATIVE_IMAGES + uint32_t raw; +#endif
#ifdef USE_HOSTCC p = ""; @@ -314,8 +342,24 @@ void image_print_contents(const void *ptr) image_print_type(hdr); printf("%sData Size: ", p); genimg_print_size(image_get_data_size(hdr)); - printf("%sLoad Address: %08x\n", p, image_get_load(hdr)); - printf("%sEntry Point: %08x\n", p, image_get_ep(hdr)); + + abs = image_get_load_abs(hdr); +#ifdef CONFIG_SYS_RELATIVE_IMAGES + raw = image_get_load_raw(hdr); + if (abs != raw) + printf("%sLoad Address: %08x (relative %08x)\n", p, abs, raw); + else +#endif + printf("%sLoad Address: %08x\n", p, abs); + + abs = image_get_ep_abs(hdr); +#ifdef CONFIG_SYS_RELATIVE_IMAGES + raw = image_get_ep_raw(hdr); + if (abs != raw) + printf("%sEntry Point: %08x (relative %08x)\n", p, abs, raw); + else +#endif + printf("%sEntry Point: %08x\n", p, abs);
if (image_check_type(hdr, IH_TYPE_MULTI) || image_check_type(hdr, IH_TYPE_SCRIPT)) { @@ -425,6 +469,10 @@ ulong getenv_bootm_low(void) return tmp; }
+ /* + * If this code changes, please modify the comments in image.h that + * describe IH_TYPE_xxx_REL, in the "Image Types" list. + */ #if defined(CONFIG_SYS_SDRAM_BASE) return CONFIG_SYS_SDRAM_BASE; #elif defined(CONFIG_ARM) @@ -492,6 +540,20 @@ void memmove_wd(void *to, void *from, size_t len, ulong chunksz) } #endif /* !USE_HOSTCC */
+#ifdef CONFIG_SYS_RELATIVE_IMAGES +ulong image_addr_raw_to_abs(uint8_t type, ulong raw) +{ + ulong abs = raw; + +#ifndef USE_HOSTCC + if (type == IH_TYPE_KERNEL_REL) + abs += getenv_bootm_low(); +#endif + + return abs; +} +#endif + void genimg_print_size(uint32_t size) { #ifndef USE_HOSTCC @@ -900,7 +962,7 @@ int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images,
rd_data = image_get_data(rd_hdr); rd_len = image_get_data_size(rd_hdr); - rd_load = image_get_load(rd_hdr); + rd_load = image_get_load_raw(rd_hdr); break; #if defined(CONFIG_FIT) case IMAGE_FORMAT_FIT: @@ -972,7 +1034,8 @@ int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images, rd_data = (ulong)data; rd_len = size;
- if (fit_image_get_load(fit_hdr, rd_noffset, &rd_load)) { + if (fit_image_get_load_raw(fit_hdr, rd_noffset, + &rd_load)) { puts("Can't get ramdisk subimage load " "address!\n"); show_boot_progress(-129); @@ -1143,7 +1206,12 @@ static const image_header_t *image_get_fdt(ulong fdt_addr) } puts("OK\n");
- if (!image_check_type(fdt_hdr, IH_TYPE_FLATDT)) { + if (!image_check_type(fdt_hdr, IH_TYPE_FLATDT) +#ifdef CONFIG_SYS_RELATIVE_IMAGES + + && !image_check_type(fdt_hdr, IH_TYPE_FLATDT_REL) +#endif + ) { fdt_error("uImage is not a fdt"); return NULL; } @@ -1185,7 +1253,11 @@ static int fit_check_fdt(const void *fit, int fdt_noffset, int verify) puts("OK\n"); }
- if (!fit_image_check_type(fit, fdt_noffset, IH_TYPE_FLATDT)) { + if (!fit_image_check_type(fit, fdt_noffset, IH_TYPE_FLATDT) +#ifdef CONFIG_SYS_RELATIVE_IMAGES + && !fit_image_check_type(fit, fdt_noffset, IH_TYPE_FLATDT_REL) +#endif + ) { fdt_error("Not a FDT image"); return 0; } @@ -1474,7 +1546,7 @@ int boot_get_fdt(int flag, int argc, char * const argv[], image_start = (ulong)fdt_hdr; image_end = image_get_image_end(fdt_hdr);
- load_start = image_get_load(fdt_hdr); + load_start = image_get_load_abs(fdt_hdr); load_end = load_start + image_get_data_size(fdt_hdr);
if ((load_start < image_end) && (load_end > image_start)) { @@ -1576,7 +1648,8 @@ int boot_get_fdt(int flag, int argc, char * const argv[], image_start = (ulong)fit_hdr; image_end = fit_get_end(fit_hdr);
- if (fit_image_get_load(fit_hdr, fdt_noffset, + if (fit_image_get_load_abs(fit_hdr, + fdt_noffset, &load_start) == 0) { load_end = load_start + size;
@@ -1966,7 +2039,10 @@ void fit_image_print(const void *fit, int image_noffset, const char *p) char *desc; uint8_t type, arch, os, comp; size_t size; - ulong load, entry; + ulong abs; +#ifdef CONFIG_SYS_RELATIVE_IMAGES + ulong raw; +#endif const void *data; int noffset; int ndepth; @@ -2003,35 +2079,75 @@ void fit_image_print(const void *fit, int image_noffset, const char *p) genimg_print_size(size);
/* Remaining, type dependent properties */ - if ((type == IH_TYPE_KERNEL) || (type == IH_TYPE_STANDALONE) || - (type == IH_TYPE_RAMDISK) || (type == IH_TYPE_FIRMWARE) || - (type == IH_TYPE_FLATDT)) { + if ((type == IH_TYPE_KERNEL) || (type == IH_TYPE_FLATDT) || +#ifdef CONFIG_SYS_RELATIVE_IMAGES + (type == IH_TYPE_KERNEL_REL) || (type == IH_TYPE_FLATDT_REL) || +#endif + (type == IH_TYPE_STANDALONE) || (type == IH_TYPE_RAMDISK) || + (type == IH_TYPE_FIRMWARE)) { fit_image_get_arch(fit, image_noffset, &arch); printf("%s Architecture: %s\n", p, genimg_get_arch_name(arch)); }
- if (type == IH_TYPE_KERNEL) { + if ((type == IH_TYPE_KERNEL) +#ifdef CONFIG_SYS_RELATIVE_IMAGES + || (type == IH_TYPE_KERNEL_REL) +#endif + ) { fit_image_get_os(fit, image_noffset, &os); printf("%s OS: %s\n", p, genimg_get_os_name(os)); }
- if ((type == IH_TYPE_KERNEL) || (type == IH_TYPE_STANDALONE) || - (type == IH_TYPE_FIRMWARE)) { - ret = fit_image_get_load(fit, image_noffset, &load); + if ((type == IH_TYPE_KERNEL) || (type == IH_TYPE_FLATDT) || +#ifdef CONFIG_SYS_RELATIVE_IMAGES + (type == IH_TYPE_KERNEL_REL) || (type == IH_TYPE_FLATDT_REL) || +#endif + (type == IH_TYPE_STANDALONE) || (type == IH_TYPE_FIRMWARE)) { + ret = fit_image_get_load_abs(fit, image_noffset, &abs); +#ifdef CONFIG_SYS_RELATIVE_IMAGES + /* + * fit_image_get_load_* return 0 on success, other on failure. + * Oring two such values together yields something that's + * still 0 on success, other on failure. + */ + ret |= fit_image_get_load_raw(fit, image_noffset, &raw); +#endif printf("%s Load Address: ", p); - if (ret) + if (ret) { printf("unavailable\n"); - else - printf("0x%08lx\n", load); + } else { +#ifdef CONFIG_SYS_RELATIVE_IMAGES + if (abs != raw) + printf("0x%08lx (relative 0x%08lx)\n", + abs, raw); + else +#endif + printf("0x%08lx\n", abs); + } }
- if ((type == IH_TYPE_KERNEL) || (type == IH_TYPE_STANDALONE)) { - fit_image_get_entry(fit, image_noffset, &entry); + if ((type == IH_TYPE_KERNEL) || +#ifdef CONFIG_SYS_RELATIVE_IMAGES + (type == IH_TYPE_KERNEL_REL) || +#endif + (type == IH_TYPE_STANDALONE)) { + ret = fit_image_get_entry_abs(fit, image_noffset, &abs); +#ifdef CONFIG_SYS_RELATIVE_IMAGES + /* See comment about fit_image_get_load_* above */ + ret |= fit_image_get_entry_raw(fit, image_noffset, &raw); +#endif printf("%s Entry Point: ", p); - if (ret) + if (ret) { printf("unavailable\n"); - else - printf("0x%08lx\n", entry); + } else { +#ifdef CONFIG_SYS_RELATIVE_IMAGES + if (abs != raw) + printf("0x%08lx (relative 0x%08lx)\n", + abs, raw); + else +#endif + printf("0x%08lx\n", abs); + } }
/* Process all hash subnodes of the component image node */ @@ -2318,20 +2434,25 @@ int fit_image_get_comp(const void *fit, int noffset, uint8_t *comp) return 0; }
-/** - * fit_image_get_load - get load address property for a given component image node +/* + * fit_image_get_load_raw - get raw load address property for a given + * component image node * @fit: pointer to the FIT format image header * @noffset: component image node offset * @load: pointer to the uint32_t, will hold load address * - * fit_image_get_load() finds load address property in a given component image node. - * If the property is found, its value is returned to the caller. + * fit_image_get_load_raw() finds load address property in a given component + * image node. If the property is found, its value is returned to the caller. + * + * Note that this function returns the raw value encoded into the image file; + * the actual value U-Boot will use may be different for "relative" image + * formats. * * returns: * 0, on success * -1, on failure */ -int fit_image_get_load(const void *fit, int noffset, ulong *load) +int fit_image_get_load_raw(const void *fit, int noffset, ulong *load) { int len; const uint32_t *data; @@ -2346,20 +2467,63 @@ int fit_image_get_load(const void *fit, int noffset, ulong *load) return 0; }
-/** - * fit_image_get_entry - get entry point address property for a given component image node +#ifdef CONFIG_SYS_RELATIVE_IMAGES +/* + * fit_image_get_load_abs - get absolute load address property for a given + * component image node + * @fit: pointer to the FIT format image header + * @noffset: component image node offset + * @load: pointer to the uint32_t, will hold load address + * + * fit_image_get_load_abs() finds load address property in a given component + * image node. If the property is found, its value is returned to the caller. + * + * Note that this function returns the absolute value that U-Boot should + * use when actually loading images, or relocating them to the load address. + * + * returns: + * 0, on success + * -1, on failure + */ +int fit_image_get_load_abs(const void *fit, int noffset, ulong *load) +{ + int ret; + ulong raw; + uint8_t type; + + ret = fit_image_get_load_raw(fit, noffset, &raw); + if (ret) + return ret; + + ret = fit_image_get_type(fit, noffset, &type); + if (ret) + return ret; + + *load = image_addr_raw_to_abs(type, raw); + return 0; +} +#endif + +/* + * fit_image_get_entry_raw - get raw entry point address property for a given + * component image node * @fit: pointer to the FIT format image header * @noffset: component image node offset * @entry: pointer to the uint32_t, will hold entry point address * - * fit_image_get_entry() finds entry point address property in a given component image node. - * If the property is found, its value is returned to the caller. + * fit_image_get_entry_raw() finds entry point address property in a given + * component image node. If the property is found, its value is returned to + * the caller. + * + * Note that this function returns the raw value encoded into the image file; + * the actual value U-Boot will use may be different for "relative" image + * formats. * * returns: * 0, on success * -1, on failure */ -int fit_image_get_entry(const void *fit, int noffset, ulong *entry) +int fit_image_get_entry_raw(const void *fit, int noffset, ulong *entry) { int len; const uint32_t *data; @@ -2374,6 +2538,44 @@ int fit_image_get_entry(const void *fit, int noffset, ulong *entry) return 0; }
+#ifdef CONFIG_SYS_RELATIVE_IMAGES +/* + * fit_image_get_entry_abs - get absolute entry point address property for a + * given component image node + * @fit: pointer to the FIT format image header + * @noffset: component image node offset + * @entry: pointer to the uint32_t, will hold entry point address + * + * fit_image_get_entry_abs() finds entry point address property in a given + * component image node. If the property is found, its value is returned to + * the caller. + * + * Note that this function returns the absolute value that U-Boot should + * use when actually executing images. + * + * returns: + * 0, on success + * -1, on failure + */ +int fit_image_get_entry_abs(const void *fit, int noffset, ulong *ep) +{ + int ret; + ulong raw; + uint8_t type; + + ret = fit_image_get_entry_raw(fit, noffset, &raw); + if (ret) + return ret; + + ret = fit_image_get_type(fit, noffset, &type); + if (ret) + return ret; + + *ep = image_addr_raw_to_abs(type, raw); + return 0; +} +#endif + /** * fit_image_get_data - get data property and its size for a given component image node * @fit: pointer to the FIT format image header diff --git a/common/lynxkdi.c b/common/lynxkdi.c index 22ad384..59b4ad5 100644 --- a/common/lynxkdi.c +++ b/common/lynxkdi.c @@ -25,10 +25,10 @@ DECLARE_GLOBAL_DATA_PTR; #if defined(CONFIG_MPC8260) || defined(CONFIG_440EP) || defined(CONFIG_440GR) void lynxkdi_boot(image_header_t *hdr) { - void (*lynxkdi)(void) = (void(*)(void))image_get_ep(hdr); + void (*lynxkdi)(void) = (void(*)(void))image_get_ep_raw(hdr); lynxos_bootparms_t *parms = (lynxos_bootparms_t *)0x0020; bd_t *kbd; - u32 *psz = (u32 *)(image_get_load(hdr) + 0x0204); + u32 *psz = (u32 *)(image_get_load_raw(hdr) + 0x0204);
memset(parms, 0, sizeof(*parms)); kbd = gd->bd; @@ -43,7 +43,7 @@ void lynxkdi_boot(image_header_t *hdr) /* FIXME: NOT SURE HERE ! */ if (le32_to_cpu(*psz) == image_get_data_size(hdr)) { char *args; - char *cmdline = (char *)(image_get_load(hdr) + 0x020c); + char *cmdline = (char *)(image_get_load_raw(hdr) + 0x020c); int len;
printf("Booting Bluecat KDI ...\n"); diff --git a/common/update.c b/common/update.c index a19f136..b35ef91 100644 --- a/common/update.c +++ b/common/update.c @@ -230,7 +230,7 @@ static int update_fit_getparams(const void *fit, int noffset, ulong *addr, if (fit_image_get_data(fit, noffset, &data, (size_t *)size)) return 1;
- if (fit_image_get_load(fit, noffset, (ulong *)fladdr)) + if (fit_image_get_load_raw(fit, noffset, (ulong *)fladdr)) return 1;
*addr = (ulong)data; diff --git a/include/image.h b/include/image.h index 7a99273..eba4f9c 100644 --- a/include/image.h +++ b/include/image.h @@ -145,6 +145,14 @@ * U-Boot's command interpreter; this feature is especially * useful when you configure U-Boot to use a real shell (hush) * as command interpreter (=> Shell Scripts). + * + * Types named IH_TYPE_xxx_REL have load and entry point addresses specified + * relative to "the base of SDRAM", where that is specified as: + * a) CONFIG_SYS_SDRAM_BASE, if set. + * b) Otherwise, for ARM only, the start address of the first bank of SDRAM + * known to U-Boot (i.e. gd->bd->bi_dram[0].start). + * c) Otherwise, 0. + * The exact algorithm is implemented in getenv_bootm_low() in image.c. */
#define IH_TYPE_INVALID 0 /* Invalid Image */ @@ -160,6 +168,10 @@ #define IH_TYPE_IMXIMAGE 10 /* Freescale IMXBoot Image */ #define IH_TYPE_UBLIMAGE 11 /* Davinci UBL Image */ #define IH_TYPE_OMAPIMAGE 12 /* TI OMAP Config Header Image */ +#ifdef CONFIG_SYS_RELATIVE_IMAGES +#define IH_TYPE_KERNEL_REL 13 /* OS Kernel Image */ +#define IH_TYPE_FLATDT_REL 14 /* Binary Flat Device Tree Blob */ +#endif
/* * Compression Types @@ -182,8 +194,8 @@ typedef struct image_header { uint32_t ih_hcrc; /* Image Header CRC Checksum */ uint32_t ih_time; /* Image Creation Timestamp */ uint32_t ih_size; /* Image Data Size */ - uint32_t ih_load; /* Data Load Address */ - uint32_t ih_ep; /* Entry Point Address */ + uint32_t ih_load_raw; /* Data Load Address */ + uint32_t ih_ep_raw; /* Entry Point Address */ uint32_t ih_dcrc; /* Image Data CRC Checksum */ uint8_t ih_os; /* Operating System */ uint8_t ih_arch; /* CPU architecture */ @@ -372,10 +384,25 @@ image_get_hdr_l(magic) /* image_get_magic */ image_get_hdr_l(hcrc) /* image_get_hcrc */ image_get_hdr_l(time) /* image_get_time */ image_get_hdr_l(size) /* image_get_size */ -image_get_hdr_l(load) /* image_get_load */ -image_get_hdr_l(ep) /* image_get_ep */ +image_get_hdr_l(load_raw) /* image_get_load_raw */ +image_get_hdr_l(ep_raw) /* image_get_ep_raw */ image_get_hdr_l(dcrc) /* image_get_dcrc */
+#ifdef CONFIG_SYS_RELATIVE_IMAGES +uint32_t image_get_load_abs(const image_header_t *hdr); +uint32_t image_get_ep_abs(const image_header_t *hdr); +#else +static inline uint32_t image_get_load_abs(const image_header_t *hdr) +{ + return image_get_load_raw(hdr); +} + +static inline uint32_t image_get_ep_abs(const image_header_t *hdr) +{ + return image_get_ep_raw(hdr); +} +#endif + #define image_get_hdr_b(f) \ static inline uint8_t image_get_##f(const image_header_t *hdr) \ { \ @@ -430,8 +457,8 @@ image_set_hdr_l(magic) /* image_set_magic */ image_set_hdr_l(hcrc) /* image_set_hcrc */ image_set_hdr_l(time) /* image_set_time */ image_set_hdr_l(size) /* image_set_size */ -image_set_hdr_l(load) /* image_set_load */ -image_set_hdr_l(ep) /* image_set_ep */ +image_set_hdr_l(load_raw) /* image_set_load_raw */ +image_set_hdr_l(ep_raw) /* image_set_ep_raw */ image_set_hdr_l(dcrc) /* image_set_dcrc */
#define image_set_hdr_b(f) \ @@ -580,11 +607,28 @@ int fit_image_get_os(const void *fit, int noffset, uint8_t *os); int fit_image_get_arch(const void *fit, int noffset, uint8_t *arch); int fit_image_get_type(const void *fit, int noffset, uint8_t *type); int fit_image_get_comp(const void *fit, int noffset, uint8_t *comp); -int fit_image_get_load(const void *fit, int noffset, ulong *load); -int fit_image_get_entry(const void *fit, int noffset, ulong *entry); +int fit_image_get_load_raw(const void *fit, int noffset, ulong *load); +int fit_image_get_entry_raw(const void *fit, int noffset, ulong *entry); int fit_image_get_data(const void *fit, int noffset, const void **data, size_t *size);
+#ifdef CONFIG_SYS_RELATIVE_IMAGES +int fit_image_get_load_abs(const void *fit, int noffset, ulong *load); +int fit_image_get_entry_abs(const void *fit, int noffset, ulong *ep); +#else +static inline int fit_image_get_load_abs(const void *fit, int noffset, + ulong *load) +{ + return fit_image_get_load_raw(fit, noffset, load); +} + +static inline int fit_image_get_entry_abs(const void *fit, int noffset, + ulong *ep) +{ + return fit_image_get_entry_raw(fit, noffset, ep); +} +#endif + int fit_image_hash_get_algo(const void *fit, int noffset, char **algo); int fit_image_hash_get_value(const void *fit, int noffset, uint8_t **value, int *value_len); diff --git a/tools/default_image.c b/tools/default_image.c index 6ea3b46..b54b461 100644 --- a/tools/default_image.c +++ b/tools/default_image.c @@ -35,7 +35,11 @@ static image_header_t header;
static int image_check_image_types(uint8_t type) { - if ((type > IH_TYPE_INVALID) && (type < IH_TYPE_FLATDT)) + if (((type > IH_TYPE_INVALID) && (type < IH_TYPE_FLATDT)) +#ifdef CONFIG_SYS_RELATIVE_IMAGES + || (type == IH_TYPE_KERNEL_REL) +#endif + ) return EXIT_SUCCESS; else return EXIT_FAILURE; @@ -113,8 +117,8 @@ static void image_set_header(void *ptr, struct stat *sbuf, int ifd, image_set_magic(hdr, IH_MAGIC); image_set_time(hdr, sbuf->st_mtime); image_set_size(hdr, sbuf->st_size - sizeof(image_header_t)); - image_set_load(hdr, params->addr); - image_set_ep(hdr, params->ep); + image_set_load_raw(hdr, params->addr); + image_set_ep_raw(hdr, params->ep); image_set_dcrc(hdr, checksum); image_set_os(hdr, params->os); image_set_arch(hdr, params->arch);

Hi Stephen,
Here are a few comments which may or may not be useful. In general it seems that the need to reduce code size change to absolute minimum is making the code a bit painful. Maybe relax that by a few 10s of bytes?
The code size increase you see may be section alignment - e.g. if you increase the size of a section by 4 that might push the next section up to the next 32-byte boundary.
On Tue, Oct 18, 2011 at 2:11 PM, Stephen Warren swarren@nvidia.com wrote:
[snip]
--- a/arch/arm/cpu/armv7/omap-common/spl.c +++ b/arch/arm/cpu/armv7/omap-common/spl.c @@ -68,7 +68,7 @@ void spl_parse_image_header(const struct image_header *header)
if (__be32_to_cpu(header->ih_magic) == IH_MAGIC) { spl_image.size = __be32_to_cpu(header->ih_size) + header_size;
- spl_image.entry_point = __be32_to_cpu(header->ih_load);
- spl_image.entry_point = __be32_to_cpu(header->ih_load_raw);
I don't completely understand why raw is used here (and in some other boards) - is it simply because the abs and raw are always the same in SPL/these boards, or something else?
--- a/common/cmd_bootm.c +++ b/common/cmd_bootm.c @@ -272,6 +273,9 @@ static int bootm_start(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[] }
if (((images.os.type == IH_TYPE_KERNEL) || +#ifdef CONFIG_SYS_RELATIVE_IMAGES
- (images.os.type == IH_TYPE_KERNEL_REL) ||
+#endif
Is it worth saving 4 bytes for this #ifdef?
--- a/common/image.c +++ b/common/image.c @@ -133,7 +133,14 @@ static const table_entry_t uimage_type[] = { { IH_TYPE_FILESYSTEM, "filesystem", "Filesystem Image", }, { IH_TYPE_FIRMWARE, "firmware", "Firmware", }, { IH_TYPE_FLATDT, "flat_dt", "Flat Device Tree", }, +#ifdef CONFIG_SYS_RELATIVE_IMAGES
- { IH_TYPE_FLATDT_REL, "flat_dt_rel",
- "Relative Flat Device Tree",},
+#endif { IH_TYPE_KERNEL, "kernel", "Kernel Image", }, +#ifdef CONFIG_SYS_RELATIVE_IMAGES
- { IH_TYPE_KERNEL_REL, "kernel_rel", "Relative Kernel Image",},
+#endif
You could perhaps put the two relative items together as it doesn't look like the order matters.
@@ -188,6 +198,20 @@ int image_check_dcrc(const image_header_t *hdr) return (dcrc == image_get_dcrc(hdr)); }
+#ifdef CONFIG_SYS_RELATIVE_IMAGES +uint32_t image_get_load_abs(const image_header_t *hdr) +{
- return image_addr_raw_to_abs(image_get_type(hdr),
- image_get_load_raw(hdr));
+}
+uint32_t image_get_ep_abs(const image_header_t *hdr) +{
- return image_addr_raw_to_abs(image_get_type(hdr),
- image_get_ep_raw(hdr));
+} +#endif
Perhaps if you have a function like image_addr_raw_to_abs() for the fdt case, you could reduce the code in fit_image_get_load/entry_abs()?
@@ -314,8 +342,24 @@ void image_print_contents(const void *ptr) image_print_type(hdr); printf("%sData Size: ", p); genimg_print_size(image_get_data_size(hdr));
- printf("%sLoad Address: %08x\n", p, image_get_load(hdr));
- printf("%sEntry Point: %08x\n", p, image_get_ep(hdr));
- abs = image_get_load_abs(hdr);
+#ifdef CONFIG_SYS_RELATIVE_IMAGES
- raw = image_get_load_raw(hdr);
- if (abs != raw)
- printf("%sLoad Address: %08x (relative %08x)\n", p, abs, raw);
- else
+#endif
- printf("%sLoad Address: %08x\n", p, abs);
- abs = image_get_ep_abs(hdr);
+#ifdef CONFIG_SYS_RELATIVE_IMAGES
- raw = image_get_ep_raw(hdr);
- if (abs != raw)
- printf("%sEntry Point: %08x (relative %08x)\n", p, abs, raw);
- else
+#endif
Any mileage in something like this?
print_address(p, "Load", image_get_load_abs(hdr), image_get_load_raw(hdr)); print_address(p, "Entry", image_get_entry_abs(hdr), image_get_entry_raw(hdr));
static void do_address(const char *p, const char *name, ulong abs, ulong raw) { printf("%s%s Point: %08x", p, name, abs); #ifdef CONFIG_SYS_RELATIVE_IMAGES if (abs != raw) printf(" (relative %08x)", p, raw); #endif puts("\n"); }
- printf("%sEntry Point: %08x\n", p, abs);
if (image_check_type(hdr, IH_TYPE_MULTI) || image_check_type(hdr, IH_TYPE_SCRIPT)) { @@ -425,6 +469,10 @@ ulong getenv_bootm_low(void) return tmp; }
- /*
- * If this code changes, please modify the comments in image.h that
- * describe IH_TYPE_xxx_REL, in the "Image Types" list.
- */
#if defined(CONFIG_SYS_SDRAM_BASE) return CONFIG_SYS_SDRAM_BASE; #elif defined(CONFIG_ARM)
@@ -2003,35 +2079,75 @@ void fit_image_print(const void *fit, int image_noffset, const char *p) genimg_print_size(size);
/* Remaining, type dependent properties */
- if ((type == IH_TYPE_KERNEL) || (type == IH_TYPE_STANDALONE) ||
- (type == IH_TYPE_RAMDISK) || (type == IH_TYPE_FIRMWARE) ||
- (type == IH_TYPE_FLATDT)) {
- if ((type == IH_TYPE_KERNEL) || (type == IH_TYPE_FLATDT) ||
+#ifdef CONFIG_SYS_RELATIVE_IMAGES
- (type == IH_TYPE_KERNEL_REL) || (type == IH_TYPE_FLATDT_REL) ||
+#endif
- (type == IH_TYPE_STANDALONE) || (type == IH_TYPE_RAMDISK) ||
- (type == IH_TYPE_FIRMWARE)) {
Perhaps define a macro like ih_type_has_architecture() in the header? Not sure that Wolfgang likes that sort of thing though.
fit_image_get_arch(fit, image_noffset, &arch); printf("%s Architecture: %s\n", p, genimg_get_arch_name(arch)); }
- if (type == IH_TYPE_KERNEL) {
- if ((type == IH_TYPE_KERNEL)
+#ifdef CONFIG_SYS_RELATIVE_IMAGES
- || (type == IH_TYPE_KERNEL_REL)
+#endif
- ) {
fit_image_get_os(fit, image_noffset, &os); printf("%s OS: %s\n", p, genimg_get_os_name(os)); }
- if ((type == IH_TYPE_KERNEL) || (type == IH_TYPE_STANDALONE) ||
- (type == IH_TYPE_FIRMWARE)) {
- ret = fit_image_get_load(fit, image_noffset, &load);
- if ((type == IH_TYPE_KERNEL) || (type == IH_TYPE_FLATDT) ||
+#ifdef CONFIG_SYS_RELATIVE_IMAGES
- (type == IH_TYPE_KERNEL_REL) || (type == IH_TYPE_FLATDT_REL) ||
+#endif
Again here and above wonder whether the code size reduction is worth the #ifdefs
- (type == IH_TYPE_STANDALONE) || (type == IH_TYPE_FIRMWARE)) {
- ret = fit_image_get_load_abs(fit, image_noffset, &abs);
+#ifdef CONFIG_SYS_RELATIVE_IMAGES
- /*
- * fit_image_get_load_* return 0 on success, other on failure.
- * Oring two such values together yields something that's
- * still 0 on success, other on failure.
- */
- ret |= fit_image_get_load_raw(fit, image_noffset, &raw);
+#endif printf("%s Load Address: ", p);
- if (ret)
- if (ret) {
printf("unavailable\n");
- else
- printf("0x%08lx\n", load);
- } else {
+#ifdef CONFIG_SYS_RELATIVE_IMAGES
- if (abs != raw)
- printf("0x%08lx (relative 0x%08lx)\n",
- abs, raw);
- else
+#endif
- printf("0x%08lx\n", abs);
- }
Another use for the function perhaps?
}
- if ((type == IH_TYPE_KERNEL) || (type == IH_TYPE_STANDALONE)) {
- fit_image_get_entry(fit, image_noffset, &entry);
- if ((type == IH_TYPE_KERNEL) ||
+#ifdef CONFIG_SYS_RELATIVE_IMAGES
- (type == IH_TYPE_KERNEL_REL) ||
+#endif
- (type == IH_TYPE_STANDALONE)) {
- ret = fit_image_get_entry_abs(fit, image_noffset, &abs);
+#ifdef CONFIG_SYS_RELATIVE_IMAGES
- /* See comment about fit_image_get_load_* above */
- ret |= fit_image_get_entry_raw(fit, image_noffset, &raw);
+#endif printf("%s Entry Point: ", p);
- if (ret)
- if (ret) {
printf("unavailable\n");
- else
- printf("0x%08lx\n", entry);
- } else {
+#ifdef CONFIG_SYS_RELATIVE_IMAGES
- if (abs != raw)
- printf("0x%08lx (relative 0x%08lx)\n",
- abs, raw);
- else
+#endif
- printf("0x%08lx\n", abs);
- }
another one!
@@ -2346,20 +2467,63 @@ int fit_image_get_load(const void *fit, int noffset, ulong *load) return 0; }
-/**
- fit_image_get_entry - get entry point address property for a given component image node
+#ifdef CONFIG_SYS_RELATIVE_IMAGES +/*
- fit_image_get_load_abs - get absolute load address property for a given
- component image node
- @fit: pointer to the FIT format image header
- @noffset: component image node offset
- @load: pointer to the uint32_t, will hold load address
- fit_image_get_load_abs() finds load address property in a given component
- image node. If the property is found, its value is returned to the caller.
- Note that this function returns the absolute value that U-Boot should
- use when actually loading images, or relocating them to the load address.
- returns:
- 0, on success
- -1, on failure
- */
+int fit_image_get_load_abs(const void *fit, int noffset, ulong *load) +{
- int ret;
- ulong raw;
- uint8_t type;
- ret = fit_image_get_load_raw(fit, noffset, &raw);
- if (ret)
- return ret;
- ret = fit_image_get_type(fit, noffset, &type);
- if (ret)
- return ret;
- *load = image_addr_raw_to_abs(type, raw);
- return 0;
+} +#endif
I wonder (given there are so few callers) whether it might be worth just having a function (for each of raw and abs) that returns both the load and entry addresses in one shot?
--- a/include/image.h +++ b/include/image.h @@ -160,6 +168,10 @@ #define IH_TYPE_IMXIMAGE 10 /* Freescale IMXBoot Image */ #define IH_TYPE_UBLIMAGE 11 /* Davinci UBL Image */ #define IH_TYPE_OMAPIMAGE 12 /* TI OMAP Config Header Image */ +#ifdef CONFIG_SYS_RELATIVE_IMAGES +#define IH_TYPE_KERNEL_REL 13 /* OS Kernel Image */ +#define IH_TYPE_FLATDT_REL 14 /* Binary Flat Device Tree Blob */ +#endif
From what I can tell it doesn't seem like the order matters here. You
could perhaps move the last ones up into the main area, to avoid the new code in image_check_image_types().
Also I don't think the #ifdef really helps here, except perhaps for testing that you haven't left something bad in the code. It might be better to display an error like 'relative images not supported' when CONFIG_SYS_RELATIVE_IMAGES is not defined.
@@ -372,10 +384,25 @@ image_get_hdr_l(magic) /* image_get_magic */ image_get_hdr_l(hcrc) /* image_get_hcrc */ image_get_hdr_l(time) /* image_get_time */ image_get_hdr_l(size) /* image_get_size */ -image_get_hdr_l(load) /* image_get_load */ -image_get_hdr_l(ep) /* image_get_ep */ +image_get_hdr_l(load_raw) /* image_get_load_raw */ +image_get_hdr_l(ep_raw) /* image_get_ep_raw */
might need another tab here (although it isn't visible on email)
@@ -430,8 +457,8 @@ image_set_hdr_l(magic) /* image_set_magic */ image_set_hdr_l(hcrc) /* image_set_hcrc */ image_set_hdr_l(time) /* image_set_time */ image_set_hdr_l(size) /* image_set_size */ -image_set_hdr_l(load) /* image_set_load */ -image_set_hdr_l(ep) /* image_set_ep */ +image_set_hdr_l(load_raw) /* image_set_load_raw */ +image_set_hdr_l(ep_raw) /* image_set_ep_raw */
might need another tab here (although it isn't visible on email)
Regards, Simon

Simon Glass wrote at Tuesday, October 18, 2011 6:57 PM:
Hi Stephen,
Here are a few comments which may or may not be useful. In general it seems that the need to reduce code size change to absolute minimum is making the code a bit painful. Maybe relax that by a few 10s of bytes?
Wolfgang,
You had asked for this config option. How strongly do you feel about it; should it eliminate absolutely all size increase, or should I simplify the code a bit and remove some of the ifdefs?
The code size increase you see may be section alignment - e.g. if you increase the size of a section by 4 that might push the next section up to the next 32-byte boundary.
Ah yes, that makes sense.
On Tue, Oct 18, 2011 at 2:11 PM, Stephen Warren swarren@nvidia.com wrote:
[snip]
--- a/arch/arm/cpu/armv7/omap-common/spl.c +++ b/arch/arm/cpu/armv7/omap-common/spl.c @@ -68,7 +68,7 @@ void spl_parse_image_header(const struct image_header *header)
if (__be32_to_cpu(header->ih_magic) == IH_MAGIC) { spl_image.size = __be32_to_cpu(header->ih_size) + header_size;
- spl_image.entry_point = __be32_to_cpu(header->ih_load);
- spl_image.entry_point = __be32_to_cpu(header->ih_load_raw);
I don't completely understand why raw is used here (and in some other boards) - is it simply because the abs and raw are always the same in SPL/these boards, or something else?
Since I don't have all platforms to test with, my strategy was to use the "rel" values where I knew they were correct (i.e. stuff used by the bootm command), and continue to use the "raw" values anywhere else, to avoid any possibility of regressions. It's just possible that some of the other places should use "rel" values.
--- a/common/image.c +++ b/common/image.c @@ -133,7 +133,14 @@ static const table_entry_t uimage_type[] = { { IH_TYPE_FILESYSTEM, "filesystem", "Filesystem Image", }, { IH_TYPE_FIRMWARE, "firmware", "Firmware", }, { IH_TYPE_FLATDT, "flat_dt", "Flat Device Tree", }, +#ifdef CONFIG_SYS_RELATIVE_IMAGES
- { IH_TYPE_FLATDT_REL, "flat_dt_rel",
- "Relative Flat Device Tree",},
+#endif { IH_TYPE_KERNEL, "kernel", "Kernel Image", }, +#ifdef CONFIG_SYS_RELATIVE_IMAGES
- { IH_TYPE_KERNEL_REL, "kernel_rel", "Relative Kernel Image",},
+#endif
You could perhaps put the two relative items together as it doesn't look like the order matters.
I don't feel strongly, but I figured keeping things grouped my basic image type, ignoring rel or not, was better.
@@ -188,6 +198,20 @@ int image_check_dcrc(const image_header_t *hdr) return (dcrc == image_get_dcrc(hdr)); }
+#ifdef CONFIG_SYS_RELATIVE_IMAGES +uint32_t image_get_load_abs(const image_header_t *hdr) +{
- return image_addr_raw_to_abs(image_get_type(hdr),
- image_get_load_raw(hdr));
+}
+uint32_t image_get_ep_abs(const image_header_t *hdr) +{
- return image_addr_raw_to_abs(image_get_type(hdr),
- image_get_ep_raw(hdr));
+} +#endif
Perhaps if you have a function like image_addr_raw_to_abs() for the fdt case, you could reduce the code in fit_image_get_load/entry_abs()?
Those functions already use image_addr_raw_to_abs(). I suppose I could lift the call to fit_image_get_type() from fit_image_get_load/entry_abs() into a helper that then calls image_addr_raw_to_abs().
@@ -314,8 +342,24 @@ void image_print_contents(const void *ptr) image_print_type(hdr); printf("%sData Size: ", p); genimg_print_size(image_get_data_size(hdr));
- printf("%sLoad Address: %08x\n", p, image_get_load(hdr));
- printf("%sEntry Point: %08x\n", p, image_get_ep(hdr));
- abs = image_get_load_abs(hdr);
+#ifdef CONFIG_SYS_RELATIVE_IMAGES
- raw = image_get_load_raw(hdr);
- if (abs != raw)
- printf("%sLoad Address: %08x (relative %08x)\n", p, abs, raw);
- else
+#endif
- printf("%sLoad Address: %08x\n", p, abs);
- abs = image_get_ep_abs(hdr);
+#ifdef CONFIG_SYS_RELATIVE_IMAGES
- raw = image_get_ep_raw(hdr);
- if (abs != raw)
- printf("%sEntry Point: %08x (relative %08x)\n", p, abs, raw);
- else
+#endif
Any mileage in something like this?
print_address(p, "Load", image_get_load_abs(hdr), image_get_load_raw(hdr)); print_address(p, "Entry", image_get_entry_abs(hdr), image_get_entry_raw(hdr));
static void do_address(const char *p, const char *name, ulong abs, ulong raw) { printf("%s%s Point: %08x", p, name, abs); #ifdef CONFIG_SYS_RELATIVE_IMAGES if (abs != raw) printf(" (relative %08x)", p, raw); #endif puts("\n"); }
That'd end up slightly increasing binary size without the option enabled, size it'd always call both get_load_abs() and get_load_raw(). I'm not sure exactly how far Wolfgang wants to limit binary size increases without the config option.
I also wondered about just printing both addresses all the time, even when they're the same, although that'd mean a slight change in behavior without the config option turned on, and with non-relative images.
@@ -2003,35 +2079,75 @@ void fit_image_print(const void *fit, int image_noffset, const char *p) genimg_print_size(size);
/* Remaining, type dependent properties */
- if ((type == IH_TYPE_KERNEL) || (type == IH_TYPE_STANDALONE) ||
- (type == IH_TYPE_RAMDISK) || (type == IH_TYPE_FIRMWARE) ||
- (type == IH_TYPE_FLATDT)) {
- if ((type == IH_TYPE_KERNEL) || (type == IH_TYPE_FLATDT) ||
+#ifdef CONFIG_SYS_RELATIVE_IMAGES
- (type == IH_TYPE_KERNEL_REL) || (type == IH_TYPE_FLATDT_REL) ||
+#endif
- (type == IH_TYPE_STANDALONE) || (type == IH_TYPE_RAMDISK) ||
- (type == IH_TYPE_FIRMWARE)) {
Perhaps define a macro like ih_type_has_architecture() in the header? Not sure that Wolfgang likes that sort of thing though.
Wolfgang, what do you think?
fit_image_get_arch(fit, image_noffset, &arch); printf("%s Architecture: %s\n", p, genimg_get_arch_name(arch)); }
- if (type == IH_TYPE_KERNEL) {
- if ((type == IH_TYPE_KERNEL)
+#ifdef CONFIG_SYS_RELATIVE_IMAGES
- || (type == IH_TYPE_KERNEL_REL)
+#endif
- ) {
fit_image_get_os(fit, image_noffset, &os); printf("%s OS: %s\n", p, genimg_get_os_name(os)); }
- if ((type == IH_TYPE_KERNEL) || (type == IH_TYPE_STANDALONE) ||
- (type == IH_TYPE_FIRMWARE)) {
- ret = fit_image_get_load(fit, image_noffset, &load);
- if ((type == IH_TYPE_KERNEL) || (type == IH_TYPE_FLATDT) ||
+#ifdef CONFIG_SYS_RELATIVE_IMAGES
- (type == IH_TYPE_KERNEL_REL) || (type == IH_TYPE_FLATDT_REL) ||
+#endif
Again here and above wonder whether the code size reduction is worth the #ifdefs
Wolfgang, what do you think?
-/**
- fit_image_get_entry - get entry point address property for a given component image node
+#ifdef CONFIG_SYS_RELATIVE_IMAGES +/*
- fit_image_get_load_abs - get absolute load address property for a given
- component image node
- @fit: pointer to the FIT format image header
- @noffset: component image node offset
- @load: pointer to the uint32_t, will hold load address
- fit_image_get_load_abs() finds load address property in a given component
- image node. If the property is found, its value is returned to the caller.
- Note that this function returns the absolute value that U-Boot should
- use when actually loading images, or relocating them to the load address.
- returns:
- 0, on success
- -1, on failure
- */
+int fit_image_get_load_abs(const void *fit, int noffset, ulong *load) +{
- int ret;
- ulong raw;
- uint8_t type;
- ret = fit_image_get_load_raw(fit, noffset, &raw);
- if (ret)
- return ret;
- ret = fit_image_get_type(fit, noffset, &type);
- if (ret)
- return ret;
- *load = image_addr_raw_to_abs(type, raw);
- return 0;
+} +#endif
I wonder (given there are so few callers) whether it might be worth just having a function (for each of raw and abs) that returns both the load and entry addresses in one shot?
I did wonder about that too, but that'd force a bunch of call sites to declare new variables to receive the unused extra data, and increase code size.
--- a/include/image.h +++ b/include/image.h @@ -160,6 +168,10 @@ #define IH_TYPE_IMXIMAGE 10 /* Freescale IMXBoot Image */ #define IH_TYPE_UBLIMAGE 11 /* Davinci UBL Image */ #define IH_TYPE_OMAPIMAGE 12 /* TI OMAP Config Header Image */ +#ifdef CONFIG_SYS_RELATIVE_IMAGES +#define IH_TYPE_KERNEL_REL 13 /* OS Kernel Image */ +#define IH_TYPE_FLATDT_REL 14 /* Binary Flat Device Tree Blob */ +#endif
From what I can tell it doesn't seem like the order matters here. You could perhaps move the last ones up into the main area, to avoid the new code in image_check_image_types().
Aren't these values embedded into the images themselves, and hence immutable; if they were re-ordered, a mkimage built from a different U-Boot source tree wouldn't work with the U-Boot binary with the change.
Also I don't think the #ifdef really helps here, except perhaps for testing that you haven't left something bad in the code.
Yes, that'd why I ifdef'd it.
It might be better to display an error like 'relative images not supported' when CONFIG_SYS_RELATIVE_IMAGES is not defined.
I think U-Boot will already detect that it doesn't know what the image format is, since it'll have no case to handle it. I suppose the error message won't be quite as explicit what's wrong, but again anything else would increase binary size:-(
@@ -372,10 +384,25 @@ image_get_hdr_l(magic) /* image_get_magic */ image_get_hdr_l(hcrc) /* image_get_hcrc */ image_get_hdr_l(time) /* image_get_time */ image_get_hdr_l(size) /* image_get_size */ -image_get_hdr_l(load) /* image_get_load */ -image_get_hdr_l(ep) /* image_get_ep */ +image_get_hdr_l(load_raw) /* image_get_load_raw */ +image_get_hdr_l(ep_raw) /* image_get_ep_raw */
might need another tab here (although it isn't visible on email)
@@ -430,8 +457,8 @@ image_set_hdr_l(magic) /* image_set_magic */ image_set_hdr_l(hcrc) /* image_set_hcrc */ image_set_hdr_l(time) /* image_set_time */ image_set_hdr_l(size) /* image_set_size */ -image_set_hdr_l(load) /* image_set_load */ -image_set_hdr_l(ep) /* image_set_ep */ +image_set_hdr_l(load_raw) /* image_set_load_raw */ +image_set_hdr_l(ep_raw) /* image_set_ep_raw */
might need another tab here (although it isn't visible on email)
True; fixed up locally.
Thanks for the review. Depending on what Wolfgang says about the binary size increases, maybe I'll be able to take some of your suggestions.

Dear Stephen Warren,
In message 74CDBE0F657A3D45AFBB94109FB122FF173D51BE0F@HQMAIL01.nvidia.com you wrote:
Here are a few comments which may or may not be useful. In general it seems that the need to reduce code size change to absolute minimum is making the code a bit painful. Maybe relax that by a few 10s of bytes?
Wolfgang,
You had asked for this config option. How strongly do you feel about it; should it eliminate absolutely all size increase, or should I simplify the code a bit and remove some of the ifdefs?
Please give me a bit more context - how much is "a few 10s of bytes", and which exact parts of the code are we talkign about?
In general, adding "a few 10s of bytes" of code without direct benefit to the user is something we don't accept.
Best regards,
Wolfgang Denk

Wolfgang Denk wrote at Wednesday, October 19, 2011 2:01 PM:
In message 74CDBE0F657A3D45AFBB94109FB122FF173D51BE0F@HQMAIL01.nvidia.com you wrote:
Here are a few comments which may or may not be useful. In general it seems that the need to reduce code size change to absolute minimum is making the code a bit painful. Maybe relax that by a few 10s of bytes?
Wolfgang,
You had asked for this config option. How strongly do you feel about it; should it eliminate absolutely all size increase, or should I simplify the code a bit and remove some of the ifdefs?
Please give me a bit more context - how much is "a few 10s of bytes", and which exact parts of the code are we talkign about?
How much? However much adding an extra value into an if check compiles to.
Which parts of the code? Please see Simon's email that I was responding to, and Simon's original email, which quoted a few more part of the code.
Thanks

Dear Stephen Warren,
In message 74CDBE0F657A3D45AFBB94109FB122FF173D51BFE4@HQMAIL01.nvidia.com you wrote:
Please give me a bit more context - how much is "a few 10s of bytes", and which exact parts of the code are we talkign about?
How much? However much adding an extra value into an if check compiles to.
As much as needed so I can see what you mean without having to go through the whole thread.
Which parts of the code? Please see Simon's email that I was responding to, and Simon's original email, which quoted a few more part of the code.
Sorry, I'm really short on time. Please help be a bit and provide me some pre-digested info. Thanks.
Best regards,
Wolfgang Denk

Wolfgang Denk wrote at Thursday, October 20, 2011 8:04 AM:
In message 74CDBE0F657A3D45AFBB94109FB122FF173D51BFE4@HQMAIL01.nvidia.com you wrote:
Please give me a bit more context - how much is "a few 10s of bytes", and which exact parts of the code are we talkign about?
How much? However much adding an extra value into an if check compiles to.
As much as needed so I can see what you mean without having to go through the whole thread.
'How much' above was a quote from where you were asking 'how much is "a few bytes"', not 'how much' explanation you want.
Which parts of the code? Please see Simon's email that I was responding to, and Simon's original email, which quoted a few more part of the code.
Sorry, I'm really short on time. Please help be a bit and provide me some pre-digested info. Thanks.
OK then, please just disregard the question and review the patch itself as I posted it. Just by reviewing and hopefully accepting the patch, you'll see the number of ifdefs and whether they're appropriate.

Dear Stephen Warren,
In message 74CDBE0F657A3D45AFBB94109FB122FF173D51C136@HQMAIL01.nvidia.com you wrote:
Please give me a bit more context - how much is "a few 10s of bytes", and which exact parts of the code are we talkign about?
How much? However much adding an extra value into an if check compiles to.
As much as needed so I can see what you mean without having to go through the whole thread.
'How much' above was a quote from where you were asking 'how much is "a few bytes"', not 'how much' explanation you want.
You wrote "a few 10s of bytes" - this is obviously more than "adding an extra value into an if check compiles to", so I guess you ar enot talking about doing this just once, but more frequently. So please be precise.
OK then, please just disregard the question and review the patch itself as I posted it. Just by reviewing and hopefully accepting the patch, you'll see the number of ifdefs and whether they're appropriate.
Please provide this information in advance, before I start looking at the patch.
Best regards,
Wolfgang Denk

Wolfgang Denk wrote at Thursday, October 20, 2011 12:57 PM:
In message 74CDBE0F657A3D45AFBB94109FB122FF173D51C136@HQMAIL01.nvidia.com you wrote:
Please give me a bit more context - how much is "a few 10s of bytes", and which exact parts of the code are we talkign about?
How much? However much adding an extra value into an if check compiles to.
As much as needed so I can see what you mean without having to go through the whole thread.
'How much' above was a quote from where you were asking 'how much is "a few bytes"', not 'how much' explanation you want.
You wrote "a few 10s of bytes" - this is obviously more than "adding
No, Simon Glass wrote that.
an extra value into an if check compiles to", so I guess you ar enot talking about doing this just once, but more frequently. So please be precise.
OK then, please just disregard the question and review the patch itself as I posted it. Just by reviewing and hopefully accepting the patch, you'll see the number of ifdefs and whether they're appropriate.
Please provide this information in advance, before I start looking at the patch.
Sorry, but why exactly?
The patch I posted doesn't add size to the U-Boot binary without the configuration option turned on, and I believe should be reviewable and hopefully even in a state ready to be replied without any further change or explanation.
Simon Glass questioned whether the change should be allowed to increase binary size even when disabled, so as to avoid adding at least some of the ifdefs. At present, I'm not going to pursue that since it's obvious that's not what you want.
Please, again, just take a look at the patch itself and ignore this part of the thread. I *really* don't think the patch needs any explanation in its current form.
At this point, I'm honestly tempted to just give up on these U-Boot patches.

Hi Wolfgang,
On Thu, Oct 20, 2011 at 12:03 PM, Stephen Warren swarren@nvidia.com wrote:
Wolfgang Denk wrote at Thursday, October 20, 2011 12:57 PM:
In message 74CDBE0F657A3D45AFBB94109FB122FF173D51C136@HQMAIL01.nvidia.com you wrote:
Please give me a bit more context - how much is "a few 10s of bytes", and which exact parts of the code are we talkign about?
How much? However much adding an extra value into an if check compiles to.
As much as needed so I can see what you mean without having to go through the whole thread.
'How much' above was a quote from where you were asking 'how much is "a few bytes"', not 'how much' explanation you want.
You wrote "a few 10s of bytes" - this is obviously more than "adding
No, Simon Glass wrote that.
Yes that was my comment. There is a bit of confusion here, sorry for not jumping in earlier.
My comment was that if code size could increase slightly the code could have less #ifdefs. Wolfgang said that it could not, and therefore my comments do not apply. Please ignore them Wolfgang and Stephen.
That takes us back to Stephen's original patch which otherwise looks fine to me (and does not increase code size).
Regards, Simon
an extra value into an if check compiles to", so I guess you ar enot talking about doing this just once, but more frequently. So please be precise.
OK then, please just disregard the question and review the patch itself as I posted it. Just by reviewing and hopefully accepting the patch, you'll see the number of ifdefs and whether they're appropriate.
Please provide this information in advance, before I start looking at the patch.
Sorry, but why exactly?
The patch I posted doesn't add size to the U-Boot binary without the configuration option turned on, and I believe should be reviewable and hopefully even in a state ready to be replied without any further change or explanation.
Simon Glass questioned whether the change should be allowed to increase binary size even when disabled, so as to avoid adding at least some of the ifdefs. At present, I'm not going to pursue that since it's obvious that's not what you want.
Please, again, just take a look at the patch itself and ignore this part of the thread. I *really* don't think the patch needs any explanation in its current form.
At this point, I'm honestly tempted to just give up on these U-Boot patches.
-- nvpublic

Dear Simon Glass,
In message CAPnjgZ2BqZhBEHt6ha7pFi7syLz9e9Fm8MNAw_O7M-krN37UnQ@mail.gmail.com you wrote:
My comment was that if code size could increase slightly the code could have less #ifdefs. Wolfgang said that it could not, and therefore my comments do not apply. Please ignore them Wolfgang and Stephen.
DOn;t give up to oearly. My opinion is that #ifdef's are bad, and increased code size is bad either. If we can trade off one for the other, we should know exactly what we can win here and how much we have to pay for that there. That's all I want to know.
Best regards,
Wolfgang Denk

Wolfgang Denk wrote at Thursday, October 20, 2011 1:39 PM:
In message CAPnjgZ2BqZhBEHt6ha7pFi7syLz9e9Fm8MNAw_O7M-krN37UnQ@mail.gmail.com you wrote:
My comment was that if code size could increase slightly the code could have less #ifdefs. Wolfgang said that it could not, and therefore my comments do not apply. Please ignore them Wolfgang and Stephen.
DOn;t give up to oearly. My opinion is that #ifdef's are bad, and increased code size is bad either. If we can trade off one for the other, we should know exactly what we can win here and how much we have to pay for that there. That's all I want to know.
Do you mean the total without /any/ ifdefs? If so, please see where I answered this question earlier in the thread:
http://lists.denx.de/pipermail/u-boot/2011-October/104427.html
The first time I submitted this patch, there were no ifdefs, and you stated that the additional 576 bytes text plus 136 bytes rodata was unacceptable, so I rewrote the patch to add ifdefs everywhere.

Dear Stephen Warren,
In message 74CDBE0F657A3D45AFBB94109FB122FF173D51C286@HQMAIL01.nvidia.com you wrote:
DOn;t give up to oearly. My opinion is that #ifdef's are bad, and increased code size is bad either. If we can trade off one for the other, we should know exactly what we can win here and how much we have to pay for that there. That's all I want to know.
Do you mean the total without /any/ ifdefs? If so, please see where I answered this question earlier in the thread:
http://lists.denx.de/pipermail/u-boot/2011-October/104427.html
The first time I submitted this patch, there were no ifdefs, and you stated that the additional 576 bytes text plus 136 bytes rodata was unacceptable, so I rewrote the patch to add ifdefs everywhere.
The statement that triggered me was "Maybe relax that by a few 10s of bytes?", and my question was then ``how much is "a few 10s of bytes"''?
Obviously this must be something inbetween the 700+ bytes you state here, and the zero bytes you state elsewhere.
I wonder what exactly it was, then?
Best regards,
Wolfgang Denk

Wolfgang Denk wrote at Thursday, October 20, 2011 3:47 PM:
In message 74CDBE0F657A3D45AFBB94109FB122FF173D51C286@HQMAIL01.nvidia.com you wrote:
DOn;t give up to oearly. My opinion is that #ifdef's are bad, and increased code size is bad either. If we can trade off one for the other, we should know exactly what we can win here and how much we have to pay for that there. That's all I want to know.
Do you mean the total without /any/ ifdefs? If so, please see where I answered this question earlier in the thread:
http://lists.denx.de/pipermail/u-boot/2011-October/104427.html
The first time I submitted this patch, there were no ifdefs, and you stated that the additional 576 bytes text plus 136 bytes rodata was unacceptable, so I rewrote the patch to add ifdefs everywhere.
The statement that triggered me was "Maybe relax that by a few 10s of bytes?", and my question was then ``how much is "a few 10s of bytes"''?
Obviously this must be something inbetween the 700+ bytes you state here, and the zero bytes you state elsewhere.
I wonder what exactly it was, then?
It could be anything.
There are many places in the patch where ifdefs are added. I think Simon's comment was a general one that /some/ of those ifdefs (say the ones that just add extra values in an if that checks an image header type) might be candidates for not ifdefing. However, I don't believe it was targeted at any one individual ifdef, or even a /specific/ set of ifdefs.
Hence, to answer the question of how many bytes we're talking about in that case, either:
* Someone would have define exactly which specific set of ifdefs we want to measure removing. It seems best for you to look at the patch and define that set, since neither I nor Simon are currently pushing removing any of the ifdefs.
Or:
* I'd have to build the code with every possible combination of each new ifdef that was added being present or removed so that one of the builds I do answers the undefined question you're asking; that's more building than I'm willing to do.

Dear Stephen Warren,
In message 74CDBE0F657A3D45AFBB94109FB122FF173D51C255@HQMAIL01.nvidia.com you wrote:
Sorry, but why exactly?
Because I'm short of time, and would consider it helpful if you explain that you mean?
The patch I posted doesn't add size to the U-Boot binary without the configuration option turned on, and I believe should be reviewable and hopefully even in a state ready to be replied without any further change or explanation.
Simon Glass questioned whether the change should be allowed to increase binary size even when disabled, so as to avoid adding at least some of the ifdefs. At present, I'm not going to pursue that since it's obvious that's not what you want.
You misunderstand. I am interested in avoiding #ifdef's, but I'm also interested in understanding exactly which price we have to pay instead.
Please, again, just take a look at the patch itself and ignore this part of the thread. I *really* don't think the patch needs any explanation in its current form.
At this point, I'm honestly tempted to just give up on these U-Boot patches.
Me too.
Wolfgang Denk

On Tue, Oct 18, 2011 at 2:11 PM, Stephen Warren swarren@nvidia.com wrote:
uImage files contain absolute "load" and "entry" addresses. Such a concept is incompatible with using the same kernel image on multiple SoCs, each with a potentially different SDRAM base. To support that, create a new image type IH_TYPE_KERNEL_REL, which is handled identically to IH_TYPE_KERNEL, except that the "load" and "entry" properties are an offset from the base of SDRAM, rather than an absolute address.
v2:
- Add IH_TYPE_FLATDT_REL.
- Expanded documentation of "an offset from the base of SDRAM".
- Put all new code under #ifdef CONFIG_SYS_RELATIVE_IMAGEs, to prevent code
bloat for platforms not wanting this feature. For me, this still results in a 32-byte .text increase; I'm not sure why.
- A few trivial cleanups (now completely checkpatch clean).
- Tested with MAKEALL -a arm; as best I can tell, this introduces no new
issues.
Signed-off-by: Stephen Warren swarren@nvidia.com
I tested this on Seaboard with CONFIG_SYS_SDRAM_BASE set to 0x100.
The board side works fine but as discussed you need to sort out the HOSTCFLAGS to make it build 'mkimage' correctly.
Regards, Simon

v2: New patch
Signed-off-by: Stephen Warren swarren@nvidia.com --- include/configs/tegra2-common.h | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/include/configs/tegra2-common.h b/include/configs/tegra2-common.h index 73e0f05..07546a4 100644 --- a/include/configs/tegra2-common.h +++ b/include/configs/tegra2-common.h @@ -136,6 +136,8 @@ #define CONFIG_SYS_LOAD_ADDR (0xA00800) /* default */ #define CONFIG_SYS_HZ 1000
+#define CONFIG_SYS_RELATIVE_IMAGES /* Support IH_TYPE_KERNEL_REL */ + /*----------------------------------------------------------------------- * Stack sizes *

Hi Stephen,
On Tue, Oct 18, 2011 at 2:11 PM, Stephen Warren swarren@nvidia.com wrote:
v2: New patch
Signed-off-by: Stephen Warren swarren@nvidia.com
Looks good - how do I make such an image so I can test it?
Acked-by: Simon Glass sjg@chromium.org
Regards, Simon

Simon Glass wrote at Tuesday, October 18, 2011 7:04 PM:
On Tue, Oct 18, 2011 at 2:11 PM, Stephen Warren swarren@nvidia.com wrote:
v2: New patch
Signed-off-by: Stephen Warren swarren@nvidia.com
Looks good - how do I make such an image so I can test it?
Simply run the mkimage tool with '-T kernel_rel' instead of '-T kernel', or for a FIT image, use 'type = "kernel_rel"'.
When testing, I tested the code as in the patch I sent, and with image_addr_raw_to_abs() hacked to add in an additional 0x100 offset, just to make sure the offset showed up everywhere expected; I've been testing on Tegra20 where the SDRAM base is 0. Luckily, the kernel images I boot can run at any address, so didn't mind that random offset.

Hi Stephen,
On Wed, Oct 19, 2011 at 8:24 AM, Stephen Warren swarren@nvidia.com wrote:
Simon Glass wrote at Tuesday, October 18, 2011 7:04 PM:
On Tue, Oct 18, 2011 at 2:11 PM, Stephen Warren swarren@nvidia.com wrote:
v2: New patch
Signed-off-by: Stephen Warren swarren@nvidia.com
Looks good - how do I make such an image so I can test it?
Simply run the mkimage tool with '-T kernel_rel' instead of '-T kernel', or for a FIT image, use 'type = "kernel_rel"'.
OK thanks. My mkimage doesn't support this for some reason. The problem I seem to have is that CONFIG_SYS_RELATIVE_IMAGES is not defined for host C compiler builds. Is that right? How do you get the code you added in image.c to compile with HOSTCC?
Regards, Simon
When testing, I tested the code as in the patch I sent, and with image_addr_raw_to_abs() hacked to add in an additional 0x100 offset, just to make sure the offset showed up everywhere expected; I've been testing on Tegra20 where the SDRAM base is 0. Luckily, the kernel images I boot can run at any address, so didn't mind that random offset.
-- nvpublic

Simon Glass wrote at Thursday, October 20, 2011 2:27 PM:
Hi Stephen,
On Wed, Oct 19, 2011 at 8:24 AM, Stephen Warren swarren@nvidia.com wrote:
Simon Glass wrote at Tuesday, October 18, 2011 7:04 PM:
On Tue, Oct 18, 2011 at 2:11 PM, Stephen Warren swarren@nvidia.com wrote:
v2: New patch
Signed-off-by: Stephen Warren swarren@nvidia.com
Looks good - how do I make such an image so I can test it?
Simply run the mkimage tool with '-T kernel_rel' instead of '-T kernel', or for a FIT image, use 'type = "kernel_rel"'.
OK thanks. My mkimage doesn't support this for some reason. The problem I seem to have is that CONFIG_SYS_RELATIVE_IMAGES is not defined for host C compiler builds. Is that right? How do you get the code you added in image.c to compile with HOSTCC?
Oh dear. I tested mkimage before I added all the ifdefs, and then re-used those images when I re-tested the target U-Boot after adding all the ifdefs in. I guess I need to find some way of turning on the config option for host builds.

On Thu, Oct 20, 2011 at 1:47 PM, Stephen Warren swarren@nvidia.com wrote:
Simon Glass wrote at Thursday, October 20, 2011 2:27 PM:
Hi Stephen,
On Wed, Oct 19, 2011 at 8:24 AM, Stephen Warren swarren@nvidia.com wrote:
Simon Glass wrote at Tuesday, October 18, 2011 7:04 PM:
On Tue, Oct 18, 2011 at 2:11 PM, Stephen Warren swarren@nvidia.com wrote:
v2: New patch
Signed-off-by: Stephen Warren swarren@nvidia.com
I tested this on Seaboard with CONFIG_SYS_SDRAM_BASE set to 0x100.
Tested-by: Simon Glass sjg@chromium.org
Looks good - how do I make such an image so I can test it?
Simply run the mkimage tool with '-T kernel_rel' instead of '-T kernel', or for a FIT image, use 'type = "kernel_rel"'.
OK thanks. My mkimage doesn't support this for some reason. The problem I seem to have is that CONFIG_SYS_RELATIVE_IMAGES is not defined for host C compiler builds. Is that right? How do you get the code you added in image.c to compile with HOSTCC?
Oh dear. I tested mkimage before I added all the ifdefs, and then re-used those images when I re-tested the target U-Boot after adding all the ifdefs in. I guess I need to find some way of turning on the config option for host builds.
-- nvpublic

On Tue, Oct 18, 2011 at 2:11 PM, Stephen Warren swarren@nvidia.com wrote:
This avoids the following checkpatch warning in later patches:
ERROR: "(foo*)" should be "(foo *)" ERROR: space required before the open brace '{' ERROR: space prohibited before that close parenthesis ')' ERROR: spaces required around that '||' (ctx:WxV) WARNING: space prohibited between function name and open parenthesis '(' WARNING: line over 80 characters
This fixes all the white-space warnings/errors in my subsequent patch, and within this current patch. A number of other checkpatch warnings and errors are still present in this patch itself, but are beyond simple whitespace fixes, so are not solved by this patch.
v2: New patch
Signed-off-by: Stephen Warren swarren@nvidia.com
Wow that's what I call a patch. I checked it through with meld and compiled it on ARM and found that the assembly output before and after was identical.
Tested-by: Simon Glass sjg@chromium.org
common/cmd_bootm.c | 547 ++++++++++++----------- common/cmd_ximg.c | 72 ++-- common/image.c | 1187 ++++++++++++++++++++++++++----------------------- common/lynxkdi.c | 34 +- include/image.h | 230 +++++----- tools/default_image.c | 56 ++-- 6 files changed, 1101 insertions(+), 1025 deletions(-)
diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c index bb9b698..b96ab07 100644 --- a/common/cmd_bootm.c +++ b/common/cmd_bootm.c @@ -72,27 +72,28 @@ extern void bz_internal_error(int); #endif
#if defined(CONFIG_CMD_IMI) -static int image_info (unsigned long addr); +static int image_info(unsigned long addr); #endif
#if defined(CONFIG_CMD_IMLS) #include <flash.h> #include <mtd/cfi_flash.h> extern flash_info_t flash_info[]; /* info for FLASH chips */ -static int do_imls (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]); +static int do_imls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]); #endif
#ifdef CONFIG_SILENT_CONSOLE -static void fixup_silent_linux (void); +static void fixup_silent_linux(void); #endif
-static image_header_t *image_get_kernel (ulong img_addr, int verify); +static image_header_t *image_get_kernel(ulong img_addr, int verify); #if defined(CONFIG_FIT) -static int fit_check_kernel (const void *fit, int os_noffset, int verify); +static int fit_check_kernel(const void *fit, int os_noffset, int verify); #endif
-static void *boot_get_kernel (cmd_tbl_t *cmdtp, int flag,int argc, char * const argv[],
- bootm_headers_t *images, ulong *os_data, ulong *os_len);
+static void *boot_get_kernel(cmd_tbl_t *cmdtp, int flag, int argc,
- char * const argv[], bootm_headers_t *images,
- ulong *os_data, ulong *os_len);
/* * Continue booting an OS image; caller already has: @@ -102,7 +103,7 @@ static void *boot_get_kernel (cmd_tbl_t *cmdtp, int flag,int argc, char * const * - loaded (first part of) image to header load address, * - disabled interrupts. */ -typedef int boot_os_fn (int flag, int argc, char * const argv[], +typedef int boot_os_fn(int flag, int argc, char * const argv[], bootm_headers_t *images); /* pointers to os/initrd/fdt */
#ifdef CONFIG_BOOTM_LINUX @@ -113,7 +114,7 @@ static boot_os_fn do_bootm_netbsd; #endif #if defined(CONFIG_LYNXKDI) static boot_os_fn do_bootm_lynxkdi; -extern void lynxkdi_boot (image_header_t *); +extern void lynxkdi_boot(image_header_t *); #endif #ifdef CONFIG_BOOTM_RTEMS static boot_os_fn do_bootm_rtems; @@ -124,8 +125,8 @@ static boot_os_fn do_bootm_ose; #if defined(CONFIG_CMD_ELF) static boot_os_fn do_bootm_vxworks; static boot_os_fn do_bootm_qnxelf; -int do_bootvx (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]); -int do_bootelf (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]); +int do_bootvx(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]); +int do_bootelf(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]); #endif #if defined(CONFIG_INTEGRITY) static boot_os_fn do_bootm_integrity; @@ -192,81 +193,81 @@ static int bootm_start(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[] void *os_hdr; int ret;
- memset ((void *)&images, 0, sizeof (images));
- images.verify = getenv_yesno ("verify");
- memset((void *)&images, 0, sizeof(images));
- images.verify = getenv_yesno("verify");
bootm_start_lmb();
/* get kernel image header, start address and length */
- os_hdr = boot_get_kernel (cmdtp, flag, argc, argv,
- os_hdr = boot_get_kernel(cmdtp, flag, argc, argv,
&images, &images.os.image_start, &images.os.image_len); if (images.os.image_len == 0) {
- puts ("ERROR: can't get kernel image!\n");
- puts("ERROR: can't get kernel image!\n");
return 1; }
/* get image parameters */
- switch (genimg_get_format (os_hdr)) {
- switch (genimg_get_format(os_hdr)) {
case IMAGE_FORMAT_LEGACY:
- images.os.type = image_get_type (os_hdr);
- images.os.comp = image_get_comp (os_hdr);
- images.os.os = image_get_os (os_hdr);
- images.os.type = image_get_type(os_hdr);
- images.os.comp = image_get_comp(os_hdr);
- images.os.os = image_get_os(os_hdr);
- images.os.end = image_get_image_end (os_hdr);
- images.os.load = image_get_load (os_hdr);
- images.os.end = image_get_image_end(os_hdr);
- images.os.load = image_get_load(os_hdr);
break; #if defined(CONFIG_FIT) case IMAGE_FORMAT_FIT:
- if (fit_image_get_type (images.fit_hdr_os,
- if (fit_image_get_type(images.fit_hdr_os,
images.fit_noffset_os, &images.os.type)) {
- puts ("Can't get image type!\n");
- show_boot_progress (-109);
- puts("Can't get image type!\n");
- show_boot_progress(-109);
return 1; }
- if (fit_image_get_comp (images.fit_hdr_os,
- if (fit_image_get_comp(images.fit_hdr_os,
images.fit_noffset_os, &images.os.comp)) {
- puts ("Can't get image compression!\n");
- show_boot_progress (-110);
- puts("Can't get image compression!\n");
- show_boot_progress(-110);
return 1; }
- if (fit_image_get_os (images.fit_hdr_os,
- if (fit_image_get_os(images.fit_hdr_os,
images.fit_noffset_os, &images.os.os)) {
- puts ("Can't get image OS!\n");
- show_boot_progress (-111);
- puts("Can't get image OS!\n");
- show_boot_progress(-111);
return 1; }
- images.os.end = fit_get_end (images.fit_hdr_os);
- images.os.end = fit_get_end(images.fit_hdr_os);
- if (fit_image_get_load (images.fit_hdr_os, images.fit_noffset_os,
- if (fit_image_get_load(images.fit_hdr_os, images.fit_noffset_os,
&images.os.load)) {
- puts ("Can't get image load address!\n");
- show_boot_progress (-112);
- puts("Can't get image load address!\n");
- show_boot_progress(-112);
return 1; } break; #endif default:
- puts ("ERROR: unknown image format type!\n");
- puts("ERROR: unknown image format type!\n");
return 1; }
/* find kernel entry point */ if (images.legacy_hdr_valid) {
- images.ep = image_get_ep (&images.legacy_hdr_os_copy);
- images.ep = image_get_ep(&images.legacy_hdr_os_copy);
#if defined(CONFIG_FIT) } else if (images.fit_uname_os) {
- ret = fit_image_get_entry (images.fit_hdr_os,
- ret = fit_image_get_entry(images.fit_hdr_os,
images.fit_noffset_os, &images.ep); if (ret) {
- puts ("Can't get entry point property!\n");
- puts("Can't get entry point property!\n");
return 1; } #endif } else {
- puts ("Could not find kernel entry point!\n");
- puts("Could not find kernel entry point!\n");
return 1; }
@@ -274,19 +275,19 @@ static int bootm_start(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[] (images.os.type == IH_TYPE_MULTI)) && (images.os.os == IH_OS_LINUX)) { /* find ramdisk */
- ret = boot_get_ramdisk (argc, argv, &images, IH_INITRD_ARCH,
- ret = boot_get_ramdisk(argc, argv, &images, IH_INITRD_ARCH,
&images.rd_start, &images.rd_end); if (ret) {
- puts ("Ramdisk image is corrupt or invalid\n");
- puts("Ramdisk image is corrupt or invalid\n");
return 1; }
#if defined(CONFIG_OF_LIBFDT) /* find flattened device tree */
- ret = boot_get_fdt (flag, argc, argv, &images,
- &images.ft_addr, &images.ft_len);
- ret = boot_get_fdt(flag, argc, argv, &images,
- &images.ft_addr, &images.ft_len);
if (ret) {
- puts ("Could not find a valid device tree\n");
- puts("Could not find a valid device tree\n");
return 1; }
@@ -316,15 +317,15 @@ static int bootm_load_os(image_info_t os, ulong *load_end, int boot_progress) int ret; #endif /* defined(CONFIG_LZMA) || defined(CONFIG_LZO) */
- const char *type_name = genimg_get_type_name (os.type);
- const char *type_name = genimg_get_type_name(os.type);
switch (comp) { case IH_COMP_NONE: if (load == blob_start || load == image_start) {
- printf (" XIP %s ... ", type_name);
- printf(" XIP %s ... ", type_name);
} else {
- printf (" Loading %s ... ", type_name);
- memmove_wd ((void *)load, (void *)image_start,
- printf(" Loading %s ... ", type_name);
- memmove_wd((void *)load, (void *)image_start,
image_len, CHUNKSZ); } *load_end = load + image_len; @@ -332,13 +333,13 @@ static int bootm_load_os(image_info_t os, ulong *load_end, int boot_progress) break; #ifdef CONFIG_GZIP case IH_COMP_GZIP:
- printf (" Uncompressing %s ... ", type_name);
- if (gunzip ((void *)load, unc_len,
- (uchar *)image_start, &image_len) != 0) {
- puts ("GUNZIP: uncompress, out-of-mem or overwrite error "
- "- must RESET board to recover\n");
- printf(" Uncompressing %s ... ", type_name);
- if (gunzip((void *)load, unc_len,
- (uchar *)image_start, &image_len) != 0) {
- puts("GUNZIP: uncompress, out-of-mem or overwrite "
- "error - must RESET board to recover\n");
if (boot_progress)
- show_boot_progress (-6);
- show_boot_progress(-6);
return BOOTM_ERR_RESET; }
@@ -347,20 +348,20 @@ static int bootm_load_os(image_info_t os, ulong *load_end, int boot_progress) #endif /* CONFIG_GZIP */ #ifdef CONFIG_BZIP2 case IH_COMP_BZIP2:
- printf (" Uncompressing %s ... ", type_name);
- printf(" Uncompressing %s ... ", type_name);
/* * If we've got less than 4 MB of malloc() space, * use slower decompression algorithm which requires * at most 2300 KB of memory. */
- int i = BZ2_bzBuffToBuffDecompress ((char*)load,
- int i = BZ2_bzBuffToBuffDecompress((char *)load,
&unc_len, (char *)image_start, image_len, CONFIG_SYS_MALLOC_LEN < (4096 * 1024), 0); if (i != BZ_OK) {
- printf ("BUNZIP2: uncompress or overwrite error %d "
- printf("BUNZIP2: uncompress or overwrite error %d "
"- must RESET board to recover\n", i); if (boot_progress)
- show_boot_progress (-6);
- show_boot_progress(-6);
return BOOTM_ERR_RESET; }
@@ -370,16 +371,16 @@ static int bootm_load_os(image_info_t os, ulong *load_end, int boot_progress) #ifdef CONFIG_LZMA case IH_COMP_LZMA: { SizeT lzma_len = unc_len;
- printf (" Uncompressing %s ... ", type_name);
- printf(" Uncompressing %s ... ", type_name);
ret = lzmaBuffToBuffDecompress( (unsigned char *)load, &lzma_len, (unsigned char *)image_start, image_len); unc_len = lzma_len; if (ret != SZ_OK) {
- printf ("LZMA: uncompress or overwrite error %d "
- printf("LZMA: uncompress or overwrite error %d "
"- must RESET board to recover\n", ret);
- show_boot_progress (-6);
- show_boot_progress(-6);
return BOOTM_ERR_RESET; } *load_end = load + unc_len; @@ -388,16 +389,16 @@ static int bootm_load_os(image_info_t os, ulong *load_end, int boot_progress) #endif /* CONFIG_LZMA */ #ifdef CONFIG_LZO case IH_COMP_LZO:
- printf (" Uncompressing %s ... ", type_name);
- printf(" Uncompressing %s ... ", type_name);
ret = lzop_decompress((const unsigned char *)image_start, image_len, (unsigned char *)load, &unc_len); if (ret != LZO_E_OK) {
- printf ("LZO: uncompress or overwrite error %d "
- printf("LZO: uncompress or overwrite error %d "
"- must RESET board to recover\n", ret); if (boot_progress)
- show_boot_progress (-6);
- show_boot_progress(-6);
return BOOTM_ERR_RESET; }
@@ -405,20 +406,22 @@ static int bootm_load_os(image_info_t os, ulong *load_end, int boot_progress) break; #endif /* CONFIG_LZO */ default:
- printf ("Unimplemented compression type %d\n", comp);
- printf("Unimplemented compression type %d\n", comp);
return BOOTM_ERR_UNIMPLEMENTED; }
flush_cache(load, (*load_end - load) * sizeof(ulong));
- puts ("OK\n");
- debug (" kernel loaded at 0x%08lx, end = 0x%08lx\n", load, *load_end);
- puts("OK\n");
- debug(" kernel loaded at 0x%08lx, end = 0x%08lx\n", load, *load_end);
if (boot_progress)
- show_boot_progress (7);
- show_boot_progress(7);
if ((load < blob_end) && (*load_end > blob_start)) {
- debug ("images.os.start = 0x%lX, images.os.end = 0x%lx\n", blob_start, blob_end);
- debug ("images.os.load = 0x%lx, load_end = 0x%lx\n", load, *load_end);
- debug("images.os.start = 0x%lX, images.os.end = 0x%lx\n",
- blob_start, blob_end);
- debug("images.os.load = 0x%lx, load_end = 0x%lx\n", load,
- *load_end);
return BOOTM_ERR_OVERLAP; } @@ -460,7 +463,8 @@ static cmd_tbl_t cmd_bootm_sub[] = { U_BOOT_CMD_MKENT(go, 0, 1, (void *)BOOTM_STATE_OS_GO, "", ""), };
-int do_bootm_subcommand (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +int do_bootm_subcommand(cmd_tbl_t *cmdtp, int flag, int argc,
- char * const argv[])
{ int ret = 0; long state; @@ -484,7 +488,7 @@ int do_bootm_subcommand (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv }
if (images.state >= state) {
- printf ("Trying to execute a command out of order\n");
- printf("Trying to execute a command out of order\n");
return cmd_usage(cmdtp); }
@@ -535,17 +539,17 @@ int do_bootm_subcommand (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv case BOOTM_STATE_OS_CMDLINE: ret = boot_fn(BOOTM_STATE_OS_CMDLINE, argc, argv, &images); if (ret)
- printf ("cmdline subcommand not supported\n");
- printf("cmdline subcommand not supported\n");
break; case BOOTM_STATE_OS_BD_T: ret = boot_fn(BOOTM_STATE_OS_BD_T, argc, argv, &images); if (ret)
- printf ("bdt subcommand not supported\n");
- printf("bdt subcommand not supported\n");
break; case BOOTM_STATE_OS_PREP: ret = boot_fn(BOOTM_STATE_OS_PREP, argc, argv, &images); if (ret)
- printf ("prep subcommand not supported\n");
- printf("prep subcommand not supported\n");
break; case BOOTM_STATE_OS_GO: disable_interrupts(); @@ -561,7 +565,7 @@ int do_bootm_subcommand (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv /* bootm - boot application image from image in memory */ /*******************************************************************/
-int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +int do_bootm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { ulong iflag; ulong load_end = 0; @@ -624,23 +628,26 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
if (ret < 0) { if (ret == BOOTM_ERR_RESET)
- do_reset (cmdtp, flag, argc, argv);
- do_reset(cmdtp, flag, argc, argv);
if (ret == BOOTM_ERR_OVERLAP) { if (images.legacy_hdr_valid) {
- if (image_get_type (&images.legacy_hdr_os_copy) == IH_TYPE_MULTI)
- puts ("WARNING: legacy format multi component "
- "image overwritten\n");
- image_header_t *hdr;
- hdr = &images.legacy_hdr_os_copy;
- if (image_get_type(hdr) == IH_TYPE_MULTI)
- puts("WARNING: legacy format multi "
- "component image "
- "overwritten\n");
} else {
- puts ("ERROR: new format image overwritten - "
- puts("ERROR: new format image overwritten - "
"must RESET the board to recover\n");
- show_boot_progress (-113);
- do_reset (cmdtp, flag, argc, argv);
- show_boot_progress(-113);
- do_reset(cmdtp, flag, argc, argv);
} } if (ret == BOOTM_ERR_UNIMPLEMENTED) { if (iflag) enable_interrupts();
- show_boot_progress (-7);
- show_boot_progress(-7);
return 1; } } @@ -655,7 +662,7 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) return 0; }
- show_boot_progress (8);
- show_boot_progress(8);
#ifdef CONFIG_SILENT_CONSOLE if (images.os.os == IH_OS_LINUX) @@ -667,9 +674,9 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) if (boot_fn == NULL) { if (iflag) enable_interrupts();
- printf ("ERROR: booting os '%s' (%d) is not supported\n",
- printf("ERROR: booting os '%s' (%d) is not supported\n",
genimg_get_os_name(images.os.os), images.os.os);
- show_boot_progress (-8);
- show_boot_progress(-8);
return 1; }
@@ -677,11 +684,11 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
boot_fn(0, argc, argv, &images);
- show_boot_progress (-9);
- show_boot_progress(-9);
#ifdef DEBUG
- puts ("\n## Control returned to monitor - resetting...\n");
- puts("\n## Control returned to monitor - resetting...\n");
#endif
- do_reset (cmdtp, flag, argc, argv);
- do_reset(cmdtp, flag, argc, argv);
return 1; } @@ -713,40 +720,40 @@ int bootm_maybe_autostart(cmd_tbl_t *cmdtp, const char *cmd) * pointer to a legacy image header if valid image was found * otherwise return NULL */ -static image_header_t *image_get_kernel (ulong img_addr, int verify) +static image_header_t *image_get_kernel(ulong img_addr, int verify) { image_header_t *hdr = (image_header_t *)img_addr;
if (!image_check_magic(hdr)) {
- puts ("Bad Magic Number\n");
- show_boot_progress (-1);
- puts("Bad Magic Number\n");
- show_boot_progress(-1);
return NULL; }
- show_boot_progress (2);
- show_boot_progress(2);
- if (!image_check_hcrc (hdr)) {
- puts ("Bad Header Checksum\n");
- show_boot_progress (-2);
- if (!image_check_hcrc(hdr)) {
- puts("Bad Header Checksum\n");
- show_boot_progress(-2);
return NULL; }
- show_boot_progress (3);
- image_print_contents (hdr);
- show_boot_progress(3);
- image_print_contents(hdr);
if (verify) {
- puts (" Verifying Checksum ... ");
- if (!image_check_dcrc (hdr)) {
- printf ("Bad Data CRC\n");
- show_boot_progress (-3);
- puts(" Verifying Checksum ... ");
- if (!image_check_dcrc(hdr)) {
- printf("Bad Data CRC\n");
- show_boot_progress(-3);
return NULL; }
- puts ("OK\n");
- puts("OK\n");
}
- show_boot_progress (4);
- show_boot_progress(4);
- if (!image_check_target_arch (hdr)) {
- printf ("Unsupported Architecture 0x%x\n", image_get_arch (hdr));
- show_boot_progress (-4);
- if (!image_check_target_arch(hdr)) {
- printf("Unsupported Architecture 0x%x\n", image_get_arch(hdr));
- show_boot_progress(-4);
return NULL; } return hdr; @@ -765,36 +772,36 @@ static image_header_t *image_get_kernel (ulong img_addr, int verify) * 1, on success * 0, on failure */ -#if defined (CONFIG_FIT) -static int fit_check_kernel (const void *fit, int os_noffset, int verify) +#if defined(CONFIG_FIT) +static int fit_check_kernel(const void *fit, int os_noffset, int verify) {
- fit_image_print (fit, os_noffset, " ");
- fit_image_print(fit, os_noffset, " ");
if (verify) {
- puts (" Verifying Hash Integrity ... ");
- if (!fit_image_check_hashes (fit, os_noffset)) {
- puts ("Bad Data Hash\n");
- show_boot_progress (-104);
- puts(" Verifying Hash Integrity ... ");
- if (!fit_image_check_hashes(fit, os_noffset)) {
- puts("Bad Data Hash\n");
- show_boot_progress(-104);
return 0; }
- puts ("OK\n");
- puts("OK\n");
}
- show_boot_progress (105);
- show_boot_progress(105);
- if (!fit_image_check_target_arch (fit, os_noffset)) {
- puts ("Unsupported Architecture\n");
- show_boot_progress (-105);
- if (!fit_image_check_target_arch(fit, os_noffset)) {
- puts("Unsupported Architecture\n");
- show_boot_progress(-105);
return 0; }
- show_boot_progress (106);
- if (!fit_image_check_type (fit, os_noffset, IH_TYPE_KERNEL)) {
- puts ("Not a kernel image\n");
- show_boot_progress (-106);
- show_boot_progress(106);
- if (!fit_image_check_type(fit, os_noffset, IH_TYPE_KERNEL)) {
- puts("Not a kernel image\n");
- show_boot_progress(-106);
return 0; }
- show_boot_progress (107);
- show_boot_progress(107);
return 1; } #endif /* CONFIG_FIT */ @@ -811,8 +818,9 @@ static int fit_check_kernel (const void *fit, int os_noffset, int verify) * pointer to image header if valid image was found, plus kernel start * address and length, otherwise NULL */ -static void *boot_get_kernel (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
- bootm_headers_t *images, ulong *os_data, ulong *os_len)
+static void *boot_get_kernel(cmd_tbl_t *cmdtp, int flag, int argc,
- char * const argv[], bootm_headers_t *images, ulong *os_data,
- ulong *os_len)
{ image_header_t *hdr; ulong img_addr; @@ -829,127 +837,137 @@ static void *boot_get_kernel (cmd_tbl_t *cmdtp, int flag, int argc, char * const /* find out kernel image address */ if (argc < 2) { img_addr = load_addr;
- debug ("* kernel: default image load address = 0x%08lx\n",
- debug("* kernel: default image load address = 0x%08lx\n",
load_addr); #if defined(CONFIG_FIT)
- } else if (fit_parse_conf (argv[1], load_addr, &img_addr,
- } else if (fit_parse_conf(argv[1], load_addr, &img_addr,
&fit_uname_config)) {
- debug ("* kernel: config '%s' from image at 0x%08lx\n",
- debug("* kernel: config '%s' from image at 0x%08lx\n",
fit_uname_config, img_addr);
- } else if (fit_parse_subimage (argv[1], load_addr, &img_addr,
- } else if (fit_parse_subimage(argv[1], load_addr, &img_addr,
&fit_uname_kernel)) {
- debug ("* kernel: subimage '%s' from image at 0x%08lx\n",
- debug("* kernel: subimage '%s' from image at 0x%08lx\n",
fit_uname_kernel, img_addr); #endif } else { img_addr = simple_strtoul(argv[1], NULL, 16);
- debug ("* kernel: cmdline image address = 0x%08lx\n", img_addr);
- debug("* kernel: cmdline image address = 0x%08lx\n", img_addr);
}
- show_boot_progress (1);
- show_boot_progress(1);
/* copy from dataflash if needed */
- img_addr = genimg_get_image (img_addr);
- img_addr = genimg_get_image(img_addr);
/* check image type, for FIT images get FIT kernel node */ *os_data = *os_len = 0;
- switch (genimg_get_format ((void *)img_addr)) {
- switch (genimg_get_format((void *)img_addr)) {
case IMAGE_FORMAT_LEGACY:
- printf ("## Booting kernel from Legacy Image at %08lx ...\n",
- printf("## Booting kernel from Legacy Image at %08lx ...\n",
img_addr);
- hdr = image_get_kernel (img_addr, images->verify);
- hdr = image_get_kernel(img_addr, images->verify);
if (!hdr) return NULL;
- show_boot_progress (5);
- show_boot_progress(5);
/* get os_data and os_len */
- switch (image_get_type (hdr)) {
- switch (image_get_type(hdr)) {
case IH_TYPE_KERNEL:
- *os_data = image_get_data (hdr);
- *os_len = image_get_data_size (hdr);
- *os_data = image_get_data(hdr);
- *os_len = image_get_data_size(hdr);
break; case IH_TYPE_MULTI:
- image_multi_getimg (hdr, 0, os_data, os_len);
- image_multi_getimg(hdr, 0, os_data, os_len);
break; case IH_TYPE_STANDALONE:
- *os_data = image_get_data (hdr);
- *os_len = image_get_data_size (hdr);
- *os_data = image_get_data(hdr);
- *os_len = image_get_data_size(hdr);
break; default:
- printf ("Wrong Image Type for %s command\n", cmdtp->name);
- show_boot_progress (-5);
- printf("Wrong Image Type for %s command\n",
- cmdtp->name);
- show_boot_progress(-5);
return NULL; }
/*
- * copy image header to allow for image overwrites during kernel
- * decompression.
- * copy image header to allow for image overwrites during
- * kernel decompression.
*/
- memmove (&images->legacy_hdr_os_copy, hdr, sizeof(image_header_t));
- memmove(&images->legacy_hdr_os_copy, hdr,
- sizeof(image_header_t));
/* save pointer to image header */ images->legacy_hdr_os = hdr;
images->legacy_hdr_valid = 1;
- show_boot_progress (6);
- show_boot_progress(6);
break; #if defined(CONFIG_FIT) case IMAGE_FORMAT_FIT: fit_hdr = (void *)img_addr;
- printf ("## Booting kernel from FIT Image at %08lx ...\n",
- printf("## Booting kernel from FIT Image at %08lx ...\n",
img_addr);
- if (!fit_check_format (fit_hdr)) {
- puts ("Bad FIT kernel image format!\n");
- show_boot_progress (-100);
- if (!fit_check_format(fit_hdr)) {
- puts("Bad FIT kernel image format!\n");
- show_boot_progress(-100);
return NULL; }
- show_boot_progress (100);
- show_boot_progress(100);
if (!fit_uname_kernel) { /* * no kernel image node unit name, try to get config * node first. If config unit node name is NULL
- * fit_conf_get_node() will try to find default config node
- * fit_conf_get_node() will try to find default config
- * node
*/
- show_boot_progress (101);
- cfg_noffset = fit_conf_get_node (fit_hdr, fit_uname_config);
- show_boot_progress(101);
- cfg_noffset = fit_conf_get_node(fit_hdr,
- fit_uname_config);
if (cfg_noffset < 0) {
- show_boot_progress (-101);
- show_boot_progress(-101);
return NULL; } /* save configuration uname provided in the first * bootm argument */
- images->fit_uname_cfg = fdt_get_name (fit_hdr, cfg_noffset, NULL);
- printf (" Using '%s' configuration\n", images->fit_uname_cfg);
- show_boot_progress (103);
- os_noffset = fit_conf_get_kernel_node (fit_hdr, cfg_noffset);
- fit_uname_kernel = fit_get_name (fit_hdr, os_noffset, NULL);
- images->fit_uname_cfg = fdt_get_name(fit_hdr,
- cfg_noffset,
- NULL);
- printf(" Using '%s' configuration\n",
- images->fit_uname_cfg);
- show_boot_progress(103);
- os_noffset = fit_conf_get_kernel_node(fit_hdr,
- cfg_noffset);
- fit_uname_kernel = fit_get_name(fit_hdr, os_noffset,
- NULL);
} else { /* get kernel component image node offset */
- show_boot_progress (102);
- os_noffset = fit_image_get_node (fit_hdr, fit_uname_kernel);
- show_boot_progress(102);
- os_noffset = fit_image_get_node(fit_hdr,
- fit_uname_kernel);
} if (os_noffset < 0) {
- show_boot_progress (-103);
- show_boot_progress(-103);
return NULL; }
- printf (" Trying '%s' kernel subimage\n", fit_uname_kernel);
- printf(" Trying '%s' kernel subimage\n", fit_uname_kernel);
- show_boot_progress (104);
- if (!fit_check_kernel (fit_hdr, os_noffset, images->verify))
- show_boot_progress(104);
- if (!fit_check_kernel(fit_hdr, os_noffset, images->verify))
return NULL;
/* get kernel image data address and length */
- if (fit_image_get_data (fit_hdr, os_noffset, &data, &len)) {
- puts ("Could not find kernel subimage data!\n");
- show_boot_progress (-107);
- if (fit_image_get_data(fit_hdr, os_noffset, &data, &len)) {
- puts("Could not find kernel subimage data!\n");
- show_boot_progress(-107);
return NULL; }
- show_boot_progress (108);
- show_boot_progress(108);
*os_len = len; *os_data = (ulong)data; @@ -959,12 +977,12 @@ static void *boot_get_kernel (cmd_tbl_t *cmdtp, int flag, int argc, char * const break; #endif default:
- printf ("Wrong Image Format for %s command\n", cmdtp->name);
- show_boot_progress (-108);
- printf("Wrong Image Format for %s command\n", cmdtp->name);
- show_boot_progress(-108);
return NULL; }
- debug (" kernel data at 0x%08lx, len = 0x%08lx (%ld)\n",
- debug(" kernel data at 0x%08lx, len = 0x%08lx (%ld)\n",
*os_data, *os_len, *os_len);
return (void *)img_addr; @@ -1012,15 +1030,15 @@ U_BOOT_CMD( /* bootd - boot default image */ /*******************************************************************/ #if defined(CONFIG_CMD_BOOTD) -int do_bootd (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +int do_bootd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { int rcode = 0;
#ifndef CONFIG_SYS_HUSH_PARSER
- if (run_command (getenv ("bootcmd"), flag) < 0)
- if (run_command(getenv("bootcmd"), flag) < 0)
rcode = 1; #else
- if (parse_string_outer (getenv ("bootcmd"),
- if (parse_string_outer(getenv("bootcmd"),
FLAG_PARSE_SEMICOLON | FLAG_EXIT_FROM_LOOP) != 0) rcode = 1; #endif @@ -1047,72 +1065,72 @@ U_BOOT_CMD( /* iminfo - print header info for a requested image */ /*******************************************************************/ #if defined(CONFIG_CMD_IMI) -int do_iminfo (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +int do_iminfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { int arg; ulong addr; int rcode = 0;
if (argc < 2) {
- return image_info (load_addr);
- return image_info(load_addr);
}
for (arg = 1; arg < argc; ++arg) {
- addr = simple_strtoul (argv[arg], NULL, 16);
- if (image_info (addr) != 0)
- addr = simple_strtoul(argv[arg], NULL, 16);
- if (image_info(addr) != 0)
rcode = 1; } return rcode; }
-static int image_info (ulong addr) +static int image_info(ulong addr) { void *hdr = (void *)addr;
- printf ("\n## Checking Image at %08lx ...\n", addr);
- printf("\n## Checking Image at %08lx ...\n", addr);
- switch (genimg_get_format (hdr)) {
- switch (genimg_get_format(hdr)) {
case IMAGE_FORMAT_LEGACY:
- puts (" Legacy image found\n");
- if (!image_check_magic (hdr)) {
- puts (" Bad Magic Number\n");
- puts(" Legacy image found\n");
- if (!image_check_magic(hdr)) {
- puts(" Bad Magic Number\n");
return 1; }
- if (!image_check_hcrc (hdr)) {
- puts (" Bad Header Checksum\n");
- if (!image_check_hcrc(hdr)) {
- puts(" Bad Header Checksum\n");
return 1; }
- image_print_contents (hdr);
- image_print_contents(hdr);
- puts (" Verifying Checksum ... ");
- if (!image_check_dcrc (hdr)) {
- puts (" Bad Data CRC\n");
- puts(" Verifying Checksum ... ");
- if (!image_check_dcrc(hdr)) {
- puts(" Bad Data CRC\n");
return 1; }
- puts ("OK\n");
- puts("OK\n");
return 0; #if defined(CONFIG_FIT) case IMAGE_FORMAT_FIT:
- puts (" FIT image found\n");
- puts(" FIT image found\n");
- if (!fit_check_format (hdr)) {
- puts ("Bad FIT image format!\n");
- if (!fit_check_format(hdr)) {
- puts("Bad FIT image format!\n");
return 1; }
- fit_print_contents (hdr);
- fit_print_contents(hdr);
- if (!fit_all_image_check_hashes (hdr)) {
- puts ("Bad hash in FIT image!\n");
- if (!fit_all_image_check_hashes(hdr)) {
- puts("Bad hash in FIT image!\n");
return 1; }
return 0; #endif default:
- puts ("Unknown image format!\n");
- puts("Unknown image format!\n");
break; }
@@ -1134,7 +1152,7 @@ U_BOOT_CMD( /* imls - list all images found in flash */ /*******************************************************************/ #if defined(CONFIG_CMD_IMLS) -int do_imls (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +int do_imls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { flash_info_t *info; int i, j; @@ -1151,28 +1169,28 @@ int do_imls (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) if (!hdr) goto next_sector;
- switch (genimg_get_format (hdr)) {
- switch (genimg_get_format(hdr)) {
case IMAGE_FORMAT_LEGACY:
- if (!image_check_hcrc (hdr))
- if (!image_check_hcrc(hdr))
goto next_sector;
- printf ("Legacy Image at %08lX:\n", (ulong)hdr);
- image_print_contents (hdr);
- printf("Legacy Image at %08lX:\n", (ulong)hdr);
- image_print_contents(hdr);
- puts (" Verifying Checksum ... ");
- if (!image_check_dcrc (hdr)) {
- puts ("Bad Data CRC\n");
- puts(" Verifying Checksum ... ");
- if (!image_check_dcrc(hdr)) {
- puts("Bad Data CRC\n");
} else {
- puts ("OK\n");
- puts("OK\n");
} break; #if defined(CONFIG_FIT) case IMAGE_FORMAT_FIT:
- if (!fit_check_format (hdr))
- if (!fit_check_format(hdr))
goto next_sector;
- printf ("FIT Image at %08lX:\n", (ulong)hdr);
- fit_print_contents (hdr);
- printf("FIT Image at %08lX:\n", (ulong)hdr);
- fit_print_contents(hdr);
break; #endif default: @@ -1200,34 +1218,34 @@ U_BOOT_CMD( /* helper routines */ /*******************************************************************/ #ifdef CONFIG_SILENT_CONSOLE -static void fixup_silent_linux () +static void fixup_silent_linux() { char buf[256], *start, *end;
- char *cmdline = getenv ("bootargs");
- char *cmdline = getenv("bootargs");
/* Only fix cmdline when requested */ if (!(gd->flags & GD_FLG_SILENT)) return;
- debug ("before silent fix-up: %s\n", cmdline);
- debug("before silent fix-up: %s\n", cmdline);
if (cmdline) {
- if ((start = strstr (cmdline, "console=")) != NULL) {
- end = strchr (start, ' ');
- strncpy (buf, cmdline, (start - cmdline + 8));
- if ((start = strstr(cmdline, "console=")) != NULL) {
- end = strchr(start, ' ');
- strncpy(buf, cmdline, (start - cmdline + 8));
if (end)
- strcpy (buf + (start - cmdline + 8), end);
- strcpy(buf + (start - cmdline + 8), end);
else buf[start - cmdline + 8] = '\0'; } else {
- strcpy (buf, cmdline);
- strcat (buf, " console=");
- strcpy(buf, cmdline);
- strcat(buf, " console=");
} } else {
- strcpy (buf, "console=");
- strcpy(buf, "console=");
}
- setenv ("bootargs", buf);
- debug ("after silent fix-up: %s\n", buf);
- setenv("bootargs", buf);
- debug("after silent fix-up: %s\n", buf);
} #endif /* CONFIG_SILENT_CONSOLE */
@@ -1237,7 +1255,7 @@ static void fixup_silent_linux () /*******************************************************************/
#ifdef CONFIG_BOOTM_NETBSD -static int do_bootm_netbsd (int flag, int argc, char * const argv[], +static int do_bootm_netbsd(int flag, int argc, char * const argv[], bootm_headers_t *images) { void (*loader)(bd_t *, image_header_t *, char *, char *); @@ -1251,7 +1269,7 @@ static int do_bootm_netbsd (int flag, int argc, char * const argv[],
#if defined(CONFIG_FIT) if (!images->legacy_hdr_valid) {
- fit_unsupported_reset ("NetBSD");
- fit_unsupported_reset("NetBSD");
return 1; } #endif @@ -1269,20 +1287,20 @@ static int do_bootm_netbsd (int flag, int argc, char * const argv[], * address of the original image header. */ os_hdr = NULL;
- if (image_check_type (&images->legacy_hdr_os_copy, IH_TYPE_MULTI)) {
- image_multi_getimg (hdr, 1, &kernel_data, &kernel_len);
- if (image_check_type(&images->legacy_hdr_os_copy, IH_TYPE_MULTI)) {
- image_multi_getimg(hdr, 1, &kernel_data, &kernel_len);
if (kernel_len) os_hdr = hdr; }
consdev = ""; -#if defined (CONFIG_8xx_CONS_SMC1) +#if defined(CONFIG_8xx_CONS_SMC1) consdev = "smc1"; -#elif defined (CONFIG_8xx_CONS_SMC2) +#elif defined(CONFIG_8xx_CONS_SMC2) consdev = "smc2"; -#elif defined (CONFIG_8xx_CONS_SCC2) +#elif defined(CONFIG_8xx_CONS_SCC2) consdev = "scc2"; -#elif defined (CONFIG_8xx_CONS_SCC3) +#elif defined(CONFIG_8xx_CONS_SCC3) consdev = "scc3"; #endif
@@ -1291,25 +1309,26 @@ static int do_bootm_netbsd (int flag, int argc, char * const argv[], int i;
for (i = 2, len = 0; i < argc; i += 1)
- len += strlen (argv[i]) + 1;
- cmdline = malloc (len);
- len += strlen(argv[i]) + 1;
- cmdline = malloc(len);
for (i = 2, len = 0; i < argc; i += 1) { if (i > 2) cmdline[len++] = ' ';
- strcpy (&cmdline[len], argv[i]);
- len += strlen (argv[i]);
- strcpy(&cmdline[len], argv[i]);
- len += strlen(argv[i]);
}
- } else if ((cmdline = getenv ("bootargs")) == NULL) {
- } else if ((cmdline = getenv("bootargs")) == NULL) {
cmdline = ""; }
loader = (void (*)(bd_t *, image_header_t *, char *, char *))images->ep;
- printf ("## Transferring control to NetBSD stage-2 loader (at address %08lx) ...\n",
- printf("## Transferring control to NetBSD stage-2 loader "
- "(at address %08lx) ...\n",
(ulong)loader);
- show_boot_progress (15);
- show_boot_progress(15);
/* * NetBSD Stage-2 Loader Parameters: @@ -1318,14 +1337,14 @@ static int do_bootm_netbsd (int flag, int argc, char * const argv[], * r5: console device * r6: boot args string */
- (*loader) (gd->bd, os_hdr, consdev, cmdline);
- (*loader)(gd->bd, os_hdr, consdev, cmdline);
return 1; } #endif /* CONFIG_BOOTM_NETBSD*/
#ifdef CONFIG_LYNXKDI -static int do_bootm_lynxkdi (int flag, int argc, char * const argv[], +static int do_bootm_lynxkdi(int flag, int argc, char * const argv[], bootm_headers_t *images) { image_header_t *hdr = &images->legacy_hdr_os_copy; @@ -1335,19 +1354,19 @@ static int do_bootm_lynxkdi (int flag, int argc, char * const argv[],
#if defined(CONFIG_FIT) if (!images->legacy_hdr_valid) {
- fit_unsupported_reset ("Lynx");
- fit_unsupported_reset("Lynx");
return 1; } #endif
- lynxkdi_boot ((image_header_t *)hdr);
- lynxkdi_boot((image_header_t *)hdr);
return 1; } #endif /* CONFIG_LYNXKDI */
#ifdef CONFIG_BOOTM_RTEMS -static int do_bootm_rtems (int flag, int argc, char * const argv[], +static int do_bootm_rtems(int flag, int argc, char * const argv[], bootm_headers_t *images) { void (*entry_point)(bd_t *); @@ -1357,17 +1376,17 @@ static int do_bootm_rtems (int flag, int argc, char * const argv[],
#if defined(CONFIG_FIT) if (!images->legacy_hdr_valid) {
- fit_unsupported_reset ("RTEMS");
- fit_unsupported_reset("RTEMS");
return 1; } #endif
entry_point = (void (*)(bd_t *))images->ep;
- printf ("## Transferring control to RTEMS (at address %08lx) ...\n",
- printf("## Transferring control to RTEMS (at address %08lx) ...\n",
(ulong)entry_point);
- show_boot_progress (15);
- show_boot_progress(15);
/* * RTEMS Parameters: @@ -1380,7 +1399,7 @@ static int do_bootm_rtems (int flag, int argc, char * const argv[], #endif /* CONFIG_BOOTM_RTEMS */
#if defined(CONFIG_BOOTM_OSE) -static int do_bootm_ose (int flag, int argc, char * const argv[], +static int do_bootm_ose(int flag, int argc, char * const argv[], bootm_headers_t *images) { void (*entry_point)(void); @@ -1390,17 +1409,17 @@ static int do_bootm_ose (int flag, int argc, char * const argv[],
#if defined(CONFIG_FIT) if (!images->legacy_hdr_valid) {
- fit_unsupported_reset ("OSE");
- fit_unsupported_reset("OSE");
return 1; } #endif
entry_point = (void (*)(void))images->ep;
- printf ("## Transferring control to OSE (at address %08lx) ...\n",
- printf("## Transferring control to OSE (at address %08lx) ...\n",
(ulong)entry_point);
- show_boot_progress (15);
- show_boot_progress(15);
/* * OSE Parameters: @@ -1413,7 +1432,7 @@ static int do_bootm_ose (int flag, int argc, char * const argv[], #endif /* CONFIG_BOOTM_OSE */
#if defined(CONFIG_CMD_ELF) -static int do_bootm_vxworks (int flag, int argc, char * const argv[], +static int do_bootm_vxworks(int flag, int argc, char * const argv[], bootm_headers_t *images) { char str[80]; @@ -1423,7 +1442,7 @@ static int do_bootm_vxworks (int flag, int argc, char * const argv[],
#if defined(CONFIG_FIT) if (!images->legacy_hdr_valid) {
- fit_unsupported_reset ("VxWorks");
- fit_unsupported_reset("VxWorks");
return 1; } #endif @@ -1446,7 +1465,7 @@ static int do_bootm_qnxelf(int flag, int argc, char * const argv[],
#if defined(CONFIG_FIT) if (!images->legacy_hdr_valid) {
- fit_unsupported_reset ("QNX");
- fit_unsupported_reset("QNX");
return 1; } #endif @@ -1461,7 +1480,7 @@ static int do_bootm_qnxelf(int flag, int argc, char * const argv[], #endif
#ifdef CONFIG_INTEGRITY -static int do_bootm_integrity (int flag, int argc, char * const argv[], +static int do_bootm_integrity(int flag, int argc, char * const argv[], bootm_headers_t *images) { void (*entry_point)(void); @@ -1471,17 +1490,17 @@ static int do_bootm_integrity (int flag, int argc, char * const argv[],
#if defined(CONFIG_FIT) if (!images->legacy_hdr_valid) {
- fit_unsupported_reset ("INTEGRITY");
- fit_unsupported_reset("INTEGRITY");
return 1; } #endif
entry_point = (void (*)(void))images->ep;
- printf ("## Transferring control to INTEGRITY (at address %08lx) ...\n",
- printf("## Transferring control to INTEGRITY (at address %08lx) ...\n",
(ulong)entry_point);
- show_boot_progress (15);
- show_boot_progress(15);
/* * INTEGRITY Parameters: diff --git a/common/cmd_ximg.c b/common/cmd_ximg.c index 850188e..0414589 100644 --- a/common/cmd_ximg.c +++ b/common/cmd_ximg.c @@ -62,7 +62,7 @@ do_imgextract(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[]) uint unc_len = CONFIG_SYS_XIMG_LEN; uint8_t comp;
- verify = getenv_yesno ("verify");
- verify = getenv_yesno("verify");
if (argc > 1) { addr = simple_strtoul(argv[1], NULL, 16); @@ -77,33 +77,33 @@ do_imgextract(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[]) dest = simple_strtoul(argv[3], NULL, 16); }
- switch (genimg_get_format ((void *)addr)) {
- switch (genimg_get_format((void *)addr)) {
case IMAGE_FORMAT_LEGACY:
printf("## Copying part %d from legacy image " "at %08lx ...\n", part, addr);
hdr = (image_header_t *)addr;
- if (!image_check_magic (hdr)) {
- if (!image_check_magic(hdr)) {
printf("Bad Magic Number\n"); return 1; }
- if (!image_check_hcrc (hdr)) {
- if (!image_check_hcrc(hdr)) {
printf("Bad Header Checksum\n"); return 1; } #ifdef DEBUG
- image_print_contents (hdr);
- image_print_contents(hdr);
#endif
- if (!image_check_type (hdr, IH_TYPE_MULTI)) {
- if (!image_check_type(hdr, IH_TYPE_MULTI)) {
printf("Wrong Image Type for %s command\n", cmdtp->name); return 1; }
- comp = image_get_comp (hdr);
- comp = image_get_comp(hdr);
if ((comp != IH_COMP_NONE) && (argc < 4)) { printf("Must specify load address for %s command " "with compressed image\n", @@ -113,25 +113,25 @@ do_imgextract(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
if (verify) { printf(" Verifying Checksum ... ");
- if (!image_check_dcrc (hdr)) {
- if (!image_check_dcrc(hdr)) {
printf("Bad Data CRC\n"); return 1; } printf("OK\n"); }
- count = image_multi_count (hdr);
- count = image_multi_count(hdr);
if (part >= count) { printf("Bad Image Part\n"); return 1; }
- image_multi_getimg (hdr, part, &data, &len);
- image_multi_getimg(hdr, part, &data, &len);
break; #if defined(CONFIG_FIT) case IMAGE_FORMAT_FIT: if (uname == NULL) {
- puts ("No FIT subimage unit name\n");
- puts("No FIT subimage unit name\n");
return 1; }
@@ -139,19 +139,19 @@ do_imgextract(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[]) "at %08lx ...\n", uname, addr);
fit_hdr = (const void *)addr;
- if (!fit_check_format (fit_hdr)) {
- puts ("Bad FIT image format\n");
- if (!fit_check_format(fit_hdr)) {
- puts("Bad FIT image format\n");
return 1; }
/* get subimage node offset */
- noffset = fit_image_get_node (fit_hdr, uname);
- noffset = fit_image_get_node(fit_hdr, uname);
if (noffset < 0) {
- printf ("Can't find '%s' FIT subimage\n", uname);
- printf("Can't find '%s' FIT subimage\n", uname);
return 1; }
- if (fit_image_check_comp (fit_hdr, noffset, IH_COMP_NONE)
- if (fit_image_check_comp(fit_hdr, noffset, IH_COMP_NONE)
&& (argc < 4)) { printf("Must specify load address for %s command " "with compressed image\n", @@ -161,21 +161,21 @@ do_imgextract(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
/* verify integrity */ if (verify) {
- if (!fit_image_check_hashes (fit_hdr, noffset)) {
- puts ("Bad Data Hash\n");
- if (!fit_image_check_hashes(fit_hdr, noffset)) {
- puts("Bad Data Hash\n");
return 1; } }
/* get subimage data address and length */
- if (fit_image_get_data (fit_hdr, noffset,
- if (fit_image_get_data(fit_hdr, noffset,
&fit_data, &fit_len)) {
- puts ("Could not find script subimage data\n");
- puts("Could not find script subimage data\n");
return 1; }
- if (fit_image_get_comp (fit_hdr, noffset, &comp)) {
- puts ("Could not find script subimage "
- if (fit_image_get_comp(fit_hdr, noffset, &comp)) {
- puts("Could not find script subimage "
"compression type\n"); return 1; } @@ -185,7 +185,7 @@ do_imgextract(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[]) break; #endif default:
- puts ("Invalid image type for imxtract\n");
- puts("Invalid image type for imxtract\n");
return 1; }
@@ -199,28 +199,28 @@ do_imgextract(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[]) void *to = (void *) dest; void *from = (void *)data;
- printf (" Loading part %d ... ", part);
- printf(" Loading part %d ... ", part);
while (l > 0) { tail = (l > CHUNKSZ) ? CHUNKSZ : l; WATCHDOG_RESET();
- memmove (to, from, tail);
- memmove(to, from, tail);
to += tail; from += tail; l -= tail; } } #else /* !(CONFIG_HW_WATCHDOG || CONFIG_WATCHDOG) */
- printf (" Loading part %d ... ", part);
- memmove ((char *) dest, (char *)data, len);
- printf(" Loading part %d ... ", part);
- memmove((char *) dest, (char *)data, len);
#endif /* CONFIG_HW_WATCHDOG || CONFIG_WATCHDOG */ break; #ifdef CONFIG_GZIP case IH_COMP_GZIP:
- printf (" Uncompressing part %d ... ", part);
- if (gunzip ((void *) dest, unc_len,
- (uchar *) data, &len) != 0) {
- puts ("GUNZIP ERROR - image not loaded\n");
- printf(" Uncompressing part %d ... ", part);
- if (gunzip((void *) dest, unc_len,
- (uchar *) data, &len) != 0) {
- puts("GUNZIP ERROR - image not loaded\n");
return 1; } break; @@ -230,19 +230,19 @@ do_imgextract(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[]) { int i;
- printf (" Uncompressing part %d ... ", part);
- printf(" Uncompressing part %d ... ", part);
/* * If we've got less than 4 MB of malloc() * space, use slower decompression algorithm * which requires at most 2300 KB of memory. */ i = BZ2_bzBuffToBuffDecompress(
- (char*)ntohl(hdr->ih_load),
- (char *)ntohl(hdr->ih_load),
&unc_len, (char *)data, len, CONFIG_SYS_MALLOC_LEN < (4096 * 1024), 0); if (i != BZ_OK) {
- printf ("BUNZIP2 ERROR %d - "
- printf("BUNZIP2 ERROR %d - "
"image not loaded\n", i); return 1; } @@ -250,10 +250,10 @@ do_imgextract(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[]) break; #endif /* CONFIG_BZIP2 */ default:
- printf ("Unimplemented compression type %d\n", comp);
- printf("Unimplemented compression type %d\n", comp);
return 1; }
- puts ("OK\n");
- puts("OK\n");
}
sprintf(pbuf, "%8lx", data); diff --git a/common/image.c b/common/image.c index 32ad4da..33ae916 100644 --- a/common/image.c +++ b/common/image.c @@ -45,7 +45,7 @@
#include <image.h>
-#if defined(CONFIG_FIT) || defined (CONFIG_OF_LIBFDT) +#if defined(CONFIG_FIT) || defined(CONFIG_OF_LIBFDT) #include <fdt.h> #include <libfdt.h> #include <fdt_support.h> @@ -55,7 +55,7 @@ #include <u-boot/md5.h> #include <sha1.h>
-static int fit_check_ramdisk (const void *fit, int os_noffset, +static int fit_check_ramdisk(const void *fit, int os_noffset, uint8_t arch, int verify); #endif
@@ -65,7 +65,7 @@ extern int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
DECLARE_GLOBAL_DATA_PTR;
-static const image_header_t* image_get_ramdisk (ulong rd_addr, uint8_t arch, +static const image_header_t *image_get_ramdisk(ulong rd_addr, uint8_t arch, int verify); #else #include "mkimage.h" @@ -155,37 +155,37 @@ static const table_entry_t uimage_comp[] = { { -1, "", "", }, };
-uint32_t crc32 (uint32_t, const unsigned char *, uint); -uint32_t crc32_wd (uint32_t, const unsigned char *, uint, uint); +uint32_t crc32(uint32_t, const unsigned char *, uint); +uint32_t crc32_wd(uint32_t, const unsigned char *, uint, uint); #if defined(CONFIG_TIMESTAMP) || defined(CONFIG_CMD_DATE) || defined(USE_HOSTCC) -static void genimg_print_time (time_t timestamp); +static void genimg_print_time(time_t timestamp); #endif
/*****************************************************************************/ /* Legacy format routines */ /*****************************************************************************/ -int image_check_hcrc (const image_header_t *hdr) +int image_check_hcrc(const image_header_t *hdr) { ulong hcrc;
- ulong len = image_get_header_size ();
- ulong len = image_get_header_size();
image_header_t header;
/* Copy header so we can blank CRC field for re-calculation */
- memmove (&header, (char *)hdr, image_get_header_size ());
- image_set_hcrc (&header, 0);
- memmove(&header, (char *)hdr, image_get_header_size());
- image_set_hcrc(&header, 0);
- hcrc = crc32 (0, (unsigned char *)&header, len);
- hcrc = crc32(0, (unsigned char *)&header, len);
- return (hcrc == image_get_hcrc (hdr));
- return (hcrc == image_get_hcrc(hdr));
}
-int image_check_dcrc (const image_header_t *hdr) +int image_check_dcrc(const image_header_t *hdr) {
- ulong data = image_get_data (hdr);
- ulong len = image_get_data_size (hdr);
- ulong dcrc = crc32_wd (0, (unsigned char *)data, len, CHUNKSZ_CRC32);
- ulong data = image_get_data(hdr);
- ulong len = image_get_data_size(hdr);
- ulong dcrc = crc32_wd(0, (unsigned char *)data, len, CHUNKSZ_CRC32);
- return (dcrc == image_get_dcrc (hdr));
- return (dcrc == image_get_dcrc(hdr));
}
/** @@ -201,14 +201,14 @@ int image_check_dcrc (const image_header_t *hdr) * returns: * number of components */ -ulong image_multi_count (const image_header_t *hdr) +ulong image_multi_count(const image_header_t *hdr) { ulong i, count = 0; uint32_t *size;
/* get start of the image payload, which in case of multi * component images that points to a table of component sizes */
- size = (uint32_t *)image_get_data (hdr);
- size = (uint32_t *)image_get_data(hdr);
/* count non empty slots */ for (i = 0; size[i]; ++i) @@ -234,7 +234,7 @@ ulong image_multi_count (const image_header_t *hdr) * data address and size of the component, if idx is valid * 0 in data and len, if idx is out of range */ -void image_multi_getimg (const image_header_t *hdr, ulong idx, +void image_multi_getimg(const image_header_t *hdr, ulong idx, ulong *data, ulong *len) { int i; @@ -242,24 +242,24 @@ void image_multi_getimg (const image_header_t *hdr, ulong idx, ulong offset, count, img_data;
/* get number of component */
- count = image_multi_count (hdr);
- count = image_multi_count(hdr);
/* get start of the image payload, which in case of multi * component images that points to a table of component sizes */
- size = (uint32_t *)image_get_data (hdr);
- size = (uint32_t *)image_get_data(hdr);
/* get address of the proper component data start, which means * skipping sizes table (add 1 for last, null entry) */
- img_data = image_get_data (hdr) + (count + 1) * sizeof (uint32_t);
- img_data = image_get_data(hdr) + (count + 1) * sizeof(uint32_t);
if (idx < count) {
- *len = uimage_to_cpu (size[idx]);
- *len = uimage_to_cpu(size[idx]);
offset = 0;
/* go over all indices preceding requested component idx */ for (i = 0; i < idx; i++) { /* add up i-th component size, rounding up to 4 bytes */
- offset += (uimage_to_cpu (size[i]) + 3) & ~3 ;
- offset += (uimage_to_cpu(size[i]) + 3) & ~3 ;
}
/* calculate idx-th component data address */ @@ -270,16 +270,16 @@ void image_multi_getimg (const image_header_t *hdr, ulong idx, } }
-static void image_print_type (const image_header_t *hdr) +static void image_print_type(const image_header_t *hdr) { const char *os, *arch, *type, *comp;
- os = genimg_get_os_name (image_get_os (hdr));
- arch = genimg_get_arch_name (image_get_arch (hdr));
- type = genimg_get_type_name (image_get_type (hdr));
- comp = genimg_get_comp_name (image_get_comp (hdr));
- os = genimg_get_os_name(image_get_os(hdr));
- arch = genimg_get_arch_name(image_get_arch(hdr));
- type = genimg_get_type_name(image_get_type(hdr));
- comp = genimg_get_comp_name(image_get_comp(hdr));
- printf ("%s %s %s (%s)\n", arch, os, type, comp);
- printf("%s %s %s (%s)\n", arch, os, type, comp);
}
/** @@ -294,7 +294,7 @@ static void image_print_type (const image_header_t *hdr) * returns: * no returned results */ -void image_print_contents (const void *ptr) +void image_print_contents(const void *ptr) { const image_header_t *hdr = (const image_header_t *)ptr; const char *p; @@ -305,38 +305,38 @@ void image_print_contents (const void *ptr) p = " "; #endif
- printf ("%sImage Name: %.*s\n", p, IH_NMLEN, image_get_name (hdr));
- printf("%sImage Name: %.*s\n", p, IH_NMLEN, image_get_name(hdr));
#if defined(CONFIG_TIMESTAMP) || defined(CONFIG_CMD_DATE) || defined(USE_HOSTCC)
- printf ("%sCreated: ", p);
- genimg_print_time ((time_t)image_get_time (hdr));
- printf("%sCreated: ", p);
- genimg_print_time((time_t)image_get_time(hdr));
#endif
- printf ("%sImage Type: ", p);
- image_print_type (hdr);
- printf ("%sData Size: ", p);
- genimg_print_size (image_get_data_size (hdr));
- printf ("%sLoad Address: %08x\n", p, image_get_load (hdr));
- printf ("%sEntry Point: %08x\n", p, image_get_ep (hdr));
- if (image_check_type (hdr, IH_TYPE_MULTI) ||
- image_check_type (hdr, IH_TYPE_SCRIPT)) {
- printf("%sImage Type: ", p);
- image_print_type(hdr);
- printf("%sData Size: ", p);
- genimg_print_size(image_get_data_size(hdr));
- printf("%sLoad Address: %08x\n", p, image_get_load(hdr));
- printf("%sEntry Point: %08x\n", p, image_get_ep(hdr));
- if (image_check_type(hdr, IH_TYPE_MULTI) ||
- image_check_type(hdr, IH_TYPE_SCRIPT)) {
int i; ulong data, len;
- ulong count = image_multi_count (hdr);
- ulong count = image_multi_count(hdr);
- printf ("%sContents:\n", p);
- printf("%sContents:\n", p);
for (i = 0; i < count; i++) {
- image_multi_getimg (hdr, i, &data, &len);
- image_multi_getimg(hdr, i, &data, &len);
- printf ("%s Image %d: ", p, i);
- genimg_print_size (len);
- printf("%s Image %d: ", p, i);
- genimg_print_size(len);
- if (image_check_type (hdr, IH_TYPE_SCRIPT) && i > 0) {
- if (image_check_type(hdr, IH_TYPE_SCRIPT) && i > 0) {
/* * the user may need to know offsets * if planning to do something with * multiple files */
- printf ("%s Offset = 0x%08lx\n", p, data);
- printf("%s Offset = 0x%08lx\n", p, data);
} } } @@ -362,44 +362,44 @@ void image_print_contents (const void *ptr) * pointer to a ramdisk image header, if image was found and valid * otherwise, return NULL */ -static const image_header_t *image_get_ramdisk (ulong rd_addr, uint8_t arch, +static const image_header_t *image_get_ramdisk(ulong rd_addr, uint8_t arch, int verify) { const image_header_t *rd_hdr = (const image_header_t *)rd_addr;
- if (!image_check_magic (rd_hdr)) {
- puts ("Bad Magic Number\n");
- show_boot_progress (-10);
- if (!image_check_magic(rd_hdr)) {
- puts("Bad Magic Number\n");
- show_boot_progress(-10);
return NULL; }
- if (!image_check_hcrc (rd_hdr)) {
- puts ("Bad Header Checksum\n");
- show_boot_progress (-11);
- if (!image_check_hcrc(rd_hdr)) {
- puts("Bad Header Checksum\n");
- show_boot_progress(-11);
return NULL; }
- show_boot_progress (10);
- image_print_contents (rd_hdr);
- show_boot_progress(10);
- image_print_contents(rd_hdr);
if (verify) { puts(" Verifying Checksum ... ");
- if (!image_check_dcrc (rd_hdr)) {
- puts ("Bad Data CRC\n");
- show_boot_progress (-12);
- if (!image_check_dcrc(rd_hdr)) {
- puts("Bad Data CRC\n");
- show_boot_progress(-12);
return NULL; } puts("OK\n"); }
- show_boot_progress (11);
- show_boot_progress(11);
- if (!image_check_os (rd_hdr, IH_OS_LINUX) ||
- !image_check_arch (rd_hdr, arch) ||
- !image_check_type (rd_hdr, IH_TYPE_RAMDISK)) {
- printf ("No Linux %s Ramdisk Image\n",
- if (!image_check_os(rd_hdr, IH_OS_LINUX) ||
- !image_check_arch(rd_hdr, arch) ||
- !image_check_type(rd_hdr, IH_TYPE_RAMDISK)) {
- printf("No Linux %s Ramdisk Image\n",
genimg_get_arch_name(arch));
- show_boot_progress (-13);
- show_boot_progress(-13);
return NULL; }
@@ -411,17 +411,17 @@ static const image_header_t *image_get_ramdisk (ulong rd_addr, uint8_t arch, /* Shared dual-format routines */ /*****************************************************************************/ #ifndef USE_HOSTCC -int getenv_yesno (char *var) +int getenv_yesno(char *var) {
- char *s = getenv (var);
- char *s = getenv(var);
return (s && (*s == 'n')) ? 0 : 1; }
ulong getenv_bootm_low(void) {
- char *s = getenv ("bootm_low");
- char *s = getenv("bootm_low");
if (s) {
- ulong tmp = simple_strtoul (s, NULL, 16);
- ulong tmp = simple_strtoul(s, NULL, 16);
return tmp; }
@@ -437,14 +437,14 @@ ulong getenv_bootm_low(void) phys_size_t getenv_bootm_size(void) { phys_size_t tmp;
- char *s = getenv ("bootm_size");
- char *s = getenv("bootm_size");
if (s) {
- tmp = (phys_size_t)simple_strtoull (s, NULL, 16);
- tmp = (phys_size_t)simple_strtoull(s, NULL, 16);
return tmp; } s = getenv("bootm_low"); if (s)
- tmp = (phys_size_t)simple_strtoull (s, NULL, 16);
- tmp = (phys_size_t)simple_strtoull(s, NULL, 16);
else tmp = 0;
@@ -459,9 +459,9 @@ phys_size_t getenv_bootm_size(void) phys_size_t getenv_bootm_mapsize(void) { phys_size_t tmp;
- char *s = getenv ("bootm_mapsize");
- char *s = getenv("bootm_mapsize");
if (s) {
- tmp = (phys_size_t)simple_strtoull (s, NULL, 16);
- tmp = (phys_size_t)simple_strtoull(s, NULL, 16);
return tmp; }
@@ -472,7 +472,7 @@ phys_size_t getenv_bootm_mapsize(void) #endif }
-void memmove_wd (void *to, void *from, size_t len, ulong chunksz) +void memmove_wd(void *to, void *from, size_t len, ulong chunksz) { if (to == from) return; @@ -480,42 +480,42 @@ void memmove_wd (void *to, void *from, size_t len, ulong chunksz) #if defined(CONFIG_HW_WATCHDOG) || defined(CONFIG_WATCHDOG) while (len > 0) { size_t tail = (len > chunksz) ? chunksz : len;
- WATCHDOG_RESET ();
- memmove (to, from, tail);
- WATCHDOG_RESET();
- memmove(to, from, tail);
to += tail; from += tail; len -= tail; } #else /* !(CONFIG_HW_WATCHDOG || CONFIG_WATCHDOG) */
- memmove (to, from, len);
- memmove(to, from, len);
#endif /* CONFIG_HW_WATCHDOG || CONFIG_WATCHDOG */ } #endif /* !USE_HOSTCC */
-void genimg_print_size (uint32_t size) +void genimg_print_size(uint32_t size) { #ifndef USE_HOSTCC
- printf ("%d Bytes = ", size);
- print_size (size, "\n");
- printf("%d Bytes = ", size);
- print_size(size, "\n");
#else
- printf ("%d Bytes = %.2f kB = %.2f MB\n",
- printf("%d Bytes = %.2f kB = %.2f MB\n",
size, (double)size / 1.024e3, (double)size / 1.048576e6); #endif }
#if defined(CONFIG_TIMESTAMP) || defined(CONFIG_CMD_DATE) || defined(USE_HOSTCC) -static void genimg_print_time (time_t timestamp) +static void genimg_print_time(time_t timestamp) { #ifndef USE_HOSTCC struct rtc_time tm;
- to_tm (timestamp, &tm);
- printf ("%4d-%02d-%02d %2d:%02d:%02d UTC\n",
- to_tm(timestamp, &tm);
- printf("%4d-%02d-%02d %2d:%02d:%02d UTC\n",
tm.tm_year, tm.tm_mon, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec); #else
- printf ("%s", ctime(×tamp));
- printf("%s", ctime(×tamp));
#endif } #endif /* CONFIG_TIMESTAMP || CONFIG_CMD_DATE || USE_HOSTCC */ @@ -547,24 +547,26 @@ char *get_table_entry_name(const table_entry_t *table, char *msg, int id) return (msg); }
-const char *genimg_get_os_name (uint8_t os) +const char *genimg_get_os_name(uint8_t os) {
- return (get_table_entry_name (uimage_os, "Unknown OS", os));
- return (get_table_entry_name(uimage_os, "Unknown OS", os));
}
-const char *genimg_get_arch_name (uint8_t arch) +const char *genimg_get_arch_name(uint8_t arch) {
- return (get_table_entry_name (uimage_arch, "Unknown Architecture", arch));
- return (get_table_entry_name(uimage_arch, "Unknown Architecture",
- arch));
}
-const char *genimg_get_type_name (uint8_t type) +const char *genimg_get_type_name(uint8_t type) {
- return (get_table_entry_name (uimage_type, "Unknown Image", type));
- return (get_table_entry_name(uimage_type, "Unknown Image", type));
}
-const char *genimg_get_comp_name (uint8_t comp) +const char *genimg_get_comp_name(uint8_t comp) {
- return (get_table_entry_name (uimage_comp, "Unknown Compression", comp));
- return (get_table_entry_name(uimage_comp, "Unknown Compression",
- comp));
}
/** @@ -590,17 +592,17 @@ int get_table_entry_id(const table_entry_t *table,
for (t = table; t->id >= 0; ++t) { if (t->sname && strcasecmp(t->sname, name) == 0)
- return (t->id);
- return(t->id);
}
- fprintf (stderr, "\nInvalid %s Type - valid names are", table_name);
- fprintf(stderr, "\nInvalid %s Type - valid names are", table_name);
for (t = table; t->id >= 0; ++t) { if (t->sname == NULL) continue;
- fprintf (stderr, "%c %s", (first) ? ':' : ',', t->sname);
- fprintf(stderr, "%c %s", (first) ? ':' : ',', t->sname);
first = 0; }
- fprintf (stderr, "\n");
- fprintf(stderr, "\n");
#else for (t = table; t->id >= 0; ++t) { #ifdef CONFIG_NEEDS_MANUAL_RELOC @@ -610,29 +612,29 @@ int get_table_entry_id(const table_entry_t *table, #endif return (t->id); }
- debug ("Invalid %s Type: %s\n", table_name, name);
- debug("Invalid %s Type: %s\n", table_name, name);
#endif /* USE_HOSTCC */ return (-1); }
-int genimg_get_os_id (const char *name) +int genimg_get_os_id(const char *name) {
- return (get_table_entry_id (uimage_os, "OS", name));
- return (get_table_entry_id(uimage_os, "OS", name));
}
-int genimg_get_arch_id (const char *name) +int genimg_get_arch_id(const char *name) {
- return (get_table_entry_id (uimage_arch, "CPU", name));
- return (get_table_entry_id(uimage_arch, "CPU", name));
}
-int genimg_get_type_id (const char *name) +int genimg_get_type_id(const char *name) {
- return (get_table_entry_id (uimage_type, "Image", name));
- return (get_table_entry_id(uimage_type, "Image", name));
}
-int genimg_get_comp_id (const char *name) +int genimg_get_comp_id(const char *name) {
- return (get_table_entry_id (uimage_comp, "Compression", name));
- return (get_table_entry_id(uimage_comp, "Compression", name));
}
#ifndef USE_HOSTCC @@ -650,7 +652,7 @@ int genimg_get_comp_id (const char *name) * returns: * image format type or IMAGE_FORMAT_INVALID if no image is present */ -int genimg_get_format (void *img_addr) +int genimg_get_format(void *img_addr) { ulong format = IMAGE_FORMAT_INVALID; const image_header_t *hdr; @@ -664,7 +666,7 @@ int genimg_get_format (void *img_addr) #if defined(CONFIG_FIT) || defined(CONFIG_OF_LIBFDT) else { fit_hdr = (char *)img_addr;
- if (fdt_check_header (fit_hdr) == 0)
- if (fdt_check_header(fit_hdr) == 0)
format = IMAGE_FORMAT_FIT; } #endif @@ -682,55 +684,59 @@ int genimg_get_format (void *img_addr) * returns: * image start address after possible relocation from special storage */ -ulong genimg_get_image (ulong img_addr) +ulong genimg_get_image(ulong img_addr) { ulong ram_addr = img_addr;
#ifdef CONFIG_HAS_DATAFLASH ulong h_size, d_size;
- if (addr_dataflash (img_addr)){
- if (addr_dataflash(img_addr)) {
/* ger RAM address */ ram_addr = CONFIG_SYS_LOAD_ADDR;
/* get header size */
- h_size = image_get_header_size ();
- h_size = image_get_header_size();
#if defined(CONFIG_FIT) if (sizeof(struct fdt_header) > h_size) h_size = sizeof(struct fdt_header); #endif
/* read in header */
- debug (" Reading image header from dataflash address "
- debug(" Reading image header from dataflash address "
"%08lx to RAM address %08lx\n", img_addr, ram_addr);
- read_dataflash (img_addr, h_size, (char *)ram_addr);
- read_dataflash(img_addr, h_size, (char *)ram_addr);
/* get data size */
- switch (genimg_get_format ((void *)ram_addr)) {
- switch (genimg_get_format((void *)ram_addr)) {
case IMAGE_FORMAT_LEGACY:
- d_size = image_get_data_size ((const image_header_t *)ram_addr);
- debug (" Legacy format image found at 0x%08lx, size 0x%08lx\n",
- d_size = image_get_data_size(
- (const image_header_t *)ram_addr);
- debug(" Legacy format image found at 0x%08lx, "
- "size 0x%08lx\n",
ram_addr, d_size); break; #if defined(CONFIG_FIT) case IMAGE_FORMAT_FIT:
- d_size = fit_get_size ((const void *)ram_addr) - h_size;
- debug (" FIT/FDT format image found at 0x%08lx, size 0x%08lx\n",
- d_size = fit_get_size((const void *)ram_addr) - h_size;
- debug(" FIT/FDT format image found at 0x%08lx, "
- "size 0x%08lx\n",
ram_addr, d_size); break; #endif default:
- printf (" No valid image found at 0x%08lx\n", img_addr);
- printf(" No valid image found at 0x%08lx\n",
- img_addr);
return ram_addr; }
/* read in image data */
- debug (" Reading image remaining data from dataflash address "
- debug(" Reading image remaining data from dataflash address "
"%08lx to RAM address %08lx\n", img_addr + h_size, ram_addr + h_size);
- read_dataflash (img_addr + h_size, d_size,
- read_dataflash(img_addr + h_size, d_size,
(char *)(ram_addr + h_size));
} @@ -750,7 +756,7 @@ ulong genimg_get_image (ulong img_addr) * 0, no FIT support or no configuration found * 1, configuration found */ -int genimg_has_config (bootm_headers_t *images) +int genimg_has_config(bootm_headers_t *images) { #if defined(CONFIG_FIT) if (images->fit_uname_cfg) @@ -781,7 +787,7 @@ int genimg_has_config (bootm_headers_t *images) * 1, if ramdisk image is found but corrupted, or invalid * rd_start and rd_end are set to 0 if no ramdisk exists */ -int boot_get_ramdisk (int argc, char * const argv[], bootm_headers_t *images, +int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images, uint8_t arch, ulong *rd_start, ulong *rd_end) { ulong rd_addr, rd_load; @@ -806,9 +812,9 @@ int boot_get_ramdisk (int argc, char * const argv[], bootm_headers_t *images, * ramdisk argument */ if ((argc >= 3) && (strcmp(argv[2], "-") == 0)) {
- debug ("## Skipping init Ramdisk\n");
- debug("## Skipping init Ramdisk\n");
rd_len = rd_data = 0;
- } else if (argc >= 3 || genimg_has_config (images)) {
- } else if (argc >= 3 || genimg_has_config(images)) {
#if defined(CONFIG_FIT) if (argc >= 3) { /* @@ -822,19 +828,22 @@ int boot_get_ramdisk (int argc, char * const argv[], bootm_headers_t *images, else default_addr = load_addr;
- if (fit_parse_conf (argv[2], default_addr,
- if (fit_parse_conf(argv[2], default_addr,
&rd_addr, &fit_uname_config)) {
- debug ("* ramdisk: config '%s' from image at 0x%08lx\n",
- debug("* ramdisk: config '%s' from image at "
- "0x%08lx\n",
fit_uname_config, rd_addr);
- } else if (fit_parse_subimage (argv[2], default_addr,
- } else if (fit_parse_subimage(argv[2], default_addr,
&rd_addr, &fit_uname_ramdisk)) {
- debug ("* ramdisk: subimage '%s' from image at 0x%08lx\n",
- debug("* ramdisk: subimage '%s' from image at "
- "0x%08lx\n",
fit_uname_ramdisk, rd_addr); } else #endif { rd_addr = simple_strtoul(argv[2], NULL, 16);
- debug ("* ramdisk: cmdline image address = 0x%08lx\n",
- debug("* ramdisk: cmdline image address = "
- "0x%08lx\n",
rd_addr); } #if defined(CONFIG_FIT) @@ -844,7 +853,8 @@ int boot_get_ramdisk (int argc, char * const argv[], bootm_headers_t *images, */ rd_addr = (ulong)images->fit_hdr_os; fit_uname_config = images->fit_uname_cfg;
- debug ("* ramdisk: using config '%s' from image at 0x%08lx\n",
- debug("* ramdisk: using config '%s' from image "
- "at 0x%08lx\n",
fit_uname_config, rd_addr);
/* @@ -852,57 +862,59 @@ int boot_get_ramdisk (int argc, char * const argv[], bootm_headers_t *images, * if not, don't try to use it, quit silently. */ fit_hdr = (void *)rd_addr;
- cfg_noffset = fit_conf_get_node (fit_hdr, fit_uname_config);
- cfg_noffset = fit_conf_get_node(fit_hdr,
- fit_uname_config);
if (cfg_noffset < 0) {
- debug ("* ramdisk: no such config\n");
- debug("* ramdisk: no such config\n");
return 1; }
- rd_noffset = fit_conf_get_ramdisk_node (fit_hdr, cfg_noffset);
- rd_noffset = fit_conf_get_ramdisk_node(fit_hdr,
- cfg_noffset);
if (rd_noffset < 0) {
- debug ("* ramdisk: no ramdisk in config\n");
- debug("* ramdisk: no ramdisk in config\n");
return 0; } } #endif
/* copy from dataflash if needed */
- rd_addr = genimg_get_image (rd_addr);
- rd_addr = genimg_get_image(rd_addr);
/* * Check if there is an initrd image at the * address provided in the second bootm argument * check image type, for FIT images get FIT node. */
- switch (genimg_get_format ((void *)rd_addr)) {
- switch (genimg_get_format((void *)rd_addr)) {
case IMAGE_FORMAT_LEGACY:
- printf ("## Loading init Ramdisk from Legacy "
- printf("## Loading init Ramdisk from Legacy "
"Image at %08lx ...\n", rd_addr);
- show_boot_progress (9);
- rd_hdr = image_get_ramdisk (rd_addr, arch,
- show_boot_progress(9);
- rd_hdr = image_get_ramdisk(rd_addr, arch,
images->verify);
if (rd_hdr == NULL) return 1;
- rd_data = image_get_data (rd_hdr);
- rd_len = image_get_data_size (rd_hdr);
- rd_load = image_get_load (rd_hdr);
- rd_data = image_get_data(rd_hdr);
- rd_len = image_get_data_size(rd_hdr);
- rd_load = image_get_load(rd_hdr);
break; #if defined(CONFIG_FIT) case IMAGE_FORMAT_FIT: fit_hdr = (void *)rd_addr;
- printf ("## Loading init Ramdisk from FIT "
- printf("## Loading init Ramdisk from FIT "
"Image at %08lx ...\n", rd_addr);
- show_boot_progress (120);
- if (!fit_check_format (fit_hdr)) {
- puts ("Bad FIT ramdisk image format!\n");
- show_boot_progress (-120);
- show_boot_progress(120);
- if (!fit_check_format(fit_hdr)) {
- puts("Bad FIT ramdisk image format!\n");
- show_boot_progress(-120);
return 1; }
- show_boot_progress (121);
- show_boot_progress(121);
if (!fit_uname_ramdisk) { /* @@ -910,52 +922,63 @@ int boot_get_ramdisk (int argc, char * const argv[], bootm_headers_t *images, * node first. If config unit node name is NULL * fit_conf_get_node() will try to find default config node */
- show_boot_progress (122);
- cfg_noffset = fit_conf_get_node (fit_hdr, fit_uname_config);
- show_boot_progress(122);
- cfg_noffset = fit_conf_get_node(fit_hdr,
- fit_uname_config);
if (cfg_noffset < 0) {
- puts ("Could not find configuration node\n");
- show_boot_progress (-122);
- puts("Could not find configuration "
- "node\n");
- show_boot_progress(-122);
return 1; }
- fit_uname_config = fdt_get_name (fit_hdr, cfg_noffset, NULL);
- printf (" Using '%s' configuration\n", fit_uname_config);
- fit_uname_config = fdt_get_name(fit_hdr,
- cfg_noffset, NULL);
- printf(" Using '%s' configuration\n",
- fit_uname_config);
- rd_noffset = fit_conf_get_ramdisk_node (fit_hdr, cfg_noffset);
- fit_uname_ramdisk = fit_get_name (fit_hdr, rd_noffset, NULL);
- rd_noffset = fit_conf_get_ramdisk_node(fit_hdr,
- cfg_noffset);
- fit_uname_ramdisk = fit_get_name(fit_hdr,
- rd_noffset, NULL);
} else { /* get ramdisk component image node offset */
- show_boot_progress (123);
- rd_noffset = fit_image_get_node (fit_hdr, fit_uname_ramdisk);
- show_boot_progress(123);
- rd_noffset = fit_image_get_node(fit_hdr,
- fit_uname_ramdisk);
} if (rd_noffset < 0) {
- puts ("Could not find subimage node\n");
- show_boot_progress (-124);
- puts("Could not find subimage node\n");
- show_boot_progress(-124);
return 1; }
- printf (" Trying '%s' ramdisk subimage\n", fit_uname_ramdisk);
- printf(" Trying '%s' ramdisk subimage\n",
- fit_uname_ramdisk);
- show_boot_progress (125);
- if (!fit_check_ramdisk (fit_hdr, rd_noffset, arch, images->verify))
- show_boot_progress(125);
- if (!fit_check_ramdisk(fit_hdr, rd_noffset, arch,
- images->verify))
return 1;
/* get ramdisk image data address and length */
- if (fit_image_get_data (fit_hdr, rd_noffset, &data, &size)) {
- puts ("Could not find ramdisk subimage data!\n");
- show_boot_progress (-127);
- if (fit_image_get_data(fit_hdr, rd_noffset, &data,
- &size)) {
- puts("Could not find ramdisk subimage data!\n");
- show_boot_progress(-127);
return 1; }
- show_boot_progress (128);
- show_boot_progress(128);
rd_data = (ulong)data; rd_len = size;
- if (fit_image_get_load (fit_hdr, rd_noffset, &rd_load)) {
- puts ("Can't get ramdisk subimage load address!\n");
- show_boot_progress (-129);
- if (fit_image_get_load(fit_hdr, rd_noffset, &rd_load)) {
- puts("Can't get ramdisk subimage load "
- "address!\n");
- show_boot_progress(-129);
return 1; }
- show_boot_progress (129);
- show_boot_progress(129);
images->fit_hdr_rd = fit_hdr; images->fit_uname_rd = fit_uname_ramdisk; @@ -963,37 +986,39 @@ int boot_get_ramdisk (int argc, char * const argv[], bootm_headers_t *images, break; #endif default:
- puts ("Wrong Ramdisk Image Format\n");
- puts("Wrong Ramdisk Image Format\n");
rd_data = rd_len = rd_load = 0; return 1; } } else if (images->legacy_hdr_valid &&
- image_check_type (&images->legacy_hdr_os_copy, IH_TYPE_MULTI)) {
- image_check_type(&images->legacy_hdr_os_copy,
- IH_TYPE_MULTI)) {
/* * Now check if we have a legacy mult-component image, * get second entry data start address and len. */
- show_boot_progress (13);
- printf ("## Loading init Ramdisk from multi component "
- show_boot_progress(13);
- printf("## Loading init Ramdisk from multi component "
"Legacy Image at %08lx ...\n", (ulong)images->legacy_hdr_os);
- image_multi_getimg (images->legacy_hdr_os, 1, &rd_data, &rd_len);
- image_multi_getimg(images->legacy_hdr_os, 1, &rd_data, &rd_len);
} else { /* * no initrd image */
- show_boot_progress (14);
- show_boot_progress(14);
rd_len = rd_data = 0; }
if (!rd_data) {
- debug ("## No init Ramdisk\n");
- debug("## No init Ramdisk\n");
} else { *rd_start = rd_data; *rd_end = rd_data + rd_len; }
- debug (" ramdisk start = 0x%08lx, ramdisk end = 0x%08lx\n",
- debug(" ramdisk start = 0x%08lx, ramdisk end = 0x%08lx\n",
*rd_start, *rd_end);
return 0; @@ -1021,18 +1046,18 @@ int boot_get_ramdisk (int argc, char * const argv[], bootm_headers_t *images, * 0 - success * -1 - failure */ -int boot_ramdisk_high (struct lmb *lmb, ulong rd_data, ulong rd_len, +int boot_ramdisk_high(struct lmb *lmb, ulong rd_data, ulong rd_len, ulong *initrd_start, ulong *initrd_end) { char *s; ulong initrd_high; int initrd_copy_to_ram = 1;
- if ((s = getenv ("initrd_high")) != NULL) {
- if ((s = getenv("initrd_high")) != NULL) {
/* a value of "no" or a similar string will act like 0, * turning the "load high" feature off. This is intentional. */
- initrd_high = simple_strtoul (s, NULL, 16);
- initrd_high = simple_strtoul(s, NULL, 16);
if (initrd_high == ~0) initrd_copy_to_ram = 0; } else { @@ -1046,41 +1071,43 @@ int boot_ramdisk_high (struct lmb *lmb, ulong rd_data, ulong rd_len, lmb_reserve(lmb, logbuffer_base() - LOGBUFF_OVERHEAD, LOGBUFF_RESERVE); #endif
- debug ("## initrd_high = 0x%08lx, copy_to_ram = %d\n",
- debug("## initrd_high = 0x%08lx, copy_to_ram = %d\n",
initrd_high, initrd_copy_to_ram);
if (rd_data) { if (!initrd_copy_to_ram) { /* zero-copy ramdisk support */
- debug (" in-place initrd\n");
- debug(" in-place initrd\n");
*initrd_start = rd_data; *initrd_end = rd_data + rd_len; lmb_reserve(lmb, rd_data, rd_len); } else { if (initrd_high)
- *initrd_start = (ulong)lmb_alloc_base (lmb, rd_len, 0x1000, initrd_high);
- *initrd_start = (ulong)lmb_alloc_base(lmb,
- rd_len, 0x1000, initrd_high);
else
- *initrd_start = (ulong)lmb_alloc (lmb, rd_len, 0x1000);
- *initrd_start = (ulong)lmb_alloc(lmb, rd_len,
- 0x1000);
if (*initrd_start == 0) {
- puts ("ramdisk - allocation error\n");
- puts("ramdisk - allocation error\n");
goto error; }
- show_boot_progress (12);
- show_boot_progress(12);
*initrd_end = *initrd_start + rd_len;
- printf (" Loading Ramdisk to %08lx, end %08lx ... ",
- printf(" Loading Ramdisk to %08lx, end %08lx ... ",
*initrd_start, *initrd_end);
- memmove_wd ((void *)*initrd_start,
- memmove_wd((void *)*initrd_start,
(void *)rd_data, rd_len, CHUNKSZ);
- puts ("OK\n");
- puts("OK\n");
} } else { *initrd_start = 0; *initrd_end = 0; }
- debug (" ramdisk load start = 0x%08lx, ramdisk load end = 0x%08lx\n",
- debug(" ramdisk load start = 0x%08lx, ramdisk load end = 0x%08lx\n",
*initrd_start, *initrd_end);
return 0; @@ -1091,41 +1118,41 @@ error: #endif /* CONFIG_SYS_BOOT_RAMDISK_HIGH */
#ifdef CONFIG_OF_LIBFDT -static void fdt_error (const char *msg) +static void fdt_error(const char *msg) {
- puts ("ERROR: ");
- puts (msg);
- puts (" - must RESET the board to recover.\n");
- puts("ERROR: ");
- puts(msg);
- puts(" - must RESET the board to recover.\n");
}
-static const image_header_t *image_get_fdt (ulong fdt_addr) +static const image_header_t *image_get_fdt(ulong fdt_addr) { const image_header_t *fdt_hdr = (const image_header_t *)fdt_addr;
- image_print_contents (fdt_hdr);
- image_print_contents(fdt_hdr);
- puts (" Verifying Checksum ... ");
- if (!image_check_hcrc (fdt_hdr)) {
- fdt_error ("fdt header checksum invalid");
- puts(" Verifying Checksum ... ");
- if (!image_check_hcrc(fdt_hdr)) {
- fdt_error("fdt header checksum invalid");
return NULL; }
- if (!image_check_dcrc (fdt_hdr)) {
- fdt_error ("fdt checksum invalid");
- if (!image_check_dcrc(fdt_hdr)) {
- fdt_error("fdt checksum invalid");
return NULL; }
- puts ("OK\n");
- puts("OK\n");
- if (!image_check_type (fdt_hdr, IH_TYPE_FLATDT)) {
- fdt_error ("uImage is not a fdt");
- if (!image_check_type(fdt_hdr, IH_TYPE_FLATDT)) {
- fdt_error("uImage is not a fdt");
return NULL; }
- if (image_get_comp (fdt_hdr) != IH_COMP_NONE) {
- fdt_error ("uImage is compressed");
- if (image_get_comp(fdt_hdr) != IH_COMP_NONE) {
- fdt_error("uImage is compressed");
return NULL; }
- if (fdt_check_header ((char *)image_get_data (fdt_hdr)) != 0) {
- fdt_error ("uImage data is not a fdt");
- if (fdt_check_header((char *)image_get_data(fdt_hdr)) != 0) {
- fdt_error("uImage data is not a fdt");
return NULL; } return fdt_hdr; @@ -1145,26 +1172,26 @@ static const image_header_t *image_get_fdt (ulong fdt_addr) * 0, on failure */ #if defined(CONFIG_FIT) -static int fit_check_fdt (const void *fit, int fdt_noffset, int verify) +static int fit_check_fdt(const void *fit, int fdt_noffset, int verify) {
- fit_image_print (fit, fdt_noffset, " ");
- fit_image_print(fit, fdt_noffset, " ");
if (verify) {
- puts (" Verifying Hash Integrity ... ");
- if (!fit_image_check_hashes (fit, fdt_noffset)) {
- fdt_error ("Bad Data Hash");
- puts(" Verifying Hash Integrity ... ");
- if (!fit_image_check_hashes(fit, fdt_noffset)) {
- fdt_error("Bad Data Hash");
return 0; }
- puts ("OK\n");
- puts("OK\n");
}
- if (!fit_image_check_type (fit, fdt_noffset, IH_TYPE_FLATDT)) {
- fdt_error ("Not a FDT image");
- if (!fit_image_check_type(fit, fdt_noffset, IH_TYPE_FLATDT)) {
- fdt_error("Not a FDT image");
return 0; }
- if (!fit_image_check_comp (fit, fdt_noffset, IH_COMP_NONE)) {
- fdt_error ("FDT image is compressed");
- if (!fit_image_check_comp(fit, fdt_noffset, IH_COMP_NONE)) {
- fdt_error("FDT image is compressed");
return 0; }
@@ -1191,7 +1218,7 @@ void boot_fdt_add_mem_rsv_regions(struct lmb *lmb, void *fdt_blob) uint64_t addr, size; int i, total;
- if (fdt_check_header (fdt_blob) != 0)
- if (fdt_check_header(fdt_blob) != 0)
return;
total = fdt_num_mem_rsv(fdt_blob); @@ -1221,7 +1248,7 @@ void boot_fdt_add_mem_rsv_regions(struct lmb *lmb, void *fdt_blob) * 0 - success * 1 - failure */ -int boot_relocate_fdt (struct lmb *lmb, char **of_flat_tree, ulong *of_size) +int boot_relocate_fdt(struct lmb *lmb, char **of_flat_tree, ulong *of_size) { void *fdt_blob = *of_flat_tree; void *of_start = 0; @@ -1234,8 +1261,8 @@ int boot_relocate_fdt (struct lmb *lmb, char **of_flat_tree, ulong *of_size) if (*of_size == 0) return 0;
- if (fdt_check_header (fdt_blob) != 0) {
- fdt_error ("image is not a fdt");
- if (fdt_check_header(fdt_blob) != 0) {
- fdt_error("image is not a fdt");
goto error; }
@@ -1285,18 +1312,18 @@ int boot_relocate_fdt (struct lmb *lmb, char **of_flat_tree, ulong *of_size) printf(" Using Device Tree in place at %p, end %p\n", of_start, of_start + of_len - 1); } else {
- debug ("## device tree at %p ... %p (len=%ld [0x%lX])\n",
- debug("## device tree at %p ... %p (len=%ld [0x%lX])\n",
fdt_blob, fdt_blob + *of_size - 1, of_len, of_len);
- printf (" Loading Device Tree to %p, end %p ... ",
- printf(" Loading Device Tree to %p, end %p ... ",
of_start, of_start + of_len - 1);
- err = fdt_open_into (fdt_blob, of_start, of_len);
- err = fdt_open_into(fdt_blob, of_start, of_len);
if (err != 0) {
- fdt_error ("fdt move failed");
- fdt_error("fdt move failed");
goto error; }
- puts ("OK\n");
- puts("OK\n");
}
*of_flat_tree = of_start; @@ -1331,8 +1358,8 @@ error: * 1, if fdt image is found but corrupted * of_flat_tree and of_size are set to 0 if no fdt exists */ -int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *images,
- char **of_flat_tree, ulong *of_size)
+int boot_get_fdt(int flag, int argc, char * const argv[],
- bootm_headers_t *images, char **of_flat_tree, ulong *of_size)
{ const image_header_t *fdt_hdr; ulong fdt_addr; @@ -1353,7 +1380,7 @@ int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *imag *of_flat_tree = NULL; *of_size = 0;
- if (argc > 3 || genimg_has_config (images)) {
- if (argc > 3 || genimg_has_config(images)) {
#if defined(CONFIG_FIT) if (argc > 3) { /* @@ -1369,19 +1396,22 @@ int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *imag else default_addr = load_addr;
- if (fit_parse_conf (argv[3], default_addr,
- if (fit_parse_conf(argv[3], default_addr,
&fdt_addr, &fit_uname_config)) {
- debug ("* fdt: config '%s' from image at 0x%08lx\n",
- debug("* fdt: config '%s' from image at "
- "0x%08lx\n",
fit_uname_config, fdt_addr);
- } else if (fit_parse_subimage (argv[3], default_addr,
- } else if (fit_parse_subimage(argv[3], default_addr,
&fdt_addr, &fit_uname_fdt)) {
- debug ("* fdt: subimage '%s' from image at 0x%08lx\n",
- debug("* fdt: subimage '%s' from image at "
- "0x%08lx\n",
fit_uname_fdt, fdt_addr); } else #endif { fdt_addr = simple_strtoul(argv[3], NULL, 16);
- debug ("* fdt: cmdline image address = 0x%08lx\n",
- debug("* fdt: cmdline image address = "
- "0x%08lx\n",
fdt_addr); } #if defined(CONFIG_FIT) @@ -1391,7 +1421,8 @@ int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *imag */ fdt_addr = (ulong)images->fit_hdr_os; fit_uname_config = images->fit_uname_cfg;
- debug ("* fdt: using config '%s' from image at 0x%08lx\n",
- debug("* fdt: using config '%s' from image "
- "at 0x%08lx\n",
fit_uname_config, fdt_addr);
/* @@ -1399,39 +1430,40 @@ int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *imag * if not quit silently. */ fit_hdr = (void *)fdt_addr;
- cfg_noffset = fit_conf_get_node (fit_hdr,
- cfg_noffset = fit_conf_get_node(fit_hdr,
fit_uname_config); if (cfg_noffset < 0) {
- debug ("* fdt: no such config\n");
- debug("* fdt: no such config\n");
return 0; }
- fdt_noffset = fit_conf_get_fdt_node (fit_hdr,
- fdt_noffset = fit_conf_get_fdt_node(fit_hdr,
cfg_noffset); if (fdt_noffset < 0) {
- debug ("* fdt: no fdt in config\n");
- debug("* fdt: no fdt in config\n");
return 0; } } #endif
- debug ("## Checking for 'FDT'/'FDT Image' at %08lx\n",
- debug("## Checking for 'FDT'/'FDT Image' at %08lx\n",
fdt_addr);
/* copy from dataflash if needed */
- fdt_addr = genimg_get_image (fdt_addr);
- fdt_addr = genimg_get_image(fdt_addr);
/* * Check if there is an FDT image at the * address provided in the second bootm argument * check image type, for FIT images get a FIT node. */
- switch (genimg_get_format ((void *)fdt_addr)) {
- switch (genimg_get_format((void *)fdt_addr)) {
case IMAGE_FORMAT_LEGACY: /* verify fdt_addr points to a valid image header */
- printf ("## Flattened Device Tree from Legacy Image at %08lx\n",
- printf("## Flattened Device Tree from Legacy Image "
- "at %08lx\n",
fdt_addr);
- fdt_hdr = image_get_fdt (fdt_addr);
- fdt_hdr = image_get_fdt(fdt_addr);
if (!fdt_hdr) goto error;
@@ -1440,22 +1472,22 @@ int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *imag * make sure we don't overwrite initial image */ image_start = (ulong)fdt_hdr;
- image_end = image_get_image_end (fdt_hdr);
- image_end = image_get_image_end(fdt_hdr);
- load_start = image_get_load (fdt_hdr);
- load_end = load_start + image_get_data_size (fdt_hdr);
- load_start = image_get_load(fdt_hdr);
- load_end = load_start + image_get_data_size(fdt_hdr);
if ((load_start < image_end) && (load_end > image_start)) {
- fdt_error ("fdt overwritten");
- fdt_error("fdt overwritten");
goto error; }
- debug (" Loading FDT from 0x%08lx to 0x%08lx\n",
- image_get_data (fdt_hdr), load_start);
- debug(" Loading FDT from 0x%08lx to 0x%08lx\n",
- image_get_data(fdt_hdr), load_start);
- memmove ((void *)load_start,
- (void *)image_get_data (fdt_hdr),
- image_get_data_size (fdt_hdr));
- memmove((void *)load_start,
- (void *)image_get_data(fdt_hdr),
- image_get_data_size(fdt_hdr));
fdt_blob = (char *)load_start; break; @@ -1467,12 +1499,13 @@ int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *imag */ #if defined(CONFIG_FIT) /* check FDT blob vs FIT blob */
- if (fit_check_format ((const void *)fdt_addr)) {
- if (fit_check_format((const void *)fdt_addr)) {
/* * FIT image */ fit_hdr = (void *)fdt_addr;
- printf ("## Flattened Device Tree from FIT Image at %08lx\n",
- printf("## Flattened Device Tree from FIT "
- "Image at %08lx\n",
fdt_addr);
if (!fit_uname_fdt) { @@ -1483,50 +1516,56 @@ int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *imag * fit_conf_get_node() will try to * find default config node */
- cfg_noffset = fit_conf_get_node (fit_hdr,
- cfg_noffset = fit_conf_get_node(fit_hdr,
fit_uname_config);
if (cfg_noffset < 0) {
- fdt_error ("Could not find configuration node\n");
- fdt_error("Could not find "
- "configuration "
- "node\n");
goto error; }
- fit_uname_config = fdt_get_name (fit_hdr,
- fit_uname_config = fdt_get_name(fit_hdr,
cfg_noffset, NULL);
- printf (" Using '%s' configuration\n",
- printf(" Using '%s' configuration\n",
fit_uname_config);
- fdt_noffset = fit_conf_get_fdt_node (fit_hdr,
- fdt_noffset = fit_conf_get_fdt_node(
- fit_hdr,
cfg_noffset);
- fit_uname_fdt = fit_get_name (fit_hdr,
- fit_uname_fdt = fit_get_name(fit_hdr,
fdt_noffset, NULL); } else { /* get FDT component image node offset */
- fdt_noffset = fit_image_get_node (fit_hdr,
- fit_uname_fdt);
- fdt_noffset = fit_image_get_node(
- fit_hdr,
- fit_uname_fdt);
} if (fdt_noffset < 0) {
- fdt_error ("Could not find subimage node\n");
- fdt_error("Could not find subimage "
- "node\n");
goto error; }
- printf (" Trying '%s' FDT blob subimage\n",
- printf(" Trying '%s' FDT blob subimage\n",
fit_uname_fdt);
- if (!fit_check_fdt (fit_hdr, fdt_noffset,
- if (!fit_check_fdt(fit_hdr, fdt_noffset,
images->verify)) goto error;
/* get ramdisk image data address and length */
- if (fit_image_get_data (fit_hdr, fdt_noffset,
- if (fit_image_get_data(fit_hdr, fdt_noffset,
&data, &size)) {
- fdt_error ("Could not find FDT subimage data");
- fdt_error("Could not find FDT "
- "subimage data");
goto error; }
/* verift that image data is a proper FDT blob */
- if (fdt_check_header ((char *)data) != 0) {
- fdt_error ("Subimage data is not a FTD");
- if (fdt_check_header((char *)data) != 0) {
- fdt_error("Subimage data is not a FTD");
goto error; }
@@ -1535,22 +1574,24 @@ int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *imag * make sure we don't overwrite initial image */ image_start = (ulong)fit_hdr;
- image_end = fit_get_end (fit_hdr);
- image_end = fit_get_end(fit_hdr);
- if (fit_image_get_load (fit_hdr, fdt_noffset,
- if (fit_image_get_load(fit_hdr, fdt_noffset,
&load_start) == 0) { load_end = load_start + size;
if ((load_start < image_end) && (load_end > image_start)) {
- fdt_error ("FDT overwritten");
- fdt_error("FDT overwritten");
goto error; }
- printf (" Loading FDT from 0x%08lx to 0x%08lx\n",
- (ulong)data, load_start);
- printf(" Loading FDT from 0x%08lx "
- "to 0x%08lx\n",
- (ulong)data,
- load_start);
- memmove ((void *)load_start,
- memmove((void *)load_start,
(void *)data, size);
fdt_blob = (char *)load_start; @@ -1569,19 +1610,22 @@ int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *imag * FDT blob */ fdt_blob = (char *)fdt_addr;
- debug ("* fdt: raw FDT blob\n");
- printf ("## Flattened Device Tree blob at %08lx\n", (long)fdt_blob);
- debug("* fdt: raw FDT blob\n");
- printf("## Flattened Device Tree blob at "
- "%08lx\n", (long)fdt_blob);
} break; default:
- puts ("ERROR: Did not find a cmdline Flattened Device Tree\n");
- puts("ERROR: Did not find a cmdline Flattened Device "
- "Tree\n");
goto error; }
printf(" Booting using the fdt blob at 0x%p\n", fdt_blob);
} else if (images->legacy_hdr_valid &&
- image_check_type (&images->legacy_hdr_os_copy, IH_TYPE_MULTI)) {
- image_check_type(&images->legacy_hdr_os_copy,
- IH_TYPE_MULTI)) {
ulong fdt_data, fdt_len;
@@ -1589,37 +1633,38 @@ int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *imag * Now check if we have a legacy multi-component image, * get second entry data start address and len. */
- printf ("## Flattened Device Tree from multi "
- printf("## Flattened Device Tree from multi "
"component Image at %08lX\n", (ulong)images->legacy_hdr_os);
- image_multi_getimg (images->legacy_hdr_os, 2, &fdt_data, &fdt_len);
- image_multi_getimg(images->legacy_hdr_os, 2, &fdt_data,
- &fdt_len);
if (fdt_len) {
fdt_blob = (char *)fdt_data; printf(" Booting using the fdt at 0x%p\n", fdt_blob);
- if (fdt_check_header (fdt_blob) != 0) {
- fdt_error ("image is not a fdt");
- if (fdt_check_header(fdt_blob) != 0) {
- fdt_error("image is not a fdt");
goto error; }
if (fdt_totalsize(fdt_blob) != fdt_len) {
- fdt_error ("fdt size != image size");
- fdt_error("fdt size != image size");
goto error; } } else {
- debug ("## No Flattened Device Tree\n");
- debug("## No Flattened Device Tree\n");
return 0; } } else {
- debug ("## No Flattened Device Tree\n");
- debug("## No Flattened Device Tree\n");
return 0; }
*of_flat_tree = fdt_blob; *of_size = fdt_totalsize(fdt_blob);
- debug (" of_flat_tree at 0x%08lx size 0x%08lx\n",
- debug(" of_flat_tree at 0x%08lx size 0x%08lx\n",
(ulong)*of_flat_tree, *of_size);
return 0; @@ -1647,7 +1692,7 @@ error: * 0 - success * -1 - failure */ -int boot_get_cmdline (struct lmb *lmb, ulong *cmd_start, ulong *cmd_end) +int boot_get_cmdline(struct lmb *lmb, ulong *cmd_start, ulong *cmd_end) { char *cmdline; char *s; @@ -1666,7 +1711,7 @@ int boot_get_cmdline (struct lmb *lmb, ulong *cmd_start, ulong *cmd_end) *cmd_start = (ulong) & cmdline[0]; *cmd_end = *cmd_start + strlen(cmdline);
- debug ("## cmdline at 0x%08lx ... 0x%08lx\n", *cmd_start, *cmd_end);
- debug("## cmdline at 0x%08lx ... 0x%08lx\n", *cmd_start, *cmd_end);
return 0; } @@ -1686,7 +1731,7 @@ int boot_get_cmdline (struct lmb *lmb, ulong *cmd_start, ulong *cmd_end) * 0 - success * -1 - failure */ -int boot_get_kbd (struct lmb *lmb, bd_t **kbd) +int boot_get_kbd(struct lmb *lmb, bd_t **kbd) { *kbd = (bd_t *)(ulong)lmb_alloc_base(lmb, sizeof(bd_t), 0xf, getenv_bootm_mapsize() + getenv_bootm_low()); @@ -1695,7 +1740,7 @@ int boot_get_kbd (struct lmb *lmb, bd_t **kbd)
**kbd = *(gd->bd);
- debug ("## kernel board info at 0x%08lx\n", (ulong)*kbd);
- debug("## kernel board info at 0x%08lx\n", (ulong)*kbd);
#if defined(DEBUG) && defined(CONFIG_CMD_BDI) do_bdinfo(NULL, 0, 0, NULL); @@ -1711,7 +1756,7 @@ int boot_get_kbd (struct lmb *lmb, bd_t **kbd) /* New uImage format routines */ /*****************************************************************************/ #ifndef USE_HOSTCC -static int fit_parse_spec (const char *spec, char sepc, ulong addr_curr, +static int fit_parse_spec(const char *spec, char sepc, ulong addr_curr, ulong *addr, const char **name) { const char *sep; @@ -1719,10 +1764,10 @@ static int fit_parse_spec (const char *spec, char sepc, ulong addr_curr, *addr = addr_curr; *name = NULL;
- sep = strchr (spec, sepc);
- sep = strchr(spec, sepc);
if (sep) { if (sep - spec > 0)
- *addr = simple_strtoul (spec, NULL, 16);
- *addr = simple_strtoul(spec, NULL, 16);
*name = sep + 1; return 1; @@ -1752,10 +1797,10 @@ static int fit_parse_spec (const char *spec, char sepc, ulong addr_curr, * addr and conf_name are set accordingly * 0 otherwise */ -inline int fit_parse_conf (const char *spec, ulong addr_curr, +inline int fit_parse_conf(const char *spec, ulong addr_curr, ulong *addr, const char **conf_name) {
- return fit_parse_spec (spec, '#', addr_curr, addr, conf_name);
- return fit_parse_spec(spec, '#', addr_curr, addr, conf_name);
}
/** @@ -1778,21 +1823,21 @@ inline int fit_parse_conf (const char *spec, ulong addr_curr, * addr and image_name are set accordingly * 0 otherwise */ -inline int fit_parse_subimage (const char *spec, ulong addr_curr, +inline int fit_parse_subimage(const char *spec, ulong addr_curr, ulong *addr, const char **image_name) {
- return fit_parse_spec (spec, ':', addr_curr, addr, image_name);
- return fit_parse_spec(spec, ':', addr_curr, addr, image_name);
} #endif /* !USE_HOSTCC */
-static void fit_get_debug (const void *fit, int noffset, +static void fit_get_debug(const void *fit, int noffset, char *prop_name, int err) {
- debug ("Can't get '%s' property from FIT 0x%08lx, "
- debug("Can't get '%s' property from FIT 0x%08lx, "
"node: offset %d, name %s (%s)\n", prop_name, (ulong)fit, noffset,
- fit_get_name (fit, noffset, NULL),
- fdt_strerror (err));
- fit_get_name(fit, noffset, NULL),
- fdt_strerror(err));
}
/** @@ -1807,7 +1852,7 @@ static void fit_get_debug (const void *fit, int noffset, * returns: * no returned results */ -void fit_print_contents (const void *fit) +void fit_print_contents(const void *fit) { char *desc; char *uname; @@ -1829,72 +1874,74 @@ void fit_print_contents (const void *fit) #endif
/* Root node properties */
- ret = fit_get_desc (fit, 0, &desc);
- printf ("%sFIT description: ", p);
- ret = fit_get_desc(fit, 0, &desc);
- printf("%sFIT description: ", p);
if (ret)
- printf ("unavailable\n");
- printf("unavailable\n");
else
- printf ("%s\n", desc);
- printf("%s\n", desc);
#if defined(CONFIG_TIMESTAMP) || defined(CONFIG_CMD_DATE) || defined(USE_HOSTCC)
- ret = fit_get_timestamp (fit, 0, ×tamp);
- printf ("%sCreated: ", p);
- ret = fit_get_timestamp(fit, 0, ×tamp);
- printf("%sCreated: ", p);
if (ret)
- printf ("unavailable\n");
- printf("unavailable\n");
else
- genimg_print_time (timestamp);
- genimg_print_time(timestamp);
#endif
/* Find images parent node offset */
- images_noffset = fdt_path_offset (fit, FIT_IMAGES_PATH);
- images_noffset = fdt_path_offset(fit, FIT_IMAGES_PATH);
if (images_noffset < 0) {
- printf ("Can't find images parent node '%s' (%s)\n",
- FIT_IMAGES_PATH, fdt_strerror (images_noffset));
- printf("Can't find images parent node '%s' (%s)\n",
- FIT_IMAGES_PATH, fdt_strerror(images_noffset));
return; }
/* Process its subnodes, print out component images details */
- for (ndepth = 0, count = 0, noffset = fdt_next_node (fit, images_noffset, &ndepth);
- for (ndepth = 0, count = 0,
- noffset = fdt_next_node(fit, images_noffset, &ndepth);
(noffset >= 0) && (ndepth > 0);
- noffset = fdt_next_node (fit, noffset, &ndepth)) {
- noffset = fdt_next_node(fit, noffset, &ndepth)) {
if (ndepth == 1) { /* * Direct child node of the images parent node, * i.e. component image node. */
- printf ("%s Image %u (%s)\n", p, count++,
- printf("%s Image %u (%s)\n", p, count++,
fit_get_name(fit, noffset, NULL));
- fit_image_print (fit, noffset, p);
- fit_image_print(fit, noffset, p);
} }
/* Find configurations parent node offset */
- confs_noffset = fdt_path_offset (fit, FIT_CONFS_PATH);
- confs_noffset = fdt_path_offset(fit, FIT_CONFS_PATH);
if (confs_noffset < 0) {
- debug ("Can't get configurations parent node '%s' (%s)\n",
- FIT_CONFS_PATH, fdt_strerror (confs_noffset));
- debug("Can't get configurations parent node '%s' (%s)\n",
- FIT_CONFS_PATH, fdt_strerror(confs_noffset));
return; }
/* get default configuration unit name from default property */
- uname = (char *)fdt_getprop (fit, noffset, FIT_DEFAULT_PROP, NULL);
- uname = (char *)fdt_getprop(fit, noffset, FIT_DEFAULT_PROP, NULL);
if (uname)
- printf ("%s Default Configuration: '%s'\n", p, uname);
- printf("%s Default Configuration: '%s'\n", p, uname);
/* Process its subnodes, print out configurations details */
- for (ndepth = 0, count = 0, noffset = fdt_next_node (fit, confs_noffset, &ndepth);
- for (ndepth = 0, count = 0,
- noffset = fdt_next_node(fit, confs_noffset, &ndepth);
(noffset >= 0) && (ndepth > 0);
- noffset = fdt_next_node (fit, noffset, &ndepth)) {
- noffset = fdt_next_node(fit, noffset, &ndepth)) {
if (ndepth == 1) { /* * Direct child node of the configurations parent node, * i.e. configuration node. */
- printf ("%s Configuration %u (%s)\n", p, count++,
- printf("%s Configuration %u (%s)\n", p, count++,
fit_get_name(fit, noffset, NULL));
- fit_conf_print (fit, noffset, p);
- fit_conf_print(fit, noffset, p);
} } } @@ -1914,7 +1961,7 @@ void fit_print_contents (const void *fit) * returns: * no returned results */ -void fit_image_print (const void *fit, int image_noffset, const char *p) +void fit_image_print(const void *fit, int image_noffset, const char *p) { char *desc; uint8_t type, arch, os, comp; @@ -1926,74 +1973,74 @@ void fit_image_print (const void *fit, int image_noffset, const char *p) int ret;
/* Mandatory properties */
- ret = fit_get_desc (fit, image_noffset, &desc);
- printf ("%s Description: ", p);
- ret = fit_get_desc(fit, image_noffset, &desc);
- printf("%s Description: ", p);
if (ret)
- printf ("unavailable\n");
- printf("unavailable\n");
else
- printf ("%s\n", desc);
- printf("%s\n", desc);
- fit_image_get_type (fit, image_noffset, &type);
- printf ("%s Type: %s\n", p, genimg_get_type_name (type));
- fit_image_get_type(fit, image_noffset, &type);
- printf("%s Type: %s\n", p, genimg_get_type_name(type));
- fit_image_get_comp (fit, image_noffset, &comp);
- printf ("%s Compression: %s\n", p, genimg_get_comp_name (comp));
- fit_image_get_comp(fit, image_noffset, &comp);
- printf("%s Compression: %s\n", p, genimg_get_comp_name(comp));
- ret = fit_image_get_data (fit, image_noffset, &data, &size);
- ret = fit_image_get_data(fit, image_noffset, &data, &size);
#ifndef USE_HOSTCC
- printf ("%s Data Start: ", p);
- printf("%s Data Start: ", p);
if (ret)
- printf ("unavailable\n");
- printf("unavailable\n");
else
- printf ("0x%08lx\n", (ulong)data);
- printf("0x%08lx\n", (ulong)data);
#endif
- printf ("%s Data Size: ", p);
- printf("%s Data Size: ", p);
if (ret)
- printf ("unavailable\n");
- printf("unavailable\n");
else
- genimg_print_size (size);
- genimg_print_size(size);
/* Remaining, type dependent properties */ if ((type == IH_TYPE_KERNEL) || (type == IH_TYPE_STANDALONE) || (type == IH_TYPE_RAMDISK) || (type == IH_TYPE_FIRMWARE) || (type == IH_TYPE_FLATDT)) {
- fit_image_get_arch (fit, image_noffset, &arch);
- printf ("%s Architecture: %s\n", p, genimg_get_arch_name (arch));
- fit_image_get_arch(fit, image_noffset, &arch);
- printf("%s Architecture: %s\n", p, genimg_get_arch_name(arch));
}
if (type == IH_TYPE_KERNEL) {
- fit_image_get_os (fit, image_noffset, &os);
- printf ("%s OS: %s\n", p, genimg_get_os_name (os));
- fit_image_get_os(fit, image_noffset, &os);
- printf("%s OS: %s\n", p, genimg_get_os_name(os));
}
if ((type == IH_TYPE_KERNEL) || (type == IH_TYPE_STANDALONE) || (type == IH_TYPE_FIRMWARE)) {
- ret = fit_image_get_load (fit, image_noffset, &load);
- printf ("%s Load Address: ", p);
- ret = fit_image_get_load(fit, image_noffset, &load);
- printf("%s Load Address: ", p);
if (ret)
- printf ("unavailable\n");
- printf("unavailable\n");
else
- printf ("0x%08lx\n", load);
- printf("0x%08lx\n", load);
}
if ((type == IH_TYPE_KERNEL) || (type == IH_TYPE_STANDALONE)) {
- fit_image_get_entry (fit, image_noffset, &entry);
- printf ("%s Entry Point: ", p);
- fit_image_get_entry(fit, image_noffset, &entry);
- printf("%s Entry Point: ", p);
if (ret)
- printf ("unavailable\n");
- printf("unavailable\n");
else
- printf ("0x%08lx\n", entry);
- printf("0x%08lx\n", entry);
}
/* Process all hash subnodes of the component image node */
- for (ndepth = 0, noffset = fdt_next_node (fit, image_noffset, &ndepth);
- for (ndepth = 0, noffset = fdt_next_node(fit, image_noffset, &ndepth);
(noffset >= 0) && (ndepth > 0);
- noffset = fdt_next_node (fit, noffset, &ndepth)) {
- noffset = fdt_next_node(fit, noffset, &ndepth)) {
if (ndepth == 1) { /* Direct child node of the component image node */
- fit_image_print_hash (fit, noffset, p);
- fit_image_print_hash(fit, noffset, p);
} } } @@ -2009,7 +2056,7 @@ void fit_image_print (const void *fit, int image_noffset, const char *p) * returns: * no returned results */ -void fit_image_print_hash (const void *fit, int noffset, const char *p) +void fit_image_print_hash(const void *fit, int noffset, const char *p) { char *algo; uint8_t *value; @@ -2021,33 +2068,33 @@ void fit_image_print_hash (const void *fit, int noffset, const char *p) * Multiple hash nodes require unique unit node * names, e.g. hash@1, hash@2, etc. */
- if (strncmp (fit_get_name(fit, noffset, NULL),
- if (strncmp(fit_get_name(fit, noffset, NULL),
FIT_HASH_NODENAME, strlen(FIT_HASH_NODENAME)) != 0) return;
- debug ("%s Hash node: '%s'\n", p,
- fit_get_name (fit, noffset, NULL));
- debug("%s Hash node: '%s'\n", p,
- fit_get_name(fit, noffset, NULL));
- printf ("%s Hash algo: ", p);
- if (fit_image_hash_get_algo (fit, noffset, &algo)) {
- printf ("invalid/unsupported\n");
- printf("%s Hash algo: ", p);
- if (fit_image_hash_get_algo(fit, noffset, &algo)) {
- printf("invalid/unsupported\n");
return; }
- printf ("%s\n", algo);
- printf("%s\n", algo);
- ret = fit_image_hash_get_value (fit, noffset, &value,
- ret = fit_image_hash_get_value(fit, noffset, &value,
&value_len);
- printf ("%s Hash value: ", p);
- printf("%s Hash value: ", p);
if (ret) {
- printf ("unavailable\n");
- printf("unavailable\n");
} else { for (i = 0; i < value_len; i++)
- printf ("%02x", value[i]);
- printf ("\n");
- printf("%02x", value[i]);
- printf("\n");
}
- debug ("%s Hash len: %d\n", p, value_len);
- debug("%s Hash len: %d\n", p, value_len);
}
/** @@ -2063,13 +2110,13 @@ void fit_image_print_hash (const void *fit, int noffset, const char *p) * 0, on success * -1, on failure */ -int fit_get_desc (const void *fit, int noffset, char **desc) +int fit_get_desc(const void *fit, int noffset, char **desc) { int len;
- *desc = (char *)fdt_getprop (fit, noffset, FIT_DESC_PROP, &len);
- *desc = (char *)fdt_getprop(fit, noffset, FIT_DESC_PROP, &len);
if (*desc == NULL) {
- fit_get_debug (fit, noffset, FIT_DESC_PROP, len);
- fit_get_debug(fit, noffset, FIT_DESC_PROP, len);
return -1; }
@@ -2091,22 +2138,22 @@ int fit_get_desc (const void *fit, int noffset, char **desc) * -1, on property read failure * -2, on wrong timestamp size */ -int fit_get_timestamp (const void *fit, int noffset, time_t *timestamp) +int fit_get_timestamp(const void *fit, int noffset, time_t *timestamp) { int len; const void *data;
- data = fdt_getprop (fit, noffset, FIT_TIMESTAMP_PROP, &len);
- data = fdt_getprop(fit, noffset, FIT_TIMESTAMP_PROP, &len);
if (data == NULL) {
- fit_get_debug (fit, noffset, FIT_TIMESTAMP_PROP, len);
- fit_get_debug(fit, noffset, FIT_TIMESTAMP_PROP, len);
return -1; }
- if (len != sizeof (uint32_t)) {
- debug ("FIT timestamp with incorrect size of (%u)\n", len);
- if (len != sizeof(uint32_t)) {
- debug("FIT timestamp with incorrect size of (%u)\n", len);
return -2; }
- *timestamp = uimage_to_cpu (*((uint32_t *)data));
- *timestamp = uimage_to_cpu(*((uint32_t *)data));
return 0; }
@@ -2123,21 +2170,21 @@ int fit_get_timestamp (const void *fit, int noffset, time_t *timestamp) * image node offset when found (>=0) * negative number on failure (FDT_ERR_* code) */ -int fit_image_get_node (const void *fit, const char *image_uname) +int fit_image_get_node(const void *fit, const char *image_uname) { int noffset, images_noffset;
- images_noffset = fdt_path_offset (fit, FIT_IMAGES_PATH);
- images_noffset = fdt_path_offset(fit, FIT_IMAGES_PATH);
if (images_noffset < 0) {
- debug ("Can't find images parent node '%s' (%s)\n",
- FIT_IMAGES_PATH, fdt_strerror (images_noffset));
- debug("Can't find images parent node '%s' (%s)\n",
- FIT_IMAGES_PATH, fdt_strerror(images_noffset));
return images_noffset; }
- noffset = fdt_subnode_offset (fit, images_noffset, image_uname);
- noffset = fdt_subnode_offset(fit, images_noffset, image_uname);
if (noffset < 0) {
- debug ("Can't get node offset for image unit name: '%s' (%s)\n",
- image_uname, fdt_strerror (noffset));
- debug("Can't get node offset for image unit name: '%s' (%s)\n",
- image_uname, fdt_strerror(noffset));
}
return noffset; @@ -2157,21 +2204,21 @@ int fit_image_get_node (const void *fit, const char *image_uname) * 0, on success * -1, on failure */ -int fit_image_get_os (const void *fit, int noffset, uint8_t *os) +int fit_image_get_os(const void *fit, int noffset, uint8_t *os) { int len; const void *data;
/* Get OS name from property data */
- data = fdt_getprop (fit, noffset, FIT_OS_PROP, &len);
- data = fdt_getprop(fit, noffset, FIT_OS_PROP, &len);
if (data == NULL) {
- fit_get_debug (fit, noffset, FIT_OS_PROP, len);
- fit_get_debug(fit, noffset, FIT_OS_PROP, len);
*os = -1; return -1; }
/* Translate OS name to id */
- *os = genimg_get_os_id (data);
- *os = genimg_get_os_id(data);
return 0; }
@@ -2189,21 +2236,21 @@ int fit_image_get_os (const void *fit, int noffset, uint8_t *os) * 0, on success * -1, on failure */ -int fit_image_get_arch (const void *fit, int noffset, uint8_t *arch) +int fit_image_get_arch(const void *fit, int noffset, uint8_t *arch) { int len; const void *data;
/* Get architecture name from property data */
- data = fdt_getprop (fit, noffset, FIT_ARCH_PROP, &len);
- data = fdt_getprop(fit, noffset, FIT_ARCH_PROP, &len);
if (data == NULL) {
- fit_get_debug (fit, noffset, FIT_ARCH_PROP, len);
- fit_get_debug(fit, noffset, FIT_ARCH_PROP, len);
*arch = -1; return -1; }
/* Translate architecture name to id */
- *arch = genimg_get_arch_id (data);
- *arch = genimg_get_arch_id(data);
return 0; }
@@ -2221,21 +2268,21 @@ int fit_image_get_arch (const void *fit, int noffset, uint8_t *arch) * 0, on success * -1, on failure */ -int fit_image_get_type (const void *fit, int noffset, uint8_t *type) +int fit_image_get_type(const void *fit, int noffset, uint8_t *type) { int len; const void *data;
/* Get image type name from property data */
- data = fdt_getprop (fit, noffset, FIT_TYPE_PROP, &len);
- data = fdt_getprop(fit, noffset, FIT_TYPE_PROP, &len);
if (data == NULL) {
- fit_get_debug (fit, noffset, FIT_TYPE_PROP, len);
- fit_get_debug(fit, noffset, FIT_TYPE_PROP, len);
*type = -1; return -1; }
/* Translate image type name to id */
- *type = genimg_get_type_id (data);
- *type = genimg_get_type_id(data);
return 0; }
@@ -2253,21 +2300,21 @@ int fit_image_get_type (const void *fit, int noffset, uint8_t *type) * 0, on success * -1, on failure */ -int fit_image_get_comp (const void *fit, int noffset, uint8_t *comp) +int fit_image_get_comp(const void *fit, int noffset, uint8_t *comp) { int len; const void *data;
/* Get compression name from property data */
- data = fdt_getprop (fit, noffset, FIT_COMP_PROP, &len);
- data = fdt_getprop(fit, noffset, FIT_COMP_PROP, &len);
if (data == NULL) {
- fit_get_debug (fit, noffset, FIT_COMP_PROP, len);
- fit_get_debug(fit, noffset, FIT_COMP_PROP, len);
*comp = -1; return -1; }
/* Translate compression name to id */
- *comp = genimg_get_comp_id (data);
- *comp = genimg_get_comp_id(data);
return 0; }
@@ -2284,18 +2331,18 @@ int fit_image_get_comp (const void *fit, int noffset, uint8_t *comp) * 0, on success * -1, on failure */ -int fit_image_get_load (const void *fit, int noffset, ulong *load) +int fit_image_get_load(const void *fit, int noffset, ulong *load) { int len; const uint32_t *data;
- data = fdt_getprop (fit, noffset, FIT_LOAD_PROP, &len);
- data = fdt_getprop(fit, noffset, FIT_LOAD_PROP, &len);
if (data == NULL) {
- fit_get_debug (fit, noffset, FIT_LOAD_PROP, len);
- fit_get_debug(fit, noffset, FIT_LOAD_PROP, len);
return -1; }
- *load = uimage_to_cpu (*data);
- *load = uimage_to_cpu(*data);
return 0; }
@@ -2312,18 +2359,18 @@ int fit_image_get_load (const void *fit, int noffset, ulong *load) * 0, on success * -1, on failure */ -int fit_image_get_entry (const void *fit, int noffset, ulong *entry) +int fit_image_get_entry(const void *fit, int noffset, ulong *entry) { int len; const uint32_t *data;
- data = fdt_getprop (fit, noffset, FIT_ENTRY_PROP, &len);
- data = fdt_getprop(fit, noffset, FIT_ENTRY_PROP, &len);
if (data == NULL) {
- fit_get_debug (fit, noffset, FIT_ENTRY_PROP, len);
- fit_get_debug(fit, noffset, FIT_ENTRY_PROP, len);
return -1; }
- *entry = uimage_to_cpu (*data);
- *entry = uimage_to_cpu(*data);
return 0; }
@@ -2342,14 +2389,14 @@ int fit_image_get_entry (const void *fit, int noffset, ulong *entry) * 0, on success * -1, on failure */ -int fit_image_get_data (const void *fit, int noffset, +int fit_image_get_data(const void *fit, int noffset, const void **data, size_t *size) { int len;
- *data = fdt_getprop (fit, noffset, FIT_DATA_PROP, &len);
- *data = fdt_getprop(fit, noffset, FIT_DATA_PROP, &len);
if (*data == NULL) {
- fit_get_debug (fit, noffset, FIT_DATA_PROP, len);
- fit_get_debug(fit, noffset, FIT_DATA_PROP, len);
*size = 0; return -1; } @@ -2371,13 +2418,13 @@ int fit_image_get_data (const void *fit, int noffset, * 0, on success * -1, on failure */ -int fit_image_hash_get_algo (const void *fit, int noffset, char **algo) +int fit_image_hash_get_algo(const void *fit, int noffset, char **algo) { int len;
- *algo = (char *)fdt_getprop (fit, noffset, FIT_ALGO_PROP, &len);
- *algo = (char *)fdt_getprop(fit, noffset, FIT_ALGO_PROP, &len);
if (*algo == NULL) {
- fit_get_debug (fit, noffset, FIT_ALGO_PROP, len);
- fit_get_debug(fit, noffset, FIT_ALGO_PROP, len);
return -1; }
@@ -2399,14 +2446,14 @@ int fit_image_hash_get_algo (const void *fit, int noffset, char **algo) * 0, on success * -1, on failure */ -int fit_image_hash_get_value (const void *fit, int noffset, uint8_t **value, +int fit_image_hash_get_value(const void *fit, int noffset, uint8_t **value, int *value_len) { int len;
- *value = (uint8_t *)fdt_getprop (fit, noffset, FIT_VALUE_PROP, &len);
- *value = (uint8_t *)fdt_getprop(fit, noffset, FIT_VALUE_PROP, &len);
if (*value == NULL) {
- fit_get_debug (fit, noffset, FIT_VALUE_PROP, len);
- fit_get_debug(fit, noffset, FIT_VALUE_PROP, len);
*value_len = 0; return -1; } @@ -2428,18 +2475,18 @@ int fit_image_hash_get_value (const void *fit, int noffset, uint8_t **value, * 0, on success * -1, on property read failure */ -int fit_set_timestamp (void *fit, int noffset, time_t timestamp) +int fit_set_timestamp(void *fit, int noffset, time_t timestamp) { uint32_t t; int ret;
- t = cpu_to_uimage (timestamp);
- ret = fdt_setprop (fit, noffset, FIT_TIMESTAMP_PROP, &t,
- sizeof (uint32_t));
- t = cpu_to_uimage(timestamp);
- ret = fdt_setprop(fit, noffset, FIT_TIMESTAMP_PROP, &t,
- sizeof(uint32_t));
if (ret) {
- printf ("Can't set '%s' property for '%s' node (%s)\n",
- FIT_TIMESTAMP_PROP, fit_get_name (fit, noffset, NULL),
- fdt_strerror (ret));
- printf("Can't set '%s' property for '%s' node (%s)\n",
- FIT_TIMESTAMP_PROP, fit_get_name(fit, noffset, NULL),
- fdt_strerror(ret));
return -1; }
@@ -2463,23 +2510,23 @@ int fit_set_timestamp (void *fit, int noffset, time_t timestamp) * 0, on success * -1, when algo is unsupported */ -static int calculate_hash (const void *data, int data_len, const char *algo, +static int calculate_hash(const void *data, int data_len, const char *algo, uint8_t *value, int *value_len) {
- if (strcmp (algo, "crc32") == 0 ) {
- *((uint32_t *)value) = crc32_wd (0, data, data_len,
- if (strcmp(algo, "crc32") == 0) {
- *((uint32_t *)value) = crc32_wd(0, data, data_len,
CHUNKSZ_CRC32);
- *((uint32_t *)value) = cpu_to_uimage (*((uint32_t *)value));
- *((uint32_t *)value) = cpu_to_uimage(*((uint32_t *)value));
*value_len = 4;
- } else if (strcmp (algo, "sha1") == 0 ) {
- sha1_csum_wd ((unsigned char *) data, data_len,
- } else if (strcmp(algo, "sha1") == 0) {
- sha1_csum_wd((unsigned char *) data, data_len,
(unsigned char *) value, CHUNKSZ_SHA1); *value_len = 20;
- } else if (strcmp (algo, "md5") == 0 ) {
- md5_wd ((unsigned char *)data, data_len, value, CHUNKSZ_MD5);
- } else if (strcmp(algo, "md5") == 0) {
- md5_wd((unsigned char *)data, data_len, value, CHUNKSZ_MD5);
*value_len = 16; } else {
- debug ("Unsupported hash alogrithm\n");
- debug("Unsupported hash alogrithm\n");
return -1; } return 0; @@ -2498,7 +2545,7 @@ static int calculate_hash (const void *data, int data_len, const char *algo, * 0, on success * libfdt error code, on failure */ -int fit_set_hashes (void *fit) +int fit_set_hashes(void *fit) { int images_noffset; int noffset; @@ -2506,23 +2553,23 @@ int fit_set_hashes (void *fit) int ret;
/* Find images parent node offset */
- images_noffset = fdt_path_offset (fit, FIT_IMAGES_PATH);
- images_noffset = fdt_path_offset(fit, FIT_IMAGES_PATH);
if (images_noffset < 0) {
- printf ("Can't find images parent node '%s' (%s)\n",
- FIT_IMAGES_PATH, fdt_strerror (images_noffset));
- printf("Can't find images parent node '%s' (%s)\n",
- FIT_IMAGES_PATH, fdt_strerror(images_noffset));
return images_noffset; }
/* Process its subnodes, print out component images details */
- for (ndepth = 0, noffset = fdt_next_node (fit, images_noffset, &ndepth);
- for (ndepth = 0, noffset = fdt_next_node(fit, images_noffset, &ndepth);
(noffset >= 0) && (ndepth > 0);
- noffset = fdt_next_node (fit, noffset, &ndepth)) {
- noffset = fdt_next_node(fit, noffset, &ndepth)) {
if (ndepth == 1) { /* * Direct child node of the images parent node, * i.e. component image node. */
- ret = fit_image_set_hashes (fit, noffset);
- ret = fit_image_set_hashes(fit, noffset);
if (ret) return ret; } @@ -2560,7 +2607,7 @@ int fit_set_hashes (void *fit) * 0 on sucess * <0 on failure */ -int fit_image_set_hashes (void *fit, int image_noffset) +int fit_image_set_hashes(void *fit, int image_noffset) { const void *data; size_t size; @@ -2571,15 +2618,15 @@ int fit_image_set_hashes (void *fit, int image_noffset) int ndepth;
/* Get image data and data length */
- if (fit_image_get_data (fit, image_noffset, &data, &size)) {
- printf ("Can't get image data/size\n");
- if (fit_image_get_data(fit, image_noffset, &data, &size)) {
- printf("Can't get image data/size\n");
return -1; }
/* Process all hash subnodes of the component image node */
- for (ndepth = 0, noffset = fdt_next_node (fit, image_noffset, &ndepth);
- for (ndepth = 0, noffset = fdt_next_node(fit, image_noffset, &ndepth);
(noffset >= 0) && (ndepth > 0);
- noffset = fdt_next_node (fit, noffset, &ndepth)) {
- noffset = fdt_next_node(fit, noffset, &ndepth)) {
if (ndepth == 1) { /* Direct child node of the component image node */
@@ -2588,35 +2635,37 @@ int fit_image_set_hashes (void *fit, int image_noffset) * Multiple hash nodes require unique unit node * names, e.g. hash@1, hash@2, etc. */
- if (strncmp (fit_get_name(fit, noffset, NULL),
- if (strncmp(fit_get_name(fit, noffset, NULL),
FIT_HASH_NODENAME, strlen(FIT_HASH_NODENAME)) != 0) { /* Not a hash subnode, skip it */ continue; }
- if (fit_image_hash_get_algo (fit, noffset, &algo)) {
- printf ("Can't get hash algo property for "
- if (fit_image_hash_get_algo(fit, noffset, &algo)) {
- printf("Can't get hash algo property for "
"'%s' hash node in '%s' image node\n",
- fit_get_name (fit, noffset, NULL),
- fit_get_name (fit, image_noffset, NULL));
- fit_get_name(fit, noffset, NULL),
- fit_get_name(fit, image_noffset, NULL));
return -1; }
- if (calculate_hash (data, size, algo, value, &value_len)) {
- printf ("Unsupported hash algorithm (%s) for "
- if (calculate_hash(data, size, algo, value,
- &value_len)) {
- printf("Unsupported hash algorithm (%s) for "
"'%s' hash node in '%s' image node\n",
- algo, fit_get_name (fit, noffset, NULL),
- fit_get_name (fit, image_noffset, NULL));
- algo, fit_get_name(fit, noffset, NULL),
- fit_get_name(fit, image_noffset,
- NULL));
return -1; }
- if (fit_image_hash_set_value (fit, noffset, value,
- if (fit_image_hash_set_value(fit, noffset, value,
value_len)) {
- printf ("Can't set hash value for "
- printf("Can't set hash value for "
"'%s' hash node in '%s' image node\n",
- fit_get_name (fit, noffset, NULL),
- fit_get_name (fit, image_noffset, NULL));
- fit_get_name(fit, noffset, NULL),
- fit_get_name(fit, image_noffset, NULL));
return -1; } } @@ -2639,16 +2688,16 @@ int fit_image_set_hashes (void *fit, int image_noffset) * 0, on success * -1, on failure */ -int fit_image_hash_set_value (void *fit, int noffset, uint8_t *value, +int fit_image_hash_set_value(void *fit, int noffset, uint8_t *value, int value_len) { int ret;
- ret = fdt_setprop (fit, noffset, FIT_VALUE_PROP, value, value_len);
- ret = fdt_setprop(fit, noffset, FIT_VALUE_PROP, value, value_len);
if (ret) {
- printf ("Can't set hash '%s' property for '%s' node (%s)\n",
- FIT_VALUE_PROP, fit_get_name (fit, noffset, NULL),
- fdt_strerror (ret));
- printf("Can't set hash '%s' property for '%s' node(%s)\n",
- FIT_VALUE_PROP, fit_get_name(fit, noffset, NULL),
- fdt_strerror(ret));
return -1; }
@@ -2669,7 +2718,7 @@ int fit_image_hash_set_value (void *fit, int noffset, uint8_t *value, * 1, if all hashes are valid * 0, otherwise (or on error) */ -int fit_image_check_hashes (const void *fit, int image_noffset) +int fit_image_check_hashes(const void *fit, int image_noffset) { const void *data; size_t size; @@ -2683,15 +2732,15 @@ int fit_image_check_hashes (const void *fit, int image_noffset) char *err_msg = "";
/* Get image data and data length */
- if (fit_image_get_data (fit, image_noffset, &data, &size)) {
- printf ("Can't get image data/size\n");
- if (fit_image_get_data(fit, image_noffset, &data, &size)) {
- printf("Can't get image data/size\n");
return 0; }
/* Process all hash subnodes of the component image node */
- for (ndepth = 0, noffset = fdt_next_node (fit, image_noffset, &ndepth);
- for (ndepth = 0, noffset = fdt_next_node(fit, image_noffset, &ndepth);
(noffset >= 0) && (ndepth > 0);
- noffset = fdt_next_node (fit, noffset, &ndepth)) {
- noffset = fdt_next_node(fit, noffset, &ndepth)) {
if (ndepth == 1) { /* Direct child node of the component image node */
@@ -2700,47 +2749,49 @@ int fit_image_check_hashes (const void *fit, int image_noffset) * Multiple hash nodes require unique unit node * names, e.g. hash@1, hash@2, etc. */
- if (strncmp (fit_get_name(fit, noffset, NULL),
- if (strncmp(fit_get_name(fit, noffset, NULL),
FIT_HASH_NODENAME, strlen(FIT_HASH_NODENAME)) != 0) continue;
- if (fit_image_hash_get_algo (fit, noffset, &algo)) {
- if (fit_image_hash_get_algo(fit, noffset, &algo)) {
err_msg = " error!\nCan't get hash algo " "property"; goto error; }
- printf ("%s", algo);
- printf("%s", algo);
- if (fit_image_hash_get_value (fit, noffset, &fit_value,
- if (fit_image_hash_get_value(fit, noffset, &fit_value,
&fit_value_len)) { err_msg = " error!\nCan't get hash value " "property"; goto error; }
- if (calculate_hash (data, size, algo, value, &value_len)) {
- err_msg = " error!\nUnsupported hash algorithm";
- if (calculate_hash(data, size, algo, value,
- &value_len)) {
- err_msg = " error!\n"
- "Unsupported hash algorithm";
goto error; }
if (value_len != fit_value_len) { err_msg = " error !\nBad hash value len"; goto error;
- } else if (memcmp (value, fit_value, value_len) != 0) {
- } else if (memcmp(value, fit_value, value_len) != 0) {
err_msg = " error!\nBad hash value"; goto error; }
- printf ("+ ");
- printf("+ ");
} }
return 1;
error:
- printf ("%s for '%s' hash node in '%s' image node\n",
- err_msg, fit_get_name (fit, noffset, NULL),
- fit_get_name (fit, image_noffset, NULL));
- printf("%s for '%s' hash node in '%s' image node\n",
- err_msg, fit_get_name(fit, noffset, NULL),
- fit_get_name(fit, image_noffset, NULL));
return 0; }
@@ -2755,7 +2806,7 @@ error: * 1, if all hashes of all images are valid * 0, otherwise (or on error) */ -int fit_all_image_check_hashes (const void *fit) +int fit_all_image_check_hashes(const void *fit) { int images_noffset; int noffset; @@ -2763,31 +2814,31 @@ int fit_all_image_check_hashes (const void *fit) int count;
/* Find images parent node offset */
- images_noffset = fdt_path_offset (fit, FIT_IMAGES_PATH);
- images_noffset = fdt_path_offset(fit, FIT_IMAGES_PATH);
if (images_noffset < 0) {
- printf ("Can't find images parent node '%s' (%s)\n",
- FIT_IMAGES_PATH, fdt_strerror (images_noffset));
- printf("Can't find images parent node '%s' (%s)\n",
- FIT_IMAGES_PATH, fdt_strerror(images_noffset));
return 0; }
/* Process all image subnodes, check hashes for each */
- printf ("## Checking hash(es) for FIT Image at %08lx ...\n",
- printf("## Checking hash(es) for FIT Image at %08lx ...\n",
(ulong)fit); for (ndepth = 0, count = 0,
- noffset = fdt_next_node (fit, images_noffset, &ndepth);
- noffset = fdt_next_node(fit, images_noffset, &ndepth);
(noffset >= 0) && (ndepth > 0);
- noffset = fdt_next_node (fit, noffset, &ndepth)) {
- noffset = fdt_next_node(fit, noffset, &ndepth)) {
if (ndepth == 1) { /* * Direct child node of the images parent node, * i.e. component image node. */
- printf (" Hash(es) for Image %u (%s): ", count++,
- fit_get_name (fit, noffset, NULL));
- printf(" Hash(es) for Image %u (%s): ", count++,
- fit_get_name(fit, noffset, NULL));
- if (!fit_image_check_hashes (fit, noffset))
- if (!fit_image_check_hashes(fit, noffset))
return 0;
- printf ("\n");
- printf("\n");
} } return 1; @@ -2806,11 +2857,11 @@ int fit_all_image_check_hashes (const void *fit) * 1 if image is of given os type * 0 otherwise (or on error) */ -int fit_image_check_os (const void *fit, int noffset, uint8_t os) +int fit_image_check_os(const void *fit, int noffset, uint8_t os) { uint8_t image_os;
- if (fit_image_get_os (fit, noffset, &image_os))
- if (fit_image_get_os(fit, noffset, &image_os))
return 0; return (os == image_os); } @@ -2828,11 +2879,11 @@ int fit_image_check_os (const void *fit, int noffset, uint8_t os) * 1 if image is of given arch * 0 otherwise (or on error) */ -int fit_image_check_arch (const void *fit, int noffset, uint8_t arch) +int fit_image_check_arch(const void *fit, int noffset, uint8_t arch) { uint8_t image_arch;
- if (fit_image_get_arch (fit, noffset, &image_arch))
- if (fit_image_get_arch(fit, noffset, &image_arch))
return 0; return (arch == image_arch); } @@ -2850,11 +2901,11 @@ int fit_image_check_arch (const void *fit, int noffset, uint8_t arch) * 1 if image is of given type * 0 otherwise (or on error) */ -int fit_image_check_type (const void *fit, int noffset, uint8_t type) +int fit_image_check_type(const void *fit, int noffset, uint8_t type) { uint8_t image_type;
- if (fit_image_get_type (fit, noffset, &image_type))
- if (fit_image_get_type(fit, noffset, &image_type))
return 0; return (type == image_type); } @@ -2873,11 +2924,11 @@ int fit_image_check_type (const void *fit, int noffset, uint8_t type) * 1 if image uses requested compression * 0 otherwise (or on error) */ -int fit_image_check_comp (const void *fit, int noffset, uint8_t comp) +int fit_image_check_comp(const void *fit, int noffset, uint8_t comp) { uint8_t image_comp;
- if (fit_image_get_comp (fit, noffset, &image_comp))
- if (fit_image_get_comp(fit, noffset, &image_comp))
return 0; return (comp == image_comp); } @@ -2893,25 +2944,25 @@ int fit_image_check_comp (const void *fit, int noffset, uint8_t comp) * 1, on success * 0, on failure */ -int fit_check_format (const void *fit) +int fit_check_format(const void *fit) { /* mandatory / node 'description' property */
- if (fdt_getprop (fit, 0, FIT_DESC_PROP, NULL) == NULL) {
- debug ("Wrong FIT format: no description\n");
- if (fdt_getprop(fit, 0, FIT_DESC_PROP, NULL) == NULL) {
- debug("Wrong FIT format: no description\n");
return 0; }
#if defined(CONFIG_TIMESTAMP) || defined(CONFIG_CMD_DATE) || defined(USE_HOSTCC) /* mandatory / node 'timestamp' property */
- if (fdt_getprop (fit, 0, FIT_TIMESTAMP_PROP, NULL) == NULL) {
- debug ("Wrong FIT format: no timestamp\n");
- if (fdt_getprop(fit, 0, FIT_TIMESTAMP_PROP, NULL) == NULL) {
- debug("Wrong FIT format: no timestamp\n");
return 0; } #endif
/* mandatory subimages parent '/images' node */
- if (fdt_path_offset (fit, FIT_IMAGES_PATH) < 0) {
- debug ("Wrong FIT format: no images parent node\n");
- if (fdt_path_offset(fit, FIT_IMAGES_PATH) < 0) {
- debug("Wrong FIT format: no images parent node\n");
return 0; }
@@ -2935,50 +2986,53 @@ int fit_check_format (const void *fit) * configuration node offset when found (>=0) * negative number on failure (FDT_ERR_* code) */ -int fit_conf_get_node (const void *fit, const char *conf_uname) +int fit_conf_get_node(const void *fit, const char *conf_uname) { int noffset, confs_noffset; int len;
- confs_noffset = fdt_path_offset (fit, FIT_CONFS_PATH);
- confs_noffset = fdt_path_offset(fit, FIT_CONFS_PATH);
if (confs_noffset < 0) {
- debug ("Can't find configurations parent node '%s' (%s)\n",
- FIT_CONFS_PATH, fdt_strerror (confs_noffset));
- debug("Can't find configurations parent node '%s' (%s)\n",
- FIT_CONFS_PATH, fdt_strerror(confs_noffset));
return confs_noffset; }
if (conf_uname == NULL) { /* get configuration unit name from the default property */
- debug ("No configuration specified, trying default...\n");
- conf_uname = (char *)fdt_getprop (fit, confs_noffset, FIT_DEFAULT_PROP, &len);
- debug("No configuration specified, trying default...\n");
- conf_uname = (char *)fdt_getprop(fit, confs_noffset,
- FIT_DEFAULT_PROP, &len);
if (conf_uname == NULL) {
- fit_get_debug (fit, confs_noffset, FIT_DEFAULT_PROP, len);
- fit_get_debug(fit, confs_noffset, FIT_DEFAULT_PROP,
- len);
return len; }
- debug ("Found default configuration: '%s'\n", conf_uname);
- debug("Found default configuration: '%s'\n", conf_uname);
}
- noffset = fdt_subnode_offset (fit, confs_noffset, conf_uname);
- noffset = fdt_subnode_offset(fit, confs_noffset, conf_uname);
if (noffset < 0) {
- debug ("Can't get node offset for configuration unit name: '%s' (%s)\n",
- conf_uname, fdt_strerror (noffset));
- debug("Can't get node offset for configuration unit name: "
- "'%s' (%s)\n",
- conf_uname, fdt_strerror(noffset));
}
return noffset; }
-static int __fit_conf_get_prop_node (const void *fit, int noffset, +static int __fit_conf_get_prop_node(const void *fit, int noffset, const char *prop_name) { char *uname; int len;
/* get kernel image unit name from configuration kernel property */
- uname = (char *)fdt_getprop (fit, noffset, prop_name, &len);
- uname = (char *)fdt_getprop(fit, noffset, prop_name, &len);
if (uname == NULL) return len;
- return fit_image_get_node (fit, uname);
- return fit_image_get_node(fit, uname);
}
/** @@ -2995,9 +3049,9 @@ static int __fit_conf_get_prop_node (const void *fit, int noffset, * image node offset when found (>=0) * negative number on failure (FDT_ERR_* code) */ -int fit_conf_get_kernel_node (const void *fit, int noffset) +int fit_conf_get_kernel_node(const void *fit, int noffset) {
- return __fit_conf_get_prop_node (fit, noffset, FIT_KERNEL_PROP);
- return __fit_conf_get_prop_node(fit, noffset, FIT_KERNEL_PROP);
}
/** @@ -3014,9 +3068,9 @@ int fit_conf_get_kernel_node (const void *fit, int noffset) * image node offset when found (>=0) * negative number on failure (FDT_ERR_* code) */ -int fit_conf_get_ramdisk_node (const void *fit, int noffset) +int fit_conf_get_ramdisk_node(const void *fit, int noffset) {
- return __fit_conf_get_prop_node (fit, noffset, FIT_RAMDISK_PROP);
- return __fit_conf_get_prop_node(fit, noffset, FIT_RAMDISK_PROP);
}
/** @@ -3033,9 +3087,9 @@ int fit_conf_get_ramdisk_node (const void *fit, int noffset) * image node offset when found (>=0) * negative number on failure (FDT_ERR_* code) */ -int fit_conf_get_fdt_node (const void *fit, int noffset) +int fit_conf_get_fdt_node(const void *fit, int noffset) {
- return __fit_conf_get_prop_node (fit, noffset, FIT_FDT_PROP);
- return __fit_conf_get_prop_node(fit, noffset, FIT_FDT_PROP);
}
/** @@ -3050,35 +3104,35 @@ int fit_conf_get_fdt_node (const void *fit, int noffset) * returns: * no returned results */ -void fit_conf_print (const void *fit, int noffset, const char *p) +void fit_conf_print(const void *fit, int noffset, const char *p) { char *desc; char *uname; int ret;
/* Mandatory properties */
- ret = fit_get_desc (fit, noffset, &desc);
- printf ("%s Description: ", p);
- ret = fit_get_desc(fit, noffset, &desc);
- printf("%s Description: ", p);
if (ret)
- printf ("unavailable\n");
- printf("unavailable\n");
else
- printf ("%s\n", desc);
- printf("%s\n", desc);
- uname = (char *)fdt_getprop (fit, noffset, FIT_KERNEL_PROP, NULL);
- printf ("%s Kernel: ", p);
- uname = (char *)fdt_getprop(fit, noffset, FIT_KERNEL_PROP, NULL);
- printf("%s Kernel: ", p);
if (uname == NULL)
- printf ("unavailable\n");
- printf("unavailable\n");
else
- printf ("%s\n", uname);
- printf("%s\n", uname);
/* Optional properties */
- uname = (char *)fdt_getprop (fit, noffset, FIT_RAMDISK_PROP, NULL);
- uname = (char *)fdt_getprop(fit, noffset, FIT_RAMDISK_PROP, NULL);
if (uname)
- printf ("%s Init Ramdisk: %s\n", p, uname);
- printf("%s Init Ramdisk: %s\n", p, uname);
- uname = (char *)fdt_getprop (fit, noffset, FIT_FDT_PROP, NULL);
- uname = (char *)fdt_getprop(fit, noffset, FIT_FDT_PROP, NULL);
if (uname)
- printf ("%s FDT: %s\n", p, uname);
- printf("%s FDT: %s\n", p, uname);
}
/** @@ -3096,31 +3150,32 @@ void fit_conf_print (const void *fit, int noffset, const char *p) * 0, on failure */ #ifndef USE_HOSTCC -static int fit_check_ramdisk (const void *fit, int rd_noffset, uint8_t arch, int verify) +static int fit_check_ramdisk(const void *fit, int rd_noffset, uint8_t arch,
- int verify)
{
- fit_image_print (fit, rd_noffset, " ");
- fit_image_print(fit, rd_noffset, " ");
if (verify) {
- puts (" Verifying Hash Integrity ... ");
- if (!fit_image_check_hashes (fit, rd_noffset)) {
- puts ("Bad Data Hash\n");
- show_boot_progress (-125);
- puts(" Verifying Hash Integrity ... ");
- if (!fit_image_check_hashes(fit, rd_noffset)) {
- puts("Bad Data Hash\n");
- show_boot_progress(-125);
return 0; }
- puts ("OK\n");
- puts("OK\n");
}
- show_boot_progress (126);
- if (!fit_image_check_os (fit, rd_noffset, IH_OS_LINUX) ||
- !fit_image_check_arch (fit, rd_noffset, arch) ||
- !fit_image_check_type (fit, rd_noffset, IH_TYPE_RAMDISK)) {
- printf ("No Linux %s Ramdisk Image\n",
- show_boot_progress(126);
- if (!fit_image_check_os(fit, rd_noffset, IH_OS_LINUX) ||
- !fit_image_check_arch(fit, rd_noffset, arch) ||
- !fit_image_check_type(fit, rd_noffset, IH_TYPE_RAMDISK)) {
- printf("No Linux %s Ramdisk Image\n",
genimg_get_arch_name(arch));
- show_boot_progress (-126);
- show_boot_progress(-126);
return 0; }
- show_boot_progress (127);
- show_boot_progress(127);
return 1; } #endif /* USE_HOSTCC */ diff --git a/common/lynxkdi.c b/common/lynxkdi.c index b23135b..22ad384 100644 --- a/common/lynxkdi.c +++ b/common/lynxkdi.c @@ -23,45 +23,47 @@ DECLARE_GLOBAL_DATA_PTR;
#if defined(CONFIG_MPC8260) || defined(CONFIG_440EP) || defined(CONFIG_440GR) -void lynxkdi_boot (image_header_t *hdr) +void lynxkdi_boot(image_header_t *hdr) {
- void (*lynxkdi)(void) = (void(*)(void))image_get_ep (hdr);
- void (*lynxkdi)(void) = (void(*)(void))image_get_ep(hdr);
lynxos_bootparms_t *parms = (lynxos_bootparms_t *)0x0020; bd_t *kbd;
- u32 *psz = (u32 *)(image_get_load (hdr) + 0x0204);
- u32 *psz = (u32 *)(image_get_load(hdr) + 0x0204);
- memset (parms, 0, sizeof(*parms));
- memset(parms, 0, sizeof(*parms));
kbd = gd->bd; parms->clock_ref = kbd->bi_busfreq; parms->dramsz = kbd->bi_memsize; eth_getenv_enetaddr("ethaddr", parms->ethaddr);
- mtspr (SPRN_SPRG2, 0x0020);
- mtspr(SPRN_SPRG2, 0x0020);
/* Do a simple check for Bluecat so we can pass the * kernel command line parameters. */
- if (le32_to_cpu (*psz) == image_get_data_size (hdr)) { /* FIXME: NOT SURE HERE ! */
- /* FIXME: NOT SURE HERE ! */
- if (le32_to_cpu(*psz) == image_get_data_size(hdr)) {
char *args;
- char *cmdline = (char *)(image_get_load (hdr) + 0x020c);
- char *cmdline = (char *)(image_get_load(hdr) + 0x020c);
int len;
- printf ("Booting Bluecat KDI ...\n");
- udelay (200*1000); /* Allow serial port to flush */
- if ((args = getenv ("bootargs")) == NULL)
- printf("Booting Bluecat KDI ...\n");
- udelay(200*1000); /* Allow serial port to flush */
- if ((args = getenv("bootargs")) == NULL)
args = ""; /* Prepend the cmdline */
- len = strlen (args);
- if (len && (len + strlen (cmdline) + 2 < (0x0400 - 0x020c))) {
- memmove (cmdline + strlen (args) + 1, cmdline, strlen (cmdline));
- strcpy (cmdline, args);
- len = strlen(args);
- if (len && (len + strlen(cmdline) + 2 < (0x0400 - 0x020c))) {
- memmove(cmdline + strlen(args) + 1, cmdline,
- strlen(cmdline));
- strcpy(cmdline, args);
cmdline[len] = ' '; } } else {
- printf ("Booting LynxOS KDI ...\n");
- printf("Booting LynxOS KDI ...\n");
}
- lynxkdi ();
- lynxkdi();
} #else #error "Lynx KDI support not implemented for configured CPU" diff --git a/include/image.h b/include/image.h index b7caaa6..7a99273 100644 --- a/include/image.h +++ b/include/image.h @@ -312,15 +312,15 @@ int get_table_entry_id(const table_entry_t *table, */ char *get_table_entry_name(const table_entry_t *table, char *msg, int id);
-const char *genimg_get_os_name (uint8_t os); -const char *genimg_get_arch_name (uint8_t arch); -const char *genimg_get_type_name (uint8_t type); -const char *genimg_get_comp_name (uint8_t comp); -int genimg_get_os_id (const char *name); -int genimg_get_arch_id (const char *name); -int genimg_get_type_id (const char *name); -int genimg_get_comp_id (const char *name); -void genimg_print_size (uint32_t size); +const char *genimg_get_os_name(uint8_t os); +const char *genimg_get_arch_name(uint8_t arch); +const char *genimg_get_type_name(uint8_t type); +const char *genimg_get_comp_name(uint8_t comp); +int genimg_get_os_id(const char *name); +int genimg_get_arch_id(const char *name); +int genimg_get_type_id(const char *name); +int genimg_get_comp_id(const char *name); +void genimg_print_size(uint32_t size);
#ifndef USE_HOSTCC /* Image format types, returned by _get_format() routine */ @@ -328,72 +328,72 @@ void genimg_print_size (uint32_t size); #define IMAGE_FORMAT_LEGACY 0x01 /* legacy image_header based format */ #define IMAGE_FORMAT_FIT 0x02 /* new, libfdt based format */
-int genimg_get_format (void *img_addr); -int genimg_has_config (bootm_headers_t *images); -ulong genimg_get_image (ulong img_addr); +int genimg_get_format(void *img_addr); +int genimg_has_config(bootm_headers_t *images); +ulong genimg_get_image(ulong img_addr);
-int boot_get_ramdisk (int argc, char * const argv[], bootm_headers_t *images, +int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images, uint8_t arch, ulong *rd_start, ulong *rd_end);
#ifdef CONFIG_OF_LIBFDT -int boot_get_fdt (int flag, int argc, char * const argv[], bootm_headers_t *images,
- char **of_flat_tree, ulong *of_size);
+int boot_get_fdt(int flag, int argc, char * const argv[],
- bootm_headers_t *images, char **of_flat_tree, ulong *of_size);
void boot_fdt_add_mem_rsv_regions(struct lmb *lmb, void *fdt_blob); -int boot_relocate_fdt (struct lmb *lmb, char **of_flat_tree, ulong *of_size); +int boot_relocate_fdt(struct lmb *lmb, char **of_flat_tree, ulong *of_size); #endif
#ifdef CONFIG_SYS_BOOT_RAMDISK_HIGH -int boot_ramdisk_high (struct lmb *lmb, ulong rd_data, ulong rd_len, +int boot_ramdisk_high(struct lmb *lmb, ulong rd_data, ulong rd_len, ulong *initrd_start, ulong *initrd_end); #endif /* CONFIG_SYS_BOOT_RAMDISK_HIGH */ #ifdef CONFIG_SYS_BOOT_GET_CMDLINE -int boot_get_cmdline (struct lmb *lmb, ulong *cmd_start, ulong *cmd_end); +int boot_get_cmdline(struct lmb *lmb, ulong *cmd_start, ulong *cmd_end); #endif /* CONFIG_SYS_BOOT_GET_CMDLINE */ #ifdef CONFIG_SYS_BOOT_GET_KBD -int boot_get_kbd (struct lmb *lmb, bd_t **kbd); +int boot_get_kbd(struct lmb *lmb, bd_t **kbd); #endif /* CONFIG_SYS_BOOT_GET_KBD */ #endif /* !USE_HOSTCC */
/*******************************************************************/ /* Legacy format specific code (prefixed with image_) */ /*******************************************************************/ -static inline uint32_t image_get_header_size (void) +static inline uint32_t image_get_header_size(void) {
- return (sizeof (image_header_t));
- return (sizeof(image_header_t));
}
#define image_get_hdr_l(f) \ static inline uint32_t image_get_##f(const image_header_t *hdr) \ { \
- return uimage_to_cpu (hdr->ih_##f); \
- return uimage_to_cpu(hdr->ih_##f); \
} -image_get_hdr_l (magic) /* image_get_magic */ -image_get_hdr_l (hcrc) /* image_get_hcrc */ -image_get_hdr_l (time) /* image_get_time */ -image_get_hdr_l (size) /* image_get_size */ -image_get_hdr_l (load) /* image_get_load */ -image_get_hdr_l (ep) /* image_get_ep */ -image_get_hdr_l (dcrc) /* image_get_dcrc */ +image_get_hdr_l(magic) /* image_get_magic */ +image_get_hdr_l(hcrc) /* image_get_hcrc */ +image_get_hdr_l(time) /* image_get_time */ +image_get_hdr_l(size) /* image_get_size */ +image_get_hdr_l(load) /* image_get_load */ +image_get_hdr_l(ep) /* image_get_ep */ +image_get_hdr_l(dcrc) /* image_get_dcrc */
#define image_get_hdr_b(f) \ static inline uint8_t image_get_##f(const image_header_t *hdr) \ { \ return hdr->ih_##f; \ } -image_get_hdr_b (os) /* image_get_os */ -image_get_hdr_b (arch) /* image_get_arch */ -image_get_hdr_b (type) /* image_get_type */ -image_get_hdr_b (comp) /* image_get_comp */ +image_get_hdr_b(os) /* image_get_os */ +image_get_hdr_b(arch) /* image_get_arch */ +image_get_hdr_b(type) /* image_get_type */ +image_get_hdr_b(comp) /* image_get_comp */
-static inline char *image_get_name (const image_header_t *hdr) +static inline char *image_get_name(const image_header_t *hdr) { return (char *)hdr->ih_name; }
-static inline uint32_t image_get_data_size (const image_header_t *hdr) +static inline uint32_t image_get_data_size(const image_header_t *hdr) {
- return image_get_size (hdr);
- return image_get_size(hdr);
}
/** @@ -407,83 +407,83 @@ static inline uint32_t image_get_data_size (const image_header_t *hdr) * returns: * image payload data start address */ -static inline ulong image_get_data (const image_header_t *hdr) +static inline ulong image_get_data(const image_header_t *hdr) {
- return ((ulong)hdr + image_get_header_size ());
- return ((ulong)hdr + image_get_header_size());
}
-static inline uint32_t image_get_image_size (const image_header_t *hdr) +static inline uint32_t image_get_image_size(const image_header_t *hdr) {
- return (image_get_size (hdr) + image_get_header_size ());
- return (image_get_size(hdr) + image_get_header_size());
} -static inline ulong image_get_image_end (const image_header_t *hdr) +static inline ulong image_get_image_end(const image_header_t *hdr) {
- return ((ulong)hdr + image_get_image_size (hdr));
- return ((ulong)hdr + image_get_image_size(hdr));
}
#define image_set_hdr_l(f) \ static inline void image_set_##f(image_header_t *hdr, uint32_t val) \ { \
- hdr->ih_##f = cpu_to_uimage (val); \
- hdr->ih_##f = cpu_to_uimage(val); \
} -image_set_hdr_l (magic) /* image_set_magic */ -image_set_hdr_l (hcrc) /* image_set_hcrc */ -image_set_hdr_l (time) /* image_set_time */ -image_set_hdr_l (size) /* image_set_size */ -image_set_hdr_l (load) /* image_set_load */ -image_set_hdr_l (ep) /* image_set_ep */ -image_set_hdr_l (dcrc) /* image_set_dcrc */ +image_set_hdr_l(magic) /* image_set_magic */ +image_set_hdr_l(hcrc) /* image_set_hcrc */ +image_set_hdr_l(time) /* image_set_time */ +image_set_hdr_l(size) /* image_set_size */ +image_set_hdr_l(load) /* image_set_load */ +image_set_hdr_l(ep) /* image_set_ep */ +image_set_hdr_l(dcrc) /* image_set_dcrc */
#define image_set_hdr_b(f) \ static inline void image_set_##f(image_header_t *hdr, uint8_t val) \ { \ hdr->ih_##f = val; \ } -image_set_hdr_b (os) /* image_set_os */ -image_set_hdr_b (arch) /* image_set_arch */ -image_set_hdr_b (type) /* image_set_type */ -image_set_hdr_b (comp) /* image_set_comp */ +image_set_hdr_b(os) /* image_set_os */ +image_set_hdr_b(arch) /* image_set_arch */ +image_set_hdr_b(type) /* image_set_type */ +image_set_hdr_b(comp) /* image_set_comp */
-static inline void image_set_name (image_header_t *hdr, const char *name) +static inline void image_set_name(image_header_t *hdr, const char *name) {
- strncpy (image_get_name (hdr), name, IH_NMLEN);
- strncpy(image_get_name(hdr), name, IH_NMLEN);
}
-int image_check_hcrc (const image_header_t *hdr); -int image_check_dcrc (const image_header_t *hdr); +int image_check_hcrc(const image_header_t *hdr); +int image_check_dcrc(const image_header_t *hdr); #ifndef USE_HOSTCC -int getenv_yesno (char *var); +int getenv_yesno(char *var); ulong getenv_bootm_low(void); phys_size_t getenv_bootm_size(void); phys_size_t getenv_bootm_mapsize(void); -void memmove_wd (void *to, void *from, size_t len, ulong chunksz); +void memmove_wd(void *to, void *from, size_t len, ulong chunksz); #endif
-static inline int image_check_magic (const image_header_t *hdr) +static inline int image_check_magic(const image_header_t *hdr) {
- return (image_get_magic (hdr) == IH_MAGIC);
- return (image_get_magic(hdr) == IH_MAGIC);
} -static inline int image_check_type (const image_header_t *hdr, uint8_t type) +static inline int image_check_type(const image_header_t *hdr, uint8_t type) {
- return (image_get_type (hdr) == type);
- return (image_get_type(hdr) == type);
} -static inline int image_check_arch (const image_header_t *hdr, uint8_t arch) +static inline int image_check_arch(const image_header_t *hdr, uint8_t arch) {
- return (image_get_arch (hdr) == arch);
- return (image_get_arch(hdr) == arch);
} -static inline int image_check_os (const image_header_t *hdr, uint8_t os) +static inline int image_check_os(const image_header_t *hdr, uint8_t os) {
- return (image_get_os (hdr) == os);
- return (image_get_os(hdr) == os);
}
-ulong image_multi_count (const image_header_t *hdr); -void image_multi_getimg (const image_header_t *hdr, ulong idx, +ulong image_multi_count(const image_header_t *hdr); +void image_multi_getimg(const image_header_t *hdr, ulong idx, ulong *data, ulong *len);
-void image_print_contents (const void *hdr); +void image_print_contents(const void *hdr);
#ifndef USE_HOSTCC -static inline int image_check_target_arch (const image_header_t *hdr) +static inline int image_check_target_arch(const image_header_t *hdr) { #ifndef IH_ARCH_DEFAULT # error "please define IH_ARCH_DEFAULT in your arch asm/u-boot.h" @@ -525,14 +525,14 @@ static inline int image_check_target_arch (const image_header_t *hdr) #define FIT_MAX_HASH_LEN 20 /* max(crc32_len(4), sha1_len(20)) */
/* cmdline argument format parsing */ -inline int fit_parse_conf (const char *spec, ulong addr_curr, +inline int fit_parse_conf(const char *spec, ulong addr_curr, ulong *addr, const char **conf_name); -inline int fit_parse_subimage (const char *spec, ulong addr_curr, +inline int fit_parse_subimage(const char *spec, ulong addr_curr, ulong *addr, const char **image_name);
-void fit_print_contents (const void *fit); -void fit_image_print (const void *fit, int noffset, const char *p); -void fit_image_print_hash (const void *fit, int noffset, const char *p); +void fit_print_contents(const void *fit); +void fit_image_print(const void *fit, int noffset, const char *p); +void fit_image_print_hash(const void *fit, int noffset, const char *p);
/** * fit_get_end - get FIT image size @@ -541,9 +541,9 @@ void fit_image_print_hash (const void *fit, int noffset, const char *p); * returns: * size of the FIT image (blob) in memory */ -static inline ulong fit_get_size (const void *fit) +static inline ulong fit_get_size(const void *fit) {
- return fdt_totalsize (fit);
- return fdt_totalsize(fit);
}
/** @@ -553,9 +553,9 @@ static inline ulong fit_get_size (const void *fit) * returns: * end address of the FIT image (blob) in memory */ -static inline ulong fit_get_end (const void *fit) +static inline ulong fit_get_end(const void *fit) {
- return (ulong)fit + fdt_totalsize (fit);
- return (ulong)fit + fdt_totalsize(fit);
}
/** @@ -566,63 +566,63 @@ static inline ulong fit_get_end (const void *fit) * NULL, on error * pointer to node name, on success */ -static inline const char *fit_get_name (const void *fit_hdr, +static inline const char *fit_get_name(const void *fit_hdr, int noffset, int *len) {
- return fdt_get_name (fit_hdr, noffset, len);
- return fdt_get_name(fit_hdr, noffset, len);
}
-int fit_get_desc (const void *fit, int noffset, char **desc); -int fit_get_timestamp (const void *fit, int noffset, time_t *timestamp);
-int fit_image_get_node (const void *fit, const char *image_uname); -int fit_image_get_os (const void *fit, int noffset, uint8_t *os); -int fit_image_get_arch (const void *fit, int noffset, uint8_t *arch); -int fit_image_get_type (const void *fit, int noffset, uint8_t *type); -int fit_image_get_comp (const void *fit, int noffset, uint8_t *comp); -int fit_image_get_load (const void *fit, int noffset, ulong *load); -int fit_image_get_entry (const void *fit, int noffset, ulong *entry); -int fit_image_get_data (const void *fit, int noffset, +int fit_get_desc(const void *fit, int noffset, char **desc); +int fit_get_timestamp(const void *fit, int noffset, time_t *timestamp);
+int fit_image_get_node(const void *fit, const char *image_uname); +int fit_image_get_os(const void *fit, int noffset, uint8_t *os); +int fit_image_get_arch(const void *fit, int noffset, uint8_t *arch); +int fit_image_get_type(const void *fit, int noffset, uint8_t *type); +int fit_image_get_comp(const void *fit, int noffset, uint8_t *comp); +int fit_image_get_load(const void *fit, int noffset, ulong *load); +int fit_image_get_entry(const void *fit, int noffset, ulong *entry); +int fit_image_get_data(const void *fit, int noffset, const void **data, size_t *size);
-int fit_image_hash_get_algo (const void *fit, int noffset, char **algo); -int fit_image_hash_get_value (const void *fit, int noffset, uint8_t **value, +int fit_image_hash_get_algo(const void *fit, int noffset, char **algo); +int fit_image_hash_get_value(const void *fit, int noffset, uint8_t **value, int *value_len);
-int fit_set_timestamp (void *fit, int noffset, time_t timestamp); -int fit_set_hashes (void *fit); -int fit_image_set_hashes (void *fit, int image_noffset); -int fit_image_hash_set_value (void *fit, int noffset, uint8_t *value, +int fit_set_timestamp(void *fit, int noffset, time_t timestamp); +int fit_set_hashes(void *fit); +int fit_image_set_hashes(void *fit, int image_noffset); +int fit_image_hash_set_value(void *fit, int noffset, uint8_t *value, int value_len);
-int fit_image_check_hashes (const void *fit, int noffset); -int fit_all_image_check_hashes (const void *fit); -int fit_image_check_os (const void *fit, int noffset, uint8_t os); -int fit_image_check_arch (const void *fit, int noffset, uint8_t arch); -int fit_image_check_type (const void *fit, int noffset, uint8_t type); -int fit_image_check_comp (const void *fit, int noffset, uint8_t comp); -int fit_check_format (const void *fit); +int fit_image_check_hashes(const void *fit, int noffset); +int fit_all_image_check_hashes(const void *fit); +int fit_image_check_os(const void *fit, int noffset, uint8_t os); +int fit_image_check_arch(const void *fit, int noffset, uint8_t arch); +int fit_image_check_type(const void *fit, int noffset, uint8_t type); +int fit_image_check_comp(const void *fit, int noffset, uint8_t comp); +int fit_check_format(const void *fit);
-int fit_conf_get_node (const void *fit, const char *conf_uname); -int fit_conf_get_kernel_node (const void *fit, int noffset); -int fit_conf_get_ramdisk_node (const void *fit, int noffset); -int fit_conf_get_fdt_node (const void *fit, int noffset); +int fit_conf_get_node(const void *fit, const char *conf_uname); +int fit_conf_get_kernel_node(const void *fit, int noffset); +int fit_conf_get_ramdisk_node(const void *fit, int noffset); +int fit_conf_get_fdt_node(const void *fit, int noffset);
-void fit_conf_print (const void *fit, int noffset, const char *p); +void fit_conf_print(const void *fit, int noffset, const char *p);
#ifndef USE_HOSTCC -static inline int fit_image_check_target_arch (const void *fdt, int node) +static inline int fit_image_check_target_arch(const void *fdt, int node) { return !fit_image_check_arch(fdt, node, IH_ARCH_DEFAULT); } #endif /* USE_HOSTCC */
#ifdef CONFIG_FIT_VERBOSE -#define fit_unsupported(msg) printf ("! %s:%d " \ +#define fit_unsupported(msg) printf("! %s:%d " \ "FIT images not supported for '%s'\n", \ __FILE__, __LINE__, (msg))
-#define fit_unsupported_reset(msg) printf ("! %s:%d " \ +#define fit_unsupported_reset(msg) printf("! %s:%d " \ "FIT images not supported for '%s' " \ "- must reset board to recover!\n", \ __FILE__, __LINE__, (msg)) diff --git a/tools/default_image.c b/tools/default_image.c index f5bad47..6ea3b46 100644 --- a/tools/default_image.c +++ b/tools/default_image.c @@ -33,7 +33,7 @@
static image_header_t header;
-static int image_check_image_types (uint8_t type) +static int image_check_image_types(uint8_t type) { if ((type > IH_TYPE_INVALID) && (type < IH_TYPE_FLATDT)) return EXIT_SUCCESS; @@ -41,14 +41,14 @@ static int image_check_image_types (uint8_t type) return EXIT_FAILURE; }
-static int image_check_params (struct mkimage_params *params) +static int image_check_params(struct mkimage_params *params) { return ((params->dflag && (params->fflag || params->lflag)) || (params->fflag && (params->dflag || params->lflag)) || (params->lflag && (params->dflag || params->fflag))); }
-static int image_verify_header (unsigned char *ptr, int image_size, +static int image_verify_header(unsigned char *ptr, int image_size, struct mkimage_params *params) { uint32_t len; @@ -62,10 +62,10 @@ static int image_verify_header (unsigned char *ptr, int image_size, * checksum field for checking - this can't be done * on the PROT_READ mapped data. */
- memcpy (hdr, ptr, sizeof(image_header_t));
- memcpy(hdr, ptr, sizeof(image_header_t));
if (be32_to_cpu(hdr->ih_magic) != IH_MAGIC) {
- fprintf (stderr,
- fprintf(stderr,
"%s: Bad Magic Number: "%s" is no valid image\n", params->cmdname, params->imagefile); return -FDT_ERR_BADMAGIC; @@ -77,8 +77,8 @@ static int image_verify_header (unsigned char *ptr, int image_size, checksum = be32_to_cpu(hdr->ih_hcrc); hdr->ih_hcrc = cpu_to_be32(0); /* clear for re-calculation */
- if (crc32 (0, data, len) != checksum) {
- fprintf (stderr,
- if (crc32(0, data, len) != checksum) {
- fprintf(stderr,
"%s: ERROR: "%s" has bad header checksum!\n", params->cmdname, params->imagefile); return -FDT_ERR_BADSTATE; @@ -88,8 +88,8 @@ static int image_verify_header (unsigned char *ptr, int image_size, len = image_size - sizeof(image_header_t) ;
checksum = be32_to_cpu(hdr->ih_dcrc);
- if (crc32 (0, data, len) != checksum) {
- fprintf (stderr,
- if (crc32(0, data, len) != checksum) {
- fprintf(stderr,
"%s: ERROR: "%s" has corrupted data!\n", params->cmdname, params->imagefile); return -FDT_ERR_BADSTRUCTURE; @@ -97,36 +97,36 @@ static int image_verify_header (unsigned char *ptr, int image_size, return 0; }
-static void image_set_header (void *ptr, struct stat *sbuf, int ifd, +static void image_set_header(void *ptr, struct stat *sbuf, int ifd, struct mkimage_params *params) { uint32_t checksum;
image_header_t * hdr = (image_header_t *)ptr;
- checksum = crc32 (0,
- checksum = crc32(0,
(const unsigned char *)(ptr + sizeof(image_header_t)), sbuf->st_size - sizeof(image_header_t));
/* Build new header */
- image_set_magic (hdr, IH_MAGIC);
- image_set_time (hdr, sbuf->st_mtime);
- image_set_size (hdr, sbuf->st_size - sizeof(image_header_t));
- image_set_load (hdr, params->addr);
- image_set_ep (hdr, params->ep);
- image_set_dcrc (hdr, checksum);
- image_set_os (hdr, params->os);
- image_set_arch (hdr, params->arch);
- image_set_type (hdr, params->type);
- image_set_comp (hdr, params->comp);
- image_set_name (hdr, params->imagename);
- checksum = crc32 (0, (const unsigned char *)hdr,
- image_set_magic(hdr, IH_MAGIC);
- image_set_time(hdr, sbuf->st_mtime);
- image_set_size(hdr, sbuf->st_size - sizeof(image_header_t));
- image_set_load(hdr, params->addr);
- image_set_ep(hdr, params->ep);
- image_set_dcrc(hdr, checksum);
- image_set_os(hdr, params->os);
- image_set_arch(hdr, params->arch);
- image_set_type(hdr, params->type);
- image_set_comp(hdr, params->comp);
- image_set_name(hdr, params->imagename);
- checksum = crc32(0, (const unsigned char *)hdr,
sizeof(image_header_t));
- image_set_hcrc (hdr, checksum);
- image_set_hcrc(hdr, checksum);
}
/* @@ -143,7 +143,7 @@ static struct image_type_params defimage_params = { .check_params = image_check_params, };
-void init_default_image_type (void) +void init_default_image_type(void) {
- mkimage_register (&defimage_params);
- mkimage_register(&defimage_params);
}
1.7.0.4
U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot

Hi Stephen,
[resend without the context, ooops]
On Tue, Oct 18, 2011 at 2:11 PM, Stephen Warren swarren@nvidia.com wrote:
This avoids the following checkpatch warning in later patches:
ERROR: "(foo*)" should be "(foo *)" ERROR: space required before the open brace '{' ERROR: space prohibited before that close parenthesis ')' ERROR: spaces required around that '||' (ctx:WxV) WARNING: space prohibited between function name and open parenthesis '(' WARNING: line over 80 characters
This fixes all the white-space warnings/errors in my subsequent patch, and within this current patch. A number of other checkpatch warnings and errors are still present in this patch itself, but are beyond simple whitespace fixes, so are not solved by this patch.
v2: New patch
Signed-off-by: Stephen Warren swarren@nvidia.com
Tested-by: Simon Glass sjg@chromium.org
common/cmd_bootm.c | 547 ++++++++++++----------- common/cmd_ximg.c | 72 ++-- common/image.c | 1187 ++++++++++++++++++++++++++----------------------- common/lynxkdi.c | 34 +- include/image.h | 230 +++++----- tools/default_image.c | 56 ++-- 6 files changed, 1101 insertions(+), 1025 deletions(-)

Dear Stephen Warren,
In message 1318972311-673-1-git-send-email-swarren@nvidia.com you wrote:
This avoids the following checkpatch warning in later patches:
ERROR: "(foo*)" should be "(foo *)" ERROR: space required before the open brace '{' ERROR: space prohibited before that close parenthesis ')' ERROR: spaces required around that '||' (ctx:WxV) WARNING: space prohibited between function name and open parenthesis '(' WARNING: line over 80 characters
This fixes all the white-space warnings/errors in my subsequent patch, and within this current patch. A number of other checkpatch warnings and errors are still present in this patch itself, but are beyond simple whitespace fixes, so are not solved by this patch.
v2: New patch
Signed-off-by: Stephen Warren swarren@nvidia.com
common/cmd_bootm.c | 547 ++++++++++++----------- common/cmd_ximg.c | 72 ++-- common/image.c | 1187 ++++++++++++++++++++++++++----------------------- common/lynxkdi.c | 34 +- include/image.h | 230 +++++----- tools/default_image.c | 56 ++-- 6 files changed, 1101 insertions(+), 1025 deletions(-)
Applied, thanks.
Best regards,
Wolfgang Denk
participants (3)
-
Simon Glass
-
Stephen Warren
-
Wolfgang Denk