summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common/bootm.c3
-rw-r--r--common/image-fdt.c1
-rw-r--r--common/image-fit.c29
-rw-r--r--common/image.c2
-rw-r--r--include/image.h5
5 files changed, 33 insertions, 7 deletions
diff --git a/common/bootm.c b/common/bootm.c
index 27a7f028a6..338f647e41 100644
--- a/common/bootm.c
+++ b/common/bootm.c
@@ -776,8 +776,7 @@ static const void *boot_get_kernel(cmd_tbl_t *cmdtp, int flag, int argc,
#endif
#if defined(CONFIG_FIT)
case IMAGE_FORMAT_FIT:
- os_noffset = fit_image_load(images, FIT_KERNEL_PROP,
- img_addr,
+ os_noffset = fit_image_load(images, img_addr,
&fit_uname_kernel, &fit_uname_config,
IH_ARCH_DEFAULT, IH_TYPE_KERNEL,
BOOTSTAGE_ID_FIT_KERNEL_START,
diff --git a/common/image-fdt.c b/common/image-fdt.c
index 27a8a44eaa..9fc7481fd8 100644
--- a/common/image-fdt.c
+++ b/common/image-fdt.c
@@ -355,7 +355,6 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
ulong load, len;
fdt_noffset = fit_image_load(images,
- FIT_FDT_PROP,
fdt_addr, &fit_uname_fdt,
&fit_uname_config,
arch, IH_TYPE_FLATDT,
diff --git a/common/image-fit.c b/common/image-fit.c
index 40c7e27c6e..c0d7b8ca91 100644
--- a/common/image-fit.c
+++ b/common/image-fit.c
@@ -1477,7 +1477,32 @@ int fit_get_node_from_config(bootm_headers_t *images, const char *prop_name,
return noffset;
}
-int fit_image_load(bootm_headers_t *images, const char *prop_name, ulong addr,
+/**
+ * fit_get_image_type_property() - get property name for IH_TYPE_...
+ *
+ * @return the properly name where we expect to find the image in the
+ * config node
+ */
+static const char *fit_get_image_type_property(int type)
+{
+ /*
+ * This is sort-of available in the uimage_type[] table in image.c
+ * but we don't have access to the sohrt name, and "fdt" is different
+ * anyway. So let's just keep it here.
+ */
+ switch (type) {
+ case IH_TYPE_FLATDT:
+ return FIT_FDT_PROP;
+ case IH_TYPE_KERNEL:
+ return FIT_KERNEL_PROP;
+ case IH_TYPE_RAMDISK:
+ return FIT_RAMDISK_PROP;
+ }
+
+ return "unknown";
+}
+
+int fit_image_load(bootm_headers_t *images, ulong addr,
const char **fit_unamep, const char **fit_uname_configp,
int arch, int image_type, int bootstage_id,
enum fit_load_op load_op, ulong *datap, ulong *lenp)
@@ -1490,11 +1515,13 @@ int fit_image_load(bootm_headers_t *images, const char *prop_name, ulong addr,
size_t size;
int type_ok, os_ok;
ulong load, data, len;
+ const char *prop_name;
int ret;
fit = map_sysmem(addr, 0);
fit_uname = fit_unamep ? *fit_unamep : NULL;
fit_uname_config = fit_uname_configp ? *fit_uname_configp : NULL;
+ prop_name = fit_get_image_type_property(image_type);
printf("## Loading %s from FIT Image at %08lx ...\n", prop_name, addr);
bootstage_mark(bootstage_id + BOOTSTAGE_SUB_FORMAT);
diff --git a/common/image.c b/common/image.c
index f33b17522a..828b0af6d2 100644
--- a/common/image.c
+++ b/common/image.c
@@ -903,7 +903,7 @@ int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images,
#endif
#if defined(CONFIG_FIT)
case IMAGE_FORMAT_FIT:
- rd_noffset = fit_image_load(images, FIT_RAMDISK_PROP,
+ rd_noffset = fit_image_load(images,
rd_addr, &fit_uname_ramdisk,
&fit_uname_config, arch,
IH_TYPE_RAMDISK,
diff --git a/include/image.h b/include/image.h
index b71e4ba35f..ae767f0c83 100644
--- a/include/image.h
+++ b/include/image.h
@@ -434,8 +434,9 @@ int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images,
* out progress messages, checking the type/arch/os and optionally copying it
* to the right load address.
*
+ * The property to look up is defined by image_type.
+ *
* @param images Boot images structure
- * @param prop_name Property name to look up (FIT_..._PROP)
* @param addr Address of FIT in memory
* @param fit_unamep On entry this is the requested image name
* (e.g. "kernel@1") or NULL to use the default. On exit
@@ -454,7 +455,7 @@ int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images,
* @param datap Returns address of loaded image
* @param lenp Returns length of loaded image
*/
-int fit_image_load(bootm_headers_t *images, const char *prop_name, ulong addr,
+int fit_image_load(bootm_headers_t *images, ulong addr,
const char **fit_unamep, const char **fit_uname_configp,
int arch, int image_type, int bootstage_id,
enum fit_load_op load_op, ulong *datap, ulong *lenp);
OpenPOWER on IntegriCloud