* [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, ®_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
* 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
* [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 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