Use the new common code to load a kernel. The functionality should not
change.

Signed-off-by: Simon Glass <s...@chromium.org>
---
 common/cmd_bootm.c |  153 +++-------------------------------------------------
 common/image-fit.c |   19 -------
 include/image.h    |    1 -
 3 files changed, 8 insertions(+), 165 deletions(-)

diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
index 2dbf4df..58eec83 100644
--- a/common/cmd_bootm.c
+++ b/common/cmd_bootm.c
@@ -88,11 +88,6 @@ static int do_imls(cmd_tbl_t *cmdtp, int flag, int argc, 
char * const argv[]);
 static void fixup_silent_linux(void);
 #endif
 
-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);
-#endif
-
 static const 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);
@@ -778,54 +773,6 @@ static image_header_t *image_get_kernel(ulong img_addr, 
int verify)
 }
 
 /**
- * fit_check_kernel - verify FIT format kernel subimage
- * @fit_hdr: pointer to the FIT image header
- * os_noffset: kernel subimage node offset within FIT image
- * @verify: data CRC verification flag
- *
- * fit_check_kernel() verifies integrity of the kernel subimage and from
- * specified FIT image.
- *
- * returns:
- *     1, on success
- *     0, on failure
- */
-#if defined(CONFIG_FIT)
-static int fit_check_kernel(const void *fit, int os_noffset, int verify)
-{
-       fit_image_print(fit, os_noffset, "   ");
-
-       if (verify) {
-               puts("   Verifying Hash Integrity ... ");
-               if (!fit_image_verify(fit, os_noffset)) {
-                       puts("Bad Data Hash\n");
-                       bootstage_error(BOOTSTAGE_ID_FIT_CHECK_HASH);
-                       return 0;
-               }
-               puts("OK\n");
-       }
-       bootstage_mark(BOOTSTAGE_ID_FIT_CHECK_ARCH);
-
-       if (!fit_image_check_target_arch(fit, os_noffset)) {
-               puts("Unsupported Architecture\n");
-               bootstage_error(BOOTSTAGE_ID_FIT_CHECK_ARCH);
-               return 0;
-       }
-
-       bootstage_mark(BOOTSTAGE_ID_FIT_CHECK_KERNEL);
-       if (!fit_image_check_type(fit, os_noffset, IH_TYPE_KERNEL) &&
-           !fit_image_check_type(fit, os_noffset, IH_TYPE_KERNEL_NOLOAD)) {
-               puts("Not a kernel image\n");
-               bootstage_error(BOOTSTAGE_ID_FIT_CHECK_KERNEL);
-               return 0;
-       }
-
-       bootstage_mark(BOOTSTAGE_ID_FIT_CHECKED);
-       return 1;
-}
-#endif /* CONFIG_FIT */
-
-/**
  * boot_get_kernel - find kernel image
  * @os_data: pointer to a ulong variable, will hold os data start address
  * @os_len: pointer to a ulong variable, will hold os data length
@@ -845,12 +792,8 @@ static const void *boot_get_kernel(cmd_tbl_t *cmdtp, int 
flag, int argc,
        ulong           img_addr;
        const void *buf;
 #if defined(CONFIG_FIT)
-       const void      *fit_hdr;
        const char      *fit_uname_config = NULL;
        const char      *fit_uname_kernel = NULL;
-       const void      *data;
-       size_t          len;
-       int             cfg_noffset;
        int             os_noffset;
 #endif
 
@@ -927,96 +870,16 @@ static const void *boot_get_kernel(cmd_tbl_t *cmdtp, int 
flag, int argc,
                break;
 #if defined(CONFIG_FIT)
        case IMAGE_FORMAT_FIT:
-               fit_hdr = buf;
-               printf("## Booting kernel from FIT Image at %08lx ...\n",
-                               img_addr);
-
-               if (!fit_check_format(fit_hdr)) {
-                       puts("Bad FIT kernel image format!\n");
-                       bootstage_error(BOOTSTAGE_ID_FIT_FORMAT);
+               os_noffset = fit_image_load(images, FIT_KERNEL_PROP,
+                               img_addr,
+                               &fit_uname_kernel, fit_uname_config,
+                               IH_ARCH_DEFAULT, IH_TYPE_KERNEL,
+                               BOOTSTAGE_ID_FIT_KERNEL_START,
+                               FIT_LOAD_IGNORED, os_data, os_len);
+               if (os_noffset < 0)
                        return NULL;
-               }
-               bootstage_mark(BOOTSTAGE_ID_FIT_FORMAT);
-
-               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
-                        */
-                       bootstage_mark(BOOTSTAGE_ID_FIT_NO_UNIT_NAME);
-#ifdef CONFIG_FIT_BEST_MATCH
-                       if (fit_uname_config)
-                               cfg_noffset =
-                                       fit_conf_get_node(fit_hdr,
-                                                         fit_uname_config);
-                       else
-                               cfg_noffset =
-                                       fit_conf_find_compat(fit_hdr,
-                                                            gd->fdt_blob);
-#else
-                       cfg_noffset = fit_conf_get_node(fit_hdr,
-                                                       fit_uname_config);
-#endif
-                       if (cfg_noffset < 0) {
-                               bootstage_error(BOOTSTAGE_ID_FIT_NO_UNIT_NAME);
-                               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);
-                       if (IMAGE_ENABLE_VERIFY && images->verify) {
-                               puts("   Verifying Hash Integrity ... ");
-                               if (!fit_config_verify(fit_hdr,
-                                               cfg_noffset)) {
-                                       puts("Bad Data Hash\n");
-                                       bootstage_error(
-                                               BOOTSTAGE_ID_FIT_CHECK_HASH);
-                                       return NULL;
-                               }
-                               puts("OK\n");
-                       }
-
-                       bootstage_mark(BOOTSTAGE_ID_FIT_CONFIG);
-
-                       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 */
-                       bootstage_mark(BOOTSTAGE_ID_FIT_UNIT_NAME);
-                       os_noffset = fit_image_get_node(fit_hdr,
-                                                       fit_uname_kernel);
-               }
-               if (os_noffset < 0) {
-                       bootstage_error(BOOTSTAGE_ID_FIT_CONFIG);
-                       return NULL;
-               }
-
-               printf("   Trying '%s' kernel subimage\n", fit_uname_kernel);
-
-               bootstage_mark(BOOTSTAGE_ID_FIT_CHECK_SUBIMAGE);
-               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");
-                       bootstage_error(BOOTSTAGE_ID_FIT_KERNEL_INFO_ERR);
-                       return NULL;
-               }
-               bootstage_mark(BOOTSTAGE_ID_FIT_KERNEL_INFO);
 
