Hi all, After merging the bitmap tree, today's linux-next build (x86_64 allmodconfig) failed like this: drivers/mtd/nand/raw/sunxi_nand.c:33:9: error: "field_get" redefined [-Werror] 33 | #define field_get(_mask, _reg) (((_reg) & (_mask)) >> (ffs(_mask) - 1)) | ^~~~~~~~~ In file included from include/linux/fortify-string.h:5, from include/linux/string.h:386, from include/linux/bitmap.h:13, from include/linux/cpumask.h:11, from arch/x86/include/asm/paravirt.h:21, from arch/x86/include/asm/cpuid/api.h:57, from arch/x86/include/asm/processor.h:19, from include/linux/sched.h:13, from include/linux/ratelimit.h:6, from include/linux/dev_printk.h:16, from include/linux/device.h:15, from include/linux/dma-mapping.h:5, from drivers/mtd/nand/raw/sunxi_nand.c:16: include/linux/bitfield.h:298:9: note: this is the location of the previous definition 298 | #define field_get(mask, reg) \ | ^~~~~~~~~ drivers/mtd/nand/raw/sunxi_nand.c:34:9: error: "field_prep" redefined [-Werror] 34 | #define field_prep(_mask, _val) (((_val) << (ffs(_mask) - 1)) & (_mask)) | ^~~~~~~~~~ include/linux/bitfield.h:278:9: note: this is the location of the previous definition 278 | #define field_prep(mask, val) \ | ^~~~~~~~~~ cc1: all warnings being treated as errors Caused by commit c1c6ab80b25c ("bitfield: Add non-constant field_{prep,get}() helpers") interacting with commits d21b4338159f ("mtd: rawnand: sunxi: introduce ecc_mode_mask in sunxi_nfc_caps") 6fc2619af1eb ("mtd: rawnand: sunxi: rework pattern found registers") from the nand tree. I have applied the following hack for today. From: Stephen Rothwell Date: Tue, 25 Nov 2025 17:47:46 +1100 Subject: [PATCH] fix up for "bitfield: Add non-constant field_{prep,get}() helpers" interacting with commits d21b4338159f ("mtd: rawnand: sunxi: introduce ecc_mode_mask in sunxi_nfc_caps") 6fc2619af1eb ("mtd: rawnand: sunxi: rework pattern found registers") from the nand tree. Signed-off-by: Stephen Rothwell --- drivers/mtd/nand/raw/sunxi_nand.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/mtd/nand/raw/sunxi_nand.c b/drivers/mtd/nand/raw/sunxi_nand.c index 031ab651c5a8..b940eb5cf79a 100644 --- a/drivers/mtd/nand/raw/sunxi_nand.c +++ b/drivers/mtd/nand/raw/sunxi_nand.c @@ -30,8 +30,8 @@ #include /* non compile-time field get/prep */ -#define field_get(_mask, _reg) (((_reg) & (_mask)) >> (ffs(_mask) - 1)) -#define field_prep(_mask, _val) (((_val) << (ffs(_mask) - 1)) & (_mask)) +#define sunxi_field_get(_mask, _reg) (((_reg) & (_mask)) >> (ffs(_mask) - 1)) +#define sunxi_field_prep(_mask, _val) (((_val) << (ffs(_mask) - 1)) & (_mask)) #define NFC_REG_CTL 0x0000 #define NFC_REG_ST 0x0004 @@ -185,7 +185,7 @@ #define NFC_RANDOM_EN(nfc) (nfc->caps->random_en_mask) #define NFC_RANDOM_DIRECTION(nfc) (nfc->caps->random_dir_mask) #define NFC_ECC_MODE_MSK(nfc) (nfc->caps->ecc_mode_mask) -#define NFC_ECC_MODE(nfc, x) field_prep(NFC_ECC_MODE_MSK(nfc), (x)) +#define NFC_ECC_MODE(nfc, x) sunxi_field_prep(NFC_ECC_MODE_MSK(nfc), (x)) /* RANDOM_PAGE_SIZE: 0: ECC block size 1: page size */ #define NFC_A23_RANDOM_PAGE_SIZE BIT(11) #define NFC_H6_RANDOM_PAGE_SIZE BIT(7) @@ -879,7 +879,7 @@ static void sunxi_nfc_set_user_data_len(struct sunxi_nfc *nfc, val = readl(nfc->regs + NFC_REG_USER_DATA_LEN(nfc, step)); val &= ~NFC_USER_DATA_LEN_MSK(step); - val |= field_prep(NFC_USER_DATA_LEN_MSK(step), i); + val |= sunxi_field_prep(NFC_USER_DATA_LEN_MSK(step), i); writel(val, nfc->regs + NFC_REG_USER_DATA_LEN(nfc, step)); } @@ -992,7 +992,7 @@ static int sunxi_nfc_hw_ecc_read_chunk(struct nand_chip *nand, *cur_off = oob_off + ecc->bytes + USER_DATA_SZ; pattern_found = readl(nfc->regs + nfc->caps->reg_pat_found); - pattern_found = field_get(NFC_ECC_PAT_FOUND_MSK(nfc), pattern_found); + pattern_found = sunxi_field_get(NFC_ECC_PAT_FOUND_MSK(nfc), pattern_found); ret = sunxi_nfc_hw_ecc_correct(nand, data, oob_required ? oob : NULL, 0, readl(nfc->regs + NFC_REG_ECC_ST), @@ -1121,7 +1121,7 @@ static int sunxi_nfc_hw_ecc_read_chunks_dma(struct nand_chip *nand, uint8_t *buf status = readl(nfc->regs + NFC_REG_ECC_ST); pattern_found = readl(nfc->regs + nfc->caps->reg_pat_found); - pattern_found = field_get(NFC_ECC_PAT_FOUND_MSK(nfc), pattern_found); + pattern_found = sunxi_field_get(NFC_ECC_PAT_FOUND_MSK(nfc), pattern_found); for (i = 0; i < nchunks; i++) { int data_off = i * ecc->size; -- 2.52.0 -- Cheers, Stephen Rothwell