diff options
author | Colin Cross <ccross@android.com> | 2011-04-03 00:31:18 -0700 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:34:18 -0800 |
commit | a6a2a00f7920b7762e53fcd45574271f1375a6a0 (patch) | |
tree | 022477487da52368898f36f4bf2291a1dfd11806 /drivers/gpio | |
parent | 45a1ca04697006a2358ceed51e93728f17f260bf (diff) |
ARM: tegra: gpio: remove manual acks in irq handler
The interrupt will be acked by the generic irq handler, there is
no need to ack it manually.
Change-Id: I48ffc78d90f7951afcfde849300fcbc0673a876a
Signed-off-by: Colin Cross <ccross@android.com>
Diffstat (limited to 'drivers/gpio')
-rw-r--r-- | drivers/gpio/gpio-tegra.c | 19 |
1 files changed, 2 insertions, 17 deletions
diff --git a/drivers/gpio/gpio-tegra.c b/drivers/gpio/gpio-tegra.c index f287f9c7a75e..5837b8c1dd79 100644 --- a/drivers/gpio/gpio-tegra.c +++ b/drivers/gpio/gpio-tegra.c @@ -227,7 +227,6 @@ static void tegra_gpio_irq_handler(unsigned int irq, struct irq_desc *desc) struct tegra_gpio_bank *bank; int port; int pin; - int unmasked = 0; struct irq_chip *chip = irq_desc_get_chip(desc); chained_irq_enter(chip, desc); @@ -238,26 +237,12 @@ static void tegra_gpio_irq_handler(unsigned int irq, struct irq_desc *desc) int gpio = tegra_gpio_compose(bank->bank, port, 0); unsigned long sta = __raw_readl(GPIO_INT_STA(gpio)) & __raw_readl(GPIO_INT_ENB(gpio)); - u32 lvl = __raw_readl(GPIO_INT_LVL(gpio)); - - for_each_set_bit(pin, &sta, 8) { - __raw_writel(1 << pin, GPIO_INT_CLR(gpio)); - - /* if gpio is edge triggered, clear condition - * before executing the hander so that we don't - * miss edges - */ - if (lvl & (0x100 << pin)) { - unmasked = 1; - chained_irq_exit(chip, desc); - } + for_each_set_bit(pin, &sta, 8) generic_handle_irq(gpio_to_irq(gpio + pin)); - } } - if (!unmasked) - chained_irq_exit(chip, desc); + chained_irq_exit(chip, desc); } |