All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: drivers/leds/blink/leds-lgm-sso.c:123:19: error: field has incomplete type 'struct gpio_chip'
Date: Sun, 28 Feb 2021 03:17:35 +0800	[thread overview]
Message-ID: <202102280329.hv7RoHLA-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 19217 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(a)lists.01.org

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

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Amireddy Mallikarjuna reddy <mallikarjunax.reddy@linux.intel.com>
Cc: kbuild-all@lists.01.org, clang-built-linux@googlegroups.com,
	linux-kernel@vger.kernel.org, Pavel Machek <pavel@ucw.cz>
Subject: drivers/leds/blink/leds-lgm-sso.c:123:19: error: field has incomplete type 'struct gpio_chip'
Date: Sun, 28 Feb 2021 03:17:35 +0800	[thread overview]
Message-ID: <202102280329.hv7RoHLA-lkp@intel.com> (raw)

[-- 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 --]

             reply	other threads:[~2021-02-27 19:17 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-27 19:17 kernel test robot [this message]
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-02-28  8:29   ` Pavel Machek
2021-03-02  7:57   ` Randy Dunlap
2021-03-02  7:57     ` Randy Dunlap
2021-03-02  8:11     ` Pavel Machek
2021-03-02  8:11       ` Pavel Machek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202102280329.hv7RoHLA-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.