diff options
| -rw-r--r-- | drivers/pinctrl/pinctrl-xway.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/pinctrl/pinctrl-xway.c b/drivers/pinctrl/pinctrl-xway.c index 412c6b78140a..a13f2b6f6fc0 100644 --- a/drivers/pinctrl/pinctrl-xway.c +++ b/drivers/pinctrl/pinctrl-xway.c | |||
| @@ -1573,6 +1573,22 @@ static int xway_gpio_dir_out(struct gpio_chip *chip, unsigned int pin, int val) | |||
| 1573 | return 0; | 1573 | return 0; |
| 1574 | } | 1574 | } |
| 1575 | 1575 | ||
| 1576 | /* | ||
| 1577 | * gpiolib gpiod_to_irq callback function. | ||
| 1578 | * Returns the mapped IRQ (external interrupt) number for a given GPIO pin. | ||
| 1579 | */ | ||
| 1580 | static int xway_gpio_to_irq(struct gpio_chip *chip, unsigned offset) | ||
| 1581 | { | ||
| 1582 | struct ltq_pinmux_info *info = dev_get_drvdata(chip->parent); | ||
| 1583 | int i; | ||
| 1584 | |||
| 1585 | for (i = 0; i < info->num_exin; i++) | ||
| 1586 | if (info->exin[i] == offset) | ||
| 1587 | return ltq_eiu_get_irq(i); | ||
| 1588 | |||
| 1589 | return -1; | ||
| 1590 | } | ||
| 1591 | |||
| 1576 | static struct gpio_chip xway_chip = { | 1592 | static struct gpio_chip xway_chip = { |
| 1577 | .label = "gpio-xway", | 1593 | .label = "gpio-xway", |
| 1578 | .direction_input = xway_gpio_dir_in, | 1594 | .direction_input = xway_gpio_dir_in, |
| @@ -1581,6 +1597,7 @@ static struct gpio_chip xway_chip = { | |||
| 1581 | .set = xway_gpio_set, | 1597 | .set = xway_gpio_set, |
| 1582 | .request = gpiochip_generic_request, | 1598 | .request = gpiochip_generic_request, |
| 1583 | .free = gpiochip_generic_free, | 1599 | .free = gpiochip_generic_free, |
| 1600 | .to_irq = xway_gpio_to_irq, | ||
| 1584 | .base = -1, | 1601 | .base = -1, |
| 1585 | }; | 1602 | }; |
| 1586 | 1603 | ||
