Commit 097cf61b authored by Bartosz Golaszewski's avatar Bartosz Golaszewski Committed by Bartosz Golaszewski
Browse files

gpio: em: use new 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.

Signed-off-by: default avatarBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Link: https://lore.kernel.org/r/20250407-gpiochip-set-rv-gpio-part1-v1-3-78399683ca38@linaro.org


Signed-off-by: default avatarBartosz Golaszewski <brgl@bgdev.pl>
parent 21d3c653
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -204,13 +204,15 @@ static void __em_gio_set(struct gpio_chip *chip, unsigned int reg,
		     (BIT(shift + 16)) | (value << shift));
}

static void em_gio_set(struct gpio_chip *chip, unsigned offset, int value)
static int em_gio_set(struct gpio_chip *chip, unsigned int offset, int value)
{
	/* output is split into two registers */
	if (offset < 16)
		__em_gio_set(chip, GIO_OL, offset, value);
	else
		__em_gio_set(chip, GIO_OH, offset - 16, value);

	return 0;
}

static int em_gio_direction_output(struct gpio_chip *chip, unsigned offset,
@@ -304,7 +306,7 @@ static int em_gio_probe(struct platform_device *pdev)
	gpio_chip->direction_input = em_gio_direction_input;
	gpio_chip->get = em_gio_get;
	gpio_chip->direction_output = em_gio_direction_output;
	gpio_chip->set = em_gio_set;
	gpio_chip->set_rv = em_gio_set;
	gpio_chip->to_irq = em_gio_to_irq;
	gpio_chip->request = pinctrl_gpio_request;
	gpio_chip->free = em_gio_free;