[ARM] 3672/1: PXA: don't probe output GPIOs for interrupt
authorGuennadi Liakhovetski <gl@dsa-ac.de>
Wed, 28 Jun 2006 15:42:02 +0000 (16:42 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Wed, 28 Jun 2006 16:55:03 +0000 (17:55 +0100)
Patch from Guennadi Liakhovetski

Currently probe_irq_on() on PXA will silently reconfigure all output GPIOs, that are not configured as alternate functions, for input. Avoid that. Upon CPU reset all GPIOs are configured as inputs, so, if a GPIO is configured as output, it has been done so intentionally.

Signed-off-by: G. Liakhovetski <gl@dsa-ac.de>
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mach-pxa/irq.c

index 539b596005fc266b2c49f8d0edfa22d7758b1b13..d9635ff4b10cb97bd979e7f8022dd346e929ae5e 100644 (file)
@@ -88,8 +88,8 @@ static int pxa_gpio_irq_type(unsigned int irq, unsigned int type)
 
        if (type == IRQT_PROBE) {
            /* Don't mess with enabled GPIOs using preconfigured edges or
-              GPIOs set to alternate function during probe */
-               if ((GPIO_IRQ_rising_edge[idx] | GPIO_IRQ_falling_edge[idx]) &
+              GPIOs set to alternate function or to output during probe */
+               if ((GPIO_IRQ_rising_edge[idx] | GPIO_IRQ_falling_edge[idx] | GPDR(gpio)) &
                    GPIO_bit(gpio))
                        return 0;
                if (GAFR(gpio) & (0x3 << (((gpio) & 0xf)*2)))