mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 11:03:43 +02:00
gpio: thunderx: 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/20250702-gpiochip-set-rv-gpio-round3-v1-4-0d23be74f71d@linaro.org Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
This commit is contained in:
parent
8a81d128e1
commit
ecf0c0278f
|
|
@ -116,8 +116,8 @@ static int thunderx_gpio_dir_in(struct gpio_chip *chip, unsigned int line)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void thunderx_gpio_set(struct gpio_chip *chip, unsigned int line,
|
||||
int value)
|
||||
static int thunderx_gpio_set(struct gpio_chip *chip, unsigned int line,
|
||||
int value)
|
||||
{
|
||||
struct thunderx_gpio *txgpio = gpiochip_get_data(chip);
|
||||
int bank = line / 64;
|
||||
|
|
@ -127,6 +127,8 @@ static void thunderx_gpio_set(struct gpio_chip *chip, unsigned int line,
|
|||
(bank * GPIO_2ND_BANK) + (value ? GPIO_TX_SET : GPIO_TX_CLR);
|
||||
|
||||
writeq(BIT_ULL(bank_bit), reg);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int thunderx_gpio_dir_out(struct gpio_chip *chip, unsigned int line,
|
||||
|
|
@ -269,9 +271,9 @@ static int thunderx_gpio_get(struct gpio_chip *chip, unsigned int line)
|
|||
return masked_bits != 0;
|
||||
}
|
||||
|
||||
static void thunderx_gpio_set_multiple(struct gpio_chip *chip,
|
||||
unsigned long *mask,
|
||||
unsigned long *bits)
|
||||
static int thunderx_gpio_set_multiple(struct gpio_chip *chip,
|
||||
unsigned long *mask,
|
||||
unsigned long *bits)
|
||||
{
|
||||
int bank;
|
||||
u64 set_bits, clear_bits;
|
||||
|
|
@ -283,6 +285,8 @@ static void thunderx_gpio_set_multiple(struct gpio_chip *chip,
|
|||
writeq(set_bits, txgpio->register_base + (bank * GPIO_2ND_BANK) + GPIO_TX_SET);
|
||||
writeq(clear_bits, txgpio->register_base + (bank * GPIO_2ND_BANK) + GPIO_TX_CLR);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void thunderx_gpio_irq_ack(struct irq_data *d)
|
||||
|
|
@ -529,8 +533,8 @@ static int thunderx_gpio_probe(struct pci_dev *pdev,
|
|||
chip->direction_input = thunderx_gpio_dir_in;
|
||||
chip->get = thunderx_gpio_get;
|
||||
chip->direction_output = thunderx_gpio_dir_out;
|
||||
chip->set = thunderx_gpio_set;
|
||||
chip->set_multiple = thunderx_gpio_set_multiple;
|
||||
chip->set_rv = thunderx_gpio_set;
|
||||
chip->set_multiple_rv = thunderx_gpio_set_multiple;
|
||||
chip->set_config = thunderx_gpio_set_config;
|
||||
girq = &chip->irq;
|
||||
gpio_irq_chip_set_chip(girq, &thunderx_gpio_irq_chip);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user