From 4eec389908ee8762045568c3ec022bbd0178c36e Mon Sep 17 00:00:00 2001 From: Jason Chen Date: Fri, 23 Oct 2009 19:24:17 +0800 Subject: 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 --- arch/arm/plat-mxc/gpio.c | 5 +++++ 1 file changed, 5 insertions(+) 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; -- cgit v1.2.3