mirror of
https://github.com/torvalds/linux.git
synced 2026-01-25 15:03:52 +08:00
gpio: winbond: use new GPIO line value setter callbacks
struct gpio_chip now has callbacks for setting line values that return an integer, allowing to indicate failures. Convert the driver to using them. Link: https://lore.kernel.org/r/20250709-gpiochip-set-rv-gpio-remaining-v1-5-b8950f69618d@linaro.org Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
This commit is contained in:
@@ -458,17 +458,19 @@ static int winbond_gpio_direction_out(struct gpio_chip *gc,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void winbond_gpio_set(struct gpio_chip *gc, unsigned int offset,
|
||||
int val)
|
||||
static int winbond_gpio_set(struct gpio_chip *gc, unsigned int offset,
|
||||
int val)
|
||||
{
|
||||
unsigned long *base = gpiochip_get_data(gc);
|
||||
const struct winbond_gpio_info *info;
|
||||
int ret;
|
||||
|
||||
if (!winbond_gpio_get_info(&offset, &info))
|
||||
return;
|
||||
return -EACCES;
|
||||
|
||||
if (winbond_sio_enter(*base) != 0)
|
||||
return;
|
||||
ret = winbond_sio_enter(*base);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
winbond_sio_select_logical(*base, info->dev);
|
||||
|
||||
@@ -481,6 +483,8 @@ static void winbond_gpio_set(struct gpio_chip *gc, unsigned int offset,
|
||||
winbond_sio_reg_bclear(*base, info->datareg, offset);
|
||||
|
||||
winbond_sio_leave(*base);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct gpio_chip winbond_gpio_chip = {
|
||||
@@ -490,7 +494,7 @@ static struct gpio_chip winbond_gpio_chip = {
|
||||
.can_sleep = true,
|
||||
.get = winbond_gpio_get,
|
||||
.direction_input = winbond_gpio_direction_in,
|
||||
.set = winbond_gpio_set,
|
||||
.set_rv = winbond_gpio_set,
|
||||
.direction_output = winbond_gpio_direction_out,
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user