Messages in this thread | | | Date | Sun, 28 Feb 2021 03:17:35 +0800 | From | kernel test robot <> | Subject | drivers/leds/blink/leds-lgm-sso.c:123:19: error: field has incomplete type 'struct gpio_chip' |
| |
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 5695e51619745d4fe3ec2506a2f0cd982c5e27a4 commit: c3987cd2bca34ddfec69027acedb2fae5ffcf7a0 leds: lgm: Add LED controller driver for LGM SoC date: 8 days ago config: powerpc64-randconfig-r002-20210227 (attached as .config) compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 83bc7815c4235786111aa2abf7193292e4a602f5) 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 powerpc64 cross compiling tool for clang build # apt-get install binutils-powerpc64-linux-gnu # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c3987cd2bca34ddfec69027acedb2fae5ffcf7a0 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout c3987cd2bca34ddfec69027acedb2fae5ffcf7a0 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc64
If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com>
All error/warnings (new ones prefixed by >>):
In file included from include/linux/iopoll.h:14: In file included from include/linux/io.h:13: In file included from arch/powerpc/include/asm/io.h:619: arch/powerpc/include/asm/io-defs.h:43:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] DEF_PCI_AC_NORET(insb, (unsigned long p, void *b, unsigned long c), ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET' __do_##name al; \ ^~~~~~~~~~~~~~ <scratch space>:62:1: note: expanded from here __do_insb ^ arch/powerpc/include/asm/io.h:556:56: note: expanded from macro '__do_insb' #define __do_insb(p, b, n) readsb((PCI_IO_ADDR)_IO_BASE+(p), (b), (n)) ~~~~~~~~~~~~~~~~~~~~~^ In file included from drivers/leds/blink/leds-lgm-sso.c:18: In file included from include/linux/regmap.h:20: In file included from include/linux/iopoll.h:14: In file included from include/linux/io.h:13: In file included from arch/powerpc/include/asm/io.h:619: arch/powerpc/include/asm/io-defs.h:45:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] DEF_PCI_AC_NORET(insw, (unsigned long p, void *b, unsigned long c), ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET' __do_##name al; \ ^~~~~~~~~~~~~~ <scratch space>:64:1: note: expanded from here __do_insw ^ arch/powerpc/include/asm/io.h:557:56: note: expanded from macro '__do_insw' #define __do_insw(p, b, n) readsw((PCI_IO_ADDR)_IO_BASE+(p), (b), (n)) ~~~~~~~~~~~~~~~~~~~~~^ In file included from drivers/leds/blink/leds-lgm-sso.c:18: In file included from include/linux/regmap.h:20: In file included from include/linux/iopoll.h:14: In file included from include/linux/io.h:13: In file included from arch/powerpc/include/asm/io.h:619: arch/powerpc/include/asm/io-defs.h:47:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] DEF_PCI_AC_NORET(insl, (unsigned long p, void *b, unsigned long c), ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET' __do_##name al; \ ^~~~~~~~~~~~~~ <scratch space>:66:1: note: expanded from here __do_insl ^ arch/powerpc/include/asm/io.h:558:56: note: expanded from macro '__do_insl' #define __do_insl(p, b, n) readsl((PCI_IO_ADDR)_IO_BASE+(p), (b), (n)) ~~~~~~~~~~~~~~~~~~~~~^ In file included from drivers/leds/blink/leds-lgm-sso.c:18: In file included from include/linux/regmap.h:20: In file included from include/linux/iopoll.h:14: In file included from include/linux/io.h:13: In file included from arch/powerpc/include/asm/io.h:619: arch/powerpc/include/asm/io-defs.h:49:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] DEF_PCI_AC_NORET(outsb, (unsigned long p, const void *b, unsigned long c), ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET' __do_##name al; \ ^~~~~~~~~~~~~~ <scratch space>:68:1: note: expanded from here __do_outsb ^ arch/powerpc/include/asm/io.h:559:58: note: expanded from macro '__do_outsb' #define __do_outsb(p, b, n) writesb((PCI_IO_ADDR)_IO_BASE+(p),(b),(n)) ~~~~~~~~~~~~~~~~~~~~~^ In file included from drivers/leds/blink/leds-lgm-sso.c:18: In file included from include/linux/regmap.h:20: In file included from include/linux/iopoll.h:14: In file included from include/linux/io.h:13: In file included from arch/powerpc/include/asm/io.h:619: arch/powerpc/include/asm/io-defs.h:51:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] DEF_PCI_AC_NORET(outsw, (unsigned long p, const void *b, unsigned long c), ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET' __do_##name al; \ ^~~~~~~~~~~~~~ <scratch space>:70:1: note: expanded from here __do_outsw ^ arch/powerpc/include/asm/io.h:560:58: note: expanded from macro '__do_outsw' #define __do_outsw(p, b, n) writesw((PCI_IO_ADDR)_IO_BASE+(p),(b),(n)) ~~~~~~~~~~~~~~~~~~~~~^ In file included from drivers/leds/blink/leds-lgm-sso.c:18: In file included from include/linux/regmap.h:20: In file included from include/linux/iopoll.h:14: In file included from include/linux/io.h:13: In file included from arch/powerpc/include/asm/io.h:619: arch/powerpc/include/asm/io-defs.h:53:1: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic] DEF_PCI_AC_NORET(outsl, (unsigned long p, const void *b, unsigned long c), ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ arch/powerpc/include/asm/io.h:616:3: note: expanded from macro 'DEF_PCI_AC_NORET' __do_##name al; \ ^~~~~~~~~~~~~~ <scratch space>:72:1: note: expanded from here __do_outsl ^ arch/powerpc/include/asm/io.h:561:58: note: expanded from macro '__do_outsl' #define __do_outsl(p, b, n) writesl((PCI_IO_ADDR)_IO_BASE+(p),(b),(n)) ~~~~~~~~~~~~~~~~~~~~~^ >> drivers/leds/blink/leds-lgm-sso.c:123:19: error: field has incomplete type 'struct gpio_chip' struct gpio_chip chip; ^ include/linux/gpio.h:107:8: note: forward declaration of 'struct gpio_chip' struct gpio_chip; ^ >> drivers/leds/blink/leds-lgm-sso.c:263:3: error: implicit declaration of function 'gpiod_set_value' [-Werror,-Wimplicit-function-declaration] gpiod_set_value(led->gpiod, val); ^ drivers/leds/blink/leds-lgm-sso.c:263:3: note: did you mean 'gpio_set_value'? include/linux/gpio.h:168:20: note: 'gpio_set_value' declared here static inline void gpio_set_value(unsigned gpio, int value) ^ drivers/leds/blink/leds-lgm-sso.c:345:3: error: implicit declaration of function 'gpiod_set_value' [-Werror,-Wimplicit-function-declaration] gpiod_set_value(led->gpiod, 1); ^ >> drivers/leds/blink/leds-lgm-sso.c:405:30: error: implicit declaration of function 'gpiochip_get_data' [-Werror,-Wimplicit-function-declaration] struct sso_led_priv *priv = gpiochip_get_data(chip); ^ >> drivers/leds/blink/leds-lgm-sso.c:405:23: warning: incompatible integer to pointer conversion initializing 'struct sso_led_priv *' with an expression of type 'int' [-Wint-conversion] struct sso_led_priv *priv = gpiochip_get_data(chip); ^ ~~~~~~~~~~~~~~~~~~~~~~~ drivers/leds/blink/leds-lgm-sso.c:418:30: error: implicit declaration of function 'gpiochip_get_data' [-Werror,-Wimplicit-function-declaration] struct sso_led_priv *priv = gpiochip_get_data(chip); ^ drivers/leds/blink/leds-lgm-sso.c:418:23: warning: incompatible integer to pointer conversion initializing 'struct sso_led_priv *' with an expression of type 'int' [-Wint-conversion] struct sso_led_priv *priv = gpiochip_get_data(chip); ^ ~~~~~~~~~~~~~~~~~~~~~~~ drivers/leds/blink/leds-lgm-sso.c:432:30: error: implicit declaration of function 'gpiochip_get_data' [-Werror,-Wimplicit-function-declaration] struct sso_led_priv *priv = gpiochip_get_data(chip); ^ drivers/leds/blink/leds-lgm-sso.c:432:23: warning: incompatible integer to pointer conversion initializing 'struct sso_led_priv *' with an expression of type 'int' [-Wint-conversion] struct sso_led_priv *priv = gpiochip_get_data(chip); ^ ~~~~~~~~~~~~~~~~~~~~~~~ drivers/leds/blink/leds-lgm-sso.c:445:30: error: implicit declaration of function 'gpiochip_get_data' [-Werror,-Wimplicit-function-declaration] struct sso_led_priv *priv = gpiochip_get_data(chip); ^ drivers/leds/blink/leds-lgm-sso.c:445:23: warning: incompatible integer to pointer conversion initializing 'struct sso_led_priv *' with an expression of type 'int' [-Wint-conversion] struct sso_led_priv *priv = gpiochip_get_data(chip); ^ ~~~~~~~~~~~~~~~~~~~~~~~ drivers/leds/blink/leds-lgm-sso.c:455:30: error: implicit declaration of function 'gpiochip_get_data' [-Werror,-Wimplicit-function-declaration] struct sso_led_priv *priv = gpiochip_get_data(chip); ^ drivers/leds/blink/leds-lgm-sso.c:455:23: warning: incompatible integer to pointer conversion initializing 'struct sso_led_priv *' with an expression of type 'int' [-Wint-conversion] struct sso_led_priv *priv = gpiochip_get_data(chip); ^ ~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/leds/blink/leds-lgm-sso.c:467:4: error: incomplete definition of type 'struct gpio_chip' gc->request = sso_gpio_request; ~~^ include/linux/gpio.h:107:8: note: forward declaration of 'struct gpio_chip' struct gpio_chip; ^ drivers/leds/blink/leds-lgm-sso.c:468:4: error: incomplete definition of type 'struct gpio_chip' gc->free = sso_gpio_free; ~~^ include/linux/gpio.h:107:8: note: forward declaration of 'struct gpio_chip' struct gpio_chip; ^ drivers/leds/blink/leds-lgm-sso.c:469:4: error: incomplete definition of type 'struct gpio_chip' gc->get_direction = sso_gpio_get_dir; ~~^ include/linux/gpio.h:107:8: note: forward declaration of 'struct gpio_chip' struct gpio_chip; ^ drivers/leds/blink/leds-lgm-sso.c:470:4: error: incomplete definition of type 'struct gpio_chip' gc->direction_output = sso_gpio_dir_out; ~~^ include/linux/gpio.h:107:8: note: forward declaration of 'struct gpio_chip' struct gpio_chip; ^ drivers/leds/blink/leds-lgm-sso.c:471:4: error: incomplete definition of type 'struct gpio_chip' gc->get = sso_gpio_get; ~~^ include/linux/gpio.h:107:8: note: forward declaration of 'struct gpio_chip' struct gpio_chip; ^ drivers/leds/blink/leds-lgm-sso.c:472:4: error: incomplete definition of type 'struct gpio_chip' gc->set = sso_gpio_set; ~~^ include/linux/gpio.h:107:8: note: forward declaration of 'struct gpio_chip' struct gpio_chip; ^ drivers/leds/blink/leds-lgm-sso.c:474:4: error: incomplete definition of type 'struct gpio_chip' gc->label = "lgm-sso"; ~~^ include/linux/gpio.h:107:8: note: forward declaration of 'struct gpio_chip' struct gpio_chip; ^ drivers/leds/blink/leds-lgm-sso.c:475:4: error: incomplete definition of type 'struct gpio_chip' gc->base = -1; ~~^ include/linux/gpio.h:107:8: note: forward declaration of 'struct gpio_chip' struct gpio_chip; ^ drivers/leds/blink/leds-lgm-sso.c:477:4: error: incomplete definition of type 'struct gpio_chip' gc->ngpio = priv->gpio.pins; ~~^ include/linux/gpio.h:107:8: note: forward declaration of 'struct gpio_chip' struct gpio_chip; ^ drivers/leds/blink/leds-lgm-sso.c:478:4: error: incomplete definition of type 'struct gpio_chip' gc->parent = dev; ~~^ include/linux/gpio.h:107:8: note: forward declaration of 'struct gpio_chip' struct gpio_chip; ^ drivers/leds/blink/leds-lgm-sso.c:479:4: error: incomplete definition of type 'struct gpio_chip' gc->owner = THIS_MODULE; ~~^ include/linux/gpio.h:107:8: note: forward declaration of 'struct gpio_chip' struct gpio_chip; ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] 17 warnings and 20 errors generated.
vim +123 drivers/leds/blink/leds-lgm-sso.c
121 122 struct sso_gpio { > 123 struct gpio_chip chip; 124 int shift_clk_freq; 125 int edge; 126 int freq; 127 u32 pins; 128 u32 alloc_bitmap; 129 }; 130 131 struct sso_led_priv { 132 struct regmap *mmap; 133 struct device *dev; 134 struct platform_device *pdev; 135 struct clk *gclk; 136 struct clk *fpid_clk; 137 u32 fpid_clkrate; 138 u32 gptc_clkrate; 139 u32 freq[MAX_FREQ_RANK]; 140 struct list_head led_list; 141 struct sso_gpio gpio; 142 }; 143 144 static int sso_get_blink_rate_idx(struct sso_led_priv *priv, u32 rate) 145 { 146 int i; 147 148 for (i = 0; i < MAX_FREQ_RANK; i++) { 149 if (rate <= priv->freq[i]) 150 return i; 151 } 152 153 return -1; 154 } 155 156 static unsigned int sso_led_pin_to_group(u32 pin) 157 { 158 if (pin < LED_GRP0_PIN_MAX) 159 return LED_GRP0_0_23; 160 else if (pin < LED_GRP1_PIN_MAX) 161 return LED_GRP1_24_28; 162 else 163 return LED_GRP2_29_31; 164 } 165 166 static u32 sso_led_get_freq_src(int freq_idx) 167 { 168 if (freq_idx < MAX_FPID_FREQ_RANK) 169 return CLK_SRC_FPID; 170 else if (freq_idx < MAX_GPTC_FREQ_RANK) 171 return CLK_SRC_GPTC; 172 else 173 return CLK_SRC_GPTC_HS; 174 } 175 176 static u32 sso_led_pin_blink_off(u32 pin, unsigned int group) 177 { 178 if (group == LED_GRP2_29_31) 179 return pin - LED_GRP1_PIN_MAX; 180 else if (group == LED_GRP1_24_28) 181 return pin - LED_GRP0_PIN_MAX; 182 else /* led 0 - 23 in led 32 location */ 183 return SSO_LED_MAX_NUM - LED_GRP1_PIN_MAX; 184 } 185 186 static struct sso_led 187 *cdev_to_sso_led_data(struct led_classdev *led_cdev) 188 { 189 return container_of(led_cdev, struct sso_led, cdev); 190 } 191 192 static void sso_led_freq_set(struct sso_led_priv *priv, u32 pin, int freq_idx) 193 { 194 u32 reg, off, freq_src, val_freq; 195 u32 low, high, val; 196 unsigned int group; 197 198 if (!freq_idx) 199 return; 200 201 group = sso_led_pin_to_group(pin); 202 freq_src = sso_led_get_freq_src(freq_idx); 203 off = sso_led_pin_blink_off(pin, group); 204 205 if (group == LED_GRP0_0_23) 206 return; 207 else if (group == LED_GRP1_24_28) 208 reg = LED_BLINK_H8_0; 209 else 210 reg = LED_BLINK_H8_1; 211 212 if (freq_src == CLK_SRC_FPID) 213 val_freq = freq_idx - 1; 214 else if (freq_src == CLK_SRC_GPTC) 215 val_freq = freq_idx - MAX_FPID_FREQ_RANK; 216 217 /* set blink rate idx */ 218 if (freq_src != CLK_SRC_GPTC_HS) { 219 low = GET_FREQ_OFFSET(off, freq_src); 220 high = low + 2; 221 val = val_freq << high; 222 regmap_update_bits(priv->mmap, reg, GENMASK(high, low), val); 223 } 224 225 /* select clock source */ 226 low = GET_SRC_OFFSET(off); 227 high = low + 2; 228 val = freq_src << high; 229 regmap_update_bits(priv->mmap, reg, GENMASK(high, low), val); 230 } 231 232 static void sso_led_brightness_set(struct led_classdev *led_cdev, 233 enum led_brightness brightness) 234 { 235 struct sso_led_priv *priv; 236 struct sso_led_desc *desc; 237 struct sso_led *led; 238 int val; 239 240 led = cdev_to_sso_led_data(led_cdev); 241 priv = led->priv; 242 desc = &led->desc; 243 244 desc->brightness = brightness; 245 regmap_write(priv->mmap, DUTY_CYCLE(desc->pin), brightness); 246 247 if (brightness == LED_OFF) 248 val = 0; 249 else 250 val = 1; 251 252 /* HW blink off */ 253 if (desc->hw_blink && !val && desc->blinking) { 254 desc->blinking = 0; 255 regmap_update_bits(priv->mmap, SSO_CON2, BIT(desc->pin), 0); 256 } else if (desc->hw_blink && val && !desc->blinking) { 257 desc->blinking = 1; 258 regmap_update_bits(priv->mmap, SSO_CON2, BIT(desc->pin), 259 1 << desc->pin); 260 } 261 262 if (!desc->hw_trig && led->gpiod) > 263 gpiod_set_value(led->gpiod, val); 264 } 265
--- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org [unhandled content-type:application/gzip] | |