All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Sander Vanheule <sander@svanheule.net>,
	Lee Jones <lee@kernel.org>, Pavel Machek <pavel@kernel.org>,
	Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Linus Walleij <linus.walleij@linaro.org>,
	Michael Walle <mwalle@kernel.org>,
	Bartosz Golaszewski <brgl@bgdev.pl>
Cc: oe-kbuild-all@lists.linux.dev, linux-leds@vger.kernel.org,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-gpio@vger.kernel.org,
	Sander Vanheule <sander@svanheule.net>
Subject: Re: [PATCH v7 4/6] pinctrl: Add RTL8231 pin control and GPIO support
Date: Wed, 19 Nov 2025 05:19:28 +0800	[thread overview]
Message-ID: <202511190436.9oQLbI8A-lkp@intel.com> (raw)
In-Reply-To: <20251117215138.4353-5-sander@svanheule.net>

Hi Sander,

kernel test robot noticed the following build errors:

[auto build test ERROR on lee-mfd/for-mfd-next]
[also build test ERROR on lee-mfd/for-mfd-fixes lee-leds/for-leds-next linusw-pinctrl/devel linusw-pinctrl/for-next linus/master v6.18-rc6 next-20251118]
[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/Sander-Vanheule/dt-bindings-leds-Binding-for-RTL8231-scan-matrix/20251118-055707
base:   https://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git for-mfd-next
patch link:    https://lore.kernel.org/r/20251117215138.4353-5-sander%40svanheule.net
patch subject: [PATCH v7 4/6] pinctrl: Add RTL8231 pin control and GPIO support
config: nios2-allmodconfig (https://download.01.org/0day-ci/archive/20251119/202511190436.9oQLbI8A-lkp@intel.com/config)
compiler: nios2-linux-gcc (GCC) 11.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251119/202511190436.9oQLbI8A-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202511190436.9oQLbI8A-lkp@intel.com/

All error/warnings (new ones prefixed by >>):

>> drivers/pinctrl/pinctrl-rtl8231.c:28:27: error: expected identifier or '(' before ':' token
      28 | enum rtl8231_pin_function : uintptr_t {
         |                           ^
>> drivers/pinctrl/pinctrl-rtl8231.c:35:35: error: field 'flag' has incomplete type
      35 |         enum rtl8231_pin_function flag;
         |                                   ^~~~
>> drivers/pinctrl/pinctrl-rtl8231.c:46:34: error: 'RTL8231_PIN_FUNCTION_GPIO' undeclared here (not in a function); did you mean 'RTL8231_PIN_MODE_GPIO'?
      46 |         RTL8231_FUNCTION("gpio", RTL8231_PIN_FUNCTION_GPIO),
         |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/pinctrl/pinctrl-rtl8231.c:41:26: note: in definition of macro 'RTL8231_FUNCTION'
      41 |                 .flag = (_flag),        \
         |                          ^~~~~
>> drivers/pinctrl/pinctrl-rtl8231.c:47:33: error: 'RTL8231_PIN_FUNCTION_LED' undeclared here (not in a function); did you mean 'RTL8231_FUNCTION'?
      47 |         RTL8231_FUNCTION("led", RTL8231_PIN_FUNCTION_LED),
         |                                 ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/pinctrl/pinctrl-rtl8231.c:41:26: note: in definition of macro 'RTL8231_FUNCTION'
      41 |                 .flag = (_flag),        \
         |                          ^~~~~
>> drivers/pinctrl/pinctrl-rtl8231.c:48:33: error: 'RTL8231_PIN_FUNCTION_PWM' undeclared here (not in a function); did you mean 'RTL8231_FUNCTION'?
      48 |         RTL8231_FUNCTION("pwm", RTL8231_PIN_FUNCTION_PWM),
         |                                 ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/pinctrl/pinctrl-rtl8231.c:41:26: note: in definition of macro 'RTL8231_FUNCTION'
      41 |                 .flag = (_flag),        \
         |                          ^~~~~
>> drivers/pinctrl/pinctrl-rtl8231.c:52:35: warning: 'functions' is narrower than values of its type
      52 |         enum rtl8231_pin_function functions:8;
         |                                   ^~~~~~~~~
>> drivers/pinctrl/pinctrl-rtl8231.c:52:35: error: field 'functions' has incomplete type
   drivers/pinctrl/pinctrl-rtl8231.c: In function 'rtl8231_set_mux':
>> drivers/pinctrl/pinctrl-rtl8231.c:200:14: error: variable 'func_flag' has initializer but incomplete type
     200 |         enum rtl8231_pin_function func_flag = (uintptr_t) func->data;
         |              ^~~~~~~~~~~~~~~~~~~~
>> drivers/pinctrl/pinctrl-rtl8231.c:200:35: error: storage size of 'func_flag' isn't known
     200 |         enum rtl8231_pin_function func_flag = (uintptr_t) func->data;
         |                                   ^~~~~~~~~
>> drivers/pinctrl/pinctrl-rtl8231.c:200:35: warning: unused variable 'func_flag' [-Wunused-variable]
   drivers/pinctrl/pinctrl-rtl8231.c: In function 'rtl8231_pinctrl_init_functions':
>> drivers/pinctrl/pinctrl-rtl8231.c:325:35: error: storage size of 'flag' isn't known
     325 |         enum rtl8231_pin_function flag;
         |                                   ^~~~
>> drivers/pinctrl/pinctrl-rtl8231.c:325:35: warning: unused variable 'flag' [-Wunused-variable]
   drivers/pinctrl/pinctrl-rtl8231.c: In function 'rtl8231_set_mux':
>> drivers/pinctrl/pinctrl-rtl8231.c:214:1: warning: control reaches end of non-void function [-Wreturn-type]
     214 | }
         | ^


vim +28 drivers/pinctrl/pinctrl-rtl8231.c

    24	
    25	/*
    26	 * Pin controller functionality
    27	 */
  > 28	enum rtl8231_pin_function : uintptr_t {
    29		RTL8231_PIN_FUNCTION_GPIO = BIT(0),
    30		RTL8231_PIN_FUNCTION_LED = BIT(1),
    31		RTL8231_PIN_FUNCTION_PWM = BIT(2),
    32	};
    33	
    34	struct rtl8231_function_info {
  > 35		enum rtl8231_pin_function flag;
    36		const char *name;
    37	};
    38	
    39	#define RTL8231_FUNCTION(_name, _flag)	\
    40	((struct rtl8231_function_info) {	\
    41			.flag = (_flag),	\
    42			.name = (_name),	\
    43		})
    44	
    45	static const struct rtl8231_function_info rtl8231_pin_functions[] = {
  > 46		RTL8231_FUNCTION("gpio", RTL8231_PIN_FUNCTION_GPIO),
  > 47		RTL8231_FUNCTION("led", RTL8231_PIN_FUNCTION_LED),
  > 48		RTL8231_FUNCTION("pwm", RTL8231_PIN_FUNCTION_PWM),
    49	};
    50	
    51	struct rtl8231_pin_desc {
  > 52		enum rtl8231_pin_function functions:8;
    53		u8 reg;
    54		u8 offset;
    55		u8 gpio_function_value;
    56	};
    57	
    58	#define RTL8231_PIN_DESC(_num, _func, _reg, _fld, _val)			\
    59		[(_num)] = ((struct rtl8231_pin_desc) {				\
    60			.functions = RTL8231_PIN_FUNCTION_GPIO | (_func),	\
    61			.reg = (_reg),						\
    62			.offset = (_fld),					\
    63			.gpio_function_value = (_val),				\
    64		})
    65	#define RTL8231_GPIO_PIN_DESC(_num, _reg, _fld)			\
    66		RTL8231_PIN_DESC(_num, 0, _reg, _fld, RTL8231_PIN_MODE_GPIO)
    67	#define RTL8231_LED_PIN_DESC(_num, _reg, _fld)			\
    68		RTL8231_PIN_DESC(_num, RTL8231_PIN_FUNCTION_LED, _reg, _fld, RTL8231_PIN_MODE_GPIO)
    69	#define RTL8231_PWM_PIN_DESC(_num, _reg, _fld)			\
    70		RTL8231_PIN_DESC(_num, RTL8231_PIN_FUNCTION_PWM, _reg, _fld, 0)
    71	
    72	/*
    73	 * All pins have a GPIO/LED mux bit, but the bits for pins 35/36 are read-only. Use this bit
    74	 * for the GPIO-only pin instead of a placeholder, so the rest of the logic can stay generic.
    75	 */
    76	static const struct rtl8231_pin_desc rtl8231_pin_data[RTL8231_NUM_GPIOS] = {
    77		RTL8231_LED_PIN_DESC(0, RTL8231_REG_PIN_MODE0, 0),
    78		RTL8231_LED_PIN_DESC(1, RTL8231_REG_PIN_MODE0, 1),
    79		RTL8231_LED_PIN_DESC(2, RTL8231_REG_PIN_MODE0, 2),
    80		RTL8231_LED_PIN_DESC(3, RTL8231_REG_PIN_MODE0, 3),
    81		RTL8231_LED_PIN_DESC(4, RTL8231_REG_PIN_MODE0, 4),
    82		RTL8231_LED_PIN_DESC(5, RTL8231_REG_PIN_MODE0, 5),
    83		RTL8231_LED_PIN_DESC(6, RTL8231_REG_PIN_MODE0, 6),
    84		RTL8231_LED_PIN_DESC(7, RTL8231_REG_PIN_MODE0, 7),
    85		RTL8231_LED_PIN_DESC(8, RTL8231_REG_PIN_MODE0, 8),
    86		RTL8231_LED_PIN_DESC(9, RTL8231_REG_PIN_MODE0, 9),
    87		RTL8231_LED_PIN_DESC(10, RTL8231_REG_PIN_MODE0, 10),
    88		RTL8231_LED_PIN_DESC(11, RTL8231_REG_PIN_MODE0, 11),
    89		RTL8231_LED_PIN_DESC(12, RTL8231_REG_PIN_MODE0, 12),
    90		RTL8231_LED_PIN_DESC(13, RTL8231_REG_PIN_MODE0, 13),
    91		RTL8231_LED_PIN_DESC(14, RTL8231_REG_PIN_MODE0, 14),
    92		RTL8231_LED_PIN_DESC(15, RTL8231_REG_PIN_MODE0, 15),
    93		RTL8231_LED_PIN_DESC(16, RTL8231_REG_PIN_MODE1, 0),
    94		RTL8231_LED_PIN_DESC(17, RTL8231_REG_PIN_MODE1, 1),
    95		RTL8231_LED_PIN_DESC(18, RTL8231_REG_PIN_MODE1, 2),
    96		RTL8231_LED_PIN_DESC(19, RTL8231_REG_PIN_MODE1, 3),
    97		RTL8231_LED_PIN_DESC(20, RTL8231_REG_PIN_MODE1, 4),
    98		RTL8231_LED_PIN_DESC(21, RTL8231_REG_PIN_MODE1, 5),
    99		RTL8231_LED_PIN_DESC(22, RTL8231_REG_PIN_MODE1, 6),
   100		RTL8231_LED_PIN_DESC(23, RTL8231_REG_PIN_MODE1, 7),
   101		RTL8231_LED_PIN_DESC(24, RTL8231_REG_PIN_MODE1, 8),
   102		RTL8231_LED_PIN_DESC(25, RTL8231_REG_PIN_MODE1, 9),
   103		RTL8231_LED_PIN_DESC(26, RTL8231_REG_PIN_MODE1, 10),
   104		RTL8231_LED_PIN_DESC(27, RTL8231_REG_PIN_MODE1, 11),
   105		RTL8231_LED_PIN_DESC(28, RTL8231_REG_PIN_MODE1, 12),
   106		RTL8231_LED_PIN_DESC(29, RTL8231_REG_PIN_MODE1, 13),
   107		RTL8231_LED_PIN_DESC(30, RTL8231_REG_PIN_MODE1, 14),
   108		RTL8231_LED_PIN_DESC(31, RTL8231_REG_PIN_MODE1, 15),
   109		RTL8231_LED_PIN_DESC(32, RTL8231_REG_PIN_HI_CFG, 0),
   110		RTL8231_LED_PIN_DESC(33, RTL8231_REG_PIN_HI_CFG, 1),
   111		RTL8231_LED_PIN_DESC(34, RTL8231_REG_PIN_HI_CFG, 2),
   112		RTL8231_PWM_PIN_DESC(35, RTL8231_REG_FUNC1, 3),
   113		RTL8231_GPIO_PIN_DESC(36, RTL8231_REG_PIN_HI_CFG, 4),
   114	};
   115	static const unsigned int PWM_PIN = 35;
   116	
   117	#define RTL8231_PIN(_num)					\
   118		((struct pinctrl_pin_desc) {				\
   119			.number = (_num),				\
   120			.name = "gpio" #_num,				\
   121			.drv_data = (void *) &rtl8231_pin_data[(_num)]	\
   122		})
   123	
   124	static const struct pinctrl_pin_desc rtl8231_pins[RTL8231_NUM_GPIOS] = {
   125		RTL8231_PIN(0),
   126		RTL8231_PIN(1),
   127		RTL8231_PIN(2),
   128		RTL8231_PIN(3),
   129		RTL8231_PIN(4),
   130		RTL8231_PIN(5),
   131		RTL8231_PIN(6),
   132		RTL8231_PIN(7),
   133		RTL8231_PIN(8),
   134		RTL8231_PIN(9),
   135		RTL8231_PIN(10),
   136		RTL8231_PIN(11),
   137		RTL8231_PIN(12),
   138		RTL8231_PIN(13),
   139		RTL8231_PIN(14),
   140		RTL8231_PIN(15),
   141		RTL8231_PIN(16),
   142		RTL8231_PIN(17),
   143		RTL8231_PIN(18),
   144		RTL8231_PIN(19),
   145		RTL8231_PIN(20),
   146		RTL8231_PIN(21),
   147		RTL8231_PIN(22),
   148		RTL8231_PIN(23),
   149		RTL8231_PIN(24),
   150		RTL8231_PIN(25),
   151		RTL8231_PIN(26),
   152		RTL8231_PIN(27),
   153		RTL8231_PIN(28),
   154		RTL8231_PIN(29),
   155		RTL8231_PIN(30),
   156		RTL8231_PIN(31),
   157		RTL8231_PIN(32),
   158		RTL8231_PIN(33),
   159		RTL8231_PIN(34),
   160		RTL8231_PIN(35),
   161		RTL8231_PIN(36),
   162	};
   163	
   164	static int rtl8231_get_groups_count(struct pinctrl_dev *pctldev)
   165	{
   166		return ARRAY_SIZE(rtl8231_pins);
   167	}
   168	
   169	static const char *rtl8231_get_group_name(struct pinctrl_dev *pctldev, unsigned int selector)
   170	{
   171		return rtl8231_pins[selector].name;
   172	}
   173	
   174	static int rtl8231_get_group_pins(struct pinctrl_dev *pctldev, unsigned int selector,
   175		const unsigned int **pins, unsigned int *num_pins)
   176	{
   177		if (selector >= ARRAY_SIZE(rtl8231_pins))
   178			return -EINVAL;
   179	
   180		*pins = &rtl8231_pins[selector].number;
   181		*num_pins = 1;
   182	
   183		return 0;
   184	}
   185	
   186	static const struct pinctrl_ops rtl8231_pinctrl_ops = {
   187		.get_groups_count = rtl8231_get_groups_count,
   188		.get_group_name = rtl8231_get_group_name,
   189		.get_group_pins = rtl8231_get_group_pins,
   190		.dt_node_to_map = pinconf_generic_dt_node_to_map_all,
   191		.dt_free_map = pinconf_generic_dt_free_map,
   192	};
   193	
   194	static int rtl8231_set_mux(struct pinctrl_dev *pctldev, unsigned int func_selector,
   195		unsigned int group_selector)
   196	{
   197		const struct function_desc *func = pinmux_generic_get_function(pctldev, func_selector);
   198		const struct rtl8231_pin_desc *desc = rtl8231_pins[group_selector].drv_data;
   199		const struct rtl8231_pin_ctrl *ctrl = pinctrl_dev_get_drvdata(pctldev);
 > 200		enum rtl8231_pin_function func_flag = (uintptr_t) func->data;
   201		unsigned int function_mask;
   202		unsigned int gpio_function;
   203	
   204		if (!(desc->functions & func_flag))
   205			return -EINVAL;
   206	
   207		function_mask = BIT(desc->offset);
   208		gpio_function = desc->gpio_function_value << desc->offset;
   209	
   210		if (func_flag == RTL8231_PIN_FUNCTION_GPIO)
   211			return regmap_update_bits(ctrl->map, desc->reg, function_mask, gpio_function);
   212		else
   213			return regmap_update_bits(ctrl->map, desc->reg, function_mask, ~gpio_function);
 > 214	}
   215	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

  reply	other threads:[~2025-11-18 21:20 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-17 21:51 [PATCH v7 0/6] RTL8231 GPIO expander support Sander Vanheule
2025-11-17 21:51 ` [PATCH v7 1/6] dt-bindings: leds: Binding for RTL8231 scan matrix Sander Vanheule
2025-11-18 14:56   ` Rob Herring
2025-11-18 14:58   ` Rob Herring
2025-11-18 20:37     ` Sander Vanheule
2025-11-17 21:51 ` [PATCH v7 2/6] dt-bindings: mfd: Binding for RTL8231 Sander Vanheule
2025-11-18 14:59   ` Rob Herring (Arm)
2025-11-18 21:28   ` Rob Herring
2025-11-18 21:57     ` Sander Vanheule
2025-11-19  1:37       ` Rob Herring
2025-11-17 21:51 ` [PATCH v7 3/6] mfd: Add RTL8231 core device Sander Vanheule
2025-11-17 21:51 ` [PATCH v7 4/6] pinctrl: Add RTL8231 pin control and GPIO support Sander Vanheule
2025-11-18 21:19   ` kernel test robot [this message]
2025-11-18 22:24     ` Sander Vanheule
2025-11-19  4:19   ` kernel test robot
2025-11-19 18:57     ` Sander Vanheule
2025-11-19 19:41   ` kernel test robot
2025-11-17 21:51 ` [PATCH v7 5/6] leds: Add support for RTL8231 LED scan matrix Sander Vanheule
2025-11-17 21:51 ` [PATCH v7 6/6] MAINTAINERS: Add RTL8231 MFD driver Sander Vanheule

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=202511190436.9oQLbI8A-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=brgl@bgdev.pl \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=krzk@kernel.org \
    --cc=lee@kernel.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-leds@vger.kernel.org \
    --cc=mwalle@kernel.org \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=pavel@kernel.org \
    --cc=robh@kernel.org \
    --cc=sander@svanheule.net \
    /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.