summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Chen <b02280@freescale.com>2009-10-23 19:24:17 +0800
committerJason Chen <b02280@freescale.com>2009-10-23 19:28:39 +0800
commit4eec389908ee8762045568c3ec022bbd0178c36e (patch)
tree335516beac4319d13d6608caf8042e447d5a0abc
parentde542d54c2e6f721fd526553c89113acd3249148 (diff)
ENGR00116861 gpio irq: touchscreen keep interrupt active
MX37 tsc2007 use low level irq trigger, but gpio irq still use edge irq handler, which should use level irq handler instead. Signed-off-by: Jason Chen <b02280@freescale.com>
-rw-r--r--arch/arm/plat-mxc/gpio.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/arm/plat-mxc/gpio.c b/arch/arm/plat-mxc/gpio.c
index 4c224300759d..e42f52896ee6 100644
--- a/arch/arm/plat-mxc/gpio.c
+++ b/arch/arm/plat-mxc/gpio.c
@@ -81,9 +81,11 @@ static int gpio_set_irq_type(u32 irq, u32 type)
switch (type) {
case IRQ_TYPE_EDGE_RISING:
edge = GPIO_INT_RISE_EDGE;
+ set_irq_handler(irq, handle_edge_irq);
break;
case IRQ_TYPE_EDGE_FALLING:
edge = GPIO_INT_FALL_EDGE;
+ set_irq_handler(irq, handle_edge_irq);
break;
case IRQ_TYPE_EDGE_BOTH:
val = mxc_gpio_get(&port->chip, gpio & 31);
@@ -95,12 +97,15 @@ static int gpio_set_irq_type(u32 irq, u32 type)
pr_debug("mxc: set GPIO %d to high trigger\n", gpio);
}
port->both_edges |= 1 << (gpio & 31);
+ set_irq_handler(irq, handle_edge_irq);
break;
case IRQ_TYPE_LEVEL_LOW:
edge = GPIO_INT_LOW_LEV;
+ set_irq_handler(irq, handle_level_irq);
break;
case IRQ_TYPE_LEVEL_HIGH:
edge = GPIO_INT_HIGH_LEV;
+ set_irq_handler(irq, handle_level_irq);
break;
default:
return -EINVAL;