* [PATCH 1/7] media: dvb-frontends/cxd2820r: use new GPIO line value setter callbacks
2025-06-10 12:35 [PATCH 0/7] media: use new GPIO line value setter callbacks Bartosz Golaszewski
@ 2025-06-10 12:35 ` Bartosz Golaszewski
2025-06-10 12:35 ` [PATCH 2/7] media: solo6x10: remove unneeded GPIO direction setters Bartosz Golaszewski
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Bartosz Golaszewski @ 2025-06-10 12:35 UTC (permalink / raw)
To: Mauro Carvalho Chehab, Linus Walleij, Bartosz Golaszewski,
Bluecherry Maintainers, Andrey Utkin, Ismael Luceno,
Tomi Valkeinen, Julien Massot, Jacopo Mondi, Kieran Bingham,
Laurent Pinchart, Niklas Söderlund
Cc: linux-media, linux-kernel, linux-gpio, 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/media/dvb-frontends/cxd2820r_core.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/media/dvb-frontends/cxd2820r_core.c b/drivers/media/dvb-frontends/cxd2820r_core.c
index c3d8ced6c3baa6608e17cc4797dbeddc5a5ed510..a31a8a6a494652e6aae874c399fc70df3f9ee172 100644
--- a/drivers/media/dvb-frontends/cxd2820r_core.c
+++ b/drivers/media/dvb-frontends/cxd2820r_core.c
@@ -433,7 +433,7 @@ static int cxd2820r_gpio_direction_output(struct gpio_chip *chip, unsigned nr,
return cxd2820r_gpio(&priv->fe, gpio);
}
-static void cxd2820r_gpio_set(struct gpio_chip *chip, unsigned nr, int val)
+static int cxd2820r_gpio_set(struct gpio_chip *chip, unsigned int nr, int val)
{
struct cxd2820r_priv *priv = gpiochip_get_data(chip);
struct i2c_client *client = priv->client[0];
@@ -446,7 +446,7 @@ static void cxd2820r_gpio_set(struct gpio_chip *chip, unsigned nr, int val)
(void) cxd2820r_gpio(&priv->fe, gpio);
- return;
+ return 0;
}
static int cxd2820r_gpio_get(struct gpio_chip *chip, unsigned nr)
@@ -651,7 +651,7 @@ static int cxd2820r_probe(struct i2c_client *client)
priv->gpio_chip.parent = &client->dev;
priv->gpio_chip.owner = THIS_MODULE;
priv->gpio_chip.direction_output = cxd2820r_gpio_direction_output;
- priv->gpio_chip.set = cxd2820r_gpio_set;
+ priv->gpio_chip.set_rv = cxd2820r_gpio_set;
priv->gpio_chip.get = cxd2820r_gpio_get;
priv->gpio_chip.base = -1; /* Dynamic allocation */
priv->gpio_chip.ngpio = GPIO_COUNT;
--
2.48.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/7] media: solo6x10: remove unneeded GPIO direction setters
2025-06-10 12:35 [PATCH 0/7] media: use new GPIO line value setter callbacks Bartosz Golaszewski
2025-06-10 12:35 ` [PATCH 1/7] media: dvb-frontends/cxd2820r: " Bartosz Golaszewski
@ 2025-06-10 12:35 ` Bartosz Golaszewski
2025-06-10 12:35 ` [PATCH 3/7] media: solo6x10: use new GPIO line value setter callbacks Bartosz Golaszewski
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Bartosz Golaszewski @ 2025-06-10 12:35 UTC (permalink / raw)
To: Mauro Carvalho Chehab, Linus Walleij, Bartosz Golaszewski,
Bluecherry Maintainers, Andrey Utkin, Ismael Luceno,
Tomi Valkeinen, Julien Massot, Jacopo Mondi, Kieran Bingham,
Laurent Pinchart, Niklas Söderlund
Cc: linux-media, linux-kernel, linux-gpio, Bartosz Golaszewski
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
GPIO core already handles missing direction_input/output() callbacks.
The ones in this driver also effectively return magic numbers which is
not optimal either (the number accidentally corresponds with -EPERM which
is different from the number GPIOLIB returns and so inconsistent). Just
remove them.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
---
drivers/media/pci/solo6x10/solo6x10-gpio.c | 14 --------------
1 file changed, 14 deletions(-)
diff --git a/drivers/media/pci/solo6x10/solo6x10-gpio.c b/drivers/media/pci/solo6x10/solo6x10-gpio.c
index 084c30760e459e37cd1800132a93dfb0fc70398e..f51f865c69bd7b04fac7a1f951c734965d8fc993 100644
--- a/drivers/media/pci/solo6x10/solo6x10-gpio.c
+++ b/drivers/media/pci/solo6x10/solo6x10-gpio.c
@@ -116,18 +116,6 @@ static int solo_gpiochip_get_direction(struct gpio_chip *chip,
return -1;
}
-static int solo_gpiochip_direction_input(struct gpio_chip *chip,
- unsigned int offset)
-{
- return -1;
-}
-
-static int solo_gpiochip_direction_output(struct gpio_chip *chip,
- unsigned int offset, int value)
-{
- return -1;
-}
-
static int solo_gpiochip_get(struct gpio_chip *chip,
unsigned int offset)
{
@@ -167,8 +155,6 @@ int solo_gpio_init(struct solo_dev *solo_dev)
solo_dev->gpio_dev.can_sleep = 0;
solo_dev->gpio_dev.get_direction = solo_gpiochip_get_direction;
- solo_dev->gpio_dev.direction_input = solo_gpiochip_direction_input;
- solo_dev->gpio_dev.direction_output = solo_gpiochip_direction_output;
solo_dev->gpio_dev.get = solo_gpiochip_get;
solo_dev->gpio_dev.set = solo_gpiochip_set;
--
2.48.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 3/7] media: solo6x10: use new GPIO line value setter callbacks
2025-06-10 12:35 [PATCH 0/7] media: use new GPIO line value setter callbacks Bartosz Golaszewski
2025-06-10 12:35 ` [PATCH 1/7] media: dvb-frontends/cxd2820r: " Bartosz Golaszewski
2025-06-10 12:35 ` [PATCH 2/7] media: solo6x10: remove unneeded GPIO direction setters Bartosz Golaszewski
@ 2025-06-10 12:35 ` Bartosz Golaszewski
2025-06-10 12:35 ` [PATCH 4/7] media: i2c: ds90ub953: " Bartosz Golaszewski
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Bartosz Golaszewski @ 2025-06-10 12:35 UTC (permalink / raw)
To: Mauro Carvalho Chehab, Linus Walleij, Bartosz Golaszewski,
Bluecherry Maintainers, Andrey Utkin, Ismael Luceno,
Tomi Valkeinen, Julien Massot, Jacopo Mondi, Kieran Bingham,
Laurent Pinchart, Niklas Söderlund
Cc: linux-media, linux-kernel, linux-gpio, 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/media/pci/solo6x10/solo6x10-gpio.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/media/pci/solo6x10/solo6x10-gpio.c b/drivers/media/pci/solo6x10/solo6x10-gpio.c
index f51f865c69bd7b04fac7a1f951c734965d8fc993..6948f246a29ca92f12e3320d9c130d9bda7eef6a 100644
--- a/drivers/media/pci/solo6x10/solo6x10-gpio.c
+++ b/drivers/media/pci/solo6x10/solo6x10-gpio.c
@@ -127,7 +127,7 @@ static int solo_gpiochip_get(struct gpio_chip *chip,
return 1 & (ret >> (offset + 8));
}
-static void solo_gpiochip_set(struct gpio_chip *chip,
+static int solo_gpiochip_set(struct gpio_chip *chip,
unsigned int offset, int value)
{
struct solo_dev *solo_dev = gpiochip_get_data(chip);
@@ -136,6 +136,8 @@ static void solo_gpiochip_set(struct gpio_chip *chip,
solo_gpio_set(solo_dev, 1 << (offset + 8));
else
solo_gpio_clear(solo_dev, 1 << (offset + 8));
+
+ return 0;
}
#endif
@@ -156,7 +158,7 @@ int solo_gpio_init(struct solo_dev *solo_dev)
solo_dev->gpio_dev.get_direction = solo_gpiochip_get_direction;
solo_dev->gpio_dev.get = solo_gpiochip_get;
- solo_dev->gpio_dev.set = solo_gpiochip_set;
+ solo_dev->gpio_dev.set_rv = solo_gpiochip_set;
ret = gpiochip_add_data(&solo_dev->gpio_dev, solo_dev);
--
2.48.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 4/7] media: i2c: ds90ub953: use new GPIO line value setter callbacks
2025-06-10 12:35 [PATCH 0/7] media: use new GPIO line value setter callbacks Bartosz Golaszewski
` (2 preceding siblings ...)
2025-06-10 12:35 ` [PATCH 3/7] media: solo6x10: use new GPIO line value setter callbacks Bartosz Golaszewski
@ 2025-06-10 12:35 ` Bartosz Golaszewski
2025-06-10 12:35 ` [PATCH 5/7] media: i2c: ds90ub913: " Bartosz Golaszewski
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Bartosz Golaszewski @ 2025-06-10 12:35 UTC (permalink / raw)
To: Mauro Carvalho Chehab, Linus Walleij, Bartosz Golaszewski,
Bluecherry Maintainers, Andrey Utkin, Ismael Luceno,
Tomi Valkeinen, Julien Massot, Jacopo Mondi, Kieran Bingham,
Laurent Pinchart, Niklas Söderlund
Cc: linux-media, linux-kernel, linux-gpio, 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/media/i2c/ds90ub953.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/drivers/media/i2c/ds90ub953.c b/drivers/media/i2c/ds90ub953.c
index 59bd92388845eedf64587289c7f7424ee570524a..242dbf6d48f3905c8908bbb06ede84e068e2f267 100644
--- a/drivers/media/i2c/ds90ub953.c
+++ b/drivers/media/i2c/ds90ub953.c
@@ -317,14 +317,13 @@ static int ub953_gpio_get(struct gpio_chip *gc, unsigned int offset)
return !!(v & UB953_REG_GPIO_PIN_STS_GPIO_STS(offset));
}
-static void ub953_gpio_set(struct gpio_chip *gc, unsigned int offset, int value)
+static int ub953_gpio_set(struct gpio_chip *gc, unsigned int offset, int value)
{
struct ub953_data *priv = gpiochip_get_data(gc);
- regmap_update_bits(priv->regmap, UB953_REG_LOCAL_GPIO_DATA,
- UB953_REG_LOCAL_GPIO_DATA_GPIO_OUT_SRC(offset),
- value ? UB953_REG_LOCAL_GPIO_DATA_GPIO_OUT_SRC(offset) :
- 0);
+ return regmap_update_bits(priv->regmap, UB953_REG_LOCAL_GPIO_DATA,
+ UB953_REG_LOCAL_GPIO_DATA_GPIO_OUT_SRC(offset),
+ value ? UB953_REG_LOCAL_GPIO_DATA_GPIO_OUT_SRC(offset) : 0);
}
static int ub953_gpio_of_xlate(struct gpio_chip *gc,
@@ -362,7 +361,7 @@ static int ub953_gpiochip_probe(struct ub953_data *priv)
gc->direction_input = ub953_gpio_direction_in;
gc->direction_output = ub953_gpio_direction_out;
gc->get = ub953_gpio_get;
- gc->set = ub953_gpio_set;
+ gc->set_rv = ub953_gpio_set;
gc->of_xlate = ub953_gpio_of_xlate;
gc->of_gpio_n_cells = 2;
--
2.48.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 5/7] media: i2c: ds90ub913: use new GPIO line value setter callbacks
2025-06-10 12:35 [PATCH 0/7] media: use new GPIO line value setter callbacks Bartosz Golaszewski
` (3 preceding siblings ...)
2025-06-10 12:35 ` [PATCH 4/7] media: i2c: ds90ub953: " Bartosz Golaszewski
@ 2025-06-10 12:35 ` Bartosz Golaszewski
2025-06-10 12:35 ` [PATCH 6/7] media: i2c: max96717: " Bartosz Golaszewski
2025-06-10 12:35 ` [PATCH 7/7] media: i2c: max9286: " Bartosz Golaszewski
6 siblings, 0 replies; 8+ messages in thread
From: Bartosz Golaszewski @ 2025-06-10 12:35 UTC (permalink / raw)
To: Mauro Carvalho Chehab, Linus Walleij, Bartosz Golaszewski,
Bluecherry Maintainers, Andrey Utkin, Ismael Luceno,
Tomi Valkeinen, Julien Massot, Jacopo Mondi, Kieran Bingham,
Laurent Pinchart, Niklas Söderlund
Cc: linux-media, linux-kernel, linux-gpio, 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/media/i2c/ds90ub913.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/media/i2c/ds90ub913.c b/drivers/media/i2c/ds90ub913.c
index 6d3f8617ef136c6f47871f5886193fe934c6f3b7..c34ffeae5f5080875463b6b6d45acbd9e107d461 100644
--- a/drivers/media/i2c/ds90ub913.c
+++ b/drivers/media/i2c/ds90ub913.c
@@ -203,9 +203,9 @@ static int ub913_gpio_direction_out(struct gpio_chip *gc, unsigned int offset,
0));
}
-static void ub913_gpio_set(struct gpio_chip *gc, unsigned int offset, int value)
+static int ub913_gpio_set(struct gpio_chip *gc, unsigned int offset, int value)
{
- ub913_gpio_direction_out(gc, offset, value);
+ return ub913_gpio_direction_out(gc, offset, value);
}
static int ub913_gpio_of_xlate(struct gpio_chip *gc,
@@ -235,7 +235,7 @@ static int ub913_gpiochip_probe(struct ub913_data *priv)
gc->ngpio = UB913_NUM_GPIOS;
gc->get_direction = ub913_gpio_get_direction;
gc->direction_output = ub913_gpio_direction_out;
- gc->set = ub913_gpio_set;
+ gc->set_rv = ub913_gpio_set;
gc->of_xlate = ub913_gpio_of_xlate;
gc->of_gpio_n_cells = 2;
--
2.48.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 6/7] media: i2c: max96717: use new GPIO line value setter callbacks
2025-06-10 12:35 [PATCH 0/7] media: use new GPIO line value setter callbacks Bartosz Golaszewski
` (4 preceding siblings ...)
2025-06-10 12:35 ` [PATCH 5/7] media: i2c: ds90ub913: " Bartosz Golaszewski
@ 2025-06-10 12:35 ` Bartosz Golaszewski
2025-06-10 12:35 ` [PATCH 7/7] media: i2c: max9286: " Bartosz Golaszewski
6 siblings, 0 replies; 8+ messages in thread
From: Bartosz Golaszewski @ 2025-06-10 12:35 UTC (permalink / raw)
To: Mauro Carvalho Chehab, Linus Walleij, Bartosz Golaszewski,
Bluecherry Maintainers, Andrey Utkin, Ismael Luceno,
Tomi Valkeinen, Julien Massot, Jacopo Mondi, Kieran Bingham,
Laurent Pinchart, Niklas Söderlund
Cc: linux-media, linux-kernel, linux-gpio, 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/media/i2c/max96717.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/media/i2c/max96717.c b/drivers/media/i2c/max96717.c
index 3746729366aca3af8aef3a807e2f91a8f142ce59..a503a55fe8afa9bdda8fc9b1c2b0e7ebd02afe1c 100644
--- a/drivers/media/i2c/max96717.c
+++ b/drivers/media/i2c/max96717.c
@@ -297,13 +297,13 @@ static int max96717_gpiochip_get(struct gpio_chip *gpiochip,
return !!(val & MAX96717_GPIO_OUT);
}
-static void max96717_gpiochip_set(struct gpio_chip *gpiochip,
- unsigned int offset, int value)
+static int max96717_gpiochip_set(struct gpio_chip *gpiochip,
+ unsigned int offset, int value)
{
struct max96717_priv *priv = gpiochip_get_data(gpiochip);
- cci_update_bits(priv->regmap, MAX96717_GPIO_REG_A(offset),
- MAX96717_GPIO_OUT, MAX96717_GPIO_OUT, NULL);
+ return cci_update_bits(priv->regmap, MAX96717_GPIO_REG_A(offset),
+ MAX96717_GPIO_OUT, MAX96717_GPIO_OUT, NULL);
}
static int max96717_gpio_get_direction(struct gpio_chip *gpiochip,
@@ -355,7 +355,7 @@ static int max96717_gpiochip_probe(struct max96717_priv *priv)
gc->get_direction = max96717_gpio_get_direction;
gc->direction_input = max96717_gpio_direction_in;
gc->direction_output = max96717_gpio_direction_out;
- gc->set = max96717_gpiochip_set;
+ gc->set_rv = max96717_gpiochip_set;
gc->get = max96717_gpiochip_get;
gc->of_gpio_n_cells = 2;
--
2.48.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 7/7] media: i2c: max9286: use new GPIO line value setter callbacks
2025-06-10 12:35 [PATCH 0/7] media: use new GPIO line value setter callbacks Bartosz Golaszewski
` (5 preceding siblings ...)
2025-06-10 12:35 ` [PATCH 6/7] media: i2c: max96717: " Bartosz Golaszewski
@ 2025-06-10 12:35 ` Bartosz Golaszewski
6 siblings, 0 replies; 8+ messages in thread
From: Bartosz Golaszewski @ 2025-06-10 12:35 UTC (permalink / raw)
To: Mauro Carvalho Chehab, Linus Walleij, Bartosz Golaszewski,
Bluecherry Maintainers, Andrey Utkin, Ismael Luceno,
Tomi Valkeinen, Julien Massot, Jacopo Mondi, Kieran Bingham,
Laurent Pinchart, Niklas Söderlund
Cc: linux-media, linux-kernel, linux-gpio, 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/media/i2c/max9286.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/media/i2c/max9286.c b/drivers/media/i2c/max9286.c
index 9fc4e130a273f8547d7e7ec194cade5b5e9c8df2..1d0b5f56f989874e46f87db4a49d935049e6e7ce 100644
--- a/drivers/media/i2c/max9286.c
+++ b/drivers/media/i2c/max9286.c
@@ -1193,12 +1193,12 @@ static int max9286_gpio_set(struct max9286_priv *priv, unsigned int offset,
MAX9286_0X0F_RESERVED | priv->gpio_state);
}
-static void max9286_gpiochip_set(struct gpio_chip *chip,
- unsigned int offset, int value)
+static int max9286_gpiochip_set(struct gpio_chip *chip,
+ unsigned int offset, int value)
{
struct max9286_priv *priv = gpiochip_get_data(chip);
- max9286_gpio_set(priv, offset, value);
+ return max9286_gpio_set(priv, offset, value);
}
static int max9286_gpiochip_get(struct gpio_chip *chip, unsigned int offset)
@@ -1220,7 +1220,7 @@ static int max9286_register_gpio(struct max9286_priv *priv)
gpio->owner = THIS_MODULE;
gpio->ngpio = 2;
gpio->base = -1;
- gpio->set = max9286_gpiochip_set;
+ gpio->set_rv = max9286_gpiochip_set;
gpio->get = max9286_gpiochip_get;
gpio->can_sleep = true;
--
2.48.1
^ permalink raw reply related [flat|nested] 8+ messages in thread