All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Glass <sjg@chromium.org>
To: u-boot@lists.denx.de
Subject: [PATCH 49/49] image: Remove #ifdefs from select_fdt()
Date: Mon,  3 May 2021 17:11:36 -0600	[thread overview]
Message-ID: <20210503231136.744283-22-sjg@chromium.org> (raw)
In-Reply-To: <20210503231136.744283-1-sjg@chromium.org>

Use boolean variables to deal with the strange #ifdef logic of this
function, so we can remove the #ifdefs. Also drop one from its caller,
boot_get_fdt()

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 common/image-fdt.c | 201 ++++++++++++++++++++++-----------------------
 1 file changed, 100 insertions(+), 101 deletions(-)

diff --git a/common/image-fdt.c b/common/image-fdt.c
index c17c23e1295..8afd6ed94a6 100644
--- a/common/image-fdt.c
+++ b/common/image-fdt.c
@@ -39,7 +39,6 @@ static void fdt_error(const char *msg)
 	puts(" - must RESET the board to recover.\n");
 }
 
-#if CONFIG_IS_ENABLED(LEGACY_IMAGE_FORMAT)
 static const image_header_t *image_get_fdt(ulong fdt_addr)
 {
 	const image_header_t *fdt_hdr = map_sysmem(fdt_addr, 0);
@@ -72,7 +71,6 @@ static const image_header_t *image_get_fdt(ulong fdt_addr)
 	}
 	return fdt_hdr;
 }
-#endif
 
 static void boot_fdt_reserve_region(struct lmb *lmb, uint64_t addr,
 				    uint64_t size)
