From 5af23e27294b2fd327d1ca37de9300bf111e9bd9 Mon Sep 17 00:00:00 2001 From: Rabin Vincent Date: Wed, 3 Mar 2010 04:50:27 +0100 Subject: [PATCH] --- yaml --- r: 191755 b: refs/heads/master c: aaedaa2b5c610ae97f863078075d8d3c6ef91575 h: refs/heads/master i: 191753: ed48f1e6ca84699606a527653c4dcaa44e165238 191751: 040f1e2011817dd7ffe0b3b9dd494de3001e7854 v: v3 --- [refs] | 2 +- trunk/arch/arm/plat-nomadik/gpio.c | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index b454d925d9a1..933375ffd3ef 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c0fcb8dba829421fe20652a376a2bedaf168238f +refs/heads/master: aaedaa2b5c610ae97f863078075d8d3c6ef91575 diff --git a/trunk/arch/arm/plat-nomadik/gpio.c b/trunk/arch/arm/plat-nomadik/gpio.c index a9ee9889a833..4c3ea1a922ac 100644 --- a/trunk/arch/arm/plat-nomadik/gpio.c +++ b/trunk/arch/arm/plat-nomadik/gpio.c @@ -211,21 +211,27 @@ static struct irq_chip nmk_gpio_irq_chip = { static void nmk_gpio_irq_handler(unsigned int irq, struct irq_desc *desc) { struct nmk_gpio_chip *nmk_chip; - struct irq_chip *host_chip; + struct irq_chip *host_chip = get_irq_chip(irq); unsigned int gpio_irq; u32 pending; unsigned int first_irq; + if (host_chip->mask_ack) + host_chip->mask_ack(irq); + else { + host_chip->mask(irq); + if (host_chip->ack) + host_chip->ack(irq); + } + nmk_chip = get_irq_data(irq); first_irq = NOMADIK_GPIO_TO_IRQ(nmk_chip->chip.base); while ( (pending = readl(nmk_chip->addr + NMK_GPIO_IS)) ) { gpio_irq = first_irq + __ffs(pending); generic_handle_irq(gpio_irq); } - if (0) {/* don't ack parent irq, as ack == disable */ - host_chip = get_irq_chip(irq); - host_chip->ack(irq); - } + + host_chip->unmask(irq); } static int nmk_gpio_init_irq(struct nmk_gpio_chip *nmk_chip)