Hi Lorenzo, kernel test robot noticed the following build errors: [auto build test ERROR on next-20240416] [cannot apply to broonie-spi/for-next robh/for-next arm/for-next arm/fixes arm64/for-next/core kvmarm/next rockchip/for-next shawnguo/for-next soc/for-next linus/master v6.9-rc4 v6.9-rc3 v6.9-rc2 v6.9-rc4] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch#_base_tree_information] url: https://github.com/intel-lab-lkp/linux/commits/Lorenzo-Bianconi/dt-bindings-spi-airoha-Add-YAML-schema-for-SNFI-controller/20240417-144847 base: next-20240416 patch link: https://lore.kernel.org/r/25dd4334e3b37eaa628c20265841f251968c2b75.1713335916.git.lorenzo%40kernel.org patch subject: [PATCH v2 3/3] spi: airoha: add SPI-NAND Flash controller driver config: hexagon-allyesconfig (https://download.01.org/0day-ci/archive/20240418/202404182252.YtOmaTWG-lkp@xxxxxxxxx/config) compiler: clang version 19.0.0git (https://github.com/llvm/llvm-project 7089c359a3845323f6f30c44a47dd901f2edfe63) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240418/202404182252.YtOmaTWG-lkp@xxxxxxxxx/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202404182252.YtOmaTWG-lkp@xxxxxxxxx/ All errors (new ones prefixed by >>): In file included from drivers/spi/spi-airoha-snfi.c:10: In file included from include/linux/dma-mapping.h:11: In file included from include/linux/scatterlist.h:8: In file included from include/linux/mm.h:2254: include/linux/vmstat.h:514:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion] 514 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_" | ~~~~~~~~~~~ ^ ~~~ In file included from drivers/spi/spi-airoha-snfi.c:10: In file included from include/linux/dma-mapping.h:11: In file included from include/linux/scatterlist.h:9: In file included from arch/hexagon/include/asm/io.h:328: include/asm-generic/io.h:548:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 548 | val = __raw_readb(PCI_IOBASE + addr); | ~~~~~~~~~~ ^ include/asm-generic/io.h:561:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 561 | val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr)); | ~~~~~~~~~~ ^ include/uapi/linux/byteorder/little_endian.h:37:51: note: expanded from macro '__le16_to_cpu' 37 | #define __le16_to_cpu(x) ((__force __u16)(__le16)(x)) | ^ In file included from drivers/spi/spi-airoha-snfi.c:10: In file included from include/linux/dma-mapping.h:11: In file included from include/linux/scatterlist.h:9: In file included from arch/hexagon/include/asm/io.h:328: include/asm-generic/io.h:574:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 574 | val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr)); | ~~~~~~~~~~ ^ include/uapi/linux/byteorder/little_endian.h:35:51: note: expanded from macro '__le32_to_cpu' 35 | #define __le32_to_cpu(x) ((__force __u32)(__le32)(x)) | ^ In file included from drivers/spi/spi-airoha-snfi.c:10: In file included from include/linux/dma-mapping.h:11: In file included from include/linux/scatterlist.h:9: In file included from arch/hexagon/include/asm/io.h:328: include/asm-generic/io.h:585:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 585 | __raw_writeb(value, PCI_IOBASE + addr); | ~~~~~~~~~~ ^ include/asm-generic/io.h:595:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 595 | __raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr); | ~~~~~~~~~~ ^ include/asm-generic/io.h:605:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] 605 | __raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr); | ~~~~~~~~~~ ^ >> drivers/spi/spi-airoha-snfi.c:233:7: error: call to undeclared function 'FIELD_PREP'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 233 | FIELD_PREP(SPI_CTRL_OPFIFO_LEN, op_len) | | ^ drivers/spi/spi-airoha-snfi.c:281:8: error: call to undeclared function 'FIELD_PREP'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 281 | FIELD_PREP(SPI_CTRL_DFIFO_WDATA, data[i])); | ^ >> drivers/spi/spi-airoha-snfi.c:320:12: error: call to undeclared function 'FIELD_GET'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 320 | ptr[i] = FIELD_GET(SPI_CTRL_DFIFO_RDATA, val); | ^ drivers/spi/spi-airoha-snfi.c:487:9: error: call to undeclared function 'FIELD_PREP'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 487 | val = FIELD_PREP(SPI_NFI_SPARE_SIZE, 0x1); | ^ drivers/spi/spi-airoha-snfi.c:507:9: error: call to undeclared function 'FIELD_PREP'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 507 | val = FIELD_PREP(SPI_NFI_PAGE_SIZE, 0x1); | ^ drivers/spi/spi-airoha-snfi.c:523:8: error: call to undeclared function 'FIELD_PREP'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 523 | val = FIELD_PREP(SPI_NFI_SEC_NUM, as_ctrl->nfi_cfg.sec_num); | ^ drivers/spi/spi-airoha-snfi.c:694:8: error: call to undeclared function 'FIELD_PREP'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 694 | val = FIELD_PREP(SPI_NFI_READ_DATA_BYTE_NUM, val); | ^ drivers/spi/spi-airoha-snfi.c:819:8: error: call to undeclared function 'FIELD_PREP'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 819 | val = FIELD_PREP(SPI_NFI_PROG_LOAD_BYTE_NUM, val); | ^ drivers/spi/spi-airoha-snfi.c:1034:12: error: call to undeclared function 'FIELD_GET'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] 1034 | sec_num = FIELD_GET(SPI_NFI_SEC_NUM, val); | ^ 7 warnings and 9 errors generated. vim +/FIELD_PREP +233 drivers/spi/spi-airoha-snfi.c 225 226 static int airoha_snand_set_fifo_op(struct airoha_snand_ctrl *as_ctrl, 227 u8 op_cmd, int op_len) 228 { 229 int err; 230 u32 val; 231 232 err = regmap_write(as_ctrl->regmap_ctrl, REG_SPI_CTRL_OPFIFO_WDATA, > 233 FIELD_PREP(SPI_CTRL_OPFIFO_LEN, op_len) | 234 FIELD_PREP(SPI_CTRL_OPFIFO_OP, op_cmd)); 235 if (err) 236 return err; 237 238 err = regmap_read_poll_timeout(as_ctrl->regmap_ctrl, 239 REG_SPI_CTRL_OPFIFO_FULL, 240 val, !(val & SPI_CTRL_OPFIFO_FULL), 241 0, 250 * USEC_PER_MSEC); 242 if (err) 243 return err; 244 245 err = regmap_write(as_ctrl->regmap_ctrl, REG_SPI_CTRL_OPFIFO_WR, 246 SPI_CTRL_OPFIFO_WR); 247 if (err) 248 return err; 249 250 return regmap_read_poll_timeout(as_ctrl->regmap_ctrl, 251 REG_SPI_CTRL_OPFIFO_EMPTY, 252 val, (val & SPI_CTRL_OPFIFO_EMPTY), 253 0, 250 * USEC_PER_MSEC); 254 } 255 256 static int airoha_snand_set_cs(struct airoha_snand_ctrl *as_ctrl, u8 cs) 257 { 258 return airoha_snand_set_fifo_op(as_ctrl, cs, sizeof(cs)); 259 } 260 261 static int airoha_snand_write_data_to_fifo(struct airoha_snand_ctrl *as_ctrl, 262 const u8 *data, int len) 263 { 264 int i; 265 266 for (i = 0; i < len; i++) { 267 int err; 268 u32 val; 269 270 /* 1. Wait until dfifo is not full */ 271 err = regmap_read_poll_timeout(as_ctrl->regmap_ctrl, 272 REG_SPI_CTRL_DFIFO_FULL, val, 273 !(val & SPI_CTRL_DFIFO_FULL), 274 0, 250 * USEC_PER_MSEC); 275 if (err) 276 return err; 277 278 /* 2. Write data to register DFIFO_WDATA */ 279 err = regmap_write(as_ctrl->regmap_ctrl, 280 REG_SPI_CTRL_DFIFO_WDATA, 281 FIELD_PREP(SPI_CTRL_DFIFO_WDATA, data[i])); 282 if (err) 283 return err; 284 285 /* 3. Wait until dfifo is not full */ 286 err = regmap_read_poll_timeout(as_ctrl->regmap_ctrl, 287 REG_SPI_CTRL_DFIFO_FULL, val, 288 !(val & SPI_CTRL_DFIFO_FULL), 289 0, 250 * USEC_PER_MSEC); 290 if (err) 291 return err; 292 } 293 294 return 0; 295 } 296 297 static int airoha_snand_read_data_from_fifo(struct airoha_snand_ctrl *as_ctrl, 298 u8 *ptr, int len) 299 { 300 int i; 301 302 for (i = 0; i < len; i++) { 303 int err; 304 u32 val; 305 306 /* 1. wait until dfifo is not empty */ 307 err = regmap_read_poll_timeout(as_ctrl->regmap_ctrl, 308 REG_SPI_CTRL_DFIFO_EMPTY, val, 309 !(val & SPI_CTRL_DFIFO_EMPTY), 310 0, 250 * USEC_PER_MSEC); 311 if (err) 312 return err; 313 314 /* 2. read from dfifo to register DFIFO_RDATA */ 315 err = regmap_read(as_ctrl->regmap_ctrl, 316 REG_SPI_CTRL_DFIFO_RDATA, &val); 317 if (err) 318 return err; 319 > 320 ptr[i] = FIELD_GET(SPI_CTRL_DFIFO_RDATA, val); 321 /* 3. enable register DFIFO_RD to read next byte */ 322 err = regmap_write(as_ctrl->regmap_ctrl, 323 REG_SPI_CTRL_DFIFO_RD, SPI_CTRL_DFIFO_RD); 324 if (err) 325 return err; 326 } 327 328 return 0; 329 } 330 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki