* [PATCH v2 00/12] gpio: use new GPIO line value setter callbacks
@ 2025-06-19 8:33 Bartosz Golaszewski
2025-06-19 8:33 ` [PATCH v2 01/12] gpio: pca9570: " Bartosz Golaszewski
` (12 more replies)
0 siblings, 13 replies; 21+ messages in thread
From: Bartosz Golaszewski @ 2025-06-19 8:33 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Orson Zhai,
Baolin Wang, Chunyan Zhang, Robert Jarzmik, Heiko Stuebner
Cc: linux-gpio, linux-kernel, linux-arm-kernel, linux-rockchip,
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 another round of GPIO drivers.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
Changes in v2:
- fix a NULL-pointer dereference in gpio-reg: use the correct function
pointer when calling the setter callback directly
- Link to v1: https://lore.kernel.org/r/20250617-gpiochip-set-rv-gpio-v1-0-903703881fa2@linaro.org
---
Bartosz Golaszewski (12):
gpio: pca9570: use new GPIO line value setter callbacks
gpio: pcf857x: use new GPIO line value setter callbacks
gpio: pch: use new GPIO line value setter callbacks
gpio: pl061: use new GPIO line value setter callbacks
gpio: pmic-eic-sprd: drop unneeded .set() callback
gpio: pxa: use new GPIO line value setter callbacks
gpio: rc5t583: use new GPIO line value setter callbacks
gpio: rdc321x: use new GPIO line value setter callbacks
gpio: reg: use new GPIO line value setter callbacks
gpio: rockchip: use new GPIO line value setter callbacks
gpio: rtd: use new GPIO line value setter callbacks
gpio: sa1100: use new GPIO line value setter callbacks
drivers/gpio/gpio-pca9570.c | 5 +++--
drivers/gpio/gpio-pcf857x.c | 17 ++++++++++-------
drivers/gpio/gpio-pch.c | 6 ++++--
drivers/gpio/gpio-pl061.c | 6 ++++--
drivers/gpio/gpio-pmic-eic-sprd.c | 7 -------
drivers/gpio/gpio-pxa.c | 6 ++++--
drivers/gpio/gpio-rc5t583.c | 19 ++++++++++++++-----
drivers/gpio/gpio-rdc321x.c | 8 +++++---
drivers/gpio/gpio-reg.c | 8 +++++---
drivers/gpio/gpio-rockchip.c | 8 +++++---
drivers/gpio/gpio-rtd.c | 6 ++++--
drivers/gpio/gpio-sa1100.c | 7 +++++--
12 files changed, 63 insertions(+), 40 deletions(-)
---
base-commit: 9da895e97057ad946b2e727694af3fa5ee51d527
change-id: 20250617-gpiochip-set-rv-gpio-e1e864768942
Best regards,
--
Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v2 01/12] gpio: pca9570: use new GPIO line value setter callbacks
2025-06-19 8:33 [PATCH v2 00/12] gpio: use new GPIO line value setter callbacks Bartosz Golaszewski
@ 2025-06-19 8:33 ` Bartosz Golaszewski
2025-06-19 8:33 ` [PATCH v2 02/12] gpio: pcf857x: " Bartosz Golaszewski
` (11 subsequent siblings)
12 siblings, 0 replies; 21+ messages in thread
From: Bartosz Golaszewski @ 2025-06-19 8:33 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Orson Zhai,
Baolin Wang, Chunyan Zhang, Robert Jarzmik, Heiko Stuebner
Cc: linux-gpio, linux-kernel, linux-arm-kernel, linux-rockchip,
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/gpio/gpio-pca9570.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/gpio/gpio-pca9570.c b/drivers/gpio/gpio-pca9570.c
index d37ba404936835bca160822ee361604827976e9b..a33246f20fd838a57abeedbbd7e58259bf073a86 100644
--- a/drivers/gpio/gpio-pca9570.c
+++ b/drivers/gpio/gpio-pca9570.c
@@ -88,7 +88,7 @@ static int pca9570_get(struct gpio_chip *chip, unsigned offset)
return !!(buffer & BIT(offset));
}
-static void pca9570_set(struct gpio_chip *chip, unsigned offset, int value)
+static int pca9570_set(struct gpio_chip *chip, unsigned int offset, int value)
{
struct pca9570 *gpio = gpiochip_get_data(chip);
u8 buffer;
@@ -110,6 +110,7 @@ static void pca9570_set(struct gpio_chip *chip, unsigned offset, int value)
out:
mutex_unlock(&gpio->lock);
+ return ret;
}
static int pca9570_probe(struct i2c_client *client)
@@ -125,7 +126,7 @@ static int pca9570_probe(struct i2c_client *client)
gpio->chip.owner = THIS_MODULE;
gpio->chip.get_direction = pca9570_get_direction;
gpio->chip.get = pca9570_get;
- gpio->chip.set = pca9570_set;
+ gpio->chip.set_rv = pca9570_set;
gpio->chip.base = -1;
gpio->chip_data = device_get_match_data(&client->dev);
gpio->chip.ngpio = gpio->chip_data->ngpio;
--
2.48.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 02/12] gpio: pcf857x: use new GPIO line value setter callbacks
2025-06-19 8:33 [PATCH v2 00/12] gpio: use new GPIO line value setter callbacks Bartosz Golaszewski
2025-06-19 8:33 ` [PATCH v2 01/12] gpio: pca9570: " Bartosz Golaszewski
@ 2025-06-19 8:33 ` Bartosz Golaszewski
2025-06-19 8:33 ` [PATCH v2 03/12] gpio: pch: " Bartosz Golaszewski
` (10 subsequent siblings)
12 siblings, 0 replies; 21+ messages in thread
From: Bartosz Golaszewski @ 2025-06-19 8:33 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Orson Zhai,
Baolin Wang, Chunyan Zhang, Robert Jarzmik, Heiko Stuebner
Cc: linux-gpio, linux-kernel, linux-arm-kernel, linux-rockchip,
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/gpio/gpio-pcf857x.c | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/drivers/gpio/gpio-pcf857x.c b/drivers/gpio/gpio-pcf857x.c
index 2e5f5d7f886598318b753304e7e0efca54ff8b69..a042036803336439d8e164fcfbd0263b0e84f3a4 100644
--- a/drivers/gpio/gpio-pcf857x.c
+++ b/drivers/gpio/gpio-pcf857x.c
@@ -171,21 +171,24 @@ static int pcf857x_output(struct gpio_chip *chip, unsigned int offset, int value
return status;
}
-static void pcf857x_set(struct gpio_chip *chip, unsigned int offset, int value)
+static int pcf857x_set(struct gpio_chip *chip, unsigned int offset, int value)
{
- pcf857x_output(chip, offset, value);
+ return pcf857x_output(chip, offset, value);
}
-static void pcf857x_set_multiple(struct gpio_chip *chip, unsigned long *mask,
- unsigned long *bits)
+static int pcf857x_set_multiple(struct gpio_chip *chip, unsigned long *mask,
+ unsigned long *bits)
{
struct pcf857x *gpio = gpiochip_get_data(chip);
+ int status;
mutex_lock(&gpio->lock);
gpio->out &= ~*mask;
gpio->out |= *bits & *mask;
- gpio->write(gpio->client, gpio->out);
+ status = gpio->write(gpio->client, gpio->out);
mutex_unlock(&gpio->lock);
+
+ return status;
}
/*-------------------------------------------------------------------------*/
@@ -292,8 +295,8 @@ static int pcf857x_probe(struct i2c_client *client)
gpio->chip.owner = THIS_MODULE;
gpio->chip.get = pcf857x_get;
gpio->chip.get_multiple = pcf857x_get_multiple;
- gpio->chip.set = pcf857x_set;
- gpio->chip.set_multiple = pcf857x_set_multiple;
+ gpio->chip.set_rv = pcf857x_set;
+ gpio->chip.set_multiple_rv = pcf857x_set_multiple;
gpio->chip.direction_input = pcf857x_input;
gpio->chip.direction_output = pcf857x_output;
gpio->chip.ngpio = (uintptr_t)i2c_get_match_data(client);
--
2.48.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 03/12] gpio: pch: use new GPIO line value setter callbacks
2025-06-19 8:33 [PATCH v2 00/12] gpio: use new GPIO line value setter callbacks Bartosz Golaszewski
2025-06-19 8:33 ` [PATCH v2 01/12] gpio: pca9570: " Bartosz Golaszewski
2025-06-19 8:33 ` [PATCH v2 02/12] gpio: pcf857x: " Bartosz Golaszewski
@ 2025-06-19 8:33 ` Bartosz Golaszewski
2025-06-19 8:34 ` Bartosz Golaszewski
2025-06-19 8:33 ` [PATCH v2 04/12] gpio: pl061: " Bartosz Golaszewski
` (9 subsequent siblings)
12 siblings, 1 reply; 21+ messages in thread
From: Bartosz Golaszewski @ 2025-06-19 8:33 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Orson Zhai,
Baolin Wang, Chunyan Zhang, Robert Jarzmik, Heiko Stuebner
Cc: linux-gpio, linux-kernel, linux-arm-kernel, linux-rockchip,
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/gpio/gpio-pch.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/gpio/gpio-pch.c b/drivers/gpio/gpio-pch.c
index 63f25c72eac2fb98156eb7682e780247a893d7e7..c6f313342ba06a1386d8ff8a882c9344a9e809e7 100644
--- a/drivers/gpio/gpio-pch.c
+++ b/drivers/gpio/gpio-pch.c
@@ -99,7 +99,7 @@ struct pch_gpio {
spinlock_t spinlock;
};
-static void pch_gpio_set(struct gpio_chip *gpio, unsigned int nr, int val)
+static int pch_gpio_set(struct gpio_chip *gpio, unsigned int nr, int val)
{
u32 reg_val;
struct pch_gpio *chip = gpiochip_get_data(gpio);
@@ -114,6 +114,8 @@ static void pch_gpio_set(struct gpio_chip *gpio, unsigned int nr, int val)
iowrite32(reg_val, &chip->reg->po);
spin_unlock_irqrestore(&chip->spinlock, flags);
+
+ return 0;
}
static int pch_gpio_get(struct gpio_chip *gpio, unsigned int nr)
@@ -217,7 +219,7 @@ static void pch_gpio_setup(struct pch_gpio *chip)
gpio->direction_input = pch_gpio_direction_input;
gpio->get = pch_gpio_get;
gpio->direction_output = pch_gpio_direction_output;
- gpio->set = pch_gpio_set;
+ gpio->set_rv = pch_gpio_set;
gpio->base = -1;
gpio->ngpio = gpio_pins[chip->ioh];
gpio->can_sleep = false;
--
2.48.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 04/12] gpio: pl061: use new GPIO line value setter callbacks
2025-06-19 8:33 [PATCH v2 00/12] gpio: use new GPIO line value setter callbacks Bartosz Golaszewski
` (2 preceding siblings ...)
2025-06-19 8:33 ` [PATCH v2 03/12] gpio: pch: " Bartosz Golaszewski
@ 2025-06-19 8:33 ` Bartosz Golaszewski
2025-06-19 8:35 ` Bartosz Golaszewski
2025-06-19 8:33 ` [PATCH v2 05/12] gpio: pmic-eic-sprd: drop unneeded .set() callback Bartosz Golaszewski
` (8 subsequent siblings)
12 siblings, 1 reply; 21+ messages in thread
From: Bartosz Golaszewski @ 2025-06-19 8:33 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Orson Zhai,
Baolin Wang, Chunyan Zhang, Robert Jarzmik, Heiko Stuebner
Cc: linux-gpio, linux-kernel, linux-arm-kernel, linux-rockchip,
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/gpio/gpio-pl061.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/gpio/gpio-pl061.c b/drivers/gpio/gpio-pl061.c
index 1c273727ffa3ac54d0f1e66bd6efb784d2a8604e..98cfac4eac85295915b801a62d62c8d78f6cbc4a 100644
--- a/drivers/gpio/gpio-pl061.c
+++ b/drivers/gpio/gpio-pl061.c
@@ -115,11 +115,13 @@ static int pl061_get_value(struct gpio_chip *gc, unsigned offset)
return !!readb(pl061->base + (BIT(offset + 2)));
}
-static void pl061_set_value(struct gpio_chip *gc, unsigned offset, int value)
+static int pl061_set_value(struct gpio_chip *gc, unsigned int offset, int value)
{
struct pl061 *pl061 = gpiochip_get_data(gc);
writeb(!!value << offset, pl061->base + (BIT(offset + 2)));
+
+ return 0;
}
static int pl061_irq_type(struct irq_data *d, unsigned trigger)
@@ -328,7 +330,7 @@ static int pl061_probe(struct amba_device *adev, const struct amba_id *id)
pl061->gc.direction_input = pl061_direction_input;
pl061->gc.direction_output = pl061_direction_output;
pl061->gc.get = pl061_get_value;
- pl061->gc.set = pl061_set_value;
+ pl061->gc.set_rv = pl061_set_value;
pl061->gc.ngpio = PL061_GPIO_NR;
pl061->gc.label = dev_name(dev);
pl061->gc.parent = dev;
--
2.48.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 05/12] gpio: pmic-eic-sprd: drop unneeded .set() callback
2025-06-19 8:33 [PATCH v2 00/12] gpio: use new GPIO line value setter callbacks Bartosz Golaszewski
` (3 preceding siblings ...)
2025-06-19 8:33 ` [PATCH v2 04/12] gpio: pl061: " Bartosz Golaszewski
@ 2025-06-19 8:33 ` Bartosz Golaszewski
2025-06-19 8:36 ` Bartosz Golaszewski
2025-06-19 8:58 ` Bartosz Golaszewski
2025-06-19 8:33 ` [PATCH v2 06/12] gpio: pxa: use new GPIO line value setter callbacks Bartosz Golaszewski
` (7 subsequent siblings)
12 siblings, 2 replies; 21+ messages in thread
From: Bartosz Golaszewski @ 2025-06-19 8:33 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Orson Zhai,
Baolin Wang, Chunyan Zhang, Robert Jarzmik, Heiko Stuebner
Cc: linux-gpio, linux-kernel, linux-arm-kernel, linux-rockchip,
Bartosz Golaszewski
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
The lines on this chip are input-only. GPIO core can handle the missing
.set() callback so there's no need to implement a dummy here. Drop it.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
drivers/gpio/gpio-pmic-eic-sprd.c | 7 -------
1 file changed, 7 deletions(-)
diff --git a/drivers/gpio/gpio-pmic-eic-sprd.c b/drivers/gpio/gpio-pmic-eic-sprd.c
index d9b228bea42eec53ba9d0d0945125f530a22946c..cb015fb5c9467484022723910354219e2c98d3c7 100644
--- a/drivers/gpio/gpio-pmic-eic-sprd.c
+++ b/drivers/gpio/gpio-pmic-eic-sprd.c
@@ -109,12 +109,6 @@ static int sprd_pmic_eic_direction_input(struct gpio_chip *chip,
return 0;
}
-static void sprd_pmic_eic_set(struct gpio_chip *chip, unsigned int offset,
- int value)
-{
- /* EICs are always input, nothing need to do here. */
-}
-
static int sprd_pmic_eic_set_debounce(struct gpio_chip *chip,
unsigned int offset,
unsigned int debounce)
@@ -351,7 +345,6 @@ static int sprd_pmic_eic_probe(struct platform_device *pdev)
pmic_eic->chip.request = sprd_pmic_eic_request;
pmic_eic->chip.free = sprd_pmic_eic_free;
pmic_eic->chip.set_config = sprd_pmic_eic_set_config;
- pmic_eic->chip.set = sprd_pmic_eic_set;
pmic_eic->chip.get = sprd_pmic_eic_get;
pmic_eic->chip.can_sleep = true;
--
2.48.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 06/12] gpio: pxa: use new GPIO line value setter callbacks
2025-06-19 8:33 [PATCH v2 00/12] gpio: use new GPIO line value setter callbacks Bartosz Golaszewski
` (4 preceding siblings ...)
2025-06-19 8:33 ` [PATCH v2 05/12] gpio: pmic-eic-sprd: drop unneeded .set() callback Bartosz Golaszewski
@ 2025-06-19 8:33 ` Bartosz Golaszewski
2025-06-19 8:33 ` [PATCH v2 07/12] gpio: rc5t583: " Bartosz Golaszewski
` (6 subsequent siblings)
12 siblings, 0 replies; 21+ messages in thread
From: Bartosz Golaszewski @ 2025-06-19 8:33 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Orson Zhai,
Baolin Wang, Chunyan Zhang, Robert Jarzmik, Heiko Stuebner
Cc: linux-gpio, linux-kernel, linux-arm-kernel, linux-rockchip,
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/gpio/gpio-pxa.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/gpio/gpio-pxa.c b/drivers/gpio/gpio-pxa.c
index 131ab79ebce7555313fd93b3ebd80582d1b9327d..13f7da2a9486428bb8d1d44d2caf9f21f82cbca5 100644
--- a/drivers/gpio/gpio-pxa.c
+++ b/drivers/gpio/gpio-pxa.c
@@ -315,12 +315,14 @@ static int pxa_gpio_get(struct gpio_chip *chip, unsigned offset)
return !!(gplr & GPIO_bit(offset));
}
-static void pxa_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
+static int pxa_gpio_set(struct gpio_chip *chip, unsigned int offset, int value)
{
void __iomem *base = gpio_bank_base(chip, offset);
writel_relaxed(GPIO_bit(offset),
base + (value ? GPSR_OFFSET : GPCR_OFFSET));
+
+ return 0;
}
#ifdef CONFIG_OF_GPIO
@@ -353,7 +355,7 @@ static int pxa_init_gpio_chip(struct pxa_gpio_chip *pchip, int ngpio, void __iom
pchip->chip.direction_input = pxa_gpio_direction_input;
pchip->chip.direction_output = pxa_gpio_direction_output;
pchip->chip.get = pxa_gpio_get;
- pchip->chip.set = pxa_gpio_set;
+ pchip->chip.set_rv = pxa_gpio_set;
pchip->chip.to_irq = pxa_gpio_to_irq;
pchip->chip.ngpio = ngpio;
pchip->chip.request = gpiochip_generic_request;
--
2.48.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 07/12] gpio: rc5t583: use new GPIO line value setter callbacks
2025-06-19 8:33 [PATCH v2 00/12] gpio: use new GPIO line value setter callbacks Bartosz Golaszewski
` (5 preceding siblings ...)
2025-06-19 8:33 ` [PATCH v2 06/12] gpio: pxa: use new GPIO line value setter callbacks Bartosz Golaszewski
@ 2025-06-19 8:33 ` Bartosz Golaszewski
2025-06-19 8:33 ` [PATCH v2 08/12] gpio: rdc321x: " Bartosz Golaszewski
` (5 subsequent siblings)
12 siblings, 0 replies; 21+ messages in thread
From: Bartosz Golaszewski @ 2025-06-19 8:33 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Orson Zhai,
Baolin Wang, Chunyan Zhang, Robert Jarzmik, Heiko Stuebner
Cc: linux-gpio, linux-kernel, linux-arm-kernel, linux-rockchip,
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/gpio/gpio-rc5t583.c | 19 ++++++++++++++-----
1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/drivers/gpio/gpio-rc5t583.c b/drivers/gpio/gpio-rc5t583.c
index c34dcadaee36d5fb775d4aaa8c8f8b275f4e2382..cf3e91d235df2eefc7d0fc93a58824edd55e9aba 100644
--- a/drivers/gpio/gpio-rc5t583.c
+++ b/drivers/gpio/gpio-rc5t583.c
@@ -35,14 +35,20 @@ static int rc5t583_gpio_get(struct gpio_chip *gc, unsigned int offset)
return !!(val & BIT(offset));
}
-static void rc5t583_gpio_set(struct gpio_chip *gc, unsigned int offset, int val)
+static int rc5t583_gpio_set(struct gpio_chip *gc, unsigned int offset, int val)
{
struct rc5t583_gpio *rc5t583_gpio = gpiochip_get_data(gc);
struct device *parent = rc5t583_gpio->rc5t583->dev;
+ int ret;
+
if (val)
- rc5t583_set_bits(parent, RC5T583_GPIO_IOOUT, BIT(offset));
+ ret = rc5t583_set_bits(parent, RC5T583_GPIO_IOOUT,
+ BIT(offset));
else
- rc5t583_clear_bits(parent, RC5T583_GPIO_IOOUT, BIT(offset));
+ ret = rc5t583_clear_bits(parent, RC5T583_GPIO_IOOUT,
+ BIT(offset));
+
+ return ret;
}
static int rc5t583_gpio_dir_input(struct gpio_chip *gc, unsigned int offset)
@@ -66,7 +72,10 @@ static int rc5t583_gpio_dir_output(struct gpio_chip *gc, unsigned offset,
struct device *parent = rc5t583_gpio->rc5t583->dev;
int ret;
- rc5t583_gpio_set(gc, offset, value);
+ ret = rc5t583_gpio_set(gc, offset, value);
+ if (ret)
+ return ret;
+
ret = rc5t583_set_bits(parent, RC5T583_GPIO_IOSEL, BIT(offset));
if (ret < 0)
return ret;
@@ -109,7 +118,7 @@ static int rc5t583_gpio_probe(struct platform_device *pdev)
rc5t583_gpio->gpio_chip.free = rc5t583_gpio_free,
rc5t583_gpio->gpio_chip.direction_input = rc5t583_gpio_dir_input,
rc5t583_gpio->gpio_chip.direction_output = rc5t583_gpio_dir_output,
- rc5t583_gpio->gpio_chip.set = rc5t583_gpio_set,
+ rc5t583_gpio->gpio_chip.set_rv = rc5t583_gpio_set,
rc5t583_gpio->gpio_chip.get = rc5t583_gpio_get,
rc5t583_gpio->gpio_chip.to_irq = rc5t583_gpio_to_irq,
rc5t583_gpio->gpio_chip.ngpio = RC5T583_MAX_GPIO,
--
2.48.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 08/12] gpio: rdc321x: use new GPIO line value setter callbacks
2025-06-19 8:33 [PATCH v2 00/12] gpio: use new GPIO line value setter callbacks Bartosz Golaszewski
` (6 preceding siblings ...)
2025-06-19 8:33 ` [PATCH v2 07/12] gpio: rc5t583: " Bartosz Golaszewski
@ 2025-06-19 8:33 ` Bartosz Golaszewski
2025-06-19 8:33 ` [PATCH v2 09/12] gpio: reg: " Bartosz Golaszewski
` (4 subsequent siblings)
12 siblings, 0 replies; 21+ messages in thread
From: Bartosz Golaszewski @ 2025-06-19 8:33 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Orson Zhai,
Baolin Wang, Chunyan Zhang, Robert Jarzmik, Heiko Stuebner
Cc: linux-gpio, linux-kernel, linux-arm-kernel, linux-rockchip,
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/gpio/gpio-rdc321x.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/gpio/gpio-rdc321x.c b/drivers/gpio/gpio-rdc321x.c
index ec7fb9220a4747fad5dfdb88e25e68d2a104e37a..a75ed8021de57db122938e4736c3ac994bcdd2d1 100644
--- a/drivers/gpio/gpio-rdc321x.c
+++ b/drivers/gpio/gpio-rdc321x.c
@@ -64,8 +64,8 @@ static void rdc_gpio_set_value_impl(struct gpio_chip *chip,
}
/* set GPIO pin to value */
-static void rdc_gpio_set_value(struct gpio_chip *chip,
- unsigned gpio, int value)
+static int rdc_gpio_set_value(struct gpio_chip *chip, unsigned int gpio,
+ int value)
{
struct rdc321x_gpio *gpch;
@@ -73,6 +73,8 @@ static void rdc_gpio_set_value(struct gpio_chip *chip,
spin_lock(&gpch->lock);
rdc_gpio_set_value_impl(chip, gpio, value);
spin_unlock(&gpch->lock);
+
+ return 0;
}
static int rdc_gpio_config(struct gpio_chip *chip,
@@ -157,7 +159,7 @@ static int rdc321x_gpio_probe(struct platform_device *pdev)
rdc321x_gpio_dev->chip.direction_input = rdc_gpio_direction_input;
rdc321x_gpio_dev->chip.direction_output = rdc_gpio_config;
rdc321x_gpio_dev->chip.get = rdc_gpio_get_value;
- rdc321x_gpio_dev->chip.set = rdc_gpio_set_value;
+ rdc321x_gpio_dev->chip.set_rv = rdc_gpio_set_value;
rdc321x_gpio_dev->chip.base = 0;
rdc321x_gpio_dev->chip.ngpio = pdata->max_gpios;
--
2.48.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 09/12] gpio: reg: use new GPIO line value setter callbacks
2025-06-19 8:33 [PATCH v2 00/12] gpio: use new GPIO line value setter callbacks Bartosz Golaszewski
` (7 preceding siblings ...)
2025-06-19 8:33 ` [PATCH v2 08/12] gpio: rdc321x: " Bartosz Golaszewski
@ 2025-06-19 8:33 ` Bartosz Golaszewski
2025-06-19 14:34 ` Bartosz Golaszewski
2025-06-19 8:33 ` [PATCH v2 10/12] gpio: rockchip: " Bartosz Golaszewski
` (3 subsequent siblings)
12 siblings, 1 reply; 21+ messages in thread
From: Bartosz Golaszewski @ 2025-06-19 8:33 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Orson Zhai,
Baolin Wang, Chunyan Zhang, Robert Jarzmik, Heiko Stuebner
Cc: linux-gpio, linux-kernel, linux-arm-kernel, linux-rockchip,
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/gpio/gpio-reg.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/gpio/gpio-reg.c b/drivers/gpio/gpio-reg.c
index 73c7260d89c083a702b1d914ddca7a573a37de4a..557dd77ce30bbca6174babbcabc965cdcec57896 100644
--- a/drivers/gpio/gpio-reg.c
+++ b/drivers/gpio/gpio-reg.c
@@ -46,7 +46,7 @@ static int gpio_reg_direction_output(struct gpio_chip *gc, unsigned offset,
if (r->direction & BIT(offset))
return -ENOTSUPP;
- gc->set(gc, offset, value);
+ gc->set_rv(gc, offset, value);
return 0;
}
@@ -57,7 +57,7 @@ static int gpio_reg_direction_input(struct gpio_chip *gc, unsigned offset)
return r->direction & BIT(offset) ? 0 : -ENOTSUPP;
}
-static void gpio_reg_set(struct gpio_chip *gc, unsigned offset, int value)
+static int gpio_reg_set(struct gpio_chip *gc, unsigned int offset, int value)
{
struct gpio_reg *r = to_gpio_reg(gc);
unsigned long flags;
@@ -72,6 +72,8 @@ static void gpio_reg_set(struct gpio_chip *gc, unsigned offset, int value)
r->out = val;
writel_relaxed(val, r->reg);
spin_unlock_irqrestore(&r->lock, flags);
+
+ return 0;
}
static int gpio_reg_get(struct gpio_chip *gc, unsigned offset)
@@ -157,7 +159,7 @@ struct gpio_chip *gpio_reg_init(struct device *dev, void __iomem *reg,
r->gc.get_direction = gpio_reg_get_direction;
r->gc.direction_input = gpio_reg_direction_input;
r->gc.direction_output = gpio_reg_direction_output;
- r->gc.set = gpio_reg_set;
+ r->gc.set_rv = gpio_reg_set;
r->gc.get = gpio_reg_get;
r->gc.set_multiple = gpio_reg_set_multiple;
if (irqs)
--
2.48.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 10/12] gpio: rockchip: use new GPIO line value setter callbacks
2025-06-19 8:33 [PATCH v2 00/12] gpio: use new GPIO line value setter callbacks Bartosz Golaszewski
` (8 preceding siblings ...)
2025-06-19 8:33 ` [PATCH v2 09/12] gpio: reg: " Bartosz Golaszewski
@ 2025-06-19 8:33 ` Bartosz Golaszewski
2025-06-19 8:54 ` Heiko Stuebner
2025-06-19 8:33 ` [PATCH v2 11/12] gpio: rtd: " Bartosz Golaszewski
` (2 subsequent siblings)
12 siblings, 1 reply; 21+ messages in thread
From: Bartosz Golaszewski @ 2025-06-19 8:33 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Orson Zhai,
Baolin Wang, Chunyan Zhang, Robert Jarzmik, Heiko Stuebner
Cc: linux-gpio, linux-kernel, linux-arm-kernel, linux-rockchip,
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/gpio/gpio-rockchip.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/gpio/gpio-rockchip.c b/drivers/gpio/gpio-rockchip.c
index 64700a003f9a17947dd38baea23a066e8c057caf..ecd60ff9e1dd1a090bfad204c8b86c4d7fb68ce7 100644
--- a/drivers/gpio/gpio-rockchip.c
+++ b/drivers/gpio/gpio-rockchip.c
@@ -177,8 +177,8 @@ static int rockchip_gpio_set_direction(struct gpio_chip *chip,
return 0;
}
-static void rockchip_gpio_set(struct gpio_chip *gc, unsigned int offset,
- int value)
+static int rockchip_gpio_set(struct gpio_chip *gc, unsigned int offset,
+ int value)
{
struct rockchip_pin_bank *bank = gpiochip_get_data(gc);
unsigned long flags;
@@ -186,6 +186,8 @@ static void rockchip_gpio_set(struct gpio_chip *gc, unsigned int offset,
raw_spin_lock_irqsave(&bank->slock, flags);
rockchip_gpio_writel_bit(bank, offset, value, bank->gpio_regs->port_dr);
raw_spin_unlock_irqrestore(&bank->slock, flags);
+
+ return 0;
}
static int rockchip_gpio_get(struct gpio_chip *gc, unsigned int offset)
@@ -325,7 +327,7 @@ static int rockchip_gpio_to_irq(struct gpio_chip *gc, unsigned int offset)
static const struct gpio_chip rockchip_gpiolib_chip = {
.request = gpiochip_generic_request,
.free = gpiochip_generic_free,
- .set = rockchip_gpio_set,
+ .set_rv = rockchip_gpio_set,
.get = rockchip_gpio_get,
.get_direction = rockchip_gpio_get_direction,
.direction_input = rockchip_gpio_direction_input,
--
2.48.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 11/12] gpio: rtd: use new GPIO line value setter callbacks
2025-06-19 8:33 [PATCH v2 00/12] gpio: use new GPIO line value setter callbacks Bartosz Golaszewski
` (9 preceding siblings ...)
2025-06-19 8:33 ` [PATCH v2 10/12] gpio: rockchip: " Bartosz Golaszewski
@ 2025-06-19 8:33 ` Bartosz Golaszewski
2025-06-19 8:33 ` [PATCH v2 12/12] gpio: sa1100: " Bartosz Golaszewski
2025-06-23 7:27 ` (subset) [PATCH v2 00/12] gpio: " Bartosz Golaszewski
12 siblings, 0 replies; 21+ messages in thread
From: Bartosz Golaszewski @ 2025-06-19 8:33 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Orson Zhai,
Baolin Wang, Chunyan Zhang, Robert Jarzmik, Heiko Stuebner
Cc: linux-gpio, linux-kernel, linux-arm-kernel, linux-rockchip,
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/gpio/gpio-rtd.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/gpio/gpio-rtd.c b/drivers/gpio/gpio-rtd.c
index bf7f008f58d703347cba14f35c19f5798ee3a949..25bbd749b019bf8a272c173a3e7373a442f72350 100644
--- a/drivers/gpio/gpio-rtd.c
+++ b/drivers/gpio/gpio-rtd.c
@@ -275,7 +275,7 @@ static int rtd_gpio_set_config(struct gpio_chip *chip, unsigned int offset,
}
}
-static void rtd_gpio_set(struct gpio_chip *chip, unsigned int offset, int value)
+static int rtd_gpio_set(struct gpio_chip *chip, unsigned int offset, int value)
{
struct rtd_gpio *data = gpiochip_get_data(chip);
u32 mask = BIT(offset % 32);
@@ -292,6 +292,8 @@ static void rtd_gpio_set(struct gpio_chip *chip, unsigned int offset, int value)
else
val &= ~mask;
writel_relaxed(val, data->base + dato_reg_offset);
+
+ return 0;
}
static int rtd_gpio_get(struct gpio_chip *chip, unsigned int offset)
@@ -563,7 +565,7 @@ static int rtd_gpio_probe(struct platform_device *pdev)
data->gpio_chip.get_direction = rtd_gpio_get_direction;
data->gpio_chip.direction_input = rtd_gpio_direction_input;
data->gpio_chip.direction_output = rtd_gpio_direction_output;
- data->gpio_chip.set = rtd_gpio_set;
+ data->gpio_chip.set_rv = rtd_gpio_set;
data->gpio_chip.get = rtd_gpio_get;
data->gpio_chip.set_config = rtd_gpio_set_config;
data->gpio_chip.parent = dev;
--
2.48.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 12/12] gpio: sa1100: use new GPIO line value setter callbacks
2025-06-19 8:33 [PATCH v2 00/12] gpio: use new GPIO line value setter callbacks Bartosz Golaszewski
` (10 preceding siblings ...)
2025-06-19 8:33 ` [PATCH v2 11/12] gpio: rtd: " Bartosz Golaszewski
@ 2025-06-19 8:33 ` Bartosz Golaszewski
2025-06-23 7:27 ` (subset) [PATCH v2 00/12] gpio: " Bartosz Golaszewski
12 siblings, 0 replies; 21+ messages in thread
From: Bartosz Golaszewski @ 2025-06-19 8:33 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Orson Zhai,
Baolin Wang, Chunyan Zhang, Robert Jarzmik, Heiko Stuebner
Cc: linux-gpio, linux-kernel, linux-arm-kernel, linux-rockchip,
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/gpio/gpio-sa1100.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/gpio/gpio-sa1100.c b/drivers/gpio/gpio-sa1100.c
index 3f3ee36bc3cb19a7baf530def0575d2ff09dd3c5..e9d054d78ccb8485b9f662fcec385fe0d0edc0d7 100644
--- a/drivers/gpio/gpio-sa1100.c
+++ b/drivers/gpio/gpio-sa1100.c
@@ -43,11 +43,14 @@ static int sa1100_gpio_get(struct gpio_chip *chip, unsigned offset)
BIT(offset);
}
-static void sa1100_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
+static int sa1100_gpio_set(struct gpio_chip *chip, unsigned int offset,
+ int value)
{
int reg = value ? R_GPSR : R_GPCR;
writel_relaxed(BIT(offset), sa1100_gpio_chip(chip)->membase + reg);
+
+ return 0;
}
static int sa1100_get_direction(struct gpio_chip *chip, unsigned offset)
@@ -96,7 +99,7 @@ static struct sa1100_gpio_chip sa1100_gpio_chip = {
.get_direction = sa1100_get_direction,
.direction_input = sa1100_direction_input,
.direction_output = sa1100_direction_output,
- .set = sa1100_gpio_set,
+ .set_rv = sa1100_gpio_set,
.get = sa1100_gpio_get,
.to_irq = sa1100_to_irq,
.base = 0,
--
2.48.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* Re: [PATCH v2 03/12] gpio: pch: use new GPIO line value setter callbacks
2025-06-19 8:33 ` [PATCH v2 03/12] gpio: pch: " Bartosz Golaszewski
@ 2025-06-19 8:34 ` Bartosz Golaszewski
0 siblings, 0 replies; 21+ messages in thread
From: Bartosz Golaszewski @ 2025-06-19 8:34 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Orson Zhai,
Baolin Wang, Chunyan Zhang, Robert Jarzmik, Heiko Stuebner
Cc: linux-gpio, linux-kernel, linux-arm-kernel, linux-rockchip,
Bartosz Golaszewski
On Thu, Jun 19, 2025 at 10:33 AM Bartosz Golaszewski <brgl@bgdev.pl> wrote:
>
> From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
>
> struct gpio_chip now has callbacks for setting line values that return
> an integer, allowing to indicate failures. Convert the driver to using
> them.
>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> ---
Forgot to pick up the trailers. :/
Reviewed-by: Andy Shevchenko <andy@kernel.org>
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 04/12] gpio: pl061: use new GPIO line value setter callbacks
2025-06-19 8:33 ` [PATCH v2 04/12] gpio: pl061: " Bartosz Golaszewski
@ 2025-06-19 8:35 ` Bartosz Golaszewski
0 siblings, 0 replies; 21+ messages in thread
From: Bartosz Golaszewski @ 2025-06-19 8:35 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Orson Zhai,
Baolin Wang, Chunyan Zhang, Robert Jarzmik, Heiko Stuebner
Cc: linux-gpio, linux-kernel, linux-arm-kernel, linux-rockchip,
Bartosz Golaszewski
On Thu, Jun 19, 2025 at 10:33 AM Bartosz Golaszewski <brgl@bgdev.pl> wrote:
>
> From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
>
> struct gpio_chip now has callbacks for setting line values that return
> an integer, allowing to indicate failures. Convert the driver to using
> them.
>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> ---
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 05/12] gpio: pmic-eic-sprd: drop unneeded .set() callback
2025-06-19 8:33 ` [PATCH v2 05/12] gpio: pmic-eic-sprd: drop unneeded .set() callback Bartosz Golaszewski
@ 2025-06-19 8:36 ` Bartosz Golaszewski
2025-06-19 8:53 ` Heiko Stuebner
2025-06-19 8:58 ` Bartosz Golaszewski
1 sibling, 1 reply; 21+ messages in thread
From: Bartosz Golaszewski @ 2025-06-19 8:36 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Orson Zhai,
Baolin Wang, Chunyan Zhang, Robert Jarzmik, Heiko Stuebner
Cc: linux-gpio, linux-kernel, linux-arm-kernel, linux-rockchip,
Bartosz Golaszewski
On Thu, Jun 19, 2025 at 10:33 AM Bartosz Golaszewski <brgl@bgdev.pl> wrote:
>
> From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
>
> The lines on this chip are input-only. GPIO core can handle the missing
> .set() callback so there's no need to implement a dummy here. Drop it.
>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> ---
Baolin Wang <baolin.wang@linux.alibaba.com>
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 05/12] gpio: pmic-eic-sprd: drop unneeded .set() callback
2025-06-19 8:36 ` Bartosz Golaszewski
@ 2025-06-19 8:53 ` Heiko Stuebner
0 siblings, 0 replies; 21+ messages in thread
From: Heiko Stuebner @ 2025-06-19 8:53 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Orson Zhai,
Baolin Wang, Chunyan Zhang, Robert Jarzmik, Bartosz Golaszewski
Cc: linux-gpio, linux-kernel, linux-arm-kernel, linux-rockchip,
Bartosz Golaszewski
Am Donnerstag, 19. Juni 2025, 10:36:06 Mitteleuropäische Sommerzeit schrieb Bartosz Golaszewski:
> On Thu, Jun 19, 2025 at 10:33 AM Bartosz Golaszewski <brgl@bgdev.pl> wrote:
> >
> > From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> >
> > The lines on this chip are input-only. GPIO core can handle the missing
> > .set() callback so there's no need to implement a dummy here. Drop it.
> >
> > Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> > ---
>
> Baolin Wang <baolin.wang@linux.alibaba.com>
I think re-adding that trailer broke - missing the Acked/Reviewed part.
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 10/12] gpio: rockchip: use new GPIO line value setter callbacks
2025-06-19 8:33 ` [PATCH v2 10/12] gpio: rockchip: " Bartosz Golaszewski
@ 2025-06-19 8:54 ` Heiko Stuebner
0 siblings, 0 replies; 21+ messages in thread
From: Heiko Stuebner @ 2025-06-19 8:54 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Orson Zhai,
Baolin Wang, Chunyan Zhang, Robert Jarzmik, Bartosz Golaszewski
Cc: linux-gpio, linux-kernel, linux-arm-kernel, linux-rockchip,
Bartosz Golaszewski
Am Donnerstag, 19. Juni 2025, 10:33:23 Mitteleuropäische Sommerzeit schrieb 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>
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
> ---
> drivers/gpio/gpio-rockchip.c | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpio/gpio-rockchip.c b/drivers/gpio/gpio-rockchip.c
> index 64700a003f9a17947dd38baea23a066e8c057caf..ecd60ff9e1dd1a090bfad204c8b86c4d7fb68ce7 100644
> --- a/drivers/gpio/gpio-rockchip.c
> +++ b/drivers/gpio/gpio-rockchip.c
> @@ -177,8 +177,8 @@ static int rockchip_gpio_set_direction(struct gpio_chip *chip,
> return 0;
> }
>
> -static void rockchip_gpio_set(struct gpio_chip *gc, unsigned int offset,
> - int value)
> +static int rockchip_gpio_set(struct gpio_chip *gc, unsigned int offset,
> + int value)
> {
> struct rockchip_pin_bank *bank = gpiochip_get_data(gc);
> unsigned long flags;
> @@ -186,6 +186,8 @@ static void rockchip_gpio_set(struct gpio_chip *gc, unsigned int offset,
> raw_spin_lock_irqsave(&bank->slock, flags);
> rockchip_gpio_writel_bit(bank, offset, value, bank->gpio_regs->port_dr);
> raw_spin_unlock_irqrestore(&bank->slock, flags);
> +
> + return 0;
> }
>
> static int rockchip_gpio_get(struct gpio_chip *gc, unsigned int offset)
> @@ -325,7 +327,7 @@ static int rockchip_gpio_to_irq(struct gpio_chip *gc, unsigned int offset)
> static const struct gpio_chip rockchip_gpiolib_chip = {
> .request = gpiochip_generic_request,
> .free = gpiochip_generic_free,
> - .set = rockchip_gpio_set,
> + .set_rv = rockchip_gpio_set,
> .get = rockchip_gpio_get,
> .get_direction = rockchip_gpio_get_direction,
> .direction_input = rockchip_gpio_direction_input,
>
>
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 05/12] gpio: pmic-eic-sprd: drop unneeded .set() callback
2025-06-19 8:33 ` [PATCH v2 05/12] gpio: pmic-eic-sprd: drop unneeded .set() callback Bartosz Golaszewski
2025-06-19 8:36 ` Bartosz Golaszewski
@ 2025-06-19 8:58 ` Bartosz Golaszewski
1 sibling, 0 replies; 21+ messages in thread
From: Bartosz Golaszewski @ 2025-06-19 8:58 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Orson Zhai,
Baolin Wang, Chunyan Zhang, Robert Jarzmik, Heiko Stuebner
Cc: linux-gpio, linux-kernel, linux-arm-kernel, linux-rockchip,
Bartosz Golaszewski
On Thu, Jun 19, 2025 at 10:33 AM Bartosz Golaszewski <brgl@bgdev.pl> wrote:
>
> From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
>
> The lines on this chip are input-only. GPIO core can handle the missing
> .set() callback so there's no need to implement a dummy here. Drop it.
>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> ---
Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com>
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 09/12] gpio: reg: use new GPIO line value setter callbacks
2025-06-19 8:33 ` [PATCH v2 09/12] gpio: reg: " Bartosz Golaszewski
@ 2025-06-19 14:34 ` Bartosz Golaszewski
0 siblings, 0 replies; 21+ messages in thread
From: Bartosz Golaszewski @ 2025-06-19 14:34 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Andy Shevchenko, Orson Zhai,
Baolin Wang, Chunyan Zhang, Robert Jarzmik, Heiko Stuebner
Cc: linux-gpio, linux-kernel, linux-arm-kernel, linux-rockchip,
Bartosz Golaszewski
On Thu, Jun 19, 2025 at 10:33 AM Bartosz Golaszewski <brgl@bgdev.pl> wrote:
>
> From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
>
> struct gpio_chip now has callbacks for setting line values that return
> an integer, allowing to indicate failures. Convert the driver to using
> them.
>
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
> ---
Ah dang it, this is still not enough as there are users under
arch/arm/ that scoop out the gpio_chip and call its set_multiple()
callback directly. Next week, I'll just apply other patches from that
series and resend this one corrected separately.
Bartosz
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: (subset) [PATCH v2 00/12] gpio: use new GPIO line value setter callbacks
2025-06-19 8:33 [PATCH v2 00/12] gpio: use new GPIO line value setter callbacks Bartosz Golaszewski
` (11 preceding siblings ...)
2025-06-19 8:33 ` [PATCH v2 12/12] gpio: sa1100: " Bartosz Golaszewski
@ 2025-06-23 7:27 ` Bartosz Golaszewski
12 siblings, 0 replies; 21+ messages in thread
From: Bartosz Golaszewski @ 2025-06-23 7:27 UTC (permalink / raw)
To: Linus Walleij, Andy Shevchenko, Orson Zhai, Baolin Wang,
Chunyan Zhang, Robert Jarzmik, Heiko Stuebner,
Bartosz Golaszewski
Cc: Bartosz Golaszewski, linux-gpio, linux-kernel, linux-arm-kernel,
linux-rockchip
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
On Thu, 19 Jun 2025 10:33:13 +0200, Bartosz Golaszewski 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 another round of GPIO drivers.
>
>
> [...]
Applied, thanks!
[01/12] gpio: pca9570: use new GPIO line value setter callbacks
https://git.kernel.org/brgl/linux/c/40b71f1171da13664e9677fbd993d9098315d71e
[02/12] gpio: pcf857x: use new GPIO line value setter callbacks
https://git.kernel.org/brgl/linux/c/4027438be823abdcfb50ee2abed06fa4e6af4b7c
[03/12] gpio: pch: use new GPIO line value setter callbacks
https://git.kernel.org/brgl/linux/c/74260fb09cc6f6e7bb6741bedca4463079800ead
[04/12] gpio: pl061: use new GPIO line value setter callbacks
https://git.kernel.org/brgl/linux/c/201e0f24a5b73fa73606ae2261d155f00cb6d577
[05/12] gpio: pmic-eic-sprd: drop unneeded .set() callback
https://git.kernel.org/brgl/linux/c/fecdef830c442e4375a3bbdde26af385583fb05c
[06/12] gpio: pxa: use new GPIO line value setter callbacks
https://git.kernel.org/brgl/linux/c/f1ff31c8ef80f4720ebf7854e6af6204dddd9ce3
[07/12] gpio: rc5t583: use new GPIO line value setter callbacks
https://git.kernel.org/brgl/linux/c/309ea5811136a06f572c7abbeae2dcf773629a5e
[08/12] gpio: rdc321x: use new GPIO line value setter callbacks
https://git.kernel.org/brgl/linux/c/76033f1f927cd93907c1e9eb3f86e54015e4366d
[10/12] gpio: rockchip: use new GPIO line value setter callbacks
https://git.kernel.org/brgl/linux/c/6731ad96e8770595d4a6ceb07e587b07d22da110
[11/12] gpio: rtd: use new GPIO line value setter callbacks
https://git.kernel.org/brgl/linux/c/d68ddf651dd2faea5cdc6f6656148b739c38645b
[12/12] gpio: sa1100: use new GPIO line value setter callbacks
https://git.kernel.org/brgl/linux/c/cb908f3699fb137e28017a8fdf506c35762b3eb6
Best regards,
--
Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
^ permalink raw reply [flat|nested] 21+ messages in thread
end of thread, other threads:[~2025-06-23 7:27 UTC | newest]
Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-19 8:33 [PATCH v2 00/12] gpio: use new GPIO line value setter callbacks Bartosz Golaszewski
2025-06-19 8:33 ` [PATCH v2 01/12] gpio: pca9570: " Bartosz Golaszewski
2025-06-19 8:33 ` [PATCH v2 02/12] gpio: pcf857x: " Bartosz Golaszewski
2025-06-19 8:33 ` [PATCH v2 03/12] gpio: pch: " Bartosz Golaszewski
2025-06-19 8:34 ` Bartosz Golaszewski
2025-06-19 8:33 ` [PATCH v2 04/12] gpio: pl061: " Bartosz Golaszewski
2025-06-19 8:35 ` Bartosz Golaszewski
2025-06-19 8:33 ` [PATCH v2 05/12] gpio: pmic-eic-sprd: drop unneeded .set() callback Bartosz Golaszewski
2025-06-19 8:36 ` Bartosz Golaszewski
2025-06-19 8:53 ` Heiko Stuebner
2025-06-19 8:58 ` Bartosz Golaszewski
2025-06-19 8:33 ` [PATCH v2 06/12] gpio: pxa: use new GPIO line value setter callbacks Bartosz Golaszewski
2025-06-19 8:33 ` [PATCH v2 07/12] gpio: rc5t583: " Bartosz Golaszewski
2025-06-19 8:33 ` [PATCH v2 08/12] gpio: rdc321x: " Bartosz Golaszewski
2025-06-19 8:33 ` [PATCH v2 09/12] gpio: reg: " Bartosz Golaszewski
2025-06-19 14:34 ` Bartosz Golaszewski
2025-06-19 8:33 ` [PATCH v2 10/12] gpio: rockchip: " Bartosz Golaszewski
2025-06-19 8:54 ` Heiko Stuebner
2025-06-19 8:33 ` [PATCH v2 11/12] gpio: rtd: " Bartosz Golaszewski
2025-06-19 8:33 ` [PATCH v2 12/12] gpio: sa1100: " Bartosz Golaszewski
2025-06-23 7:27 ` (subset) [PATCH v2 00/12] gpio: " Bartosz Golaszewski
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).