Hi Andy, I love your patch! Perhaps something to improve: [auto build test WARNING on soc/for-next] [also build test WARNING on linus/master v6.0 next-20221005] [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/Andy-Shevchenko/device-property-Introduce-fwnode_device_is_compatible-helper/20221005-223919 base: https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git for-next config: mips-randconfig-r015-20221003 compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 791a7ae1ba3efd6bca96338e10ffde557ba83920) reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # install mips cross compiling tool for clang build # apt-get install binutils-mips-linux-gnu # https://github.com/intel-lab-lkp/linux/commit/b930d58084d15cbf92f0cd490ad05e843991bd8e git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Andy-Shevchenko/device-property-Introduce-fwnode_device_is_compatible-helper/20221005-223919 git checkout b930d58084d15cbf92f0cd490ad05e843991bd8e # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=mips SHELL=/bin/bash drivers/gpio/ drivers/gpu/drm/exynos/ drivers/input/touchscreen/ drivers/iommu/ drivers/irqchip/ drivers/mmc/core/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot All warnings (new ones prefixed by >>): In file included from drivers/gpio/gpio-mxc.c:16: In file included from include/linux/irqdomain.h:35: In file included from include/linux/of.h:22: include/linux/property.h:56:9: error: call to undeclared function 'fwnode_property_match_string'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] return fwnode_property_match_string(fwnode, "compatible", compat) >= 0; ^ include/linux/property.h:56:9: note: did you mean 'device_property_match_string'? include/linux/property.h:50:5: note: 'device_property_match_string' declared here int device_property_match_string(struct device *dev, ^ include/linux/property.h:54:6: warning: no previous prototype for function 'fwnode_device_is_compatible' [-Wmissing-prototypes] bool fwnode_device_is_compatible(const struct fwnode_handle *fwnode, const char *compat) ^ include/linux/property.h:54:1: note: declare 'static' if the function is not intended to be used outside of this translation unit bool fwnode_device_is_compatible(const struct fwnode_handle *fwnode, const char *compat) ^ static >> drivers/gpio/gpio-mxc.c:341:50: warning: shift count >= width of type [-Wshift-count-overflow] rv = devm_irq_setup_generic_chip(port->dev, gc, IRQ_MSK(32), ^~~~~~~~~~~ include/linux/irq.h:1193:41: note: expanded from macro 'IRQ_MSK' #define IRQ_MSK(n) (u32)((n) < 32 ? ((1 << (n)) - 1) : UINT_MAX) ^ ~~~ 2 warnings and 1 error generated. -- In file included from drivers/gpio/gpio-mxs.c:14: In file included from include/linux/irqdomain.h:35: In file included from include/linux/of.h:22: include/linux/property.h:56:9: error: call to undeclared function 'fwnode_property_match_string'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] return fwnode_property_match_string(fwnode, "compatible", compat) >= 0; ^ include/linux/property.h:56:9: note: did you mean 'device_property_match_string'? include/linux/property.h:50:5: note: 'device_property_match_string' declared here int device_property_match_string(struct device *dev, ^ include/linux/property.h:54:6: warning: no previous prototype for function 'fwnode_device_is_compatible' [-Wmissing-prototypes] bool fwnode_device_is_compatible(const struct fwnode_handle *fwnode, const char *compat) ^ include/linux/property.h:54:1: note: declare 'static' if the function is not intended to be used outside of this translation unit bool fwnode_device_is_compatible(const struct fwnode_handle *fwnode, const char *compat) ^ static >> drivers/gpio/gpio-mxs.c:225:50: warning: shift count >= width of type [-Wshift-count-overflow] rv = devm_irq_setup_generic_chip(port->dev, gc, IRQ_MSK(32), ^~~~~~~~~~~ include/linux/irq.h:1193:41: note: expanded from macro 'IRQ_MSK' #define IRQ_MSK(n) (u32)((n) < 32 ? ((1 << (n)) - 1) : UINT_MAX) ^ ~~~ 2 warnings and 1 error generated. -- In file included from drivers/iommu/rockchip-iommu.c:17: In file included from include/linux/iommu.h:15: In file included from include/linux/of.h:22: include/linux/property.h:56:9: error: call to undeclared function 'fwnode_property_match_string'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] return fwnode_property_match_string(fwnode, "compatible", compat) >= 0; ^ include/linux/property.h:56:9: note: did you mean 'device_property_match_string'? include/linux/property.h:50:5: note: 'device_property_match_string' declared here int device_property_match_string(struct device *dev, ^ include/linux/property.h:54:6: warning: no previous prototype for function 'fwnode_device_is_compatible' [-Wmissing-prototypes] bool fwnode_device_is_compatible(const struct fwnode_handle *fwnode, const char *compat) ^ include/linux/property.h:54:1: note: declare 'static' if the function is not intended to be used outside of this translation unit bool fwnode_device_is_compatible(const struct fwnode_handle *fwnode, const char *compat) ^ static >> drivers/iommu/rockchip-iommu.c:1097:46: warning: implicit conversion from 'unsigned long long' to 'dma_addr_t' (aka 'unsigned int') changes value from 18446744073709551615 to 4294967295 [-Wconstant-conversion] rk_domain->domain.geometry.aperture_end = DMA_BIT_MASK(32); ~ ^~~~~~~~~~~~~~~~ include/linux/dma-mapping.h:76:40: note: expanded from macro 'DMA_BIT_MASK' #define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1)) ^~~~~ 2 warnings and 1 error generated. -- In file included from drivers/input/touchscreen/fsl-imx25-tcq.c:16: In file included from include/linux/of.h:22: include/linux/property.h:56:9: error: call to undeclared function 'fwnode_property_match_string'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] return fwnode_property_match_string(fwnode, "compatible", compat) >= 0; ^ include/linux/property.h:56:9: note: did you mean 'device_property_match_string'? include/linux/property.h:50:5: note: 'device_property_match_string' declared here int device_property_match_string(struct device *dev, ^ include/linux/property.h:54:6: warning: no previous prototype for function 'fwnode_device_is_compatible' [-Wmissing-prototypes] bool fwnode_device_is_compatible(const struct fwnode_handle *fwnode, const char *compat) ^ include/linux/property.h:54:1: note: declare 'static' if the function is not intended to be used outside of this translation unit bool fwnode_device_is_compatible(const struct fwnode_handle *fwnode, const char *compat) ^ static >> drivers/input/touchscreen/fsl-imx25-tcq.c:148:8: warning: shift count is negative [-Wshift-count-negative] MX25_ADCQ_ITEM(0, MX25_CFG_PRECHARGE) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/mfd/imx25-tsadc.h:54:3: note: expanded from macro 'MX25_ADCQ_ITEM' _MX25_ADCQ_ITEM((item) - 8, (x)) : _MX25_ADCQ_ITEM((item), (x))) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/mfd/imx25-tsadc.h:52:39: note: expanded from macro '_MX25_ADCQ_ITEM' #define _MX25_ADCQ_ITEM(item, x) ((x) << ((item) * 4)) ^ ~~~~~~~~~~~~ drivers/input/touchscreen/fsl-imx25-tcq.c:149:8: warning: shift count is negative [-Wshift-count-negative] MX25_ADCQ_ITEM(1, MX25_CFG_TOUCH_DETECT) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/mfd/imx25-tsadc.h:54:3: note: expanded from macro 'MX25_ADCQ_ITEM' _MX25_ADCQ_ITEM((item) - 8, (x)) : _MX25_ADCQ_ITEM((item), (x))) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/mfd/imx25-tsadc.h:52:39: note: expanded from macro '_MX25_ADCQ_ITEM' #define _MX25_ADCQ_ITEM(item, x) ((x) << ((item) * 4)) ^ ~~~~~~~~~~~~ drivers/input/touchscreen/fsl-imx25-tcq.c:150:8: warning: shift count is negative [-Wshift-count-negative] MX25_ADCQ_ITEM(2, MX25_CFG_X_MEASUREMENT) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/mfd/imx25-tsadc.h:54:3: note: expanded from macro 'MX25_ADCQ_ITEM' _MX25_ADCQ_ITEM((item) - 8, (x)) : _MX25_ADCQ_ITEM((item), (x))) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/mfd/imx25-tsadc.h:52:39: note: expanded from macro '_MX25_ADCQ_ITEM' #define _MX25_ADCQ_ITEM(item, x) ((x) << ((item) * 4)) ^ ~~~~~~~~~~~~ drivers/input/touchscreen/fsl-imx25-tcq.c:151:8: warning: shift count is negative [-Wshift-count-negative] MX25_ADCQ_ITEM(3, MX25_CFG_Y_MEASUREMENT) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/mfd/imx25-tsadc.h:54:3: note: expanded from macro 'MX25_ADCQ_ITEM' _MX25_ADCQ_ITEM((item) - 8, (x)) : _MX25_ADCQ_ITEM((item), (x))) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/mfd/imx25-tsadc.h:52:39: note: expanded from macro '_MX25_ADCQ_ITEM' #define _MX25_ADCQ_ITEM(item, x) ((x) << ((item) * 4)) ^ ~~~~~~~~~~~~ drivers/input/touchscreen/fsl-imx25-tcq.c:152:8: warning: shift count is negative [-Wshift-count-negative] MX25_ADCQ_ITEM(4, MX25_CFG_PRECHARGE) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/mfd/imx25-tsadc.h:54:3: note: expanded from macro 'MX25_ADCQ_ITEM' _MX25_ADCQ_ITEM((item) - 8, (x)) : _MX25_ADCQ_ITEM((item), (x))) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/mfd/imx25-tsadc.h:52:39: note: expanded from macro '_MX25_ADCQ_ITEM' #define _MX25_ADCQ_ITEM(item, x) ((x) << ((item) * 4)) ^ ~~~~~~~~~~~~ drivers/input/touchscreen/fsl-imx25-tcq.c:153:8: warning: shift count is negative [-Wshift-count-negative] MX25_ADCQ_ITEM(5, MX25_CFG_TOUCH_DETECT)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/mfd/imx25-tsadc.h:54:3: note: expanded from macro 'MX25_ADCQ_ITEM' _MX25_ADCQ_ITEM((item) - 8, (x)) : _MX25_ADCQ_ITEM((item), (x))) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/mfd/imx25-tsadc.h:52:39: note: expanded from macro '_MX25_ADCQ_ITEM' #define _MX25_ADCQ_ITEM(item, x) ((x) << ((item) * 4)) ^ ~~~~~~~~~~~~ 7 warnings and 1 error generated. -- In file included from drivers/irqchip/irq-ingenic-tcu.c:9: In file included from include/linux/irqchip.h:14: In file included from include/linux/acpi.h:13: In file included from include/linux/irqdomain.h:35: In file included from include/linux/of.h:22: include/linux/property.h:56:9: error: call to undeclared function 'fwnode_property_match_string'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] return fwnode_property_match_string(fwnode, "compatible", compat) >= 0; ^ include/linux/property.h:56:9: note: did you mean 'device_property_match_string'? include/linux/property.h:50:5: note: 'device_property_match_string' declared here int device_property_match_string(struct device *dev, ^ include/linux/property.h:54:6: warning: no previous prototype for function 'fwnode_device_is_compatible' [-Wmissing-prototypes] bool fwnode_device_is_compatible(const struct fwnode_handle *fwnode, const char *compat) ^ include/linux/property.h:54:1: note: declare 'static' if the function is not intended to be used outside of this translation unit bool fwnode_device_is_compatible(const struct fwnode_handle *fwnode, const char *compat) ^ static >> drivers/irqchip/irq-ingenic-tcu.c:135:21: warning: shift count >= width of type [-Wshift-count-overflow] gc->wake_enabled = IRQ_MSK(32); ^~~~~~~~~~~ include/linux/irq.h:1193:41: note: expanded from macro 'IRQ_MSK' #define IRQ_MSK(n) (u32)((n) < 32 ? ((1 << (n)) - 1) : UINT_MAX) ^ ~~~ drivers/irqchip/irq-ingenic-tcu.c:147:39: warning: shift count >= width of type [-Wshift-count-overflow] regmap_write(tcu->map, TCU_REG_TMSR, IRQ_MSK(32)); ^~~~~~~~~~~ include/linux/irq.h:1193:41: note: expanded from macro 'IRQ_MSK' #define IRQ_MSK(n) (u32)((n) < 32 ? ((1 << (n)) - 1) : UINT_MAX) ^ ~~~ 3 warnings and 1 error generated. -- In file included from drivers/gpu/drm/exynos/exynos_drm_dma.c:9: In file included from include/linux/iommu.h:15: In file included from include/linux/of.h:22: include/linux/property.h:56:9: error: call to undeclared function 'fwnode_property_match_string'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] return fwnode_property_match_string(fwnode, "compatible", compat) >= 0; ^ include/linux/property.h:56:9: note: did you mean 'device_property_match_string'? include/linux/property.h:50:5: note: 'device_property_match_string' declared here int device_property_match_string(struct device *dev, ^ include/linux/property.h:54:6: warning: no previous prototype for function 'fwnode_device_is_compatible' [-Wmissing-prototypes] bool fwnode_device_is_compatible(const struct fwnode_handle *fwnode, const char *compat) ^ include/linux/property.h:54:1: note: declare 'static' if the function is not intended to be used outside of this translation unit bool fwnode_device_is_compatible(const struct fwnode_handle *fwnode, const char *compat) ^ static >> drivers/gpu/drm/exynos/exynos_drm_dma.c:55:35: warning: implicit conversion from 'unsigned long long' to 'unsigned int' changes value from 18446744073709551615 to 4294967295 [-Wconstant-conversion] dma_set_max_seg_size(subdrv_dev, DMA_BIT_MASK(32)); ~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~ include/linux/dma-mapping.h:76:40: note: expanded from macro 'DMA_BIT_MASK' #define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1)) ^~~~~ 2 warnings and 1 error generated. -- In file included from drivers/mmc/core/mmc.c:11: In file included from include/linux/of.h:22: include/linux/property.h:56:9: error: call to undeclared function 'fwnode_property_match_string'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] return fwnode_property_match_string(fwnode, "compatible", compat) >= 0; ^ include/linux/property.h:56:9: note: did you mean 'device_property_match_string'? include/linux/property.h:50:5: note: 'device_property_match_string' declared here int device_property_match_string(struct device *dev, ^ include/linux/property.h:54:6: warning: no previous prototype for function 'fwnode_device_is_compatible' [-Wmissing-prototypes] bool fwnode_device_is_compatible(const struct fwnode_handle *fwnode, const char *compat) ^ include/linux/property.h:54:1: note: declare 'static' if the function is not intended to be used outside of this translation unit bool fwnode_device_is_compatible(const struct fwnode_handle *fwnode, const char *compat) ^ static >> drivers/mmc/core/mmc.c:115:22: warning: shift count >= width of type [-Wshift-count-overflow] card->cid.serial = UNSTUFF_BITS(resp, 16, 32); ^~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/mmc/core/mmc.c:57:39: note: expanded from macro 'UNSTUFF_BITS' const u32 __mask = (__size < 32 ? 1 << __size : 0) - 1; \ ^ ~~~~~~ 2 warnings and 1 error generated. vim +341 drivers/gpio/gpio-mxc.c a3484ffd2acc196 arch/arm/plat-mxc/gpio.c Dinh Nguyen 2010-10-23 318 9e26b0b114adb32 drivers/gpio/gpio-mxc.c Peng Fan 2015-08-23 319 static int mxc_gpio_init_gc(struct mxc_gpio_port *port, int irq_base) e4ea933363d39b5 drivers/gpio/gpio-mxc.c Shawn Guo 2011-06-07 320 { e4ea933363d39b5 drivers/gpio/gpio-mxc.c Shawn Guo 2011-06-07 321 struct irq_chip_generic *gc; e4ea933363d39b5 drivers/gpio/gpio-mxc.c Shawn Guo 2011-06-07 322 struct irq_chip_type *ct; db5270acaae5b6d drivers/gpio/gpio-mxc.c Bartosz Golaszewski 2017-08-09 323 int rv; e4ea933363d39b5 drivers/gpio/gpio-mxc.c Shawn Guo 2011-06-07 324 db5270acaae5b6d drivers/gpio/gpio-mxc.c Bartosz Golaszewski 2017-08-09 325 gc = devm_irq_alloc_generic_chip(port->dev, "gpio-mxc", 1, irq_base, e4ea933363d39b5 drivers/gpio/gpio-mxc.c Shawn Guo 2011-06-07 326 port->base, handle_level_irq); 9e26b0b114adb32 drivers/gpio/gpio-mxc.c Peng Fan 2015-08-23 327 if (!gc) 9e26b0b114adb32 drivers/gpio/gpio-mxc.c Peng Fan 2015-08-23 328 return -ENOMEM; e4ea933363d39b5 drivers/gpio/gpio-mxc.c Shawn Guo 2011-06-07 329 gc->private = port; e4ea933363d39b5 drivers/gpio/gpio-mxc.c Shawn Guo 2011-06-07 330 e4ea933363d39b5 drivers/gpio/gpio-mxc.c Shawn Guo 2011-06-07 331 ct = gc->chip_types; 591567a5ea25852 drivers/gpio/gpio-mxc.c Shawn Guo 2011-07-19 332 ct->chip.irq_ack = irq_gc_ack_set_bit; e4ea933363d39b5 drivers/gpio/gpio-mxc.c Shawn Guo 2011-06-07 333 ct->chip.irq_mask = irq_gc_mask_clr_bit; e4ea933363d39b5 drivers/gpio/gpio-mxc.c Shawn Guo 2011-06-07 334 ct->chip.irq_unmask = irq_gc_mask_set_bit; e4ea933363d39b5 drivers/gpio/gpio-mxc.c Shawn Guo 2011-06-07 335 ct->chip.irq_set_type = gpio_set_irq_type; 591567a5ea25852 drivers/gpio/gpio-mxc.c Shawn Guo 2011-07-19 336 ct->chip.irq_set_wake = gpio_set_wake_irq; 3093e6cca3ba7d4 drivers/gpio/gpio-mxc.c Loic Poulain 2021-06-17 337 ct->chip.flags = IRQCHIP_MASK_ON_SUSPEND | IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND; e4ea933363d39b5 drivers/gpio/gpio-mxc.c Shawn Guo 2011-06-07 338 ct->regs.ack = GPIO_ISR; e4ea933363d39b5 drivers/gpio/gpio-mxc.c Shawn Guo 2011-06-07 339 ct->regs.mask = GPIO_IMR; e4ea933363d39b5 drivers/gpio/gpio-mxc.c Shawn Guo 2011-06-07 340 db5270acaae5b6d drivers/gpio/gpio-mxc.c Bartosz Golaszewski 2017-08-09 @341 rv = devm_irq_setup_generic_chip(port->dev, gc, IRQ_MSK(32), db5270acaae5b6d drivers/gpio/gpio-mxc.c Bartosz Golaszewski 2017-08-09 342 IRQ_GC_INIT_NESTED_LOCK, e4ea933363d39b5 drivers/gpio/gpio-mxc.c Shawn Guo 2011-06-07 343 IRQ_NOREQUEST, 0); 9e26b0b114adb32 drivers/gpio/gpio-mxc.c Peng Fan 2015-08-23 344 db5270acaae5b6d drivers/gpio/gpio-mxc.c Bartosz Golaszewski 2017-08-09 345 return rv; e4ea933363d39b5 drivers/gpio/gpio-mxc.c Shawn Guo 2011-06-07 346 } b5eee2fdefc89df arch/arm/plat-mxc/gpio.c Thomas Gleixner 2011-04-04 347 -- 0-DAY CI Kernel Test Service https://01.org/lkp