From a6a9d3273346138fadb1a173fc2f5e9d0e61215a Mon Sep 17 00:00:00 2001 From: Andre Przywara Date: Thu, 27 Mar 2025 15:32:56 +0000 Subject: [PATCH 01/16] spl: mmc: properly annotate fallthrough Depending on the various MMC boot configurations, we might end up with trying filesystem mode when a raw image boot failed. This fall-through in the switch/case statement is explained in a comment, but this is not visible to the compiler, which still will complain. Add the proper compiler-visible annotation, to allow enabling the compiler check in the future. Signed-off-by: Andre Przywara Reviewed-by: Tom Rini --- common/spl/spl_mmc.c | 1 + 1 file changed, 1 insertion(+) diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c index fe4230170a0..d06f9f0dee6 100644 --- a/common/spl/spl_mmc.c +++ b/common/spl/spl_mmc.c @@ -411,6 +411,7 @@ int spl_mmc_load(struct spl_image_info *spl_image, return 0; #endif /* If RAW mode fails, try FS mode. */ + fallthrough; #ifdef CONFIG_SYS_MMCSD_FS_BOOT case MMCSD_MODE_FS: debug("spl: mmc boot mode: fs\n"); From 3d907a5a490b79b876a3f9c325b483a116f29b7e Mon Sep 17 00:00:00 2001 From: Andre Przywara Date: Thu, 27 Mar 2025 15:32:57 +0000 Subject: [PATCH 02/16] zlib: annotate switch/case fallthrough cases The inflate state machine in zlib uses switch/case fall-through's extensively, as it sometimes advances the state, and lets the conveniently placed next case statement handle the new state already. The pattern here is: state->mode = LEN; case LEN: Annotate those occasions with the "fallthrough;" macro, to let compilers know this is fine when using -Wimplicit-fallthrough. This mimics the upstream commit 76f70abbc73f: Author: Mark Adler Date: Sun Mar 27 00:12:38 2022 -0700 Subject: Add fallthrough comments for gcc. Signed-off-by: Andre Przywara Link: https://github.com/madler/zlib/commit/76f70abbc73f Reviewed-by: Tom Rini --- lib/zlib/inflate.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/lib/zlib/inflate.c b/lib/zlib/inflate.c index b4c72cc2c5c..2b7a464f74f 100644 --- a/lib/zlib/inflate.c +++ b/lib/zlib/inflate.c @@ -420,6 +420,7 @@ __rcode int ZEXPORT inflate(z_streamp strm, int flush) if (state->flags & 0x0200) CRC2(state->check, hold); INITBITS(); state->mode = TIME; + fallthrough; case TIME: NEEDBITS(32); if (state->head != Z_NULL) @@ -427,6 +428,7 @@ __rcode int ZEXPORT inflate(z_streamp strm, int flush) if (state->flags & 0x0200) CRC4(state->check, hold); INITBITS(); state->mode = OS; + fallthrough; case OS: NEEDBITS(16); if (state->head != Z_NULL) { @@ -436,6 +438,7 @@ __rcode int ZEXPORT inflate(z_streamp strm, int flush) if (state->flags & 0x0200) CRC2(state->check, hold); INITBITS(); state->mode = EXLEN; + fallthrough; case EXLEN: if (state->flags & 0x0400) { NEEDBITS(16); @@ -448,6 +451,7 @@ __rcode int ZEXPORT inflate(z_streamp strm, int flush) else if (state->head != Z_NULL) state->head->extra = Z_NULL; state->mode = EXTRA; + fallthrough; case EXTRA: if (state->flags & 0x0400) { copy = state->length; @@ -471,6 +475,7 @@ __rcode int ZEXPORT inflate(z_streamp strm, int flush) } state->length = 0; state->mode = NAME; + fallthrough; case NAME: if (state->flags & 0x0800) { if (have == 0) goto inf_leave; @@ -492,6 +497,7 @@ __rcode int ZEXPORT inflate(z_streamp strm, int flush) state->head->name = Z_NULL; state->length = 0; state->mode = COMMENT; + fallthrough; case COMMENT: if (state->flags & 0x1000) { if (have == 0) goto inf_leave; @@ -512,6 +518,7 @@ __rcode int ZEXPORT inflate(z_streamp strm, int flush) else if (state->head != Z_NULL) state->head->comment = Z_NULL; state->mode = HCRC; + fallthrough; case HCRC: if (state->flags & 0x0200) { NEEDBITS(16); @@ -535,6 +542,7 @@ __rcode int ZEXPORT inflate(z_streamp strm, int flush) strm->adler = state->check = REVERSE(hold); INITBITS(); state->mode = DICT; + fallthrough; case DICT: if (state->havedict == 0) { RESTORE(); @@ -542,9 +550,11 @@ __rcode int ZEXPORT inflate(z_streamp strm, int flush) } strm->adler = state->check = adler32(0L, Z_NULL, 0); state->mode = TYPE; + fallthrough; case TYPE: schedule(); if (flush == Z_BLOCK) goto inf_leave; + fallthrough; case TYPEDO: if (state->last) { BYTEBITS(); @@ -590,6 +600,7 @@ __rcode int ZEXPORT inflate(z_streamp strm, int flush) state->length)); INITBITS(); state->mode = COPY; + fallthrough; case COPY: copy = state->length; if (copy) { @@ -625,6 +636,7 @@ __rcode int ZEXPORT inflate(z_streamp strm, int flush) Tracev((stderr, "inflate: table sizes ok\n")); state->have = 0; state->mode = LENLENS; + fallthrough; case LENLENS: while (state->have < state->ncode) { NEEDBITS(3); @@ -646,6 +658,7 @@ __rcode int ZEXPORT inflate(z_streamp strm, int flush) Tracev((stderr, "inflate: code lengths ok\n")); state->have = 0; state->mode = CODELENS; + fallthrough; case CODELENS: while (state->have < state->nlen + state->ndist) { for (;;) { @@ -720,6 +733,7 @@ __rcode int ZEXPORT inflate(z_streamp strm, int flush) } Tracev((stderr, "inflate: codes ok\n")); state->mode = LEN; + fallthrough; case LEN: schedule(); if (have >= 6 && left >= 258) { @@ -764,6 +778,7 @@ __rcode int ZEXPORT inflate(z_streamp strm, int flush) } state->extra = (unsigned)(this.op) & 15; state->mode = LENEXT; + fallthrough; case LENEXT: if (state->extra) { NEEDBITS(state->extra); @@ -772,6 +787,7 @@ __rcode int ZEXPORT inflate(z_streamp strm, int flush) } Tracevv((stderr, "inflate: length %u\n", state->length)); state->mode = DIST; + fallthrough; case DIST: for (;;) { this = state->distcode[BITS(state->distbits)]; @@ -797,6 +813,7 @@ __rcode int ZEXPORT inflate(z_streamp strm, int flush) state->offset = (unsigned)this.val; state->extra = (unsigned)(this.op) & 15; state->mode = DISTEXT; + fallthrough; case DISTEXT: if (state->extra) { NEEDBITS(state->extra); @@ -817,6 +834,7 @@ __rcode int ZEXPORT inflate(z_streamp strm, int flush) } Tracevv((stderr, "inflate: distance %u\n", state->offset)); state->mode = MATCH; + fallthrough; case MATCH: if (left == 0) goto inf_leave; copy = out - left; @@ -872,6 +890,7 @@ __rcode int ZEXPORT inflate(z_streamp strm, int flush) } #ifdef GUNZIP state->mode = LENGTH; + fallthrough; case LENGTH: if (state->wrap && state->flags) { NEEDBITS(32); @@ -885,6 +904,7 @@ __rcode int ZEXPORT inflate(z_streamp strm, int flush) } #endif state->mode = DONE; + fallthrough; case DONE: ret = Z_STREAM_END; goto inf_leave; @@ -894,6 +914,7 @@ __rcode int ZEXPORT inflate(z_streamp strm, int flush) case MEM: return Z_MEM_ERROR; case SYNC: + fallthrough; default: return Z_STREAM_ERROR; } From 2938eb1e022d7e1de23d89f941bc07b0776a2549 Mon Sep 17 00:00:00 2001 From: Andre Przywara Date: Thu, 27 Mar 2025 15:32:58 +0000 Subject: [PATCH 03/16] gadget: f_thor: annotate switch/case fallthrough Even though we seem to catch POWEROFF and EFSCLEAR commands in the THOR protocol request handling, we ultimately do not seem to handle them (apart from sending a response), so those commands still print an error message. Annotate the switch/case fallthrough in this case, to make this clear to the compiler. Signed-off-by: Andre Przywara Reviewed-by: Mattijs Korpershoek --- drivers/usb/gadget/f_thor.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/usb/gadget/f_thor.c b/drivers/usb/gadget/f_thor.c index 54372118348..540b9f88237 100644 --- a/drivers/usb/gadget/f_thor.c +++ b/drivers/usb/gadget/f_thor.c @@ -138,6 +138,7 @@ static int process_rqt_cmd(struct udevice *udc, const struct rqt_box *rqt) case RQT_CMD_POWEROFF: case RQT_CMD_EFSCLEAR: send_rsp(udc, rsp); + fallthrough; default: printf("Command not supported -> cmd: %d\n", rqt->rqt_data); return -EINVAL; From 26b2482f124ba831e40a44ea0cb093203fd8d747 Mon Sep 17 00:00:00 2001 From: Andre Przywara Date: Thu, 27 Mar 2025 15:32:59 +0000 Subject: [PATCH 04/16] use proper fallthrough annotations In some cases in the generic code, we were already using switch/case fallthrough annotations comments, though in a way which might not be understood by most compilers. Replace two non-standard /* no break */ comments with our fallthrough; statement-like macro, to make this visible to the compiler. Also use this macro in place of an /* Fall through */ comment, to be more consistent. Signed-off-by: Andre Przywara Reviewed-by: Tom Rini --- common/command.c | 2 +- lib/tiny-printf.c | 2 +- net/net.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/common/command.c b/common/command.c index 3f691399cbe..0f9dd06d72b 100644 --- a/common/command.c +++ b/common/command.c @@ -484,7 +484,7 @@ int cmd_get_data_size(const char *arg, int default_size) case 'q': if (MEM_SUPPORT_64BIT_DATA) return 8; - /* no break */ + fallthrough; default: return CMD_DATA_SIZE_ERR; } diff --git a/lib/tiny-printf.c b/lib/tiny-printf.c index 0503c17341f..b8fc8355c4a 100644 --- a/lib/tiny-printf.c +++ b/lib/tiny-printf.c @@ -282,7 +282,7 @@ static int _vprintf(struct printf_info *info, const char *fmt, va_list va) break; } islong = true; - /* no break */ + fallthrough; case 'x': if (islong) { num = va_arg(va, unsigned long); diff --git a/net/net.c b/net/net.c index 1828f1cca36..5219367e391 100644 --- a/net/net.c +++ b/net/net.c @@ -1559,7 +1559,7 @@ common: puts("*** ERROR: `ipaddr' not set\n"); return 1; } - /* Fall through */ + fallthrough; #ifdef CONFIG_CMD_RARP case RARP: From 06b1ebfe521d2729cd97db7dfed62469081f0ec3 Mon Sep 17 00:00:00 2001 From: Andre Przywara Date: Thu, 27 Mar 2025 15:33:01 +0000 Subject: [PATCH 05/16] fastboot: annotate switch/case fallthrough case The fastboot command handling uses an implicit switch/case fallthrough when receiving the OEM_CONSOLE command, but when this command is not enabled in Kconfig, to report this command as unknown. Add our "fallthrough;" statement-like macro before the default branch in the fastboot code, to avoid a warning when GCC's -Wimplicit-fallthrough warning option is enabled. Signed-off-by: Andre Przywara Reviewed-by: Mattijs Korpershoek --- drivers/fastboot/fb_command.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/fastboot/fb_command.c b/drivers/fastboot/fb_command.c index e4484d65aca..2cdbac50ac4 100644 --- a/drivers/fastboot/fb_command.c +++ b/drivers/fastboot/fb_command.c @@ -186,6 +186,7 @@ void fastboot_multiresponse(int cmd, char *response) } break; } + fallthrough; default: fastboot_fail("Unknown multiresponse command", response); break; From 5ddb7d1265633d855889831bcad0ee4b9ea4a0d3 Mon Sep 17 00:00:00 2001 From: Andre Przywara Date: Thu, 27 Mar 2025 15:33:02 +0000 Subject: [PATCH 06/16] net: sun8i-emac: annotate fallthrough The Allwinner sun8i EMAC driver uses an implicit switch/case fallthrough when setting up the MAC/PHY communication protocol, to handle the case when RMII is requested, but would not be supported by the hardware. Add our "fallthrough;" statement-like macro before the default branch in sun8i_emac_set_syscon(), to avoid a warning when GCC's -Wimplicit-fallthrough warning option is enabled. Signed-off-by: Andre Przywara --- drivers/net/sun8i_emac.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/sun8i_emac.c b/drivers/net/sun8i_emac.c index 0da182d9f4c..8433e7db265 100644 --- a/drivers/net/sun8i_emac.c +++ b/drivers/net/sun8i_emac.c @@ -335,6 +335,7 @@ static int sun8i_emac_set_syscon(struct sun8i_eth_pdata *pdata, reg |= SC_RMII_EN | SC_ETCS_EXT_GMII; break; } + fallthrough; default: debug("%s: Invalid PHY interface\n", __func__); return -EINVAL; From 921e4d480dff3206020eacd4873795d0e57d7c20 Mon Sep 17 00:00:00 2001 From: Andre Przywara Date: Thu, 27 Mar 2025 15:33:03 +0000 Subject: [PATCH 07/16] usb: ohci-hcd: annotate switch/case fallthrough The USB OCHI code uses an implicit switch/case fallthrough after checking for valid descriptor IDs. Add our "fallthrough;" statement-like macro before the default branch in the OHCI code, to avoid a warning when GCC's -Wimplicit-fallthrough warning option is enabled. Signed-off-by: Andre Przywara --- drivers/usb/host/ohci-hcd.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c index c020d13c43d..234a6f3645d 100644 --- a/drivers/usb/host/ohci-hcd.c +++ b/drivers/usb/host/ohci-hcd.c @@ -1361,7 +1361,8 @@ pkt_print(ohci, NULL, dev, pipe, buffer, transfer_len, wLength)); databuf = root_hub_str_index1; OK(len); - } + } + fallthrough; default: stat = USB_ST_STALLED; } From 4d108c884b5bd5cef13fa1eb11a65eefd4c48d3f Mon Sep 17 00:00:00 2001 From: Andre Przywara Date: Thu, 27 Mar 2025 15:33:04 +0000 Subject: [PATCH 08/16] usb: xhci: annotate switch/case fallthrough properly The USB XHCI code uses an implicit switch/case fallthrough to share code for handling full speed and low speed transfers. Add our "fallthrough;" statement-like macro before the second label in the XHCI code, to avoid a warning when GCC's -Wimplicit-fallthrough warning option is enabled. Signed-off-by: Andre Przywara Reviewed-by: Tom Rini --- drivers/usb/host/xhci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c index d30725d3fca..3ee1f67190f 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -352,7 +352,7 @@ static unsigned int xhci_get_endpoint_interval(struct usb_device *udev, * since it uses the same rules as low speed interrupt * endpoints. */ - + fallthrough; case USB_SPEED_LOW: if (usb_endpoint_xfer_int(endpt_desc) || usb_endpoint_xfer_isoc(endpt_desc)) { From 2c22efbb37b00fc353ffee56bf0b54c38639e08e Mon Sep 17 00:00:00 2001 From: Andre Przywara Date: Thu, 27 Mar 2025 15:33:05 +0000 Subject: [PATCH 09/16] video: annotate switch/case fall-through The generic DM video code uses an implicit switch/case fallthrough to provide fallback code paths when certain colour depths are not enabled. Add our "fallthrough;" statement-like macro to the video_fill() function to avoid a warning when GCC's -Wimplicit-fallthrough warning option is enabled. Signed-off-by: Andre Przywara Reviewed-by: Tom Rini --- drivers/video/video-uclass.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c index ff4f2199585..c684c994b61 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c @@ -245,6 +245,7 @@ int video_fill(struct udevice *dev, u32 colour) *ppix++ = colour; break; } + fallthrough; case VIDEO_BPP32: if (CONFIG_IS_ENABLED(VIDEO_BPP32)) { u32 *ppix = priv->fb; @@ -254,6 +255,7 @@ int video_fill(struct udevice *dev, u32 colour) *ppix++ = colour; break; } + fallthrough; default: memset(priv->fb, colour, priv->fb_size); break; From 960d3d933dbda88aed6d4fcf0711dbc7448ffd83 Mon Sep 17 00:00:00 2001 From: Andre Przywara Date: Thu, 27 Mar 2025 15:33:06 +0000 Subject: [PATCH 10/16] net: e1000: annotate switch/case fallthrough The E1000 driver uses an implicit switch/case fallthrough for sharing some code supporting different PHYs. Add our "fallthrough;" statement-like macro before the two labels in e1000_set_phy_type(), to avoid a warning when GCC's -Wimplicit-fallthrough warning option is enabled. Signed-off-by: Andre Przywara --- drivers/net/e1000.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/e1000.c b/drivers/net/e1000.c index 8f432b8637b..b77298070f8 100644 --- a/drivers/net/e1000.c +++ b/drivers/net/e1000.c @@ -4830,6 +4830,7 @@ static int e1000_set_phy_type (struct e1000_hw *hw) hw->phy_type = e1000_phy_igp; break; } + fallthrough; case IGP03E1000_E_PHY_ID: hw->phy_type = e1000_phy_igp_3; break; @@ -4843,6 +4844,7 @@ static int e1000_set_phy_type (struct e1000_hw *hw) hw->phy_type = e1000_phy_gg82563; break; } + fallthrough; case BME1000_E_PHY_ID: hw->phy_type = e1000_phy_bm; break; From 64bc0124581b49093f5c348f5debe8889a56fedd Mon Sep 17 00:00:00 2001 From: Andre Przywara Date: Thu, 27 Mar 2025 15:33:07 +0000 Subject: [PATCH 11/16] mtd: ubi: annotate fallthrough The UBI code uses an implicit switch/case fallthrough when handling two related cases of bad header errors. Also there is a switch/case for unit prefix handling (G/M/K), which accumulates multiplications. Add our "fallthrough;" statement-like macro before the respective labels in both cases, to avoid a warning when GCC's -Wimplicit-fallthrough warning option is enabled. Signed-off-by: Andre Przywara Reviewed-by: Heiko Schocher --- drivers/mtd/ubi/attach.c | 1 + drivers/mtd/ubi/build.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/drivers/mtd/ubi/attach.c b/drivers/mtd/ubi/attach.c index 2ef8fde3d32..306da509ec4 100644 --- a/drivers/mtd/ubi/attach.c +++ b/drivers/mtd/ubi/attach.c @@ -934,6 +934,7 @@ static int scan_peb(struct ubi_device *ubi, struct ubi_attach_info *ai, * be a result of power cut during erasure. */ ai->maybe_bad_peb_count += 1; + fallthrough; case UBI_IO_BAD_HDR: if (ec_err) /* diff --git a/drivers/mtd/ubi/build.c b/drivers/mtd/ubi/build.c index 104537784ab..50e43928af0 100644 --- a/drivers/mtd/ubi/build.c +++ b/drivers/mtd/ubi/build.c @@ -1400,12 +1400,15 @@ static int __init bytes_str_to_int(const char *str) switch (*endp) { case 'G': result *= 1024; + fallthrough; case 'M': result *= 1024; + fallthrough; case 'K': result *= 1024; if (endp[1] == 'i' && endp[2] == 'B') endp += 2; + fallthrough; case '\0': break; default: From bc3e28e11b7a8b0fb1765556642409e4006a33f7 Mon Sep 17 00:00:00 2001 From: Andre Przywara Date: Thu, 27 Mar 2025 15:33:08 +0000 Subject: [PATCH 12/16] arm: mach-k3: am62p: annotate switch/case fallthrough The MMC boot mode selection for the TI AM62P series of SoCs uses an implicit switch/case fallthrough for falling back to some default boot mode. Add our "fallthrough;" statement-like macro before the default branch in the code, to avoid a warning when GCC's -Wimplicit-fallthrough warning option is enabled. Signed-off-by: Andre Przywara Reviewed-by: Tom Rini --- arch/arm/mach-k3/am62px/am62p5_init.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm/mach-k3/am62px/am62p5_init.c b/arch/arm/mach-k3/am62px/am62p5_init.c index 14a46fa28d2..01e47deca94 100644 --- a/arch/arm/mach-k3/am62px/am62p5_init.c +++ b/arch/arm/mach-k3/am62px/am62p5_init.c @@ -266,6 +266,7 @@ u32 spl_mmc_boot_mode(struct mmc *mmc, const u32 boot_device) case BOOT_DEVICE_MMC: if (bootmode_cfg & MAIN_DEVSTAT_PRIMARY_MMC_FS_RAW_MASK) return MMCSD_MODE_RAW; + fallthrough; default: return MMCSD_MODE_FS; } From 452dfcc3b461c1bfbc2126623f42f551000a9ca3 Mon Sep 17 00:00:00 2001 From: Andre Przywara Date: Thu, 27 Mar 2025 15:33:09 +0000 Subject: [PATCH 13/16] mtd: spi-nor-tiny: annotate switch/case fallthrough The SPI NOR code uses an implicit switch/case fallthrough when checking different vendors to determine how to deal with extended addressig modes. Add our "fallthrough;" statement-like macro before some label in the 4-byte addressing mode code, to avoid a warning when GCC's -Wimplicit-fallthrough warning option is enabled. Signed-off-by: Andre Przywara Reviewed-by: Tom Rini --- drivers/mtd/spi/spi-nor-tiny.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/mtd/spi/spi-nor-tiny.c b/drivers/mtd/spi/spi-nor-tiny.c index 5755c5eed29..23de64a1520 100644 --- a/drivers/mtd/spi/spi-nor-tiny.c +++ b/drivers/mtd/spi/spi-nor-tiny.c @@ -219,6 +219,7 @@ static inline int set_4byte(struct spi_nor *nor, const struct flash_info *info, case SNOR_MFR_MICRON: /* Some Micron need WREN command; all will accept it */ need_wren = true; + fallthrough; case SNOR_MFR_MACRONIX: case SNOR_MFR_WINBOND: if (need_wren) From 3f61113c276ffe52380cec159b47e6024249ee2d Mon Sep 17 00:00:00 2001 From: Andre Przywara Date: Thu, 27 Mar 2025 15:33:10 +0000 Subject: [PATCH 14/16] mtd: rawnand: nand_base: annotate switch/case fallthrough The raw NAND flash code uses an implicit switch/case fallthrough to share code when dealing with different ECC modes, and also when handling some read command. Add our "fallthrough;" statement-like macro before the respective labels in the NAND code, to avoid a warning when GCC's -Wimplicit-fallthrough warning option is enabled. This copies the fallthrough annotations that the original kernel code gained, before this function got refactored there. Signed-off-by: Andre Przywara Reviewed-by: Michael Trimrachi --- drivers/mtd/nand/raw/nand_base.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_base.c index 1b65c6f6443..daf12807c67 100644 --- a/drivers/mtd/nand/raw/nand_base.c +++ b/drivers/mtd/nand/raw/nand_base.c @@ -774,6 +774,7 @@ static void nand_command_lp(struct mtd_info *mtd, unsigned int command, NAND_NCE | NAND_CTRL_CHANGE); /* This applies to read commands */ + fallthrough; default: /* * If we don't have access to the busy pin, we apply the given @@ -4974,6 +4975,7 @@ int nand_scan_tail(struct mtd_info *mtd) if (!ecc->read_page) ecc->read_page = nand_read_page_hwecc_oob_first; + fallthrough; case NAND_ECC_HW: /* Use standard hwecc read page function? */ if (!ecc->read_page) @@ -4993,6 +4995,7 @@ int nand_scan_tail(struct mtd_info *mtd) if (!ecc->write_subpage && ecc->hwctl && ecc->calculate) ecc->write_subpage = nand_write_subpage_hwecc; + fallthrough; case NAND_ECC_HW_SYNDROME: if ((!ecc->calculate || !ecc->correct || !ecc->hwctl) && (!ecc->read_page || @@ -5027,6 +5030,7 @@ int nand_scan_tail(struct mtd_info *mtd) ecc->size, mtd->writesize); ecc->mode = NAND_ECC_SOFT; + fallthrough; case NAND_ECC_SOFT: ecc->calculate = nand_calculate_ecc; ecc->correct = nand_correct_data; From d29a90c8ce4a2e27f502f5ac5a051f7bcfd66e11 Mon Sep 17 00:00:00 2001 From: Andre Przywara Date: Thu, 27 Mar 2025 15:33:11 +0000 Subject: [PATCH 15/16] cmd: pmic: annotate switch/case fallthrough The argument parsing code in the pmic command uses an implicit switch/case fallthrough to handle the common part of having one or two arguments. Add our "fallthrough;" statement-like macro before the second branch in the parsing code, to avoid a warning when GCC's -Wimplicit-fallthrough warning option is enabled. Signed-off-by: Andre Przywara Reviewed-by: Tom Rini --- cmd/pmic.c | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/pmic.c b/cmd/pmic.c index 3ad1b8aa375..e5fc8f97b75 100644 --- a/cmd/pmic.c +++ b/cmd/pmic.c @@ -34,6 +34,7 @@ static int do_dev(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) printf("Can't get PMIC: %s!\n", name); return failure(ret); } + fallthrough; case 1: if (!currdev) { printf("PMIC device is not set!\n\n"); From 9ce2986e7e57277bac3c528412c0bb4443b7003a Mon Sep 17 00:00:00 2001 From: Andre Przywara Date: Thu, 27 Mar 2025 15:33:12 +0000 Subject: [PATCH 16/16] cmd: spl: annotate switch/case fallthrough The argument parsing in the SPL configuration command uses an implicit switch/case fallthrough when dealing with a different number of arguments. Add our "fallthrough;" statement-like macro before the respective labels in the bootm code, to avoid a warning when GCC's -Wimplicit-fallthrough warning option is enabled. Signed-off-by: Andre Przywara Reviewed-by: Tom Rini --- cmd/spl.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmd/spl.c b/cmd/spl.c index 76fe33762df..379b512f1ff 100644 --- a/cmd/spl.c +++ b/cmd/spl.c @@ -60,8 +60,10 @@ static int call_bootm(int argc, char *const argv[], const char *subcommand[]) switch (argc) { case 3: bootm_argv[4] = argv[2]; /* fdt addr */ + fallthrough; case 2: bootm_argv[3] = argv[1]; /* initrd addr */ + fallthrough; case 1: bootm_argv[2] = argv[0]; /* kernel addr */ }