@@ -258,46 +256,49 @@ error:
 static int select_fdt(bootm_headers_t *images, const char *select, u8 arch,
 		      ulong *fdt_addrp)
 {
-	const char *buf;
-	ulong fdt_addr;
-
-#if CONFIG_IS_ENABLED(FIT)
 	const char *fit_uname_config = images->fit_uname_cfg;
 	const char *fit_uname_fdt = NULL;
-	ulong default_addr;
 	int fdt_noffset;
+	const char *buf;
+	bool processed;
+	ulong fdt_addr = 0;
 
 	if (select) {
-		/*
-		 * If the FDT blob comes from the FIT image and the
-		 * FIT image address is omitted in the command line
-		 * argument, try to use ramdisk or os FIT image
-		 * address or default load address.
-		 */
-		if (images->fit_uname_rd)
-			default_addr = (ulong)images->fit_hdr_rd;
-		else if (images->fit_uname_os)
-			default_addr = (ulong)images->fit_hdr_os;
-		else
-			default_addr = image_load_addr;
-
-		if (fit_parse_conf(select, default_addr, &fdt_addr,
-				   &fit_uname_config)) {
-			debug("*  fdt: config '%s' from image at 0x%08lx\n",
-			      fit_uname_config, fdt_addr);
-		} else if (fit_parse_subimage(select, default_addr, &fdt_addr,
-			   &fit_uname_fdt)) {
-			debug("*  fdt: subimage '%s' from image at 0x%08lx\n",
-			      fit_uname_fdt, fdt_addr);
-		} else
-#endif
-		{
+		ulong default_addr;
+		bool done = true;
+
+		if (CONFIG_IS_ENABLED(FIT)) {
+			/*
+			 * If the FDT blob comes from the FIT image and the
+			 * FIT image address is omitted in the command line
+			 * argument, try to use ramdisk or os FIT image
+			 * address or default load address.
+			 */
+			if (images->fit_uname_rd)
+				default_addr = (ulong)images->fit_hdr_rd;
+			else if (images->fit_uname_os)
+				default_addr = (ulong)images->fit_hdr_os;
+			else
+				default_addr = image_load_addr;
+
+			if (fit_parse_conf(select, default_addr, &fdt_addr,
+					   &fit_uname_config)) {
+				debug("*  fdt: config '%s' from image at 0x%08lx\n",
+				      fit_uname_config, fdt_addr);
+			} else if (fit_parse_subimage(select, default_addr, &fdt_addr,
+				   &fit_uname_fdt)) {
+				debug("*  fdt: subimage '%s' from image at 0x%08lx\n",
+				      fit_uname_fdt, fdt_addr);
+			} else {
+				done = false;
+			}
+		}
+		if (!done) {
 			fdt_addr = simple_strtoul(select, NULL, 16);
 			debug("*  fdt: cmdline image address = 0x%08lx\n",
 			      fdt_addr);
 		}
-#if CONFIG_IS_ENABLED(FIT)
-	} else {
+	} else if (CONFIG_IS_ENABLED(FIT)) {
 		/* use FIT configuration provided in first bootm
 		 * command argument
 		 */
@@ -309,7 +310,6 @@ static int select_fdt(bootm_headers_t *images, const char *select, u8 arch,
 		else if (fdt_noffset < 0)
 			return fdt_noffset;
 	}
-#endif
 	debug("## Checking for 'FDT'/'FDT Image' at %08lx\n",
 	      fdt_addr);
 
@@ -319,90 +319,90 @@ static int select_fdt(bootm_headers_t *images, const char *select, u8 arch,
 	 * check image type, for FIT images get a FIT node.
 	 */
 	buf = map_sysmem(fdt_addr, 0);
+	processed = false;
 	switch (genimg_get_format(buf)) {
-#if CONFIG_IS_ENABLED(LEGACY_IMAGE_FORMAT)
-	case IMAGE_FORMAT_LEGACY: {
-		const image_header_t *fdt_hdr;
-		ulong load, load_end;
-		ulong image_start, image_data, image_end;
-
-		/* verify fdt_addr points to a valid image header */
-		printf("## Flattened Device Tree from Legacy Image at %08lx\n",
-		       fdt_addr);
-		fdt_hdr = image_get_fdt(fdt_addr);
-		if (!fdt_hdr)
-			return -ENOPKG;
+	case IMAGE_FORMAT_LEGACY:
+		if (CONFIG_IS_ENABLED(LEGACY_IMAGE_FORMAT)) {
+			const image_header_t *fdt_hdr;
+			ulong load, load_end;
+			ulong image_start, image_data, image_end;
+
+			processed = true;
+			/* verify fdt_addr points to a valid image header */
+			printf("## Flattened Device Tree from Legacy Image@%08lx\n",
+			       fdt_addr);
+			fdt_hdr = image_get_fdt(fdt_addr);
+			if (!fdt_hdr)
+				return -ENOPKG;
 
-		/*
-		 * move image data to the load address,
-		 * make sure we don't overwrite initial image
-		 */
-		image_start = (ulong)fdt_hdr;
-		image_data = (ulong)image_get_data(fdt_hdr);
-		image_end = image_get_image_end(fdt_hdr);
+			/*
+			 * move image data to the load address,
+			 * make sure we don't overwrite initial image
+			 */
+			image_start = (ulong)fdt_hdr;
+			image_data = (ulong)image_get_data(fdt_hdr);
+			image_end = image_get_image_end(fdt_hdr);
 
-		load = image_get_load(fdt_hdr);
-		load_end = load + image_get_data_size(fdt_hdr);
+			load = image_get_load(fdt_hdr);
+			load_end = load + image_get_data_size(fdt_hdr);
 
-		if (load == image_start ||
-		    load == image_data) {
-			fdt_addr = load;
-			break;
-		}
+			if (load == image_start ||
+			    load == image_data) {
+				fdt_addr = load;
+				break;
+			}
 
-		if ((load < image_end) && (load_end > image_start)) {
-			fdt_error("fdt overwritten");
-			return -EFAULT;
-		}
+			if (load < image_end && load_end > image_start) {
+				fdt_error("fdt overwritten");
+				return -EFAULT;
+			}
 
-		debug("   Loading FDT from 0x%08lx to 0x%08lx\n",
-		      image_data, load);
+			debug("   Loading FDT from 0x%08lx to 0x%08lx\n",
+			      image_data, load);
 
-		memmove((void *)load,
-			(void *)image_data,
-			image_get_data_size(fdt_hdr));
+			memmove((void *)load,
+				(void *)image_data,
+				image_get_data_size(fdt_hdr));
 
-		fdt_addr = load;
+			fdt_addr = load;
+		}
 		break;
-	}
-#endif
 	case IMAGE_FORMAT_FIT:
 		/*
 		 * This case will catch both: new uImage format
 		 * (libfdt based) and raw FDT blob (also libfdt
 		 * based).
 		 */
-#if CONFIG_IS_ENABLED(FIT)
-		/* check FDT blob vs FIT blob */
-		if (!fit_check_format(buf, IMAGE_SIZE_INVAL)) {
-			ulong load, len;
-
-			fdt_noffset = boot_get_fdt_fit(images, fdt_addr,
-						       &fit_uname_fdt,
-						       &fit_uname_config,
-						       arch, &load, &len);
-
-			if (fdt_noffset < 0)
-				return -ENOENT;
-
-			images->fit_hdr_fdt = map_sysmem(fdt_addr, 0);
-			images->fit_uname_fdt = fit_uname_fdt;
-			images->fit_noffset_fdt = fdt_noffset;
-			fdt_addr = load;
-
-			break;
-		} else
-#endif
-		{
-			/*
-			 * FDT blob
-			 */
+		if (CONFIG_IS_ENABLED(FIT)) {
+			/* check FDT blob vs FIT blob */
+			if (!fit_check_format(buf, IMAGE_SIZE_INVAL)) {
+				ulong load, len;
+
+				fdt_noffset = boot_get_fdt_fit(images, fdt_addr,
+							       &fit_uname_fdt,
+							       &fit_uname_config,
+							       arch, &load, &len);
+
+				if (fdt_noffset < 0)
+					return -ENOENT;
+
+				images->fit_hdr_fdt = map_sysmem(fdt_addr, 0);
+				images->fit_uname_fdt = fit_uname_fdt;
+				images->fit_noffset_fdt = fdt_noffset;
+				fdt_addr = load;
+				processed = true;
+			}
+		}
+		if (!processed) {
+			/* FDT blob */
 			debug("*  fdt: raw FDT blob\n");
 			printf("## Flattened Device Tree blob at %08lx\n",
 			       (long)fdt_addr);
 		}
 		break;
-	default:
+	}
+
+	if (!processed) {
 		puts("ERROR: Did not find a cmdline Flattened Device Tree\n");
 		return -ENOENT;
 	}
@@ -492,8 +492,8 @@ int boot_get_fdt(int flag, int argc, char *const argv[], uint8_t arch,
 			debug("## No Flattened Device Tree\n");
 			goto no_fdt;
 		}
-#ifdef CONFIG_ANDROID_BOOT_IMAGE
-	} else if (genimg_get_format(buf) == IMAGE_FORMAT_ANDROID) {
+	} else if (IS_ENABLED(CONFIG_ANDROID_BOOT_IMAGE) &&
+		   genimg_get_format(buf) == IMAGE_FORMAT_ANDROID) {
 		struct andr_img_hdr *hdr = buf;
 		ulong		fdt_data, fdt_len;
 		u32			fdt_size, dtb_idx;
@@ -525,7 +525,6 @@ int boot_get_fdt(int flag, int argc, char *const argv[], uint8_t arch,
 
 			debug("## Using FDT at ${fdtaddr}=Ox%lx\n", fdt_addr);
 		}
-#endif
 	} else {
 		debug("## No Flattened Device Tree\n");
 		goto no_fdt;
-- 
2.31.1.527.g47e6f16901-goog

  parent reply	other threads:[~2021-05-03 23:11 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-03 23:10 [PATCH 00/49] image: Reduce #ifdefs and ad-hoc defines in image code Simon Glass
2021-05-03 23:10 ` Simon Glass
2021-05-03 23:10 ` [PATCH 01/49] Add support for an owned buffer Simon Glass
2021-05-04  6:59   ` Rasmus Villemoes
2021-05-05 23:37     ` Simon Glass
2021-05-03 23:10 ` [PATCH 02/49] compiler: Add a comment to host_build() Simon Glass
2021-05-04  7:01   ` Rasmus Villemoes
2021-05-03 23:10 ` [PATCH 03/49] zstd: Create a function for use from U-Boot Simon Glass
2021-05-03 23:10 ` [PATCH 04/49] btrfs: Use U-Boot API for decompression Simon Glass
2021-05-03 23:10   ` Simon Glass
2021-05-03 23:25   ` Qu Wenruo
2021-05-03 23:25     ` Qu Wenruo
2021-05-03 23:45   ` Marek Behun
2021-05-03 23:45     ` Marek Behun
2021-05-04 16:58     ` Simon Glass
2021-05-04 16:58       ` Simon Glass
2021-05-03 23:10 ` [PATCH 05/49] image: Avoid switch default in image_decomp() Simon Glass
2021-05-03 23:10 ` [PATCH 06/49] image: Update zstd to avoid reporting error twice Simon Glass
2021-05-03 23:10 ` [PATCH 07/49] gzip: Avoid use of u64 Simon Glass
2021-05-03 23:10 ` [PATCH 08/49] image: Update image_decomp() to avoid ifdefs Simon Glass
2021-05-03 23:10 ` [PATCH 09/49] image: Split board code out into its own file Simon Glass
2021-05-03 23:10 ` [PATCH 10/49] image: Fix up checkpatch warnings in image-board.c Simon Glass
2021-05-03 23:10 ` [PATCH 11/49] image: Split host code out into its own file Simon Glass
2021-05-03 23:10 ` [PATCH 12/49] image: Create a function to do manual relocation Simon Glass
2021-05-04  7:17   ` Rasmus Villemoes
2021-05-07  2:45     ` Simon Glass
2021-05-03 23:11 ` [PATCH 13/49] image: Avoid #ifdefs for " Simon Glass
2021-05-03 23:11 ` [PATCH 14/49] image: Remove ifdefs around image_setup_linux() el at Simon Glass
2021-05-03 23:11 ` [PATCH 15/49] image: Add Kconfig options for FIT in the host build Simon Glass
2021-05-03 23:11 ` [PATCH 16/49] kconfig: Add host support to CONFIG_IS_ENABLED() Simon Glass
2021-05-04  7:28   ` Rasmus Villemoes
2021-05-03 23:11 ` [PATCH 17/49] image: Shorten FIT_ENABLE_SHAxxx_SUPPORT Simon Glass
2021-05-03 23:11 ` [PATCH 18/49] image: Rename SPL_SHAxxx_SUPPORT to SPL_FIT_SHAxxx Simon Glass
2021-05-03 23:11 ` [PATCH 19/49] hash: Use Kconfig to enable hashing in host tools Simon Glass
2021-05-03 23:11 ` [PATCH 20/49] hash: Drop some #ifdefs in hash.c Simon Glass
2021-05-03 23:11 ` [PATCH 21/49] image: Drop IMAGE_ENABLE_FIT Simon Glass
2021-05-03 23:11 ` [PATCH 22/49] image: Drop IMAGE_ENABLE_OF_LIBFDT Simon Glass
2021-05-03 23:11 ` [PATCH 23/49] image: Use Kconfig to enable CONFIG_FIT_VERBOSE on host Simon Glass
2021-05-03 23:11 ` [PATCH 24/49] image: Rename CONFIG_FIT_ENABLE_RSASSA_PSS_SUPPORT Simon Glass
2021-05-03 23:11 ` [PATCH 25/49] image: Use Kconfig to enable FIT_RSASSA_PSS on host Simon Glass
2021-05-03 23:11 ` [PATCH 26/49] Kconfig: Rename SPL_CRC32_SUPPORT to SPL_CRC32 Simon Glass
2021-05-03 23:11 ` [PATCH 27/49] image: Drop IMAGE_ENABLE_CRC32 Simon Glass
2021-05-03 23:11 ` [PATCH 28/49] Kconfig: Rename SPL_MD5_SUPPORT to SPL_MD5 Simon Glass
2021-05-03 23:11 ` [PATCH 29/49] image: Drop IMAGE_ENABLE_MD5 Simon Glass
2021-05-03 23:11 ` [PATCH 30/49] image: Drop IMAGE_ENABLE_SHA1 Simon Glass
2021-05-03 23:11 ` [PATCH 31/49] image: Drop IMAGE_ENABLE_SHAxxx Simon Glass
2021-05-03 23:11 ` [PATCH 32/49] image: Drop IMAGE_BOOT_GET_CMDLINE Simon Glass
2021-05-03 23:11 ` [PATCH 33/49] image: Drop IMAGE_OF_BOARD_SETUP Simon Glass
2021-05-03 23:11 ` [PATCH 34/49] image: Drop IMAGE_OF_SYSTEM_SETUP Simon Glass
2021-05-03 23:11 ` [PATCH 35/49] image: Drop IMAGE_ENABLE_IGNORE Simon Glass
2021-05-03 23:11 ` [PATCH 36/49] image: Drop IMAGE_ENABLE_SIGN/VERIFY defines Simon Glass
2021-05-03 23:11 ` [PATCH 37/49] image: Drop IMAGE_ENABLE_BEST_MATCH Simon Glass
2021-05-03 23:11 ` [PATCH 38/49] image: Drop IMAGE_ENABLE_EN/DECRYPT defines Simon Glass
2021-05-03 23:11 ` [PATCH 39/49] image: Tidy up fit_unsupported_reset() Simon Glass
2021-05-03 23:11 ` [PATCH 40/49] image: Drop unnecessary #ifdefs from image.h Simon Glass
2021-05-03 23:11 ` [PATCH 41/49] image: Drop #ifdefs for fit_print_contents() Simon Glass
2021-05-03 23:11 ` [PATCH 42/49] image: Drop most #ifdefs in image-board.c Simon Glass
2021-05-03 23:11 ` [PATCH 43/49] image: Reduce variable scope in boot_get_ramdisk() Simon Glass
2021-05-03 23:11 ` [PATCH 44/49] image: Split up boot_get_ramdisk() Simon Glass
2021-05-03 23:11 ` [PATCH 45/49] image: Remove #ifdefs from select_ramdisk() Simon Glass
2021-05-03 23:11 ` [PATCH 46/49] image: Remove some #ifdefs from image-fit and image-fit-sig Simon Glass
2021-05-03 23:11 ` [PATCH 47/49] image: Reduce variable scope in boot_get_fdt() Simon Glass
2021-05-03 23:11 ` [PATCH 48/49] image: Split up boot_get_fdt() Simon Glass
2021-05-03 23:11 ` Simon Glass [this message]
2021-05-04 21:40 ` [PATCH 00/49] image: Reduce #ifdefs and ad-hoc defines in image code Tom Rini
2021-05-04 21:40   ` Tom Rini
2021-05-04 21:49   ` Simon Glass
2021-05-04 21:49     ` Simon Glass
2021-05-04 23:24   ` Sean Anderson
2021-05-04 23:24     ` Sean Anderson
2021-05-05  1:11     ` Tom Rini
2021-05-05  1:11       ` Tom Rini
2021-05-05 23:38   ` Simon Glass
2021-05-05 23:38     ` Simon Glass

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210503231136.744283-22-sjg@chromium.org \
    --to=sjg@chromium.org \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.