linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* drivers/leds/blink/leds-lgm-sso.c:123:19: error: field has incomplete type 'struct gpio_chip'
@ 2021-02-27 19:17 kernel test robot
  2021-02-28  8:29 ` Pavel Machek
  0 siblings, 1 reply; 4+ messages in thread
From: kernel test robot @ 2021-02-27 19:17 UTC (permalink / raw)
  To: Amireddy Mallikarjuna reddy
  Cc: kbuild-all, clang-built-linux, linux-kernel, Pavel Machek

[-- Attachment #1: Type: text/plain, Size: 18825 bytes --]

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

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 20857 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: drivers/leds/blink/leds-lgm-sso.c:123:19: error: field has incomplete type 'struct gpio_chip'
  2021-02-27 19:17 drivers/leds/blink/leds-lgm-sso.c:123:19: error: field has incomplete type 'struct gpio_chip' kernel test robot
@ 2021-02-28  8:29 ` Pavel Machek
  2021-03-02  7:57   ` Randy Dunlap
  0 siblings, 1 reply; 4+ messages in thread
From: Pavel Machek @ 2021-02-28  8:29 UTC (permalink / raw)
  To: kernel test robot, linux-leds
  Cc: Amireddy Mallikarjuna reddy, kbuild-all, clang-built-linux, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 597 bytes --]

Hi!

> >> 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'?


It looks like missing #include?

While at it, can you do something with Kconfig help text? Move
existing one into comment in the driver, add something useful for end-users.

Thank you,
									Pavel
-- 
http://www.livejournal.com/~pavelmachek

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: drivers/leds/blink/leds-lgm-sso.c:123:19: error: field has incomplete type 'struct gpio_chip'
  2021-02-28  8:29 ` Pavel Machek
@ 2021-03-02  7:57   ` Randy Dunlap
  2021-03-02  8:11     ` Pavel Machek
  0 siblings, 1 reply; 4+ messages in thread
From: Randy Dunlap @ 2021-03-02  7:57 UTC (permalink / raw)
  To: Pavel Machek, kernel test robot, linux-leds
  Cc: Amireddy Mallikarjuna reddy, kbuild-all, clang-built-linux, linux-kernel

On 2/28/21 12:29 AM, Pavel Machek wrote:
> Hi!
> 
>>>> 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'?
> 
> 
> It looks like missing #include?
> 
> While at it, can you do something with Kconfig help text? Move
> existing one into comment in the driver, add something useful for end-users.

The .config file does not set/enable GPIOLIB nor OF.

AFAICT, this driver needs the addition of:

#include <linux/gpio/consumer.h>
#include <linux/gpio/driver.h>
#include <linux/of.h>

and the reference to
	gc->of_node           = dev->of_node;
needs to be inside an
#ifdef CONFIG_GPIO/#endif block.

Also, <linux/gpio/driver.h> needs a stub for gpiochip_get_data().

I have most of that ready (it's in the margin) but I can't
send it tonight. Feel free to fix it up however you want to.

-- 
~Randy

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: drivers/leds/blink/leds-lgm-sso.c:123:19: error: field has incomplete type 'struct gpio_chip'
  2021-03-02  7:57   ` Randy Dunlap
@ 2021-03-02  8:11     ` Pavel Machek
  0 siblings, 0 replies; 4+ messages in thread
From: Pavel Machek @ 2021-03-02  8:11 UTC (permalink / raw)
  To: Randy Dunlap
  Cc: kernel test robot, linux-leds, Amireddy Mallikarjuna reddy,
	kbuild-all, clang-built-linux, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1375 bytes --]

Hi!

> >>>> 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'?
> > 
> > 
> > It looks like missing #include?
> > 
> > While at it, can you do something with Kconfig help text? Move
> > existing one into comment in the driver, add something useful for end-users.
> 
> The .config file does not set/enable GPIOLIB nor OF.
> 
> AFAICT, this driver needs the addition of:
> 
> #include <linux/gpio/consumer.h>
> #include <linux/gpio/driver.h>
> #include <linux/of.h>
> 
> and the reference to
> 	gc->of_node           = dev->of_node;
> needs to be inside an
> #ifdef CONFIG_GPIO/#endif block.
> 
> Also, <linux/gpio/driver.h> needs a stub for gpiochip_get_data().
> 
> I have most of that ready (it's in the margin) but I can't
> send it tonight. Feel free to fix it up however you want to.

Looking forward. I may be confused, but it looks like original
author's email bounces, which is a bad sign.

What I meant... if you take a look at Kconfig help test, it is really
useless.

Best regards,
								Pavel
-- 
http://www.livejournal.com/~pavelmachek

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-03-02  8:40 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-27 19:17 drivers/leds/blink/leds-lgm-sso.c:123:19: error: field has incomplete type 'struct gpio_chip' kernel test robot
2021-02-28  8:29 ` Pavel Machek
2021-03-02  7:57   ` Randy Dunlap
2021-03-02  8:11     ` Pavel Machek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).