summaryrefslogtreecommitdiff
path: root/arch/arm/plat-mxc/mvf_gpio.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/plat-mxc/mvf_gpio.c')
-rw-r--r--arch/arm/plat-mxc/mvf_gpio.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/arm/plat-mxc/mvf_gpio.c b/arch/arm/plat-mxc/mvf_gpio.c
index 43d32f0b3916..ce57bcf2f352 100644
--- a/arch/arm/plat-mxc/mvf_gpio.c
+++ b/arch/arm/plat-mxc/mvf_gpio.c
@@ -31,6 +31,7 @@
//#define GPIO_DEBUG
+#undef GPIO_DEBUG
#ifdef GPIO_DEBUG
#define GPRT(fmt, args...) printk("DBG:%s[%d]" fmt,__func__,__LINE__,## args)
#else
@@ -176,7 +177,6 @@ static void gpio_mask_irq(struct irq_data *d)
static void gpio_unmask_irq(struct irq_data *d)
{
u32 gpio = irq_to_gpio(d->irq);
- printk("gpio = %d\n",gpio);
_set_gpio_irqenable(&mvf_gpio_ports[gpio / 32], gpio & 0x1f, 1);
}
@@ -226,9 +226,11 @@ static void mvf_gpio_irq_handler(struct mvf_gpio_port *port, u32 irq_stat)
{
u32 gpio_irq_no_base = port->virtual_irq_start;
+ GPRT("irq_stat = %d\n",irq_stat);
while (irq_stat != 0) {
int irqoffset = fls(irq_stat) - 1;
generic_handle_irq(gpio_irq_no_base + irqoffset);
+ GPRT("virq = %d\n",gpio_irq_no_base + irqoffset);
irq_stat &= ~(1 << irqoffset);
}
@@ -240,12 +242,15 @@ static void mvf_gpio_irq_chain_handler(u32 irq, struct irq_desc *desc)
struct mvf_gpio_port *port = irq_get_handler_data(irq);
struct irq_chip *chip = irq_get_chip(irq);
+ GPRT("irq = %d\n",irq);
chained_irq_enter(chip, desc);
irq_stat = __raw_readl((void __iomem *)((u32)(port->pbase) + PORT_ISFR));
mvf_gpio_irq_handler(port, irq_stat);
+ __raw_writel(irq_stat,(void __iomem *)((u32)(port->pbase) + PORT_ISFR));
+
chained_irq_exit(chip, desc);
}