The current switch default is tricky since it relies on #ifdefs to work.
Use a bool instead.

Also fix the comment on @select, since it has a dual purpose.

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

 boot/image-board.c | 36 ++++++++++++++++++++++--------------
 1 file changed, 22 insertions(+), 14 deletions(-)

diff --git a/boot/image-board.c b/boot/image-board.c
index 14b595977e1..2d5e5b6e6f0 100644
--- a/boot/image-board.c
+++ b/boot/image-board.c
@@ -314,7 +314,7 @@ int genimg_has_config(bootm_headers_t *images)
  * select_ramdisk() - Select and locate the ramdisk to use
  *
  * @images: pointer to the bootm images structure
- * @select: name of ramdisk to select, or NULL for any
+ * @select: name of ramdisk to select, or hex address, NULL for any
  * @arch: expected ramdisk architecture
  * @rd_datap: pointer to a ulong variable, will hold ramdisk pointer
  * @rd_lenp: pointer to a ulong variable, will hold ramdisk length
@@ -324,6 +324,7 @@ int genimg_has_config(bootm_headers_t *images)
 static int select_ramdisk(bootm_headers_t *images, const char *select, u8 arch,
                          ulong *rd_datap, ulong *rd_lenp)
 {
+       bool done = false;
        ulong rd_addr;
        char *buf;
 
@@ -401,6 +402,7 @@ static int select_ramdisk(bootm_headers_t *images, const 
char *select, u8 arch,
 
                        *rd_datap = image_get_data(rd_hdr);
                        *rd_lenp = image_get_data_size(rd_hdr);
+                       done = true;
                        break;
                }
 #endif
@@ -419,6 +421,7 @@ static int select_ramdisk(bootm_headers_t *images, const 
char *select, u8 arch,
                        images->fit_hdr_rd = map_sysmem(rd_addr, 0);
                        images->fit_uname_rd = fit_uname_ramdisk;
                        images->fit_noffset_rd = rd_noffset;
+                       done = true;
                        break;
 #endif
                case IMAGE_FORMAT_ANDROID:
@@ -431,24 +434,29 @@ static int select_ramdisk(bootm_headers_t *images, const 
char *select, u8 arch,
                                unmap_sysmem(ptr);
                                if (ret)
                                        return ret;
-                               break;
+                               done = true;
                        }
-                       fallthrough;
-               default:
-                       if (IS_ENABLED(CONFIG_SUPPORT_RAW_INITRD)) {
-                               char *end = NULL;
-
-                               if (select)
-                                       end = strchr(select, ':');
-                               if (end) {
-                                       *rd_lenp = hextoul(++end, NULL);
-                                       *rd_datap = rd_addr;
-                                       break;
-                               }
+                       break;
+               }
+
+       if (!done) {
+               if (IS_ENABLED(CONFIG_SUPPORT_RAW_INITRD)) {
+                       char *end = NULL;
+
+                       if (select)
+                               end = strchr(select, ':');
+                       if (end) {
+                               *rd_lenp = hextoul(++end, NULL);
+                               *rd_datap = rd_addr;
+                               done = true;
                        }
+               }
+
+               if (!done) {
                        puts("Wrong Ramdisk Image Format\n");
                        return -EINVAL;
                }
+       }
 
        return 0;
 }
-- 
2.37.2.672.g94769d06f0-goog

Reply via email to