summaryrefslogtreecommitdiff
path: root/drivers/gpio
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2011-04-03 00:31:18 -0700
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:34:18 -0800
commita6a2a00f7920b7762e53fcd45574271f1375a6a0 (patch)
tree022477487da52368898f36f4bf2291a1dfd11806 /drivers/gpio
parent45a1ca04697006a2358ceed51e93728f17f260bf (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.c19
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);
}