image: Remove #ifdefs from select_ramdisk()

Use boolean variables to deal with the strange #ifdef logic of this
function, so we can remove the #ifdefs.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2021-09-25 19:43:38 -06:00 committed by Tom Rini
parent e4c928792e
commit f33a2c1bd0

View File

@ -26,7 +26,6 @@
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
#if CONFIG_IS_ENABLED(LEGACY_IMAGE_FORMAT)
/** /**
* image_get_ramdisk - get and verify ramdisk image * image_get_ramdisk - get and verify ramdisk image
* @rd_addr: ramdisk image start address * @rd_addr: ramdisk image start address
@ -85,7 +84,6 @@ static const image_header_t *image_get_ramdisk(ulong rd_addr, u8 arch,
return rd_hdr; return rd_hdr;
} }
#endif
/*****************************************************************************/ /*****************************************************************************/
/* Shared dual-format routines */ /* Shared dual-format routines */
@ -326,16 +324,18 @@ int genimg_has_config(bootm_headers_t *images)
static int select_ramdisk(bootm_headers_t *images, const char *select, u8 arch, static int select_ramdisk(bootm_headers_t *images, const char *select, u8 arch,
ulong *rd_datap, ulong *rd_lenp) ulong *rd_datap, ulong *rd_lenp)
{ {
ulong rd_addr; ulong rd_addr = 0;
char *buf; char *buf;
#if CONFIG_IS_ENABLED(FIT)
const char *fit_uname_config = images->fit_uname_cfg; const char *fit_uname_config = images->fit_uname_cfg;
const char *fit_uname_ramdisk = NULL; const char *fit_uname_ramdisk = NULL;
bool processed;
int rd_noffset; int rd_noffset;
if (select) { if (select) {
ulong default_addr; ulong default_addr;
bool done = true;
if (CONFIG_IS_ENABLED(FIT)) {
/* /*
* If the init ramdisk comes from the FIT image and * If the init ramdisk comes from the FIT image and
* the FIT image address is omitted in the command * the FIT image address is omitted in the command
@ -347,8 +347,8 @@ static int select_ramdisk(bootm_headers_t *images, const char *select, u8 arch,
else else
default_addr = image_load_addr; default_addr = image_load_addr;
if (fit_parse_conf(select, default_addr, if (fit_parse_conf(select, default_addr, &rd_addr,
&rd_addr, &fit_uname_config)) { &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); fit_uname_config, rd_addr);
} else if (fit_parse_subimage(select, default_addr, } else if (fit_parse_subimage(select, default_addr,
@ -356,29 +356,28 @@ static int select_ramdisk(bootm_headers_t *images, const char *select, u8 arch,
&fit_uname_ramdisk)) { &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); fit_uname_ramdisk, rd_addr);
} else } else {
#endif done = false;
{ }
}
if (!done) {
rd_addr = hextoul(select, NULL); rd_addr = hextoul(select, NULL);
debug("* ramdisk: cmdline image address = 0x%08lx\n", debug("* ramdisk: cmdline image address = 0x%08lx\n",
rd_addr); rd_addr);
} }
#if CONFIG_IS_ENABLED(FIT) } else if (CONFIG_IS_ENABLED(FIT)) {
} else {
/* use FIT configuration provided in first bootm /* use FIT configuration provided in first bootm
* command argument. If the property is not defined, * command argument. If the property is not defined,
* quit silently (with -ENOPKG ) * quit silently (with -ENOPKG )
*/ */
rd_addr = map_to_sysmem(images->fit_hdr_os); rd_addr = map_to_sysmem(images->fit_hdr_os);
rd_noffset = fit_get_node_from_config(images, rd_noffset = fit_get_node_from_config(images, FIT_RAMDISK_PROP,
FIT_RAMDISK_PROP,
rd_addr); rd_addr);
if (rd_noffset == -ENOENT) if (rd_noffset == -ENOENT)
return -ENOPKG; return -ENOPKG;
else if (rd_noffset < 0) else if (rd_noffset < 0)
return rd_noffset; return rd_noffset;
} }
#endif
/* /*
* Check if there is an initrd image at the * Check if there is an initrd image at the
@ -386,30 +385,29 @@ static int select_ramdisk(bootm_headers_t *images, const char *select, u8 arch,
* check image type, for FIT images get FIT node. * check image type, for FIT images get FIT node.
*/ */
buf = map_sysmem(rd_addr, 0); buf = map_sysmem(rd_addr, 0);
processed = false;
switch (genimg_get_format(buf)) { switch (genimg_get_format(buf)) {
#if CONFIG_IS_ENABLED(LEGACY_IMAGE_FORMAT) case IMAGE_FORMAT_LEGACY:
case IMAGE_FORMAT_LEGACY: { if (CONFIG_IS_ENABLED(LEGACY_IMAGE_FORMAT)) {
const image_header_t *rd_hdr; const image_header_t *rd_hdr;
printf("## Loading init Ramdisk from Legacy Image at %08lx ...\n", printf("## Loading init Ramdisk from Legacy Image at %08lx ...\n",
rd_addr); rd_addr);
bootstage_mark(BOOTSTAGE_ID_CHECK_RAMDISK); bootstage_mark(BOOTSTAGE_ID_CHECK_RAMDISK);
rd_hdr = image_get_ramdisk(rd_addr, arch, rd_hdr = image_get_ramdisk(rd_addr, arch, images->verify);
images->verify);
if (!rd_hdr) if (!rd_hdr)
return -ENOENT; return -ENOENT;
*rd_datap = image_get_data(rd_hdr); *rd_datap = image_get_data(rd_hdr);
*rd_lenp = image_get_data_size(rd_hdr); *rd_lenp = image_get_data_size(rd_hdr);
break; processed = true;
} }
#endif break;
#if CONFIG_IS_ENABLED(FIT)
case IMAGE_FORMAT_FIT: case IMAGE_FORMAT_FIT:
rd_noffset = fit_image_load(images, if (CONFIG_IS_ENABLED(FIT)) {
rd_addr, &fit_uname_ramdisk, rd_noffset = fit_image_load(images, rd_addr,
&fit_uname_ramdisk,
&fit_uname_config, arch, &fit_uname_config, arch,
IH_TYPE_RAMDISK, IH_TYPE_RAMDISK,
BOOTSTAGE_ID_FIT_RD_START, BOOTSTAGE_ID_FIT_RD_START,
@ -421,15 +419,19 @@ static int select_ramdisk(bootm_headers_t *images, const char *select, u8 arch,
images->fit_hdr_rd = map_sysmem(rd_addr, 0); images->fit_hdr_rd = map_sysmem(rd_addr, 0);
images->fit_uname_rd = fit_uname_ramdisk; images->fit_uname_rd = fit_uname_ramdisk;
images->fit_noffset_rd = rd_noffset; images->fit_noffset_rd = rd_noffset;
processed = true;
}
break; break;
#endif
#ifdef CONFIG_ANDROID_BOOT_IMAGE
case IMAGE_FORMAT_ANDROID: case IMAGE_FORMAT_ANDROID:
if (IS_ENABLED(CONFIG_ANDROID_BOOT_IMAGE)) {
android_image_get_ramdisk((void *)images->os.start, android_image_get_ramdisk((void *)images->os.start,
rd_datap, rd_lenp); rd_datap, rd_lenp);
processed = true;
}
break; break;
#endif }
default:
if (!processed) {
if (IS_ENABLED(CONFIG_SUPPORT_RAW_INITRD)) { if (IS_ENABLED(CONFIG_SUPPORT_RAW_INITRD)) {
char *end = NULL; char *end = NULL;
@ -438,12 +440,15 @@ static int select_ramdisk(bootm_headers_t *images, const char *select, u8 arch,
if (end) { if (end) {
*rd_lenp = hextoul(++end, NULL); *rd_lenp = hextoul(++end, NULL);
*rd_datap = rd_addr; *rd_datap = rd_addr;
break; processed = true;
} }
} }
if (!processed) {
puts("Wrong Ramdisk Image Format\n"); puts("Wrong Ramdisk Image Format\n");
return -EINVAL; return -EINVAL;
} }
}
return 0; return 0;
} }