-               *os_len = len;
-               *os_data = (ulong)data;
-               images->fit_hdr_os = (void *)fit_hdr;
+               images->fit_hdr_os = map_sysmem(img_addr, 0);
                images->fit_uname_os = fit_uname_kernel;
                images->fit_noffset_os = os_noffset;
                break;
diff --git a/common/image-fit.c b/common/image-fit.c
index 5d07861..ef21112 100644
--- a/common/image-fit.c
+++ b/common/image-fit.c
@@ -1393,25 +1393,6 @@ int fit_conf_get_prop_node(const void *fit, int noffset,
 }
 
 /**
- * fit_conf_get_kernel_node - get kernel image node offset that corresponds to
- * a given configuration
- * @fit: pointer to the FIT format image header
- * @noffset: configuration node offset
- *
- * fit_conf_get_kernel_node() retrives kernel image node unit name from
- * configuration FIT_KERNEL_PROP property and translates it to the node
- * offset.
- *
- * returns:
- *     image node offset when found (>=0)
- *     negative number on failure (FDT_ERR_* code)
- */
-int fit_conf_get_kernel_node(const void *fit, int noffset)
-{
-       return fit_conf_get_prop_node(fit, noffset, FIT_KERNEL_PROP);
-}
-
-/**
  * fit_conf_print - prints out the FIT configuration details
  * @fit: pointer to the FIT format image header
  * @noffset: offset of the configuration node
diff --git a/include/image.h b/include/image.h
index e19a92d..e5f2f06 100644
--- a/include/image.h
+++ b/include/image.h
@@ -761,7 +761,6 @@ int fit_check_format(const void *fit);
 
 int fit_conf_find_compat(const void *fit, const void *fdt);
 int fit_conf_get_node(const void *fit, const char *conf_uname);
-int fit_conf_get_kernel_node(const void *fit, int noffset);
 
 /**
  * fit_conf_get_prop_node() - Get node refered to by a configuration
-- 
1.7.7.3

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to