rk29: gpio: disable debounce by default, default handler set to level
author黄涛 <huangtao@rock-chips.com>
Thu, 26 May 2011 08:53:11 +0000 (16:53 +0800)
committer黄涛 <huangtao@rock-chips.com>
Thu, 26 May 2011 09:12:21 +0000 (17:12 +0800)
enable debounce may halt cpu on wfi, disable it by default.
gpio default interrupt type is level-sensitive, set_irq_handler to handle_level_irq.

arch/arm/mach-rk29/gpio.c

index 8c5172a5cf525adc2eb3ce0d9347d3b5927c2314..0e1025d5a71894a19b3593f6a356a37c1debec10 100755 (executable)
@@ -183,7 +183,8 @@ static int GPIOSetPinDirection(struct gpio_chip *chip, unsigned int mask,eGPIOPi
 
        local_irq_save(flags);
        rk29_gpio_bitOp(gpioRegBase,GPIO_SWPORT_DDR,mask,direction);
-       rk29_gpio_bitOp(gpioRegBase,GPIO_DEBOUNCE,mask,1); 
+       /* Enable debounce may halt cpu on wfi, disable it by default */
+       //rk29_gpio_bitOp(gpioRegBase,GPIO_DEBOUNCE,mask,1);
        local_irq_restore(flags);
 
        return 0;
@@ -555,7 +556,7 @@ static void __init rk29_gpio_irq_setup(void)
                for (j = 0; j < 32; j++) {
                        lockdep_set_class(&irq_desc[pin+j].lock, &gpio_lock_class);
                        set_irq_chip(pin+j, &rk29gpio_irqchip);
-                       set_irq_handler(pin+j, handle_edge_irq);
+                       set_irq_handler(pin+j, handle_level_irq);
                        set_irq_flags(pin+j, IRQF_VALID);
                }