diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c index efba093..cf5ad29 100644 --- a/arch/arm/plat-omap/gpio.c +++ b/arch/arm/plat-omap/gpio.c @@ -448,11 +448,14 @@ static int _set_gpio_triggering(struct g /* We allow only edge triggering, i.e. two lowest bits */ if (trigger & ~IRQT_BOTHEDGE) BUG(); - /* NOTE: knows __IRQT_{FAL,RIS}EDGE match OMAP hardware */ - trigger &= 0x03; l = __raw_readl(reg); l &= ~(3 << (gpio << 1)); - l |= trigger << (gpio << 1); + if (trigger == IRQT_RISING) + l |= 2 << gpio; + else if (trigger == IRQT_FALLING) + l |= 1 << gpio; + else + goto bad; break; case METHOD_GPIO_730: reg += OMAP730_GPIO_INT_CONTROL;