diff options
author | Lad, Prabhakar <prabhakar.csengg@gmail.com> | 2013-11-08 01:45:55 -0500 |
---|---|---|
committer | Sekhar Nori <nsekhar@ti.com> | 2013-11-21 09:11:51 -0500 |
commit | 34af1ab4a2cc97721a00fce19d9fbafd9ff4b300 (patch) | |
tree | 9c7a23ac0f62dd4719da0b042ecdd9fe3aaa0932 /drivers/gpio/gpio-davinci.c | |
parent | 527d1511310a89650000081869260394e20c7013 (diff) |
gpio: davinci: fix check for unbanked gpio
This patch fixes a check for offset in gpio_to_irq_unbanked()
and also assigns gpio_irq, gpio_unbanked of chips[0] to
appropriate values which is used in gpio_to_irq_unbanked()
function.
Without this patch, unbanked IRQ handling is broken.
Reported-by: Grygorii Strashko <grygorii.strashko@ti.com>
Acked-by: Grygorii Strashko <grygorii.strashko@ti.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
Diffstat (limited to 'drivers/gpio/gpio-davinci.c')
-rw-r--r-- | drivers/gpio/gpio-davinci.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/gpio/gpio-davinci.c b/drivers/gpio/gpio-davinci.c index 8847adf392b7..84be70157ad6 100644 --- a/drivers/gpio/gpio-davinci.c +++ b/drivers/gpio/gpio-davinci.c | |||
@@ -327,7 +327,7 @@ static int gpio_to_irq_unbanked(struct gpio_chip *chip, unsigned offset) | |||
327 | * NOTE: we assume for now that only irqs in the first gpio_chip | 327 | * NOTE: we assume for now that only irqs in the first gpio_chip |
328 | * can provide direct-mapped IRQs to AINTC (up to 32 GPIOs). | 328 | * can provide direct-mapped IRQs to AINTC (up to 32 GPIOs). |
329 | */ | 329 | */ |
330 | if (offset < d->irq_base) | 330 | if (offset < d->gpio_unbanked) |
331 | return d->gpio_irq + offset; | 331 | return d->gpio_irq + offset; |
332 | else | 332 | else |
333 | return -ENODEV; | 333 | return -ENODEV; |
@@ -419,6 +419,8 @@ static int davinci_gpio_irq_setup(struct platform_device *pdev) | |||
419 | 419 | ||
420 | /* pass "bank 0" GPIO IRQs to AINTC */ | 420 | /* pass "bank 0" GPIO IRQs to AINTC */ |
421 | chips[0].chip.to_irq = gpio_to_irq_unbanked; | 421 | chips[0].chip.to_irq = gpio_to_irq_unbanked; |
422 | chips[0].gpio_irq = bank_irq; | ||
423 | chips[0].gpio_unbanked = pdata->gpio_unbanked; | ||
422 | binten = BIT(0); | 424 | binten = BIT(0); |
423 | 425 | ||
424 | /* AINTC handles mask/unmask; GPIO handles triggering */ | 426 | /* AINTC handles mask/unmask; GPIO handles triggering */ |