diff options
Diffstat (limited to 'drivers/pinctrl/pinctrl-abx500.c')
-rw-r--r-- | drivers/pinctrl/pinctrl-abx500.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/pinctrl/pinctrl-abx500.c b/drivers/pinctrl/pinctrl-abx500.c index 9bdfcb97ef57..a9e720ffabfb 100644 --- a/drivers/pinctrl/pinctrl-abx500.c +++ b/drivers/pinctrl/pinctrl-abx500.c | |||
@@ -272,6 +272,8 @@ static int abx500_gpio_direction_input(struct gpio_chip *chip, unsigned offset) | |||
272 | static int abx500_gpio_to_irq(struct gpio_chip *chip, unsigned offset) | 272 | static int abx500_gpio_to_irq(struct gpio_chip *chip, unsigned offset) |
273 | { | 273 | { |
274 | struct abx500_pinctrl *pct = to_abx500_pinctrl(chip); | 274 | struct abx500_pinctrl *pct = to_abx500_pinctrl(chip); |
275 | /* The AB8500 GPIO numbers are off by one */ | ||
276 | int gpio = offset + 1; | ||
275 | int base = pct->irq_base; | 277 | int base = pct->irq_base; |
276 | int i; | 278 | int i; |
277 | 279 | ||
@@ -279,8 +281,8 @@ static int abx500_gpio_to_irq(struct gpio_chip *chip, unsigned offset) | |||
279 | struct abx500_gpio_irq_cluster *cluster = | 281 | struct abx500_gpio_irq_cluster *cluster = |
280 | &pct->irq_cluster[i]; | 282 | &pct->irq_cluster[i]; |
281 | 283 | ||
282 | if (offset >= cluster->start && offset <= cluster->end) | 284 | if (gpio >= cluster->start && gpio <= cluster->end) |
283 | return base + offset - cluster->start; | 285 | return base + gpio - cluster->start; |
284 | 286 | ||
285 | /* Advance by the number of gpios in this cluster */ | 287 | /* Advance by the number of gpios in this cluster */ |
286 | base += cluster->end + cluster->offset - cluster->start + 1; | 288 | base += cluster->end + cluster->offset - cluster->start + 1; |