gpio: remove legacy GPIO line value setter callbacks

With no more users of the legacy GPIO line value setters - .set() and
.set_multiple() - we can now remove them from the kernel.

Link: https://lore.kernel.org/r/20250725074651.14002-1-brgl@bgdev.pl
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
This commit is contained in:
Bartosz Golaszewski 2025-07-25 09:46:50 +02:00
parent 0074281bb6
commit 397a46c9aa
2 changed files with 6 additions and 28 deletions

View file

@ -1037,11 +1037,6 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
int base = 0;
int ret;
/* Only allow one set() and one set_multiple(). */
if ((gc->set && gc->set_rv) ||
(gc->set_multiple && gc->set_multiple_rv))
return -EINVAL;
/*
* First: allocate and populate the internal stat container, and
* set up the struct device.
@ -2891,19 +2886,14 @@ static int gpiochip_set(struct gpio_chip *gc, unsigned int offset, int value)
lockdep_assert_held(&gc->gpiodev->srcu);
if (WARN_ON(unlikely(!gc->set && !gc->set_rv)))
if (WARN_ON(unlikely(!gc->set_rv)))
return -EOPNOTSUPP;
if (gc->set_rv) {
ret = gc->set_rv(gc, offset, value);
if (ret > 0)
ret = -EBADE;
ret = gc->set_rv(gc, offset, value);
if (ret > 0)
ret = -EBADE;
return ret;
}
gc->set(gc, offset, value);
return 0;
return ret;
}
static int gpiod_direction_output_raw_commit(struct gpio_desc *desc, int value)
@ -2919,7 +2909,7 @@ static int gpiod_direction_output_raw_commit(struct gpio_desc *desc, int value)
* output-only, but if there is then not even a .set() operation it
* is pretty tricky to drive the output line.
*/
if (!guard.gc->set && !guard.gc->set_rv && !guard.gc->direction_output) {
if (!guard.gc->set_rv && !guard.gc->direction_output) {
gpiod_warn(desc,
"%s: missing set() and direction_output() operations\n",
__func__);
@ -3673,11 +3663,6 @@ static int gpiochip_set_multiple(struct gpio_chip *gc,
return ret;
}
if (gc->set_multiple) {
gc->set_multiple(gc, mask, bits);
return 0;
}
/* set outputs if the corresponding mask bit is set */
for_each_set_bit(i, mask, gc->ngpio) {
ret = gpiochip_set(gc, i, test_bit(i, bits));

View file

@ -347,8 +347,6 @@ struct gpio_irq_chip {
* @get: returns value for signal "offset", 0=low, 1=high, or negative error
* @get_multiple: reads values for multiple signals defined by "mask" and
* stores them in "bits", returns 0 on success or negative error
* @set: **DEPRECATED** - please use set_rv() instead
* @set_multiple: **DEPRECATED** - please use set_multiple_rv() instead
* @set_rv: assigns output value for signal "offset", returns 0 on success or
* negative error value
* @set_multiple_rv: assigns output values for multiple signals defined by
@ -445,11 +443,6 @@ struct gpio_chip {
int (*get_multiple)(struct gpio_chip *gc,
unsigned long *mask,
unsigned long *bits);
void (*set)(struct gpio_chip *gc,
unsigned int offset, int value);
void (*set_multiple)(struct gpio_chip *gc,
unsigned long *mask,
unsigned long *bits);
int (*set_rv)(struct gpio_chip *gc,
unsigned int offset,
int value);