linux-gpio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/16] pinctrl: use new GPIO line value setter callbacks
@ 2025-06-12 13:15 Bartosz Golaszewski
  2025-06-12 13:15 ` [PATCH 01/16] pinctrl: sppctl: " Bartosz Golaszewski
                   ` (16 more replies)
  0 siblings, 17 replies; 19+ messages in thread
From: Bartosz Golaszewski @ 2025-06-12 13:15 UTC (permalink / raw)
  To: Dvorkin Dmitry, Wells Lu, Linus Walleij, Bartosz Golaszewski,
	Patrice Chotard, Support Opensource, Baruch Siach, Sven Peter,
	Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Viresh Kumar,
	Lakshmi Sowjanya D, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland
  Cc: linux-arm-kernel, linux-gpio, linux-kernel, asahi, soc,
	linux-sunxi, Bartosz Golaszewski

Commit 98ce1eb1fd87e ("gpiolib: introduce gpio_chip setters that return
values") added new line setter callbacks to struct gpio_chip. They allow
to indicate failures to callers. We're in the process of converting all
GPIO controllers to using them before removing the old ones. This series
converts remaining pinctrl drivers that still use old APIs.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
Bartosz Golaszewski (16):
      pinctrl: sppctl: use new GPIO line value setter callbacks
      pinctrl: st: use new GPIO line value setter callbacks
      pinctrl: da9062: use new GPIO line value setter callbacks
      pinctrl: mcp23s08: use new GPIO line value setter callbacks
      pinctrl: wmt: use new GPIO line value setter callbacks
      pinctrl: aw9523: use new GPIO line value setter callbacks
      pinctrl: xway: statify xway_pinconf_group_set()
      pinctrl: xway: use new GPIO line value setter callbacks
      pinctrl: digicolor: use new GPIO line value setter callbacks
      pinctrl: apple: use new GPIO line value setter callbacks
      pinctrl: pic32: use new GPIO line value setter callbacks
      pinctrl: spear: use new GPIO line value setter callbacks
      pinctrl: keembay: use new GPIO line value setter callbacks
      pinctrl: sunxi: use new GPIO line value setter callbacks
      pinctrl: as3722: use new GPIO line value setter callbacks
      pinctrl: amdisp: use new GPIO line value setter callbacks

 drivers/pinctrl/pinctrl-amdisp.c       |  6 ++++--
 drivers/pinctrl/pinctrl-apple-gpio.c   |  6 ++++--
 drivers/pinctrl/pinctrl-as3722.c       | 19 +++++++++++++------
 drivers/pinctrl/pinctrl-aw9523.c       | 26 ++++++++++++++++----------
 drivers/pinctrl/pinctrl-da9062.c       | 14 ++++++--------
 drivers/pinctrl/pinctrl-digicolor.c    |  8 +++++---
 drivers/pinctrl/pinctrl-keembay.c      |  9 +++++----
 drivers/pinctrl/pinctrl-mcp23s08.c     | 20 +++++++++++++-------
 drivers/pinctrl/pinctrl-pic32.c        |  8 +++++---
 drivers/pinctrl/pinctrl-st.c           |  6 ++++--
 drivers/pinctrl/pinctrl-xway.c         | 18 +++++++++---------
 drivers/pinctrl/spear/pinctrl-plgpio.c | 11 +++++++----
 drivers/pinctrl/sunplus/sppctl.c       |  6 ++++--
 drivers/pinctrl/sunxi/pinctrl-sunxi.c  |  8 +++++---
 drivers/pinctrl/vt8500/pinctrl-wmt.c   | 17 ++++++++++++-----
 15 files changed, 112 insertions(+), 70 deletions(-)
---
base-commit: 19272b37aa4f83ca52bdf9c16d5d81bdd1354494
change-id: 20250612-gpiochip-set-rv-pinctrl-remaining-9ced549fe783

Best regards,
-- 
Bartosz Golaszewski <bartosz.golaszewski@linaro.org>


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

* [PATCH 01/16] pinctrl: sppctl: use new GPIO line value setter callbacks
  2025-06-12 13:15 [PATCH 00/16] pinctrl: use new GPIO line value setter callbacks Bartosz Golaszewski
@ 2025-06-12 13:15 ` Bartosz Golaszewski
  2025-06-12 13:15 ` [PATCH 02/16] pinctrl: st: " Bartosz Golaszewski
                   ` (15 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: Bartosz Golaszewski @ 2025-06-12 13:15 UTC (permalink / raw)
  To: Dvorkin Dmitry, Wells Lu, Linus Walleij, Bartosz Golaszewski,
	Patrice Chotard, Support Opensource, Baruch Siach, Sven Peter,
	Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Viresh Kumar,
	Lakshmi Sowjanya D, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland
  Cc: linux-arm-kernel, linux-gpio, linux-kernel, asahi, soc,
	linux-sunxi, 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/sunplus/sppctl.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/pinctrl/sunplus/sppctl.c b/drivers/pinctrl/sunplus/sppctl.c
index ae156f779a16b8c4bb91c4cb0d5d4363ebd15d25..3c3357f80889a95c46557b3f8129882d2ce96f6e 100644
--- a/drivers/pinctrl/sunplus/sppctl.c
+++ b/drivers/pinctrl/sunplus/sppctl.c
@@ -461,13 +461,15 @@ static int sppctl_gpio_get(struct gpio_chip *chip, unsigned int offset)
 	return (reg & BIT(bit_off)) ? 1 : 0;
 }
 
-static void sppctl_gpio_set(struct gpio_chip *chip, unsigned int offset, int val)
+static int sppctl_gpio_set(struct gpio_chip *chip, unsigned int offset, int val)
 {
 	struct sppctl_gpio_chip *spp_gchip = gpiochip_get_data(chip);
 	u32 reg_off, reg;
 
 	reg = sppctl_prep_moon_reg_and_offset(offset, &reg_off, val);
 	sppctl_gpio_out_writel(spp_gchip, reg, reg_off);
+
+	return 0;
 }
 
 static int sppctl_gpio_set_config(struct gpio_chip *chip, unsigned int offset,
@@ -545,7 +547,7 @@ static int sppctl_gpio_new(struct platform_device *pdev, struct sppctl_pdata *pc
 	gchip->direction_input  = sppctl_gpio_direction_input;
 	gchip->direction_output = sppctl_gpio_direction_output;
 	gchip->get              = sppctl_gpio_get;
-	gchip->set              = sppctl_gpio_set;
+	gchip->set_rv           = sppctl_gpio_set;
 	gchip->set_config       = sppctl_gpio_set_config;
 	gchip->dbg_show         = IS_ENABLED(CONFIG_DEBUG_FS) ?
 				  sppctl_gpio_dbg_show : NULL;

-- 
2.48.1


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

* [PATCH 02/16] pinctrl: st: use new GPIO line value setter callbacks
  2025-06-12 13:15 [PATCH 00/16] pinctrl: use new GPIO line value setter callbacks Bartosz Golaszewski
  2025-06-12 13:15 ` [PATCH 01/16] pinctrl: sppctl: " Bartosz Golaszewski
@ 2025-06-12 13:15 ` Bartosz Golaszewski
  2025-06-12 13:15 ` [PATCH 03/16] pinctrl: da9062: " Bartosz Golaszewski
                   ` (14 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: Bartosz Golaszewski @ 2025-06-12 13:15 UTC (permalink / raw)
  To: Dvorkin Dmitry, Wells Lu, Linus Walleij, Bartosz Golaszewski,
	Patrice Chotard, Support Opensource, Baruch Siach, Sven Peter,
	Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Viresh Kumar,
	Lakshmi Sowjanya D, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland
  Cc: linux-arm-kernel, linux-gpio, linux-kernel, asahi, soc,
	linux-sunxi, 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-st.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-st.c b/drivers/pinctrl/pinctrl-st.c
index fe2d52e434db8cdc03d61ef3f4df95cbcc9c513e..fb5d72a6826ed730f5a10a817e9a46f9fe319b5b 100644
--- a/drivers/pinctrl/pinctrl-st.c
+++ b/drivers/pinctrl/pinctrl-st.c
@@ -711,10 +711,12 @@ static int st_gpio_get(struct gpio_chip *chip, unsigned offset)
 	return !!(readl(bank->base + REG_PIO_PIN) & BIT(offset));
 }
 
-static void st_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
+static int st_gpio_set(struct gpio_chip *chip, unsigned int offset, int value)
 {
 	struct st_gpio_bank *bank = gpiochip_get_data(chip);
 	__st_gpio_set(bank, offset, value);
+
+	return 0;
 }
 
 static int st_gpio_direction_output(struct gpio_chip *chip,
@@ -1470,7 +1472,7 @@ static const struct gpio_chip st_gpio_template = {
 	.request		= gpiochip_generic_request,
 	.free			= gpiochip_generic_free,
 	.get			= st_gpio_get,
-	.set			= st_gpio_set,
+	.set_rv			= st_gpio_set,
 	.direction_input	= pinctrl_gpio_direction_input,
 	.direction_output	= st_gpio_direction_output,
 	.get_direction		= st_gpio_get_direction,

-- 
2.48.1


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

* [PATCH 03/16] pinctrl: da9062: use new GPIO line value setter callbacks
  2025-06-12 13:15 [PATCH 00/16] pinctrl: use new GPIO line value setter callbacks Bartosz Golaszewski
  2025-06-12 13:15 ` [PATCH 01/16] pinctrl: sppctl: " Bartosz Golaszewski
  2025-06-12 13:15 ` [PATCH 02/16] pinctrl: st: " Bartosz Golaszewski
@ 2025-06-12 13:15 ` Bartosz Golaszewski
  2025-06-12 13:15 ` [PATCH 04/16] pinctrl: mcp23s08: " Bartosz Golaszewski
                   ` (13 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: Bartosz Golaszewski @ 2025-06-12 13:15 UTC (permalink / raw)
  To: Dvorkin Dmitry, Wells Lu, Linus Walleij, Bartosz Golaszewski,
	Patrice Chotard, Support Opensource, Baruch Siach, Sven Peter,
	Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Viresh Kumar,
	Lakshmi Sowjanya D, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland
  Cc: linux-arm-kernel, linux-gpio, linux-kernel, asahi, soc,
	linux-sunxi, 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-da9062.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-da9062.c b/drivers/pinctrl/pinctrl-da9062.c
index 6f44a13b90ce56dbb00fdbedc28b0377a42d3b0c..3295b09dfc3daf8feb6de0082d95952e1cf25d26 100644
--- a/drivers/pinctrl/pinctrl-da9062.c
+++ b/drivers/pinctrl/pinctrl-da9062.c
@@ -102,14 +102,14 @@ static int da9062_gpio_get(struct gpio_chip *gc, unsigned int offset)
 	return !!(val & BIT(offset));
 }
 
-static void da9062_gpio_set(struct gpio_chip *gc, unsigned int offset,
-			    int value)
+static int da9062_gpio_set(struct gpio_chip *gc, unsigned int offset,
+			   int value)
 {
 	struct da9062_pctl *pctl = gpiochip_get_data(gc);
 	struct regmap *regmap = pctl->da9062->regmap;
 
-	regmap_update_bits(regmap, DA9062AA_GPIO_MODE0_4, BIT(offset),
-			   value << offset);
+	return regmap_update_bits(regmap, DA9062AA_GPIO_MODE0_4, BIT(offset),
+				  value << offset);
 }
 
 static int da9062_gpio_get_direction(struct gpio_chip *gc, unsigned int offset)
@@ -172,9 +172,7 @@ static int da9062_gpio_direction_output(struct gpio_chip *gc,
 	if (ret)
 		return ret;
 
-	da9062_gpio_set(gc, offset, value);
-
-	return 0;
+	return da9062_gpio_set(gc, offset, value);
 }
 
 static int da9062_gpio_set_config(struct gpio_chip *gc, unsigned int offset,
@@ -235,7 +233,7 @@ static int da9062_gpio_to_irq(struct gpio_chip *gc, unsigned int offset)
 static const struct gpio_chip reference_gc = {
 	.owner = THIS_MODULE,
 	.get = da9062_gpio_get,
-	.set = da9062_gpio_set,
+	.set_rv = da9062_gpio_set,
 	.get_direction = da9062_gpio_get_direction,
 	.direction_input = da9062_gpio_direction_input,
 	.direction_output = da9062_gpio_direction_output,

-- 
2.48.1


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

* [PATCH 04/16] pinctrl: mcp23s08: use new GPIO line value setter callbacks
  2025-06-12 13:15 [PATCH 00/16] pinctrl: use new GPIO line value setter callbacks Bartosz Golaszewski
                   ` (2 preceding siblings ...)
  2025-06-12 13:15 ` [PATCH 03/16] pinctrl: da9062: " Bartosz Golaszewski
@ 2025-06-12 13:15 ` Bartosz Golaszewski
  2025-06-12 13:15 ` [PATCH 05/16] pinctrl: wmt: " Bartosz Golaszewski
                   ` (12 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: Bartosz Golaszewski @ 2025-06-12 13:15 UTC (permalink / raw)
  To: Dvorkin Dmitry, Wells Lu, Linus Walleij, Bartosz Golaszewski,
	Patrice Chotard, Support Opensource, Baruch Siach, Sven Peter,
	Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Viresh Kumar,
	Lakshmi Sowjanya D, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland
  Cc: linux-arm-kernel, linux-gpio, linux-kernel, asahi, soc,
	linux-sunxi, 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-mcp23s08.c | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-mcp23s08.c b/drivers/pinctrl/pinctrl-mcp23s08.c
index c2f4b16f42d20b0dfb0e1e6c79f8336392307c70..c8027ef03eccdf54809dfcd76ed8c07c424b41c3 100644
--- a/drivers/pinctrl/pinctrl-mcp23s08.c
+++ b/drivers/pinctrl/pinctrl-mcp23s08.c
@@ -341,24 +341,30 @@ static int __mcp23s08_set(struct mcp23s08 *mcp, unsigned mask, bool value)
 	return mcp_update_bits(mcp, MCP_OLAT, mask, value ? mask : 0);
 }
 
-static void mcp23s08_set(struct gpio_chip *chip, unsigned offset, int value)
+static int mcp23s08_set(struct gpio_chip *chip, unsigned int offset, int value)
 {
 	struct mcp23s08	*mcp = gpiochip_get_data(chip);
 	unsigned mask = BIT(offset);
+	int ret;
 
 	mutex_lock(&mcp->lock);
-	__mcp23s08_set(mcp, mask, !!value);
+	ret = __mcp23s08_set(mcp, mask, !!value);
 	mutex_unlock(&mcp->lock);
+
+	return ret;
 }
 
-static void mcp23s08_set_multiple(struct gpio_chip *chip,
-				  unsigned long *mask, unsigned long *bits)
+static int mcp23s08_set_multiple(struct gpio_chip *chip,
+				 unsigned long *mask, unsigned long *bits)
 {
 	struct mcp23s08	*mcp = gpiochip_get_data(chip);
+	int ret;
 
 	mutex_lock(&mcp->lock);
-	mcp_update_bits(mcp, MCP_OLAT, *mask, *bits);
+	ret = mcp_update_bits(mcp, MCP_OLAT, *mask, *bits);
 	mutex_unlock(&mcp->lock);
+
+	return ret;
 }
 
 static int
@@ -626,8 +632,8 @@ int mcp23s08_probe_one(struct mcp23s08 *mcp, struct device *dev,
 	mcp->chip.get = mcp23s08_get;
 	mcp->chip.get_multiple = mcp23s08_get_multiple;
 	mcp->chip.direction_output = mcp23s08_direction_output;
-	mcp->chip.set = mcp23s08_set;
-	mcp->chip.set_multiple = mcp23s08_set_multiple;
+	mcp->chip.set_rv = mcp23s08_set;
+	mcp->chip.set_multiple_rv = mcp23s08_set_multiple;
 
 	mcp->chip.base = base;
 	mcp->chip.can_sleep = true;

-- 
2.48.1


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

* [PATCH 05/16] pinctrl: wmt: use new GPIO line value setter callbacks
  2025-06-12 13:15 [PATCH 00/16] pinctrl: use new GPIO line value setter callbacks Bartosz Golaszewski
                   ` (3 preceding siblings ...)
  2025-06-12 13:15 ` [PATCH 04/16] pinctrl: mcp23s08: " Bartosz Golaszewski
@ 2025-06-12 13:15 ` Bartosz Golaszewski
  2025-06-12 13:15 ` [PATCH 06/16] pinctrl: aw9523: " Bartosz Golaszewski
                   ` (11 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: Bartosz Golaszewski @ 2025-06-12 13:15 UTC (permalink / raw)
  To: Dvorkin Dmitry, Wells Lu, Linus Walleij, Bartosz Golaszewski,
	Patrice Chotard, Support Opensource, Baruch Siach, Sven Peter,
	Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Viresh Kumar,
	Lakshmi Sowjanya D, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland
  Cc: linux-arm-kernel, linux-gpio, linux-kernel, asahi, soc,
	linux-sunxi, 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/vt8500/pinctrl-wmt.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/drivers/pinctrl/vt8500/pinctrl-wmt.c b/drivers/pinctrl/vt8500/pinctrl-wmt.c
index fce92111a32e4976bd31c7e9845e4fd08a7affa3..767c6808a463ede61aee61b63f28ee38185b7633 100644
--- a/drivers/pinctrl/vt8500/pinctrl-wmt.c
+++ b/drivers/pinctrl/vt8500/pinctrl-wmt.c
@@ -507,8 +507,8 @@ static int wmt_gpio_get_value(struct gpio_chip *chip, unsigned offset)
 	return !!(readl_relaxed(data->base + reg_data_in) & BIT(bit));
 }
 
-static void wmt_gpio_set_value(struct gpio_chip *chip, unsigned offset,
-			       int val)
+static int wmt_gpio_set_value(struct gpio_chip *chip, unsigned int offset,
+			      int val)
 {
 	struct wmt_pinctrl_data *data = gpiochip_get_data(chip);
 	u32 bank = WMT_BANK_FROM_PIN(offset);
@@ -517,19 +517,26 @@ static void wmt_gpio_set_value(struct gpio_chip *chip, unsigned offset,
 
 	if (reg_data_out == NO_REG) {
 		dev_err(data->dev, "no data out register defined\n");
-		return;
+		return -EINVAL;
 	}
 
 	if (val)
 		wmt_setbits(data, reg_data_out, BIT(bit));
 	else
 		wmt_clearbits(data, reg_data_out, BIT(bit));
+
+	return 0;
 }
 
 static int wmt_gpio_direction_output(struct gpio_chip *chip, unsigned offset,
 				     int value)
 {
-	wmt_gpio_set_value(chip, offset, value);
+	int ret;
+
+	ret = wmt_gpio_set_value(chip, offset, value);
+	if (ret)
+		return ret;
+
 	return pinctrl_gpio_direction_output(chip, offset);
 }
 
@@ -542,7 +549,7 @@ static const struct gpio_chip wmt_gpio_chip = {
 	.direction_input = pinctrl_gpio_direction_input,
 	.direction_output = wmt_gpio_direction_output,
 	.get = wmt_gpio_get_value,
-	.set = wmt_gpio_set_value,
+	.set_rv = wmt_gpio_set_value,
 	.can_sleep = false,
 };
 

-- 
2.48.1


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

* [PATCH 06/16] pinctrl: aw9523: use new GPIO line value setter callbacks
  2025-06-12 13:15 [PATCH 00/16] pinctrl: use new GPIO line value setter callbacks Bartosz Golaszewski
                   ` (4 preceding siblings ...)
  2025-06-12 13:15 ` [PATCH 05/16] pinctrl: wmt: " Bartosz Golaszewski
@ 2025-06-12 13:15 ` Bartosz Golaszewski
  2025-06-12 13:15 ` [PATCH 07/16] pinctrl: xway: statify xway_pinconf_group_set() Bartosz Golaszewski
                   ` (10 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: Bartosz Golaszewski @ 2025-06-12 13:15 UTC (permalink / raw)
  To: Dvorkin Dmitry, Wells Lu, Linus Walleij, Bartosz Golaszewski,
	Patrice Chotard, Support Opensource, Baruch Siach, Sven Peter,
	Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Viresh Kumar,
	Lakshmi Sowjanya D, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland
  Cc: linux-arm-kernel, linux-gpio, linux-kernel, asahi, soc,
	linux-sunxi, 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-aw9523.c | 26 ++++++++++++++++----------
 1 file changed, 16 insertions(+), 10 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-aw9523.c b/drivers/pinctrl/pinctrl-aw9523.c
index 9bf53de20be874661168ba28f64517b4325ce0c3..c844540384198f40f1142528d815fb6e4d5194b7 100644
--- a/drivers/pinctrl/pinctrl-aw9523.c
+++ b/drivers/pinctrl/pinctrl-aw9523.c
@@ -625,14 +625,14 @@ static int aw9523_gpio_get_multiple(struct gpio_chip *chip,
 	return ret;
 }
 
-static void aw9523_gpio_set_multiple(struct gpio_chip *chip,
+static int aw9523_gpio_set_multiple(struct gpio_chip *chip,
 				    unsigned long *mask,
 				    unsigned long *bits)
 {
 	struct aw9523 *awi = gpiochip_get_data(chip);
 	u8 mask_lo, mask_hi, bits_lo, bits_hi;
 	unsigned int reg;
-	int ret;
+	int ret = 0;
 
 	mask_lo = *mask;
 	mask_hi = *mask >> 8;
@@ -644,27 +644,33 @@ static void aw9523_gpio_set_multiple(struct gpio_chip *chip,
 		reg = AW9523_REG_OUT_STATE(AW9523_PINS_PER_PORT);
 		ret = regmap_write_bits(awi->regmap, reg, mask_hi, bits_hi);
 		if (ret)
-			dev_warn(awi->dev, "Cannot write port1 out level\n");
+			goto out;
 	}
 	if (mask_lo) {
 		reg = AW9523_REG_OUT_STATE(0);
 		ret = regmap_write_bits(awi->regmap, reg, mask_lo, bits_lo);
 		if (ret)
-			dev_warn(awi->dev, "Cannot write port0 out level\n");
+			goto out;
 	}
 	mutex_unlock(&awi->i2c_lock);
+
+out:
+	return ret;
 }
 
-static void aw9523_gpio_set(struct gpio_chip *chip,
-			    unsigned int offset, int value)
+static int aw9523_gpio_set(struct gpio_chip *chip, unsigned int offset,
+			   int value)
 {
 	struct aw9523 *awi = gpiochip_get_data(chip);
 	u8 regbit = offset % AW9523_PINS_PER_PORT;
+	int ret;
 
 	mutex_lock(&awi->i2c_lock);
-	regmap_update_bits(awi->regmap, AW9523_REG_OUT_STATE(offset),
-			   BIT(regbit), value ? BIT(regbit) : 0);
+	ret = regmap_update_bits(awi->regmap, AW9523_REG_OUT_STATE(offset),
+				 BIT(regbit), value ? BIT(regbit) : 0);
 	mutex_unlock(&awi->i2c_lock);
+
+	return ret;
 }
 
 
@@ -779,8 +785,8 @@ static int aw9523_init_gpiochip(struct aw9523 *awi, unsigned int npins)
 	gc->direction_output = aw9523_direction_output;
 	gc->get = aw9523_gpio_get;
 	gc->get_multiple = aw9523_gpio_get_multiple;
-	gc->set = aw9523_gpio_set;
-	gc->set_multiple = aw9523_gpio_set_multiple;
+	gc->set_rv = aw9523_gpio_set;
+	gc->set_multiple_rv = aw9523_gpio_set_multiple;
 	gc->set_config = gpiochip_generic_config;
 	gc->parent = dev;
 	gc->owner = THIS_MODULE;

-- 
2.48.1


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

* [PATCH 07/16] pinctrl: xway: statify xway_pinconf_group_set()
  2025-06-12 13:15 [PATCH 00/16] pinctrl: use new GPIO line value setter callbacks Bartosz Golaszewski
                   ` (5 preceding siblings ...)
  2025-06-12 13:15 ` [PATCH 06/16] pinctrl: aw9523: " Bartosz Golaszewski
@ 2025-06-12 13:15 ` Bartosz Golaszewski
  2025-06-12 13:15 ` [PATCH 08/16] pinctrl: xway: use new GPIO line value setter callbacks Bartosz Golaszewski
                   ` (9 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: Bartosz Golaszewski @ 2025-06-12 13:15 UTC (permalink / raw)
  To: Dvorkin Dmitry, Wells Lu, Linus Walleij, Bartosz Golaszewski,
	Patrice Chotard, Support Opensource, Baruch Siach, Sven Peter,
	Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Viresh Kumar,
	Lakshmi Sowjanya D, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland
  Cc: linux-arm-kernel, linux-gpio, linux-kernel, asahi, soc,
	linux-sunxi, Bartosz Golaszewski

From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>

This function is not exported and is only used locally. Make it static.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
 drivers/pinctrl/pinctrl-xway.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-xway.c b/drivers/pinctrl/pinctrl-xway.c
index 48f8aabf3bfa3ae18f3eca8ea00c6e796faf4500..02e65d25e72911b812446ad4b90bfd611c9c1714 100644
--- a/drivers/pinctrl/pinctrl-xway.c
+++ b/drivers/pinctrl/pinctrl-xway.c
@@ -1228,10 +1228,10 @@ static int xway_pinconf_set(struct pinctrl_dev *pctldev,
 	return 0;
 }
 
-int xway_pinconf_group_set(struct pinctrl_dev *pctldev,
-			unsigned selector,
-			unsigned long *configs,
-			unsigned num_configs)
+static int xway_pinconf_group_set(struct pinctrl_dev *pctldev,
+				  unsigned int selector,
+				  unsigned long *configs,
+				  unsigned int num_configs)
 {
 	struct ltq_pinmux_info *info = pinctrl_dev_get_drvdata(pctldev);
 	int i, ret = 0;

-- 
2.48.1


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

* [PATCH 08/16] pinctrl: xway: use new GPIO line value setter callbacks
  2025-06-12 13:15 [PATCH 00/16] pinctrl: use new GPIO line value setter callbacks Bartosz Golaszewski
                   ` (6 preceding siblings ...)
  2025-06-12 13:15 ` [PATCH 07/16] pinctrl: xway: statify xway_pinconf_group_set() Bartosz Golaszewski
@ 2025-06-12 13:15 ` Bartosz Golaszewski
  2025-06-12 13:15 ` [PATCH 09/16] pinctrl: digicolor: " Bartosz Golaszewski
                   ` (8 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: Bartosz Golaszewski @ 2025-06-12 13:15 UTC (permalink / raw)
  To: Dvorkin Dmitry, Wells Lu, Linus Walleij, Bartosz Golaszewski,
	Patrice Chotard, Support Opensource, Baruch Siach, Sven Peter,
	Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Viresh Kumar,
	Lakshmi Sowjanya D, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland
  Cc: linux-arm-kernel, linux-gpio, linux-kernel, asahi, soc,
	linux-sunxi, 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-xway.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-xway.c b/drivers/pinctrl/pinctrl-xway.c
index 02e65d25e72911b812446ad4b90bfd611c9c1714..53c6c22ff24d752ba66bdd8d46c860bfd9a93731 100644
--- a/drivers/pinctrl/pinctrl-xway.c
+++ b/drivers/pinctrl/pinctrl-xway.c
@@ -1293,7 +1293,7 @@ static struct ltq_pinmux_info xway_info = {
 };
 
 /* ---------  gpio_chip related code --------- */
-static void xway_gpio_set(struct gpio_chip *chip, unsigned int pin, int val)
+static int xway_gpio_set(struct gpio_chip *chip, unsigned int pin, int val)
 {
 	struct ltq_pinmux_info *info = dev_get_drvdata(chip->parent);
 
@@ -1301,6 +1301,8 @@ static void xway_gpio_set(struct gpio_chip *chip, unsigned int pin, int val)
 		gpio_setbit(info->membase[0], GPIO_OUT(pin), PORT_PIN(pin));
 	else
 		gpio_clearbit(info->membase[0], GPIO_OUT(pin), PORT_PIN(pin));
+
+	return 0;
 }
 
 static int xway_gpio_get(struct gpio_chip *chip, unsigned int pin)
@@ -1328,9 +1330,7 @@ static int xway_gpio_dir_out(struct gpio_chip *chip, unsigned int pin, int val)
 	else
 		gpio_setbit(info->membase[0], GPIO_OD(pin), PORT_PIN(pin));
 	gpio_setbit(info->membase[0], GPIO_DIR(pin), PORT_PIN(pin));
-	xway_gpio_set(chip, pin, val);
-
-	return 0;
+	return xway_gpio_set(chip, pin, val);
 }
 
 /*
@@ -1354,7 +1354,7 @@ static struct gpio_chip xway_chip = {
 	.direction_input = xway_gpio_dir_in,
 	.direction_output = xway_gpio_dir_out,
 	.get = xway_gpio_get,
-	.set = xway_gpio_set,
+	.set_rv = xway_gpio_set,
 	.request = gpiochip_generic_request,
 	.free = gpiochip_generic_free,
 	.to_irq = xway_gpio_to_irq,

-- 
2.48.1


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

* [PATCH 09/16] pinctrl: digicolor: use new GPIO line value setter callbacks
  2025-06-12 13:15 [PATCH 00/16] pinctrl: use new GPIO line value setter callbacks Bartosz Golaszewski
                   ` (7 preceding siblings ...)
  2025-06-12 13:15 ` [PATCH 08/16] pinctrl: xway: use new GPIO line value setter callbacks Bartosz Golaszewski
@ 2025-06-12 13:15 ` Bartosz Golaszewski
  2025-06-12 13:15 ` [PATCH 10/16] pinctrl: apple: " Bartosz Golaszewski
                   ` (7 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: Bartosz Golaszewski @ 2025-06-12 13:15 UTC (permalink / raw)
  To: Dvorkin Dmitry, Wells Lu, Linus Walleij, Bartosz Golaszewski,
	Patrice Chotard, Support Opensource, Baruch Siach, Sven Peter,
	Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Viresh Kumar,
	Lakshmi Sowjanya D, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland
  Cc: linux-arm-kernel, linux-gpio, linux-kernel, asahi, soc,
	linux-sunxi, 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-digicolor.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-digicolor.c b/drivers/pinctrl/pinctrl-digicolor.c
index a0423172bdd6d8600fcb56a542ef498e14308968..1676cb3cc4c98755d287d3d87ba682ffc61192a1 100644
--- a/drivers/pinctrl/pinctrl-digicolor.c
+++ b/drivers/pinctrl/pinctrl-digicolor.c
@@ -182,7 +182,7 @@ static int dc_gpio_direction_input(struct gpio_chip *chip, unsigned gpio)
 	return 0;
 }
 
-static void dc_gpio_set(struct gpio_chip *chip, unsigned gpio, int value);
+static int dc_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value);
 
 static int dc_gpio_direction_output(struct gpio_chip *chip, unsigned gpio,
 				    int value)
@@ -216,7 +216,7 @@ static int dc_gpio_get(struct gpio_chip *chip, unsigned gpio)
 	return !!(input & BIT(bit_off));
 }
 
-static void dc_gpio_set(struct gpio_chip *chip, unsigned gpio, int value)
+static int dc_gpio_set(struct gpio_chip *chip, unsigned int gpio, int value)
 {
 	struct dc_pinmap *pmap = gpiochip_get_data(chip);
 	int reg_off = GP_OUTPUT0(gpio/PINS_PER_COLLECTION);
@@ -232,6 +232,8 @@ static void dc_gpio_set(struct gpio_chip *chip, unsigned gpio, int value)
 		output &= ~BIT(bit_off);
 	writeb_relaxed(output, pmap->regs + reg_off);
 	spin_unlock_irqrestore(&pmap->lock, flags);
+
+	return 0;
 }
 
 static int dc_gpiochip_add(struct dc_pinmap *pmap)
@@ -246,7 +248,7 @@ static int dc_gpiochip_add(struct dc_pinmap *pmap)
 	chip->direction_input	= dc_gpio_direction_input;
 	chip->direction_output	= dc_gpio_direction_output;
 	chip->get		= dc_gpio_get;
-	chip->set		= dc_gpio_set;
+	chip->set_rv		= dc_gpio_set;
 	chip->base		= -1;
 	chip->ngpio		= PINS_COUNT;
 

-- 
2.48.1


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

* [PATCH 10/16] pinctrl: apple: use new GPIO line value setter callbacks
  2025-06-12 13:15 [PATCH 00/16] pinctrl: use new GPIO line value setter callbacks Bartosz Golaszewski
                   ` (8 preceding siblings ...)
  2025-06-12 13:15 ` [PATCH 09/16] pinctrl: digicolor: " Bartosz Golaszewski
@ 2025-06-12 13:15 ` Bartosz Golaszewski
  2025-06-13  7:20   ` Janne Grunau
  2025-06-12 13:15 ` [PATCH 11/16] pinctrl: pic32: " Bartosz Golaszewski
                   ` (6 subsequent siblings)
  16 siblings, 1 reply; 19+ messages in thread
From: Bartosz Golaszewski @ 2025-06-12 13:15 UTC (permalink / raw)
  To: Dvorkin Dmitry, Wells Lu, Linus Walleij, Bartosz Golaszewski,
	Patrice Chotard, Support Opensource, Baruch Siach, Sven Peter,
	Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Viresh Kumar,
	Lakshmi Sowjanya D, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland
  Cc: linux-arm-kernel, linux-gpio, linux-kernel, asahi, soc,
	linux-sunxi, 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-apple-gpio.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-apple-gpio.c b/drivers/pinctrl/pinctrl-apple-gpio.c
index 0f551d67d482d96c7a1e4c28a6db580f0db6452e..dcf3a921b4df54250194403f06a3c1fb40110eaa 100644
--- a/drivers/pinctrl/pinctrl-apple-gpio.c
+++ b/drivers/pinctrl/pinctrl-apple-gpio.c
@@ -217,11 +217,13 @@ static int apple_gpio_get(struct gpio_chip *chip, unsigned offset)
 	return !!(reg & REG_GPIOx_DATA);
 }
 
-static void apple_gpio_set(struct gpio_chip *chip, unsigned int offset, int value)
+static int apple_gpio_set(struct gpio_chip *chip, unsigned int offset, int value)
 {
 	struct apple_gpio_pinctrl *pctl = gpiochip_get_data(chip);
 
 	apple_gpio_set_reg(pctl, offset, REG_GPIOx_DATA, value ? REG_GPIOx_DATA : 0);
+
+	return 0;
 }
 
 static int apple_gpio_direction_input(struct gpio_chip *chip, unsigned int offset)
@@ -376,7 +378,7 @@ static int apple_gpio_register(struct apple_gpio_pinctrl *pctl)
 	pctl->gpio_chip.direction_input = apple_gpio_direction_input;
 	pctl->gpio_chip.direction_output = apple_gpio_direction_output;
 	pctl->gpio_chip.get = apple_gpio_get;
-	pctl->gpio_chip.set = apple_gpio_set;
+	pctl->gpio_chip.set_rv = apple_gpio_set;
 	pctl->gpio_chip.base = -1;
 	pctl->gpio_chip.ngpio = pctl->pinctrl_desc.npins;
 	pctl->gpio_chip.parent = pctl->dev;

-- 
2.48.1


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

* [PATCH 11/16] pinctrl: pic32: use new GPIO line value setter callbacks
  2025-06-12 13:15 [PATCH 00/16] pinctrl: use new GPIO line value setter callbacks Bartosz Golaszewski
                   ` (9 preceding siblings ...)
  2025-06-12 13:15 ` [PATCH 10/16] pinctrl: apple: " Bartosz Golaszewski
@ 2025-06-12 13:15 ` Bartosz Golaszewski
  2025-06-12 13:15 ` [PATCH 12/16] pinctrl: spear: " Bartosz Golaszewski
                   ` (5 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: Bartosz Golaszewski @ 2025-06-12 13:15 UTC (permalink / raw)
  To: Dvorkin Dmitry, Wells Lu, Linus Walleij, Bartosz Golaszewski,
	Patrice Chotard, Support Opensource, Baruch Siach, Sven Peter,
	Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Viresh Kumar,
	Lakshmi Sowjanya D, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland
  Cc: linux-arm-kernel, linux-gpio, linux-kernel, asahi, soc,
	linux-sunxi, 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-pic32.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-pic32.c b/drivers/pinctrl/pinctrl-pic32.c
index bf827ab081a1d672c440a8b4eccab539fdc215e7..6d64cab97e8116625c2efce29a3e5db8248bcba4 100644
--- a/drivers/pinctrl/pinctrl-pic32.c
+++ b/drivers/pinctrl/pinctrl-pic32.c
@@ -1828,8 +1828,8 @@ static int pic32_gpio_get(struct gpio_chip *chip, unsigned offset)
 	return !!(readl(bank->reg_base + PORT_REG) & BIT(offset));
 }
 
-static void pic32_gpio_set(struct gpio_chip *chip, unsigned offset,
-			       int value)
+static int pic32_gpio_set(struct gpio_chip *chip, unsigned int offset,
+			  int value)
 {
 	struct pic32_gpio_bank *bank = gpiochip_get_data(chip);
 	u32 mask = BIT(offset);
@@ -1838,6 +1838,8 @@ static void pic32_gpio_set(struct gpio_chip *chip, unsigned offset,
 		writel(mask, bank->reg_base + PIC32_SET(PORT_REG));
 	else
 		writel(mask, bank->reg_base + PIC32_CLR(PORT_REG));
+
+	return 0;
 }
 
 static int pic32_gpio_direction_output(struct gpio_chip *chip,
@@ -2118,7 +2120,7 @@ static void pic32_gpio_irq_handler(struct irq_desc *desc)
 			.direction_input = pic32_gpio_direction_input,	\
 			.direction_output = pic32_gpio_direction_output, \
 			.get = pic32_gpio_get,				\
-			.set = pic32_gpio_set,				\
+			.set_rv = pic32_gpio_set,			\
 			.ngpio = _npins,				\
 			.base = GPIO_BANK_START(_bank),			\
 			.owner = THIS_MODULE,				\

-- 
2.48.1


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

* [PATCH 12/16] pinctrl: spear: use new GPIO line value setter callbacks
  2025-06-12 13:15 [PATCH 00/16] pinctrl: use new GPIO line value setter callbacks Bartosz Golaszewski
                   ` (10 preceding siblings ...)
  2025-06-12 13:15 ` [PATCH 11/16] pinctrl: pic32: " Bartosz Golaszewski
@ 2025-06-12 13:15 ` Bartosz Golaszewski
  2025-06-12 13:15 ` [PATCH 13/16] pinctrl: keembay: " Bartosz Golaszewski
                   ` (4 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: Bartosz Golaszewski @ 2025-06-12 13:15 UTC (permalink / raw)
  To: Dvorkin Dmitry, Wells Lu, Linus Walleij, Bartosz Golaszewski,
	Patrice Chotard, Support Opensource, Baruch Siach, Sven Peter,
	Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Viresh Kumar,
	Lakshmi Sowjanya D, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland
  Cc: linux-arm-kernel, linux-gpio, linux-kernel, asahi, soc,
	linux-sunxi, 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/spear/pinctrl-plgpio.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/pinctrl/spear/pinctrl-plgpio.c b/drivers/pinctrl/spear/pinctrl-plgpio.c
index a05570c7d833d9b8268989f2a6e54e1873d20de9..e8234d2156daa5ada8adff5848ee4cf136257c3f 100644
--- a/drivers/pinctrl/spear/pinctrl-plgpio.c
+++ b/drivers/pinctrl/spear/pinctrl-plgpio.c
@@ -181,24 +181,27 @@ static int plgpio_get_value(struct gpio_chip *chip, unsigned offset)
 	return is_plgpio_set(plgpio->regmap, offset, plgpio->regs.rdata);
 }
 
-static void plgpio_set_value(struct gpio_chip *chip, unsigned offset, int value)
+static int plgpio_set_value(struct gpio_chip *chip, unsigned int offset,
+			    int value)
 {
 	struct plgpio *plgpio = gpiochip_get_data(chip);
 
 	if (offset >= chip->ngpio)
-		return;
+		return -EINVAL;
 
 	/* get correct offset for "offset" pin */
 	if (plgpio->p2o && (plgpio->p2o_regs & PTO_WDATA_REG)) {
 		offset = plgpio->p2o(offset);
 		if (offset == -1)
-			return;
+			return -EINVAL;
 	}
 
 	if (value)
 		plgpio_reg_set(plgpio->regmap, offset, plgpio->regs.wdata);
 	else
 		plgpio_reg_reset(plgpio->regmap, offset, plgpio->regs.wdata);
+
+	return 0;
 }
 
 static int plgpio_request(struct gpio_chip *chip, unsigned offset)
@@ -579,7 +582,7 @@ static int plgpio_probe(struct platform_device *pdev)
 	plgpio->chip.direction_input = plgpio_direction_input;
 	plgpio->chip.direction_output = plgpio_direction_output;
 	plgpio->chip.get = plgpio_get_value;
-	plgpio->chip.set = plgpio_set_value;
+	plgpio->chip.set_rv = plgpio_set_value;
 	plgpio->chip.label = dev_name(&pdev->dev);
 	plgpio->chip.parent = &pdev->dev;
 	plgpio->chip.owner = THIS_MODULE;

-- 
2.48.1


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

* [PATCH 13/16] pinctrl: keembay: use new GPIO line value setter callbacks
  2025-06-12 13:15 [PATCH 00/16] pinctrl: use new GPIO line value setter callbacks Bartosz Golaszewski
                   ` (11 preceding siblings ...)
  2025-06-12 13:15 ` [PATCH 12/16] pinctrl: spear: " Bartosz Golaszewski
@ 2025-06-12 13:15 ` Bartosz Golaszewski
  2025-06-12 13:15 ` [PATCH 14/16] pinctrl: sunxi: " Bartosz Golaszewski
                   ` (3 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: Bartosz Golaszewski @ 2025-06-12 13:15 UTC (permalink / raw)
  To: Dvorkin Dmitry, Wells Lu, Linus Walleij, Bartosz Golaszewski,
	Patrice Chotard, Support Opensource, Baruch Siach, Sven Peter,
	Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Viresh Kumar,
	Lakshmi Sowjanya D, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland
  Cc: linux-arm-kernel, linux-gpio, linux-kernel, asahi, soc,
	linux-sunxi, 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-keembay.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-keembay.c b/drivers/pinctrl/pinctrl-keembay.c
index 0d7cc8280ea2168e69cf3d0ea415f6d2389efd03..622000139317e9dfb95e9a76f2478366daebdcaf 100644
--- a/drivers/pinctrl/pinctrl-keembay.c
+++ b/drivers/pinctrl/pinctrl-keembay.c
@@ -1188,7 +1188,7 @@ static int keembay_gpio_get(struct gpio_chip *gc, unsigned int pin)
 	return keembay_read_pin(kpc->base0 + offset, pin);
 }
 
-static void keembay_gpio_set(struct gpio_chip *gc, unsigned int pin, int val)
+static int keembay_gpio_set(struct gpio_chip *gc, unsigned int pin, int val)
 {
 	struct keembay_pinctrl *kpc = gpiochip_get_data(gc);
 	unsigned int reg_val;
@@ -1200,6 +1200,8 @@ static void keembay_gpio_set(struct gpio_chip *gc, unsigned int pin, int val)
 	else
 		keembay_write_gpio_reg(~reg_val | BIT(pin % KEEMBAY_GPIO_MAX_PER_REG),
 				       kpc->base0 + KEEMBAY_GPIO_DATA_LOW, pin);
+
+	return 0;
 }
 
 static int keembay_gpio_get_direction(struct gpio_chip *gc, unsigned int pin)
@@ -1231,9 +1233,8 @@ static int keembay_gpio_set_direction_out(struct gpio_chip *gc,
 	val = keembay_read_reg(kpc->base1 + KEEMBAY_GPIO_MODE, pin);
 	val &= ~KEEMBAY_GPIO_MODE_DIR;
 	keembay_write_reg(val, kpc->base1 + KEEMBAY_GPIO_MODE, pin);
-	keembay_gpio_set(gc, pin, value);
 
-	return 0;
+	return keembay_gpio_set(gc, pin, value);
 }
 
 static void keembay_gpio_irq_handler(struct irq_desc *desc)
@@ -1480,7 +1481,7 @@ static int keembay_gpiochip_probe(struct keembay_pinctrl *kpc,
 	gc->direction_input	= keembay_gpio_set_direction_in;
 	gc->direction_output	= keembay_gpio_set_direction_out;
 	gc->get			= keembay_gpio_get;
-	gc->set			= keembay_gpio_set;
+	gc->set_rv		= keembay_gpio_set;
 	gc->set_config		= gpiochip_generic_config;
 	gc->base		= -1;
 	gc->ngpio		= kpc->npins;

-- 
2.48.1


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

* [PATCH 14/16] pinctrl: sunxi: use new GPIO line value setter callbacks
  2025-06-12 13:15 [PATCH 00/16] pinctrl: use new GPIO line value setter callbacks Bartosz Golaszewski
                   ` (12 preceding siblings ...)
  2025-06-12 13:15 ` [PATCH 13/16] pinctrl: keembay: " Bartosz Golaszewski
@ 2025-06-12 13:15 ` Bartosz Golaszewski
  2025-06-12 13:15 ` [PATCH 15/16] pinctrl: as3722: " Bartosz Golaszewski
                   ` (2 subsequent siblings)
  16 siblings, 0 replies; 19+ messages in thread
From: Bartosz Golaszewski @ 2025-06-12 13:15 UTC (permalink / raw)
  To: Dvorkin Dmitry, Wells Lu, Linus Walleij, Bartosz Golaszewski,
	Patrice Chotard, Support Opensource, Baruch Siach, Sven Peter,
	Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Viresh Kumar,
	Lakshmi Sowjanya D, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland
  Cc: linux-arm-kernel, linux-gpio, linux-kernel, asahi, soc,
	linux-sunxi, 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/sunxi/pinctrl-sunxi.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/pinctrl/sunxi/pinctrl-sunxi.c b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
index bf8612d72daacdde6209b0b5c84e010ef3b846c9..9a94c5276828aca51212f536400897e447c62ecd 100644
--- a/drivers/pinctrl/sunxi/pinctrl-sunxi.c
+++ b/drivers/pinctrl/sunxi/pinctrl-sunxi.c
@@ -955,8 +955,8 @@ static int sunxi_pinctrl_gpio_get(struct gpio_chip *chip, unsigned offset)
 	return val;
 }
 
-static void sunxi_pinctrl_gpio_set(struct gpio_chip *chip,
-				unsigned offset, int value)
+static int sunxi_pinctrl_gpio_set(struct gpio_chip *chip, unsigned int offset,
+				  int value)
 {
 	struct sunxi_pinctrl *pctl = gpiochip_get_data(chip);
 	u32 reg, shift, mask, val;
@@ -976,6 +976,8 @@ static void sunxi_pinctrl_gpio_set(struct gpio_chip *chip,
 	writel(val, pctl->membase + reg);
 
 	raw_spin_unlock_irqrestore(&pctl->lock, flags);
+
+	return 0;
 }
 
 static int sunxi_pinctrl_gpio_direction_output(struct gpio_chip *chip,
@@ -1597,7 +1599,7 @@ int sunxi_pinctrl_init_with_flags(struct platform_device *pdev,
 	pctl->chip->direction_input = sunxi_pinctrl_gpio_direction_input;
 	pctl->chip->direction_output = sunxi_pinctrl_gpio_direction_output;
 	pctl->chip->get = sunxi_pinctrl_gpio_get;
-	pctl->chip->set = sunxi_pinctrl_gpio_set;
+	pctl->chip->set_rv = sunxi_pinctrl_gpio_set;
 	pctl->chip->of_xlate = sunxi_pinctrl_gpio_of_xlate;
 	pctl->chip->to_irq = sunxi_pinctrl_gpio_to_irq;
 	pctl->chip->of_gpio_n_cells = 3;

-- 
2.48.1


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

* [PATCH 15/16] pinctrl: as3722: use new GPIO line value setter callbacks
  2025-06-12 13:15 [PATCH 00/16] pinctrl: use new GPIO line value setter callbacks Bartosz Golaszewski
                   ` (13 preceding siblings ...)
  2025-06-12 13:15 ` [PATCH 14/16] pinctrl: sunxi: " Bartosz Golaszewski
@ 2025-06-12 13:15 ` Bartosz Golaszewski
  2025-06-12 13:15 ` [PATCH 16/16] pinctrl: amdisp: " Bartosz Golaszewski
  2025-06-18 12:09 ` [PATCH 00/16] pinctrl: " Linus Walleij
  16 siblings, 0 replies; 19+ messages in thread
From: Bartosz Golaszewski @ 2025-06-12 13:15 UTC (permalink / raw)
  To: Dvorkin Dmitry, Wells Lu, Linus Walleij, Bartosz Golaszewski,
	Patrice Chotard, Support Opensource, Baruch Siach, Sven Peter,
	Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Viresh Kumar,
	Lakshmi Sowjanya D, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland
  Cc: linux-arm-kernel, linux-gpio, linux-kernel, asahi, soc,
	linux-sunxi, 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-as3722.c | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-as3722.c b/drivers/pinctrl/pinctrl-as3722.c
index 0d8c75ce20eda97627aef773342a0b63ff6114a1..0c7777a7669fe60d7ffd15263261a9f4d5d7b659 100644
--- a/drivers/pinctrl/pinctrl-as3722.c
+++ b/drivers/pinctrl/pinctrl-as3722.c
@@ -471,8 +471,8 @@ static int as3722_gpio_get(struct gpio_chip *chip, unsigned offset)
 	return (invert_enable) ? !val : val;
 }
 
-static void as3722_gpio_set(struct gpio_chip *chip, unsigned offset,
-		int value)
+static int as3722_gpio_set(struct gpio_chip *chip, unsigned int offset,
+			   int value)
 {
 	struct as3722_pctrl_info *as_pci = gpiochip_get_data(chip);
 	struct as3722 *as3722 = as_pci->as3722;
@@ -484,7 +484,7 @@ static void as3722_gpio_set(struct gpio_chip *chip, unsigned offset,
 	if (ret < 0) {
 		dev_err(as_pci->dev,
 			"GPIO_CONTROL%d_REG read failed: %d\n", offset, ret);
-		return;
+		return ret;
 	}
 	en_invert = !!(val & AS3722_GPIO_INV);
 
@@ -498,12 +498,19 @@ static void as3722_gpio_set(struct gpio_chip *chip, unsigned offset,
 	if (ret < 0)
 		dev_err(as_pci->dev,
 			"GPIO_SIGNAL_OUT_REG update failed: %d\n", ret);
+
+	return ret;
 }
 
 static int as3722_gpio_direction_output(struct gpio_chip *chip,
-		unsigned offset, int value)
+					unsigned int offset, int value)
 {
-	as3722_gpio_set(chip, offset, value);
+	int ret;
+
+	ret = as3722_gpio_set(chip, offset, value);
+	if (ret)
+		return ret;
+
 	return pinctrl_gpio_direction_output(chip, offset);
 }
 
@@ -520,7 +527,7 @@ static const struct gpio_chip as3722_gpio_chip = {
 	.request		= gpiochip_generic_request,
 	.free			= gpiochip_generic_free,
 	.get			= as3722_gpio_get,
-	.set			= as3722_gpio_set,
+	.set_rv			= as3722_gpio_set,
 	.direction_input	= pinctrl_gpio_direction_input,
 	.direction_output	= as3722_gpio_direction_output,
 	.to_irq			= as3722_gpio_to_irq,

-- 
2.48.1


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

* [PATCH 16/16] pinctrl: amdisp: use new GPIO line value setter callbacks
  2025-06-12 13:15 [PATCH 00/16] pinctrl: use new GPIO line value setter callbacks Bartosz Golaszewski
                   ` (14 preceding siblings ...)
  2025-06-12 13:15 ` [PATCH 15/16] pinctrl: as3722: " Bartosz Golaszewski
@ 2025-06-12 13:15 ` Bartosz Golaszewski
  2025-06-18 12:09 ` [PATCH 00/16] pinctrl: " Linus Walleij
  16 siblings, 0 replies; 19+ messages in thread
From: Bartosz Golaszewski @ 2025-06-12 13:15 UTC (permalink / raw)
  To: Dvorkin Dmitry, Wells Lu, Linus Walleij, Bartosz Golaszewski,
	Patrice Chotard, Support Opensource, Baruch Siach, Sven Peter,
	Janne Grunau, Alyssa Rosenzweig, Neal Gompa, Viresh Kumar,
	Lakshmi Sowjanya D, Chen-Yu Tsai, Jernej Skrabec, Samuel Holland
  Cc: linux-arm-kernel, linux-gpio, linux-kernel, asahi, soc,
	linux-sunxi, 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-amdisp.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-amdisp.c b/drivers/pinctrl/pinctrl-amdisp.c
index 9256ed67bb20e9eefef6c6574f1b60d71814cdc0..2e706bf8bcde0536b9e09614665d46130e12c406 100644
--- a/drivers/pinctrl/pinctrl-amdisp.c
+++ b/drivers/pinctrl/pinctrl-amdisp.c
@@ -117,7 +117,7 @@ static int amdisp_gpio_get(struct gpio_chip *gc, unsigned int gpio)
 	return !!(pin_reg & BIT(GPIO_CONTROL_PIN));
 }
 
-static void amdisp_gpio_set(struct gpio_chip *gc, unsigned int gpio, int value)
+static int amdisp_gpio_set(struct gpio_chip *gc, unsigned int gpio, int value)
 {
 	unsigned long flags;
 	u32 pin_reg;
@@ -131,6 +131,8 @@ static void amdisp_gpio_set(struct gpio_chip *gc, unsigned int gpio, int value)
 		pin_reg &= ~BIT(GPIO_CONTROL_PIN);
 	writel(pin_reg, pctrl->gpiobase + gpio_offset[gpio]);
 	raw_spin_unlock_irqrestore(&pctrl->lock, flags);
+
+	return 0;
 }
 
 static int amdisp_gpiochip_add(struct platform_device *pdev,
@@ -149,7 +151,7 @@ static int amdisp_gpiochip_add(struct platform_device *pdev,
 	gc->direction_input	= amdisp_gpio_direction_input;
 	gc->direction_output	= amdisp_gpio_direction_output;
 	gc->get			= amdisp_gpio_get;
-	gc->set			= amdisp_gpio_set;
+	gc->set_rv		= amdisp_gpio_set;
 	gc->base		= -1;
 	gc->ngpio		= ARRAY_SIZE(amdisp_range_pins);
 

-- 
2.48.1


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

* Re: [PATCH 10/16] pinctrl: apple: use new GPIO line value setter callbacks
  2025-06-12 13:15 ` [PATCH 10/16] pinctrl: apple: " Bartosz Golaszewski
@ 2025-06-13  7:20   ` Janne Grunau
  0 siblings, 0 replies; 19+ messages in thread
From: Janne Grunau @ 2025-06-13  7:20 UTC (permalink / raw)
  To: Bartosz Golaszewski
  Cc: Dvorkin Dmitry, Wells Lu, Linus Walleij, Patrice Chotard,
	Support Opensource, Baruch Siach, Sven Peter, Alyssa Rosenzweig,
	Neal Gompa, Viresh Kumar, Lakshmi Sowjanya D, Chen-Yu Tsai,
	Jernej Skrabec, Samuel Holland, linux-arm-kernel, linux-gpio,
	linux-kernel, asahi, soc, linux-sunxi, Bartosz Golaszewski

On Thu, Jun 12, 2025 at 03:15:19PM +0200, 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-apple-gpio.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/pinctrl/pinctrl-apple-gpio.c b/drivers/pinctrl/pinctrl-apple-gpio.c
> index 0f551d67d482d96c7a1e4c28a6db580f0db6452e..dcf3a921b4df54250194403f06a3c1fb40110eaa 100644
> --- a/drivers/pinctrl/pinctrl-apple-gpio.c
> +++ b/drivers/pinctrl/pinctrl-apple-gpio.c
> @@ -217,11 +217,13 @@ static int apple_gpio_get(struct gpio_chip *chip, unsigned offset)
>  	return !!(reg & REG_GPIOx_DATA);
>  }
>  
> -static void apple_gpio_set(struct gpio_chip *chip, unsigned int offset, int value)
> +static int apple_gpio_set(struct gpio_chip *chip, unsigned int offset, int value)
>  {
>  	struct apple_gpio_pinctrl *pctl = gpiochip_get_data(chip);
>  
>  	apple_gpio_set_reg(pctl, offset, REG_GPIOx_DATA, value ? REG_GPIOx_DATA : 0);
> +
> +	return 0;
>  }
>  
>  static int apple_gpio_direction_input(struct gpio_chip *chip, unsigned int offset)
> @@ -376,7 +378,7 @@ static int apple_gpio_register(struct apple_gpio_pinctrl *pctl)
>  	pctl->gpio_chip.direction_input = apple_gpio_direction_input;
>  	pctl->gpio_chip.direction_output = apple_gpio_direction_output;
>  	pctl->gpio_chip.get = apple_gpio_get;
> -	pctl->gpio_chip.set = apple_gpio_set;
> +	pctl->gpio_chip.set_rv = apple_gpio_set;
>  	pctl->gpio_chip.base = -1;
>  	pctl->gpio_chip.ngpio = pctl->pinctrl_desc.npins;
>  	pctl->gpio_chip.parent = pctl->dev;

apple_gpio_set_reg() could pass the return value of regmap_update_bits()
but I suppose this change to switch to the new callback is ok on its
own.

Reviewed-by: Janne Grunau <j@jannau.net>

Janne 

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

* Re: [PATCH 00/16] pinctrl: use new GPIO line value setter callbacks
  2025-06-12 13:15 [PATCH 00/16] pinctrl: use new GPIO line value setter callbacks Bartosz Golaszewski
                   ` (15 preceding siblings ...)
  2025-06-12 13:15 ` [PATCH 16/16] pinctrl: amdisp: " Bartosz Golaszewski
@ 2025-06-18 12:09 ` Linus Walleij
  16 siblings, 0 replies; 19+ messages in thread
From: Linus Walleij @ 2025-06-18 12:09 UTC (permalink / raw)
  To: Bartosz Golaszewski
  Cc: Dvorkin Dmitry, Wells Lu, Patrice Chotard, Support Opensource,
	Baruch Siach, Sven Peter, Janne Grunau, Alyssa Rosenzweig,
	Neal Gompa, Viresh Kumar, Lakshmi Sowjanya D, Chen-Yu Tsai,
	Jernej Skrabec, Samuel Holland, linux-arm-kernel, linux-gpio,
	linux-kernel, asahi, soc, linux-sunxi, Bartosz Golaszewski

On Thu, Jun 12, 2025 at 3:15 PM Bartosz Golaszewski <brgl@bgdev.pl> wrote:

> Commit 98ce1eb1fd87e ("gpiolib: introduce gpio_chip setters that return
> values") added new line setter callbacks to struct gpio_chip. They allow
> to indicate failures to callers. We're in the process of converting all
> GPIO controllers to using them before removing the old ones. This series
> converts remaining pinctrl drivers that still use old APIs.
>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>

Patches applied!

Yours,
Linus Walleij

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

end of thread, other threads:[~2025-06-18 12:09 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-12 13:15 [PATCH 00/16] pinctrl: use new GPIO line value setter callbacks Bartosz Golaszewski
2025-06-12 13:15 ` [PATCH 01/16] pinctrl: sppctl: " Bartosz Golaszewski
2025-06-12 13:15 ` [PATCH 02/16] pinctrl: st: " Bartosz Golaszewski
2025-06-12 13:15 ` [PATCH 03/16] pinctrl: da9062: " Bartosz Golaszewski
2025-06-12 13:15 ` [PATCH 04/16] pinctrl: mcp23s08: " Bartosz Golaszewski
2025-06-12 13:15 ` [PATCH 05/16] pinctrl: wmt: " Bartosz Golaszewski
2025-06-12 13:15 ` [PATCH 06/16] pinctrl: aw9523: " Bartosz Golaszewski
2025-06-12 13:15 ` [PATCH 07/16] pinctrl: xway: statify xway_pinconf_group_set() Bartosz Golaszewski
2025-06-12 13:15 ` [PATCH 08/16] pinctrl: xway: use new GPIO line value setter callbacks Bartosz Golaszewski
2025-06-12 13:15 ` [PATCH 09/16] pinctrl: digicolor: " Bartosz Golaszewski
2025-06-12 13:15 ` [PATCH 10/16] pinctrl: apple: " Bartosz Golaszewski
2025-06-13  7:20   ` Janne Grunau
2025-06-12 13:15 ` [PATCH 11/16] pinctrl: pic32: " Bartosz Golaszewski
2025-06-12 13:15 ` [PATCH 12/16] pinctrl: spear: " Bartosz Golaszewski
2025-06-12 13:15 ` [PATCH 13/16] pinctrl: keembay: " Bartosz Golaszewski
2025-06-12 13:15 ` [PATCH 14/16] pinctrl: sunxi: " Bartosz Golaszewski
2025-06-12 13:15 ` [PATCH 15/16] pinctrl: as3722: " Bartosz Golaszewski
2025-06-12 13:15 ` [PATCH 16/16] pinctrl: amdisp: " Bartosz Golaszewski
2025-06-18 12:09 ` [PATCH 00/16] pinctrl: " Linus Walleij

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