Commit dd94adf7 authored by Bartosz Golaszewski's avatar Bartosz Golaszewski
Browse files

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: default avatarBartosz Golaszewski <bartosz.golaszewski@linaro.org>
parent 637c3054
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -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,
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,
};