mirror of
https://github.com/torvalds/linux.git
synced 2026-06-02 03:24:19 +02:00
gpio: rc5t583: 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/20250619-gpiochip-set-rv-gpio-v2-7-74abf689fbd8@linaro.org Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
This commit is contained in:
parent
f1ff31c8ef
commit
309ea58111
|
|
@ -35,14 +35,20 @@ static int rc5t583_gpio_get(struct gpio_chip *gc, unsigned int offset)
|
|||
return !!(val & BIT(offset));
|
||||
}
|
||||
|
||||
static void rc5t583_gpio_set(struct gpio_chip *gc, unsigned int offset, int val)
|
||||
static int rc5t583_gpio_set(struct gpio_chip *gc, unsigned int offset, int val)
|
||||
{
|
||||
struct rc5t583_gpio *rc5t583_gpio = gpiochip_get_data(gc);
|
||||
struct device *parent = rc5t583_gpio->rc5t583->dev;
|
||||
int ret;
|
||||
|
||||
if (val)
|
||||
rc5t583_set_bits(parent, RC5T583_GPIO_IOOUT, BIT(offset));
|
||||
ret = rc5t583_set_bits(parent, RC5T583_GPIO_IOOUT,
|
||||
BIT(offset));
|
||||
else
|
||||
rc5t583_clear_bits(parent, RC5T583_GPIO_IOOUT, BIT(offset));
|
||||
ret = rc5t583_clear_bits(parent, RC5T583_GPIO_IOOUT,
|
||||
BIT(offset));
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int rc5t583_gpio_dir_input(struct gpio_chip *gc, unsigned int offset)
|
||||
|
|
@ -66,7 +72,10 @@ static int rc5t583_gpio_dir_output(struct gpio_chip *gc, unsigned offset,
|
|||
struct device *parent = rc5t583_gpio->rc5t583->dev;
|
||||
int ret;
|
||||
|
||||
rc5t583_gpio_set(gc, offset, value);
|
||||
ret = rc5t583_gpio_set(gc, offset, value);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = rc5t583_set_bits(parent, RC5T583_GPIO_IOSEL, BIT(offset));
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
|
@ -109,7 +118,7 @@ static int rc5t583_gpio_probe(struct platform_device *pdev)
|
|||
rc5t583_gpio->gpio_chip.free = rc5t583_gpio_free,
|
||||
rc5t583_gpio->gpio_chip.direction_input = rc5t583_gpio_dir_input,
|
||||
rc5t583_gpio->gpio_chip.direction_output = rc5t583_gpio_dir_output,
|
||||
rc5t583_gpio->gpio_chip.set = rc5t583_gpio_set,
|
||||
rc5t583_gpio->gpio_chip.set_rv = rc5t583_gpio_set,
|
||||
rc5t583_gpio->gpio_chip.get = rc5t583_gpio_get,
|
||||
rc5t583_gpio->gpio_chip.to_irq = rc5t583_gpio_to_irq,
|
||||
rc5t583_gpio->gpio_chip.ngpio = RC5T583_MAX_GPIO,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user