* [PATCH 01/10] pinctrl: at91-pio4: use new GPIO line value setter callbacks
2025-04-08 7:17 [PATCH 00/10] pinctrl: convert GPIO chips to using new value setters Bartosz Golaszewski
@ 2025-04-08 7:17 ` Bartosz Golaszewski
2025-04-10 7:16 ` Claudiu Beznea
2025-04-08 7:17 ` [PATCH 02/10] pinctrl: rk805: " Bartosz Golaszewski
` (9 subsequent siblings)
10 siblings, 1 reply; 23+ messages in thread
From: Bartosz Golaszewski @ 2025-04-08 7:17 UTC (permalink / raw)
To: Ludovic Desroches, Linus Walleij, Nicolas Ferre,
Alexandre Belloni, Claudiu Beznea, Bartosz Golaszewski,
Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Xianwei Zhao, Patrick Rudolph
Cc: linux-arm-kernel, linux-gpio, linux-kernel, linux-amlogic,
Bartosz Golaszewski
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
drivers/pinctrl/pinctrl-at91-pio4.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/drivers/pinctrl/pinctrl-at91-pio4.c b/drivers/pinctrl/pinctrl-at91-pio4.c
index 8b01d312305a..5db839fa9b3f 100644
--- a/drivers/pinctrl/pinctrl-at91-pio4.c
+++ b/drivers/pinctrl/pinctrl-at91-pio4.c
@@ -390,7 +390,7 @@ static int atmel_gpio_direction_output(struct gpio_chip *chip,
return 0;
}
-static void atmel_gpio_set(struct gpio_chip *chip, unsigned int offset, int val)
+static int atmel_gpio_set(struct gpio_chip *chip, unsigned int offset, int val)
{
struct atmel_pioctrl *atmel_pioctrl = gpiochip_get_data(chip);
struct atmel_pin *pin = atmel_pioctrl->pins[offset];
@@ -398,10 +398,12 @@ static void atmel_gpio_set(struct gpio_chip *chip, unsigned int offset, int val)
atmel_gpio_write(atmel_pioctrl, pin->bank,
val ? ATMEL_PIO_SODR : ATMEL_PIO_CODR,
BIT(pin->line));
+
+ return 0;
}
-static void atmel_gpio_set_multiple(struct gpio_chip *chip, unsigned long *mask,
- unsigned long *bits)
+static int atmel_gpio_set_multiple(struct gpio_chip *chip, unsigned long *mask,
+ unsigned long *bits)
{
struct atmel_pioctrl *atmel_pioctrl = gpiochip_get_data(chip);
unsigned int bank;
@@ -431,6 +433,8 @@ static void atmel_gpio_set_multiple(struct gpio_chip *chip, unsigned long *mask,
bits[word] >>= ATMEL_PIO_NPINS_PER_BANK;
#endif
}
+
+ return 0;
}
static struct gpio_chip atmel_gpio_chip = {
@@ -438,8 +442,8 @@ static struct gpio_chip atmel_gpio_chip = {
.get = atmel_gpio_get,
.get_multiple = atmel_gpio_get_multiple,
.direction_output = atmel_gpio_direction_output,
- .set = atmel_gpio_set,
- .set_multiple = atmel_gpio_set_multiple,
+ .set_rv = atmel_gpio_set,
+ .set_multiple_rv = atmel_gpio_set_multiple,
.to_irq = atmel_gpio_to_irq,
.base = 0,
};
--
2.45.2
^ permalink raw reply related [flat|nested] 23+ messages in thread
* Re: [PATCH 01/10] pinctrl: at91-pio4: use new GPIO line value setter callbacks
2025-04-08 7:17 ` [PATCH 01/10] pinctrl: at91-pio4: use new GPIO line value setter callbacks Bartosz Golaszewski
@ 2025-04-10 7:16 ` Claudiu Beznea
0 siblings, 0 replies; 23+ messages in thread
From: Claudiu Beznea @ 2025-04-10 7:16 UTC (permalink / raw)
To: Bartosz Golaszewski, Ludovic Desroches, Linus Walleij,
Nicolas Ferre, Alexandre Belloni, Neil Armstrong, Kevin Hilman,
Jerome Brunet, Martin Blumenstingl, Xianwei Zhao, Patrick Rudolph
Cc: linux-arm-kernel, linux-gpio, linux-kernel, linux-amlogic,
Bartosz Golaszewski
On 08.04.2025 10:17, Bartosz Golaszewski wrote:
> From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
>
> struct gpio_chip now has callbacks for setting line values that return
> an integer, allowing to indicate failures. Convert the driver to using
> them.
>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Reviewed-by: Claudiu Beznea <claudiu.beznea@tuxon.dev>
^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 02/10] pinctrl: rk805: use new GPIO line value setter callbacks
2025-04-08 7:17 [PATCH 00/10] pinctrl: convert GPIO chips to using new value setters Bartosz Golaszewski
2025-04-08 7:17 ` [PATCH 01/10] pinctrl: at91-pio4: use new GPIO line value setter callbacks Bartosz Golaszewski
@ 2025-04-08 7:17 ` Bartosz Golaszewski
2025-04-08 7:17 ` [PATCH 03/10] pinctrl: abx500: enable building modules with COMPILE_TEST=y Bartosz Golaszewski
` (8 subsequent siblings)
10 siblings, 0 replies; 23+ messages in thread
From: Bartosz Golaszewski @ 2025-04-08 7:17 UTC (permalink / raw)
To: Ludovic Desroches, Linus Walleij, Nicolas Ferre,
Alexandre Belloni, Claudiu Beznea, Bartosz Golaszewski,
Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Xianwei Zhao, Patrick Rudolph
Cc: linux-arm-kernel, linux-gpio, linux-kernel, linux-amlogic,
Bartosz Golaszewski
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
drivers/pinctrl/pinctrl-rk805.c | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/drivers/pinctrl/pinctrl-rk805.c b/drivers/pinctrl/pinctrl-rk805.c
index c42f1bf93404..fc0e330b1d11 100644
--- a/drivers/pinctrl/pinctrl-rk805.c
+++ b/drivers/pinctrl/pinctrl-rk805.c
@@ -325,26 +325,26 @@ static int rk805_gpio_get(struct gpio_chip *chip, unsigned int offset)
return !!(val & pci->pin_cfg[offset].val_msk);
}
-static void rk805_gpio_set(struct gpio_chip *chip,
- unsigned int offset,
- int value)
+static int rk805_gpio_set(struct gpio_chip *chip, unsigned int offset,
+ int value)
{
struct rk805_pctrl_info *pci = gpiochip_get_data(chip);
- int ret;
- ret = regmap_update_bits(pci->rk808->regmap,
- pci->pin_cfg[offset].reg,
- pci->pin_cfg[offset].val_msk,
- value ? pci->pin_cfg[offset].val_msk : 0);
- if (ret)
- dev_err(pci->dev, "set gpio%d value %d failed\n",
- offset, value);
+ return regmap_update_bits(pci->rk808->regmap,
+ pci->pin_cfg[offset].reg,
+ pci->pin_cfg[offset].val_msk,
+ value ? pci->pin_cfg[offset].val_msk : 0);
}
static int rk805_gpio_direction_output(struct gpio_chip *chip,
unsigned int offset, int value)
{
- rk805_gpio_set(chip, offset, value);
+ int ret;
+
+ ret = rk805_gpio_set(chip, offset, value);
+ if (ret)
+ return ret;
+
return pinctrl_gpio_direction_output(chip, offset);
}
@@ -378,7 +378,7 @@ static const struct gpio_chip rk805_gpio_chip = {
.free = gpiochip_generic_free,
.get_direction = rk805_gpio_get_direction,
.get = rk805_gpio_get,
- .set = rk805_gpio_set,
+ .set_rv = rk805_gpio_set,
.direction_input = pinctrl_gpio_direction_input,
.direction_output = rk805_gpio_direction_output,
.can_sleep = true,
--
2.45.2
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 03/10] pinctrl: abx500: enable building modules with COMPILE_TEST=y
2025-04-08 7:17 [PATCH 00/10] pinctrl: convert GPIO chips to using new value setters Bartosz Golaszewski
2025-04-08 7:17 ` [PATCH 01/10] pinctrl: at91-pio4: use new GPIO line value setter callbacks Bartosz Golaszewski
2025-04-08 7:17 ` [PATCH 02/10] pinctrl: rk805: " Bartosz Golaszewski
@ 2025-04-08 7:17 ` Bartosz Golaszewski
2025-04-08 7:17 ` [PATCH 04/10] pinctrl: abx500: use new GPIO line value setter callbacks Bartosz Golaszewski
` (7 subsequent siblings)
10 siblings, 0 replies; 23+ messages in thread
From: Bartosz Golaszewski @ 2025-04-08 7:17 UTC (permalink / raw)
To: Ludovic Desroches, Linus Walleij, Nicolas Ferre,
Alexandre Belloni, Claudiu Beznea, Bartosz Golaszewski,
Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Xianwei Zhao, Patrick Rudolph
Cc: linux-arm-kernel, linux-gpio, linux-kernel, linux-amlogic,
Bartosz Golaszewski
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Increase the build coverage by enabling the abx500 modules with
COMPILE_TEST=y.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
drivers/pinctrl/nomadik/Kconfig | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/pinctrl/nomadik/Kconfig b/drivers/pinctrl/nomadik/Kconfig
index aafecf348670..2c1f8a4f5d24 100644
--- a/drivers/pinctrl/nomadik/Kconfig
+++ b/drivers/pinctrl/nomadik/Kconfig
@@ -1,20 +1,20 @@
# SPDX-License-Identifier: GPL-2.0-only
-if ARCH_U8500
+if (ARCH_U8500 || COMPILE_TEST)
config PINCTRL_ABX500
bool "ST-Ericsson ABx500 family Mixed Signal Circuit gpio functions"
- depends on AB8500_CORE
+ depends on AB8500_CORE || COMPILE_TEST
select GENERIC_PINCONF
help
Select this to enable the ABx500 family IC GPIO driver
config PINCTRL_AB8500
bool "AB8500 pin controller driver"
- depends on PINCTRL_ABX500 && ARCH_U8500
+ depends on PINCTRL_ABX500 && (ARCH_U8500 || COMPILE_TEST)
config PINCTRL_AB8505
bool "AB8505 pin controller driver"
- depends on PINCTRL_ABX500 && ARCH_U8500
+ depends on PINCTRL_ABX500 && (ARCH_U8500 || COMPILE_TEST)
endif
--
2.45.2
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 04/10] pinctrl: abx500: use new GPIO line value setter callbacks
2025-04-08 7:17 [PATCH 00/10] pinctrl: convert GPIO chips to using new value setters Bartosz Golaszewski
` (2 preceding siblings ...)
2025-04-08 7:17 ` [PATCH 03/10] pinctrl: abx500: enable building modules with COMPILE_TEST=y Bartosz Golaszewski
@ 2025-04-08 7:17 ` Bartosz Golaszewski
2025-04-08 7:17 ` [PATCH 05/10] pinctrl: meson: " Bartosz Golaszewski
` (6 subsequent siblings)
10 siblings, 0 replies; 23+ messages in thread
From: Bartosz Golaszewski @ 2025-04-08 7:17 UTC (permalink / raw)
To: Ludovic Desroches, Linus Walleij, Nicolas Ferre,
Alexandre Belloni, Claudiu Beznea, Bartosz Golaszewski,
Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Xianwei Zhao, Patrick Rudolph
Cc: linux-arm-kernel, linux-gpio, linux-kernel, linux-amlogic,
Bartosz Golaszewski
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
drivers/pinctrl/nomadik/pinctrl-abx500.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/drivers/pinctrl/nomadik/pinctrl-abx500.c b/drivers/pinctrl/nomadik/pinctrl-abx500.c
index 8cd4ba5cf0bd..2f55f83127cf 100644
--- a/drivers/pinctrl/nomadik/pinctrl-abx500.c
+++ b/drivers/pinctrl/nomadik/pinctrl-abx500.c
@@ -167,14 +167,10 @@ static int abx500_gpio_get(struct gpio_chip *chip, unsigned offset)
return bit;
}
-static void abx500_gpio_set(struct gpio_chip *chip, unsigned offset, int val)
+static int abx500_gpio_set(struct gpio_chip *chip, unsigned int offset,
+ int val)
{
- struct abx500_pinctrl *pct = gpiochip_get_data(chip);
- int ret;
-
- ret = abx500_gpio_set_bits(chip, AB8500_GPIO_OUT1_REG, offset, val);
- if (ret < 0)
- dev_err(pct->dev, "%s write failed (%d)\n", __func__, ret);
+ return abx500_gpio_set_bits(chip, AB8500_GPIO_OUT1_REG, offset, val);
}
static int abx500_gpio_direction_output(struct gpio_chip *chip,
@@ -540,7 +536,7 @@ static const struct gpio_chip abx500gpio_chip = {
.direction_input = abx500_gpio_direction_input,
.get = abx500_gpio_get,
.direction_output = abx500_gpio_direction_output,
- .set = abx500_gpio_set,
+ .set_rv = abx500_gpio_set,
.to_irq = abx500_gpio_to_irq,
.dbg_show = abx500_gpio_dbg_show,
};
--
2.45.2
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 05/10] pinctrl: meson: use new GPIO line value setter callbacks
2025-04-08 7:17 [PATCH 00/10] pinctrl: convert GPIO chips to using new value setters Bartosz Golaszewski
` (3 preceding siblings ...)
2025-04-08 7:17 ` [PATCH 04/10] pinctrl: abx500: use new GPIO line value setter callbacks Bartosz Golaszewski
@ 2025-04-08 7:17 ` Bartosz Golaszewski
2025-04-08 7:41 ` Neil Armstrong
2025-04-08 21:37 ` Martin Blumenstingl
2025-04-08 7:17 ` [PATCH 06/10] pinctrl: amlogic-a4: " Bartosz Golaszewski
` (5 subsequent siblings)
10 siblings, 2 replies; 23+ messages in thread
From: Bartosz Golaszewski @ 2025-04-08 7:17 UTC (permalink / raw)
To: Ludovic Desroches, Linus Walleij, Nicolas Ferre,
Alexandre Belloni, Claudiu Beznea, Bartosz Golaszewski,
Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Xianwei Zhao, Patrick Rudolph
Cc: linux-arm-kernel, linux-gpio, linux-kernel, linux-amlogic,
Bartosz Golaszewski
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
drivers/pinctrl/meson/pinctrl-meson.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/pinctrl/meson/pinctrl-meson.c b/drivers/pinctrl/meson/pinctrl-meson.c
index 253a0cc57e39..e7485c82089c 100644
--- a/drivers/pinctrl/meson/pinctrl-meson.c
+++ b/drivers/pinctrl/meson/pinctrl-meson.c
@@ -580,9 +580,9 @@ static int meson_gpio_direction_output(struct gpio_chip *chip, unsigned gpio,
gpio, value);
}
-static void meson_gpio_set(struct gpio_chip *chip, unsigned gpio, int value)
+static int meson_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
{
- meson_pinconf_set_drive(gpiochip_get_data(chip), gpio, value);
+ return meson_pinconf_set_drive(gpiochip_get_data(chip), gpio, value);
}
static int meson_gpio_get(struct gpio_chip *chip, unsigned gpio)
@@ -616,7 +616,7 @@ static int meson_gpiolib_register(struct meson_pinctrl *pc)
pc->chip.direction_input = meson_gpio_direction_input;
pc->chip.direction_output = meson_gpio_direction_output;
pc->chip.get = meson_gpio_get;
- pc->chip.set = meson_gpio_set;
+ pc->chip.set_rv = meson_gpio_set;
pc->chip.base = -1;
pc->chip.ngpio = pc->data->num_pins;
pc->chip.can_sleep = false;
--
2.45.2
^ permalink raw reply related [flat|nested] 23+ messages in thread
* Re: [PATCH 05/10] pinctrl: meson: use new GPIO line value setter callbacks
2025-04-08 7:17 ` [PATCH 05/10] pinctrl: meson: " Bartosz Golaszewski
@ 2025-04-08 7:41 ` Neil Armstrong
2025-04-08 21:37 ` Martin Blumenstingl
1 sibling, 0 replies; 23+ messages in thread
From: Neil Armstrong @ 2025-04-08 7:41 UTC (permalink / raw)
To: Bartosz Golaszewski, Ludovic Desroches, Linus Walleij,
Nicolas Ferre, Alexandre Belloni, Claudiu Beznea, Kevin Hilman,
Jerome Brunet, Martin Blumenstingl, Xianwei Zhao, Patrick Rudolph
Cc: linux-arm-kernel, linux-gpio, linux-kernel, linux-amlogic,
Bartosz Golaszewski
On 08/04/2025 09:17, Bartosz Golaszewski wrote:
> From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
>
> struct gpio_chip now has callbacks for setting line values that return
> an integer, allowing to indicate failures. Convert the driver to using
> them.
>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> ---
> drivers/pinctrl/meson/pinctrl-meson.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/pinctrl/meson/pinctrl-meson.c b/drivers/pinctrl/meson/pinctrl-meson.c
> index 253a0cc57e39..e7485c82089c 100644
> --- a/drivers/pinctrl/meson/pinctrl-meson.c
> +++ b/drivers/pinctrl/meson/pinctrl-meson.c
> @@ -580,9 +580,9 @@ static int meson_gpio_direction_output(struct gpio_chip *chip, unsigned gpio,
> gpio, value);
> }
>
> -static void meson_gpio_set(struct gpio_chip *chip, unsigned gpio, int value)
> +static int meson_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
> {
> - meson_pinconf_set_drive(gpiochip_get_data(chip), gpio, value);
> + return meson_pinconf_set_drive(gpiochip_get_data(chip), gpio, value);
> }
>
> static int meson_gpio_get(struct gpio_chip *chip, unsigned gpio)
> @@ -616,7 +616,7 @@ static int meson_gpiolib_register(struct meson_pinctrl *pc)
> pc->chip.direction_input = meson_gpio_direction_input;
> pc->chip.direction_output = meson_gpio_direction_output;
> pc->chip.get = meson_gpio_get;
> - pc->chip.set = meson_gpio_set;
> + pc->chip.set_rv = meson_gpio_set;
> pc->chip.base = -1;
> pc->chip.ngpio = pc->data->num_pins;
> pc->chip.can_sleep = false;
>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 05/10] pinctrl: meson: use new GPIO line value setter callbacks
2025-04-08 7:17 ` [PATCH 05/10] pinctrl: meson: " Bartosz Golaszewski
2025-04-08 7:41 ` Neil Armstrong
@ 2025-04-08 21:37 ` Martin Blumenstingl
1 sibling, 0 replies; 23+ messages in thread
From: Martin Blumenstingl @ 2025-04-08 21:37 UTC (permalink / raw)
To: Bartosz Golaszewski
Cc: Ludovic Desroches, Linus Walleij, Nicolas Ferre,
Alexandre Belloni, Claudiu Beznea, Neil Armstrong, Kevin Hilman,
Jerome Brunet, Xianwei Zhao, Patrick Rudolph, linux-arm-kernel,
linux-gpio, linux-kernel, linux-amlogic, Bartosz Golaszewski
On Tue, Apr 8, 2025 at 9:17 AM Bartosz Golaszewski <brgl@bgdev.pl> wrote:
>
> From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
>
> struct gpio_chip now has callbacks for setting line values that return
> an integer, allowing to indicate failures. Convert the driver to using
> them.
>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Reviewed-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 06/10] pinctrl: amlogic-a4: use new GPIO line value setter callbacks
2025-04-08 7:17 [PATCH 00/10] pinctrl: convert GPIO chips to using new value setters Bartosz Golaszewski
` (4 preceding siblings ...)
2025-04-08 7:17 ` [PATCH 05/10] pinctrl: meson: " Bartosz Golaszewski
@ 2025-04-08 7:17 ` Bartosz Golaszewski
2025-04-08 7:41 ` Neil Armstrong
` (2 more replies)
2025-04-08 7:17 ` [PATCH 07/10] pinctrl: sx150x: enable building modules with COMPILE_TEST=y Bartosz Golaszewski
` (4 subsequent siblings)
10 siblings, 3 replies; 23+ messages in thread
From: Bartosz Golaszewski @ 2025-04-08 7:17 UTC (permalink / raw)
To: Ludovic Desroches, Linus Walleij, Nicolas Ferre,
Alexandre Belloni, Claudiu Beznea, Bartosz Golaszewski,
Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Xianwei Zhao, Patrick Rudolph
Cc: linux-arm-kernel, linux-gpio, linux-kernel, linux-amlogic,
Bartosz Golaszewski
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
drivers/pinctrl/meson/pinctrl-amlogic-a4.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/pinctrl/meson/pinctrl-amlogic-a4.c b/drivers/pinctrl/meson/pinctrl-amlogic-a4.c
index ee7bbc72f9b3..a76f266b4b94 100644
--- a/drivers/pinctrl/meson/pinctrl-amlogic-a4.c
+++ b/drivers/pinctrl/meson/pinctrl-amlogic-a4.c
@@ -806,15 +806,15 @@ static int aml_gpio_direction_output(struct gpio_chip *chip, unsigned int gpio,
value ? BIT(bit) : 0);
}
-static void aml_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
+static int aml_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
{
struct aml_gpio_bank *bank = gpiochip_get_data(chip);
unsigned int bit, reg;
aml_gpio_calc_reg_and_bit(bank, AML_REG_OUT, gpio, ®, &bit);
- regmap_update_bits(bank->reg_gpio, reg, BIT(bit),
- value ? BIT(bit) : 0);
+ return regmap_update_bits(bank->reg_gpio, reg, BIT(bit),
+ value ? BIT(bit) : 0);
}
static int aml_gpio_get(struct gpio_chip *chip, unsigned int gpio)
@@ -832,7 +832,7 @@ static const struct gpio_chip aml_gpio_template = {
.request = gpiochip_generic_request,
.free = gpiochip_generic_free,
.set_config = gpiochip_generic_config,
- .set = aml_gpio_set,
+ .set_rv = aml_gpio_set,
.get = aml_gpio_get,
.direction_input = aml_gpio_direction_input,
.direction_output = aml_gpio_direction_output,
--
2.45.2
^ permalink raw reply related [flat|nested] 23+ messages in thread
* Re: [PATCH 06/10] pinctrl: amlogic-a4: use new GPIO line value setter callbacks
2025-04-08 7:17 ` [PATCH 06/10] pinctrl: amlogic-a4: " Bartosz Golaszewski
@ 2025-04-08 7:41 ` Neil Armstrong
2025-04-08 21:38 ` Martin Blumenstingl
2025-04-09 1:56 ` Xianwei Zhao
2 siblings, 0 replies; 23+ messages in thread
From: Neil Armstrong @ 2025-04-08 7:41 UTC (permalink / raw)
To: Bartosz Golaszewski, Ludovic Desroches, Linus Walleij,
Nicolas Ferre, Alexandre Belloni, Claudiu Beznea, Kevin Hilman,
Jerome Brunet, Martin Blumenstingl, Xianwei Zhao, Patrick Rudolph
Cc: linux-arm-kernel, linux-gpio, linux-kernel, linux-amlogic,
Bartosz Golaszewski
On 08/04/2025 09:17, Bartosz Golaszewski wrote:
> From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
>
> struct gpio_chip now has callbacks for setting line values that return
> an integer, allowing to indicate failures. Convert the driver to using
> them.
>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> ---
> drivers/pinctrl/meson/pinctrl-amlogic-a4.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/pinctrl/meson/pinctrl-amlogic-a4.c b/drivers/pinctrl/meson/pinctrl-amlogic-a4.c
> index ee7bbc72f9b3..a76f266b4b94 100644
> --- a/drivers/pinctrl/meson/pinctrl-amlogic-a4.c
> +++ b/drivers/pinctrl/meson/pinctrl-amlogic-a4.c
> @@ -806,15 +806,15 @@ static int aml_gpio_direction_output(struct gpio_chip *chip, unsigned int gpio,
> value ? BIT(bit) : 0);
> }
>
> -static void aml_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
> +static int aml_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
> {
> struct aml_gpio_bank *bank = gpiochip_get_data(chip);
> unsigned int bit, reg;
>
> aml_gpio_calc_reg_and_bit(bank, AML_REG_OUT, gpio, ®, &bit);
>
> - regmap_update_bits(bank->reg_gpio, reg, BIT(bit),
> - value ? BIT(bit) : 0);
> + return regmap_update_bits(bank->reg_gpio, reg, BIT(bit),
> + value ? BIT(bit) : 0);
> }
>
> static int aml_gpio_get(struct gpio_chip *chip, unsigned int gpio)
> @@ -832,7 +832,7 @@ static const struct gpio_chip aml_gpio_template = {
> .request = gpiochip_generic_request,
> .free = gpiochip_generic_free,
> .set_config = gpiochip_generic_config,
> - .set = aml_gpio_set,
> + .set_rv = aml_gpio_set,
> .get = aml_gpio_get,
> .direction_input = aml_gpio_direction_input,
> .direction_output = aml_gpio_direction_output,
>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 06/10] pinctrl: amlogic-a4: use new GPIO line value setter callbacks
2025-04-08 7:17 ` [PATCH 06/10] pinctrl: amlogic-a4: " Bartosz Golaszewski
2025-04-08 7:41 ` Neil Armstrong
@ 2025-04-08 21:38 ` Martin Blumenstingl
2025-04-09 1:56 ` Xianwei Zhao
2 siblings, 0 replies; 23+ messages in thread
From: Martin Blumenstingl @ 2025-04-08 21:38 UTC (permalink / raw)
To: Bartosz Golaszewski
Cc: Ludovic Desroches, Linus Walleij, Nicolas Ferre,
Alexandre Belloni, Claudiu Beznea, Neil Armstrong, Kevin Hilman,
Jerome Brunet, Xianwei Zhao, Patrick Rudolph, linux-arm-kernel,
linux-gpio, linux-kernel, linux-amlogic, Bartosz Golaszewski
On Tue, Apr 8, 2025 at 9:24 AM Bartosz Golaszewski <brgl@bgdev.pl> wrote:
>
> From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
>
> struct gpio_chip now has callbacks for setting line values that return
> an integer, allowing to indicate failures. Convert the driver to using
> them.
>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Reviewed-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 06/10] pinctrl: amlogic-a4: use new GPIO line value setter callbacks
2025-04-08 7:17 ` [PATCH 06/10] pinctrl: amlogic-a4: " Bartosz Golaszewski
2025-04-08 7:41 ` Neil Armstrong
2025-04-08 21:38 ` Martin Blumenstingl
@ 2025-04-09 1:56 ` Xianwei Zhao
2 siblings, 0 replies; 23+ messages in thread
From: Xianwei Zhao @ 2025-04-09 1:56 UTC (permalink / raw)
To: Bartosz Golaszewski, Ludovic Desroches, Linus Walleij,
Nicolas Ferre, Alexandre Belloni, Claudiu Beznea, Neil Armstrong,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Patrick Rudolph
Cc: linux-arm-kernel, linux-gpio, linux-kernel, linux-amlogic,
Bartosz Golaszewski
On 2025/4/8 15:17, Bartosz Golaszewski wrote:
> [ EXTERNAL EMAIL ]
>
> From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
>
> struct gpio_chip now has callbacks for setting line values that return
> an integer, allowing to indicate failures. Convert the driver to using
> them.
>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> ---
> drivers/pinctrl/meson/pinctrl-amlogic-a4.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/pinctrl/meson/pinctrl-amlogic-a4.c b/drivers/pinctrl/meson/pinctrl-amlogic-a4.c
> index ee7bbc72f9b3..a76f266b4b94 100644
> --- a/drivers/pinctrl/meson/pinctrl-amlogic-a4.c
> +++ b/drivers/pinctrl/meson/pinctrl-amlogic-a4.c
> @@ -806,15 +806,15 @@ static int aml_gpio_direction_output(struct gpio_chip *chip, unsigned int gpio,
> value ? BIT(bit) : 0);
> }
>
> -static void aml_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
> +static int aml_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
> {
> struct aml_gpio_bank *bank = gpiochip_get_data(chip);
> unsigned int bit, reg;
>
> aml_gpio_calc_reg_and_bit(bank, AML_REG_OUT, gpio, ®, &bit);
>
> - regmap_update_bits(bank->reg_gpio, reg, BIT(bit),
> - value ? BIT(bit) : 0);
> + return regmap_update_bits(bank->reg_gpio, reg, BIT(bit),
> + value ? BIT(bit) : 0);
> }
>
> static int aml_gpio_get(struct gpio_chip *chip, unsigned int gpio)
> @@ -832,7 +832,7 @@ static const struct gpio_chip aml_gpio_template = {
> .request = gpiochip_generic_request,
> .free = gpiochip_generic_free,
> .set_config = gpiochip_generic_config,
> - .set = aml_gpio_set,
> + .set_rv = aml_gpio_set,
> .get = aml_gpio_get,
> .direction_input = aml_gpio_direction_input,
> .direction_output = aml_gpio_direction_output,
>
> --
> 2.45.2
>
Reviewed-by: Xianwei Zhao <xianwei.zhao@amlogic.com>
^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 07/10] pinctrl: sx150x: enable building modules with COMPILE_TEST=y
2025-04-08 7:17 [PATCH 00/10] pinctrl: convert GPIO chips to using new value setters Bartosz Golaszewski
` (5 preceding siblings ...)
2025-04-08 7:17 ` [PATCH 06/10] pinctrl: amlogic-a4: " Bartosz Golaszewski
@ 2025-04-08 7:17 ` Bartosz Golaszewski
2025-04-08 14:27 ` Neil Armstrong
2025-04-16 22:37 ` Nathan Chancellor
2025-04-08 7:17 ` [PATCH 08/10] pinctrl: sx150x: use new GPIO line value setter callbacks Bartosz Golaszewski
` (3 subsequent siblings)
10 siblings, 2 replies; 23+ messages in thread
From: Bartosz Golaszewski @ 2025-04-08 7:17 UTC (permalink / raw)
To: Ludovic Desroches, Linus Walleij, Nicolas Ferre,
Alexandre Belloni, Claudiu Beznea, Bartosz Golaszewski,
Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Xianwei Zhao, Patrick Rudolph
Cc: linux-arm-kernel, linux-gpio, linux-kernel, linux-amlogic,
Bartosz Golaszewski
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Increase the build coverage by enabling the sx150x modules with
COMPILE_TEST=y.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
drivers/pinctrl/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig
index 464cc9aca157..94eb41bb9cf2 100644
--- a/drivers/pinctrl/Kconfig
+++ b/drivers/pinctrl/Kconfig
@@ -541,7 +541,7 @@ config PINCTRL_STMFX
config PINCTRL_SX150X
bool "Semtech SX150x I2C GPIO expander pinctrl driver"
- depends on I2C=y
+ depends on I2C=y || COMPILE_TEST
select PINMUX
select PINCONF
select GENERIC_PINCONF
--
2.45.2
^ permalink raw reply related [flat|nested] 23+ messages in thread
* Re: [PATCH 07/10] pinctrl: sx150x: enable building modules with COMPILE_TEST=y
2025-04-08 7:17 ` [PATCH 07/10] pinctrl: sx150x: enable building modules with COMPILE_TEST=y Bartosz Golaszewski
@ 2025-04-08 14:27 ` Neil Armstrong
2025-04-16 22:37 ` Nathan Chancellor
1 sibling, 0 replies; 23+ messages in thread
From: Neil Armstrong @ 2025-04-08 14:27 UTC (permalink / raw)
To: Bartosz Golaszewski, Ludovic Desroches, Linus Walleij,
Nicolas Ferre, Alexandre Belloni, Claudiu Beznea, Kevin Hilman,
Jerome Brunet, Martin Blumenstingl, Xianwei Zhao, Patrick Rudolph
Cc: linux-arm-kernel, linux-gpio, linux-kernel, linux-amlogic,
Bartosz Golaszewski
On 08/04/2025 09:17, Bartosz Golaszewski wrote:
> From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
>
> Increase the build coverage by enabling the sx150x modules with
> COMPILE_TEST=y.
>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> ---
> drivers/pinctrl/Kconfig | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig
> index 464cc9aca157..94eb41bb9cf2 100644
> --- a/drivers/pinctrl/Kconfig
> +++ b/drivers/pinctrl/Kconfig
> @@ -541,7 +541,7 @@ config PINCTRL_STMFX
>
> config PINCTRL_SX150X
> bool "Semtech SX150x I2C GPIO expander pinctrl driver"
> - depends on I2C=y
> + depends on I2C=y || COMPILE_TEST
> select PINMUX
> select PINCONF
> select GENERIC_PINCONF
>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 07/10] pinctrl: sx150x: enable building modules with COMPILE_TEST=y
2025-04-08 7:17 ` [PATCH 07/10] pinctrl: sx150x: enable building modules with COMPILE_TEST=y Bartosz Golaszewski
2025-04-08 14:27 ` Neil Armstrong
@ 2025-04-16 22:37 ` Nathan Chancellor
2025-04-17 6:42 ` Bartosz Golaszewski
1 sibling, 1 reply; 23+ messages in thread
From: Nathan Chancellor @ 2025-04-16 22:37 UTC (permalink / raw)
To: Bartosz Golaszewski
Cc: Ludovic Desroches, Linus Walleij, Nicolas Ferre,
Alexandre Belloni, Claudiu Beznea, Neil Armstrong, Kevin Hilman,
Jerome Brunet, Martin Blumenstingl, Xianwei Zhao, Patrick Rudolph,
linux-arm-kernel, linux-gpio, linux-kernel, linux-amlogic,
Bartosz Golaszewski
Hi Bartosz,
On Tue, Apr 08, 2025 at 09:17:44AM +0200, Bartosz Golaszewski wrote:
> From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
>
> Increase the build coverage by enabling the sx150x modules with
> COMPILE_TEST=y.
>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> ---
> drivers/pinctrl/Kconfig | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig
> index 464cc9aca157..94eb41bb9cf2 100644
> --- a/drivers/pinctrl/Kconfig
> +++ b/drivers/pinctrl/Kconfig
> @@ -541,7 +541,7 @@ config PINCTRL_STMFX
>
> config PINCTRL_SX150X
> bool "Semtech SX150x I2C GPIO expander pinctrl driver"
> - depends on I2C=y
> + depends on I2C=y || COMPILE_TEST
> select PINMUX
> select PINCONF
> select GENERIC_PINCONF
>
> --
> 2.45.2
>
This appears to break allmodconfig with
ld.lld: error: undefined symbol: i2c_get_match_data
>>> referenced by pinctrl-sx150x.c
>>> drivers/pinctrl/pinctrl-sx150x.o:(sx150x_probe) in archive vmlinux.a
ld.lld: error: undefined symbol: i2c_smbus_write_byte_data
>>> referenced by pinctrl-sx150x.c
>>> drivers/pinctrl/pinctrl-sx150x.o:(sx150x_probe) in archive vmlinux.a
>>> referenced by pinctrl-sx150x.c
>>> drivers/pinctrl/pinctrl-sx150x.o:(sx150x_probe) in archive vmlinux.a
>>> referenced by pinctrl-sx150x.c
>>> drivers/pinctrl/pinctrl-sx150x.o:(sx150x_regmap_reg_write) in archive vmlinux.a
ld.lld: error: undefined symbol: i2c_smbus_read_byte_data
>>> referenced by pinctrl-sx150x.c
>>> drivers/pinctrl/pinctrl-sx150x.o:(sx150x_regmap_reg_read) in archive vmlinux.a
ld.lld: error: undefined symbol: i2c_register_driver
>>> referenced by pinctrl-sx150x.c
>>> drivers/pinctrl/pinctrl-sx150x.o:(sx150x_init) in archive vmlinux.a
make[4]: *** [scripts/Makefile.vmlinux:91: vmlinux] Error 1
I don't think this change makes much sense in light of this error,
unless the driver was converted to tristate.
Cheers,
Nathan
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 07/10] pinctrl: sx150x: enable building modules with COMPILE_TEST=y
2025-04-16 22:37 ` Nathan Chancellor
@ 2025-04-17 6:42 ` Bartosz Golaszewski
2025-04-17 7:42 ` Linus Walleij
0 siblings, 1 reply; 23+ messages in thread
From: Bartosz Golaszewski @ 2025-04-17 6:42 UTC (permalink / raw)
To: Nathan Chancellor
Cc: Bartosz Golaszewski, Ludovic Desroches, Linus Walleij,
Nicolas Ferre, Alexandre Belloni, Claudiu Beznea, Neil Armstrong,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Xianwei Zhao,
Patrick Rudolph, linux-arm-kernel, linux-gpio, linux-kernel,
linux-amlogic
On Thu, 17 Apr 2025 at 00:37, Nathan Chancellor <nathan@kernel.org> wrote:
>
> Hi Bartosz,
>
> On Tue, Apr 08, 2025 at 09:17:44AM +0200, Bartosz Golaszewski wrote:
> > From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> >
> > Increase the build coverage by enabling the sx150x modules with
> > COMPILE_TEST=y.
> >
> > Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> > ---
> > drivers/pinctrl/Kconfig | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig
> > index 464cc9aca157..94eb41bb9cf2 100644
> > --- a/drivers/pinctrl/Kconfig
> > +++ b/drivers/pinctrl/Kconfig
> > @@ -541,7 +541,7 @@ config PINCTRL_STMFX
> >
> > config PINCTRL_SX150X
> > bool "Semtech SX150x I2C GPIO expander pinctrl driver"
> > - depends on I2C=y
> > + depends on I2C=y || COMPILE_TEST
> > select PINMUX
> > select PINCONF
> > select GENERIC_PINCONF
> >
> > --
> > 2.45.2
> >
>
> This appears to break allmodconfig with
>
> ld.lld: error: undefined symbol: i2c_get_match_data
> >>> referenced by pinctrl-sx150x.c
> >>> drivers/pinctrl/pinctrl-sx150x.o:(sx150x_probe) in archive vmlinux.a
>
> ld.lld: error: undefined symbol: i2c_smbus_write_byte_data
> >>> referenced by pinctrl-sx150x.c
> >>> drivers/pinctrl/pinctrl-sx150x.o:(sx150x_probe) in archive vmlinux.a
> >>> referenced by pinctrl-sx150x.c
> >>> drivers/pinctrl/pinctrl-sx150x.o:(sx150x_probe) in archive vmlinux.a
> >>> referenced by pinctrl-sx150x.c
> >>> drivers/pinctrl/pinctrl-sx150x.o:(sx150x_regmap_reg_write) in archive vmlinux.a
>
> ld.lld: error: undefined symbol: i2c_smbus_read_byte_data
> >>> referenced by pinctrl-sx150x.c
> >>> drivers/pinctrl/pinctrl-sx150x.o:(sx150x_regmap_reg_read) in archive vmlinux.a
>
> ld.lld: error: undefined symbol: i2c_register_driver
> >>> referenced by pinctrl-sx150x.c
> >>> drivers/pinctrl/pinctrl-sx150x.o:(sx150x_init) in archive vmlinux.a
> make[4]: *** [scripts/Makefile.vmlinux:91: vmlinux] Error 1
>
> I don't think this change makes much sense in light of this error,
> unless the driver was converted to tristate.
>
> Cheers,
> Nathan
Makes sense. Linus: Can you just drop this or do you prefer a formal revert?
Bart
^ permalink raw reply [flat|nested] 23+ messages in thread
* Re: [PATCH 07/10] pinctrl: sx150x: enable building modules with COMPILE_TEST=y
2025-04-17 6:42 ` Bartosz Golaszewski
@ 2025-04-17 7:42 ` Linus Walleij
0 siblings, 0 replies; 23+ messages in thread
From: Linus Walleij @ 2025-04-17 7:42 UTC (permalink / raw)
To: Bartosz Golaszewski
Cc: Nathan Chancellor, Bartosz Golaszewski, Ludovic Desroches,
Nicolas Ferre, Alexandre Belloni, Claudiu Beznea, Neil Armstrong,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Xianwei Zhao,
Patrick Rudolph, linux-arm-kernel, linux-gpio, linux-kernel,
linux-amlogic
On Thu, Apr 17, 2025 at 8:42 AM Bartosz Golaszewski
<bartosz.golaszewski@linaro.org> wrote:
> Makes sense. Linus: Can you just drop this or do you prefer a formal revert?
I just dropped it, no problem.
I'm amazed there was not more fallout from the patches
so all is good!
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 08/10] pinctrl: sx150x: use new GPIO line value setter callbacks
2025-04-08 7:17 [PATCH 00/10] pinctrl: convert GPIO chips to using new value setters Bartosz Golaszewski
` (6 preceding siblings ...)
2025-04-08 7:17 ` [PATCH 07/10] pinctrl: sx150x: enable building modules with COMPILE_TEST=y Bartosz Golaszewski
@ 2025-04-08 7:17 ` Bartosz Golaszewski
2025-04-08 14:27 ` Neil Armstrong
2025-04-08 7:17 ` [PATCH 09/10] pinctrl: ocelot: " Bartosz Golaszewski
` (2 subsequent siblings)
10 siblings, 1 reply; 23+ messages in thread
From: Bartosz Golaszewski @ 2025-04-08 7:17 UTC (permalink / raw)
To: Ludovic Desroches, Linus Walleij, Nicolas Ferre,
Alexandre Belloni, Claudiu Beznea, Bartosz Golaszewski,
Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Xianwei Zhao, Patrick Rudolph
Cc: linux-arm-kernel, linux-gpio, linux-kernel, linux-amlogic,
Bartosz Golaszewski
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
drivers/pinctrl/pinctrl-sx150x.c | 23 ++++++++++++-----------
1 file changed, 12 insertions(+), 11 deletions(-)
diff --git a/drivers/pinctrl/pinctrl-sx150x.c b/drivers/pinctrl/pinctrl-sx150x.c
index 98262b8ce43a..d3a12c1c0de2 100644
--- a/drivers/pinctrl/pinctrl-sx150x.c
+++ b/drivers/pinctrl/pinctrl-sx150x.c
@@ -432,24 +432,25 @@ static int sx150x_gpio_oscio_set(struct sx150x_pinctrl *pctl,
(value ? 0x1f : 0x10));
}
-static void sx150x_gpio_set(struct gpio_chip *chip, unsigned int offset,
- int value)
+static int sx150x_gpio_set(struct gpio_chip *chip, unsigned int offset,
+ int value)
{
struct sx150x_pinctrl *pctl = gpiochip_get_data(chip);
if (sx150x_pin_is_oscio(pctl, offset))
- sx150x_gpio_oscio_set(pctl, value);
- else
- __sx150x_gpio_set(pctl, offset, value);
+ return sx150x_gpio_oscio_set(pctl, value);
+
+ return __sx150x_gpio_set(pctl, offset, value);
}
-static void sx150x_gpio_set_multiple(struct gpio_chip *chip,
- unsigned long *mask,
- unsigned long *bits)
+static int sx150x_gpio_set_multiple(struct gpio_chip *chip,
+ unsigned long *mask,
+ unsigned long *bits)
{
struct sx150x_pinctrl *pctl = gpiochip_get_data(chip);
- regmap_write_bits(pctl->regmap, pctl->data->reg_data, *mask, *bits);
+ return regmap_write_bits(pctl->regmap, pctl->data->reg_data, *mask,
+ *bits);
}
static int sx150x_gpio_direction_input(struct gpio_chip *chip,
@@ -1175,7 +1176,7 @@ static int sx150x_probe(struct i2c_client *client)
pctl->gpio.direction_input = sx150x_gpio_direction_input;
pctl->gpio.direction_output = sx150x_gpio_direction_output;
pctl->gpio.get = sx150x_gpio_get;
- pctl->gpio.set = sx150x_gpio_set;
+ pctl->gpio.set_rv = sx150x_gpio_set;
pctl->gpio.set_config = gpiochip_generic_config;
pctl->gpio.parent = dev;
pctl->gpio.can_sleep = true;
@@ -1190,7 +1191,7 @@ static int sx150x_probe(struct i2c_client *client)
* would require locking that is not in place at this time.
*/
if (pctl->data->model != SX150X_789)
- pctl->gpio.set_multiple = sx150x_gpio_set_multiple;
+ pctl->gpio.set_multiple_rv = sx150x_gpio_set_multiple;
/* Add Interrupt support if an irq is specified */
if (client->irq > 0) {
--
2.45.2
^ permalink raw reply related [flat|nested] 23+ messages in thread
* Re: [PATCH 08/10] pinctrl: sx150x: use new GPIO line value setter callbacks
2025-04-08 7:17 ` [PATCH 08/10] pinctrl: sx150x: use new GPIO line value setter callbacks Bartosz Golaszewski
@ 2025-04-08 14:27 ` Neil Armstrong
0 siblings, 0 replies; 23+ messages in thread
From: Neil Armstrong @ 2025-04-08 14:27 UTC (permalink / raw)
To: Bartosz Golaszewski, Ludovic Desroches, Linus Walleij,
Nicolas Ferre, Alexandre Belloni, Claudiu Beznea, Kevin Hilman,
Jerome Brunet, Martin Blumenstingl, Xianwei Zhao, Patrick Rudolph
Cc: linux-arm-kernel, linux-gpio, linux-kernel, linux-amlogic,
Bartosz Golaszewski
On 08/04/2025 09:17, Bartosz Golaszewski wrote:
> From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
>
> struct gpio_chip now has callbacks for setting line values that return
> an integer, allowing to indicate failures. Convert the driver to using
> them.
>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> ---
> drivers/pinctrl/pinctrl-sx150x.c | 23 ++++++++++++-----------
> 1 file changed, 12 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/pinctrl/pinctrl-sx150x.c b/drivers/pinctrl/pinctrl-sx150x.c
> index 98262b8ce43a..d3a12c1c0de2 100644
> --- a/drivers/pinctrl/pinctrl-sx150x.c
> +++ b/drivers/pinctrl/pinctrl-sx150x.c
> @@ -432,24 +432,25 @@ static int sx150x_gpio_oscio_set(struct sx150x_pinctrl *pctl,
> (value ? 0x1f : 0x10));
> }
>
> -static void sx150x_gpio_set(struct gpio_chip *chip, unsigned int offset,
> - int value)
> +static int sx150x_gpio_set(struct gpio_chip *chip, unsigned int offset,
> + int value)
> {
> struct sx150x_pinctrl *pctl = gpiochip_get_data(chip);
>
> if (sx150x_pin_is_oscio(pctl, offset))
> - sx150x_gpio_oscio_set(pctl, value);
> - else
> - __sx150x_gpio_set(pctl, offset, value);
> + return sx150x_gpio_oscio_set(pctl, value);
> +
> + return __sx150x_gpio_set(pctl, offset, value);
> }
>
> -static void sx150x_gpio_set_multiple(struct gpio_chip *chip,
> - unsigned long *mask,
> - unsigned long *bits)
> +static int sx150x_gpio_set_multiple(struct gpio_chip *chip,
> + unsigned long *mask,
> + unsigned long *bits)
> {
> struct sx150x_pinctrl *pctl = gpiochip_get_data(chip);
>
> - regmap_write_bits(pctl->regmap, pctl->data->reg_data, *mask, *bits);
> + return regmap_write_bits(pctl->regmap, pctl->data->reg_data, *mask,
> + *bits);
> }
>
> static int sx150x_gpio_direction_input(struct gpio_chip *chip,
> @@ -1175,7 +1176,7 @@ static int sx150x_probe(struct i2c_client *client)
> pctl->gpio.direction_input = sx150x_gpio_direction_input;
> pctl->gpio.direction_output = sx150x_gpio_direction_output;
> pctl->gpio.get = sx150x_gpio_get;
> - pctl->gpio.set = sx150x_gpio_set;
> + pctl->gpio.set_rv = sx150x_gpio_set;
> pctl->gpio.set_config = gpiochip_generic_config;
> pctl->gpio.parent = dev;
> pctl->gpio.can_sleep = true;
> @@ -1190,7 +1191,7 @@ static int sx150x_probe(struct i2c_client *client)
> * would require locking that is not in place at this time.
> */
> if (pctl->data->model != SX150X_789)
> - pctl->gpio.set_multiple = sx150x_gpio_set_multiple;
> + pctl->gpio.set_multiple_rv = sx150x_gpio_set_multiple;
>
> /* Add Interrupt support if an irq is specified */
> if (client->irq > 0) {
>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 09/10] pinctrl: ocelot: use new GPIO line value setter callbacks
2025-04-08 7:17 [PATCH 00/10] pinctrl: convert GPIO chips to using new value setters Bartosz Golaszewski
` (7 preceding siblings ...)
2025-04-08 7:17 ` [PATCH 08/10] pinctrl: sx150x: use new GPIO line value setter callbacks Bartosz Golaszewski
@ 2025-04-08 7:17 ` Bartosz Golaszewski
2025-04-08 7:17 ` [PATCH 10/10] pinctrl: cy8c95x0: " Bartosz Golaszewski
2025-04-15 21:48 ` [PATCH 00/10] pinctrl: convert GPIO chips to using new value setters Linus Walleij
10 siblings, 0 replies; 23+ messages in thread
From: Bartosz Golaszewski @ 2025-04-08 7:17 UTC (permalink / raw)
To: Ludovic Desroches, Linus Walleij, Nicolas Ferre,
Alexandre Belloni, Claudiu Beznea, Bartosz Golaszewski,
Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Xianwei Zhao, Patrick Rudolph
Cc: linux-arm-kernel, linux-gpio, linux-kernel, linux-amlogic,
Bartosz Golaszewski
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
drivers/pinctrl/pinctrl-ocelot.c | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/drivers/pinctrl/pinctrl-ocelot.c b/drivers/pinctrl/pinctrl-ocelot.c
index 329d54b11529..fbb3d43746bb 100644
--- a/drivers/pinctrl/pinctrl-ocelot.c
+++ b/drivers/pinctrl/pinctrl-ocelot.c
@@ -1950,17 +1950,18 @@ static int ocelot_gpio_get(struct gpio_chip *chip, unsigned int offset)
return !!(val & BIT(offset % 32));
}
-static void ocelot_gpio_set(struct gpio_chip *chip, unsigned int offset,
- int value)
+static int ocelot_gpio_set(struct gpio_chip *chip, unsigned int offset,
+ int value)
{
struct ocelot_pinctrl *info = gpiochip_get_data(chip);
if (value)
- regmap_write(info->map, REG(OCELOT_GPIO_OUT_SET, info, offset),
- BIT(offset % 32));
- else
- regmap_write(info->map, REG(OCELOT_GPIO_OUT_CLR, info, offset),
- BIT(offset % 32));
+ return regmap_write(info->map,
+ REG(OCELOT_GPIO_OUT_SET, info, offset),
+ BIT(offset % 32));
+
+ return regmap_write(info->map, REG(OCELOT_GPIO_OUT_CLR, info, offset),
+ BIT(offset % 32));
}
static int ocelot_gpio_get_direction(struct gpio_chip *chip,
@@ -1996,7 +1997,7 @@ static int ocelot_gpio_direction_output(struct gpio_chip *chip,
static const struct gpio_chip ocelot_gpiolib_chip = {
.request = gpiochip_generic_request,
.free = gpiochip_generic_free,
- .set = ocelot_gpio_set,
+ .set_rv = ocelot_gpio_set,
.get = ocelot_gpio_get,
.get_direction = ocelot_gpio_get_direction,
.direction_input = pinctrl_gpio_direction_input,
--
2.45.2
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 10/10] pinctrl: cy8c95x0: use new GPIO line value setter callbacks
2025-04-08 7:17 [PATCH 00/10] pinctrl: convert GPIO chips to using new value setters Bartosz Golaszewski
` (8 preceding siblings ...)
2025-04-08 7:17 ` [PATCH 09/10] pinctrl: ocelot: " Bartosz Golaszewski
@ 2025-04-08 7:17 ` Bartosz Golaszewski
2025-04-15 21:48 ` [PATCH 00/10] pinctrl: convert GPIO chips to using new value setters Linus Walleij
10 siblings, 0 replies; 23+ messages in thread
From: Bartosz Golaszewski @ 2025-04-08 7:17 UTC (permalink / raw)
To: Ludovic Desroches, Linus Walleij, Nicolas Ferre,
Alexandre Belloni, Claudiu Beznea, Bartosz Golaszewski,
Neil Armstrong, Kevin Hilman, Jerome Brunet, Martin Blumenstingl,
Xianwei Zhao, Patrick Rudolph
Cc: linux-arm-kernel, linux-gpio, linux-kernel, linux-amlogic,
Bartosz Golaszewski
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
struct gpio_chip now has callbacks for setting line values that return
an integer, allowing to indicate failures. Convert the driver to using
them.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
drivers/pinctrl/pinctrl-cy8c95x0.c | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/drivers/pinctrl/pinctrl-cy8c95x0.c b/drivers/pinctrl/pinctrl-cy8c95x0.c
index 3cfbcaee9e65..8a2fd632bdd4 100644
--- a/drivers/pinctrl/pinctrl-cy8c95x0.c
+++ b/drivers/pinctrl/pinctrl-cy8c95x0.c
@@ -742,14 +742,15 @@ static int cy8c95x0_gpio_get_value(struct gpio_chip *gc, unsigned int off)
return reg_val ? 1 : 0;
}
-static void cy8c95x0_gpio_set_value(struct gpio_chip *gc, unsigned int off,
- int val)
+static int cy8c95x0_gpio_set_value(struct gpio_chip *gc, unsigned int off,
+ int val)
{
struct cy8c95x0_pinctrl *chip = gpiochip_get_data(gc);
u8 port = cypress_get_port(chip, off);
u8 bit = cypress_get_pin_mask(chip, off);
- cy8c95x0_regmap_write_bits(chip, CY8C95X0_OUTPUT, port, bit, val ? bit : 0);
+ return cy8c95x0_regmap_write_bits(chip, CY8C95X0_OUTPUT, port, bit,
+ val ? bit : 0);
}
static int cy8c95x0_gpio_get_direction(struct gpio_chip *gc, unsigned int off)
@@ -908,12 +909,12 @@ static int cy8c95x0_gpio_get_multiple(struct gpio_chip *gc,
return cy8c95x0_read_regs_mask(chip, CY8C95X0_INPUT, bits, mask);
}
-static void cy8c95x0_gpio_set_multiple(struct gpio_chip *gc,
- unsigned long *mask, unsigned long *bits)
+static int cy8c95x0_gpio_set_multiple(struct gpio_chip *gc,
+ unsigned long *mask, unsigned long *bits)
{
struct cy8c95x0_pinctrl *chip = gpiochip_get_data(gc);
- cy8c95x0_write_regs_mask(chip, CY8C95X0_OUTPUT, bits, mask);
+ return cy8c95x0_write_regs_mask(chip, CY8C95X0_OUTPUT, bits, mask);
}
static int cy8c95x0_add_pin_ranges(struct gpio_chip *gc)
@@ -938,10 +939,10 @@ static int cy8c95x0_setup_gpiochip(struct cy8c95x0_pinctrl *chip)
gc->direction_input = cy8c95x0_gpio_direction_input;
gc->direction_output = cy8c95x0_gpio_direction_output;
gc->get = cy8c95x0_gpio_get_value;
- gc->set = cy8c95x0_gpio_set_value;
+ gc->set_rv = cy8c95x0_gpio_set_value;
gc->get_direction = cy8c95x0_gpio_get_direction;
gc->get_multiple = cy8c95x0_gpio_get_multiple;
- gc->set_multiple = cy8c95x0_gpio_set_multiple;
+ gc->set_multiple_rv = cy8c95x0_gpio_set_multiple;
gc->set_config = gpiochip_generic_config;
gc->can_sleep = true;
gc->add_pin_ranges = cy8c95x0_add_pin_ranges;
--
2.45.2
^ permalink raw reply related [flat|nested] 23+ messages in thread
* Re: [PATCH 00/10] pinctrl: convert GPIO chips to using new value setters
2025-04-08 7:17 [PATCH 00/10] pinctrl: convert GPIO chips to using new value setters Bartosz Golaszewski
` (9 preceding siblings ...)
2025-04-08 7:17 ` [PATCH 10/10] pinctrl: cy8c95x0: " Bartosz Golaszewski
@ 2025-04-15 21:48 ` Linus Walleij
10 siblings, 0 replies; 23+ messages in thread
From: Linus Walleij @ 2025-04-15 21:48 UTC (permalink / raw)
To: Bartosz Golaszewski
Cc: Ludovic Desroches, Nicolas Ferre, Alexandre Belloni,
Claudiu Beznea, Neil Armstrong, Kevin Hilman, Jerome Brunet,
Martin Blumenstingl, Xianwei Zhao, Patrick Rudolph,
linux-arm-kernel, linux-gpio, linux-kernel, linux-amlogic,
Bartosz Golaszewski
On Tue, Apr 8, 2025 at 9:17 AM Bartosz Golaszewski <brgl@bgdev.pl> wrote:
> struct gpio_chip now has callbacks for setting line values that return
> an integer, allowing to indicate failures. We're in the process of
> converting all GPIO drivers to using the new API. This series converts
> the first part of pinctrl GPIO controllers.
>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
All patches applied for next!
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 23+ messages in thread