[PATCH] ep93xx: implement gpiolib set_debounce for built-in GPIOs
H Hartley Sweeten
hartleys at visionengravers.com
Wed Jan 26 18:59:43 EST 2011
On Wednesday, January 26, 2011 4:48 PM, Ryan Mallon wrote:
> On 01/27/2011 12:22 PM, H Hartley Sweeten wrote:
>> GPIO Ports A, B, and F on the ep93xx provide interrupt capability. It is
>> possible to debounce the input signal on these ports when interrupts are
>> enabled.
>>
>> Support for this debounce capability was provided with an ep93xx internal
>> function. Now that gpiolib knows about gpio debounce, use the gpiolib
>> method and do not export the internal function.
>>
>> Signed-off-by: H Hartley Sweeten <hsweeten at visionengravers.com>
>> Cc: Ryan Mallon <ryan at bluewatersys.com>
>>
>> ---
>>
>> diff --git a/arch/arm/mach-ep93xx/gpio.c b/arch/arm/mach-ep93xx/gpio.c
>> index bec34b8..a889fa7 100644
>> --- a/arch/arm/mach-ep93xx/gpio.c
>> +++ b/arch/arm/mach-ep93xx/gpio.c
>> @@ -61,7 +61,7 @@ static inline void ep93xx_gpio_int_mask(unsigned line)
>> gpio_int_unmasked[line >> 3] &= ~(1 << (line & 7));
>> }
>>
>> -void ep93xx_gpio_int_debounce(unsigned int irq, int enable)
>> +static void ep93xx_gpio_int_debounce(unsigned int irq, bool enable)
>> {
>> int line = irq_to_gpio(irq);
>> int port = line >> 3;
>> @@ -75,7 +75,6 @@ void ep93xx_gpio_int_debounce(unsigned int irq, int enable)
>> __raw_writeb(gpio_int_debounce[port],
>> EP93XX_GPIO_REG(int_debounce_register_offset[port]));
>> }
>> -EXPORT_SYMBOL(ep93xx_gpio_int_debounce);
>>
>> static void ep93xx_gpio_ab_irq_handler(unsigned int irq, struct irq_desc *desc)
>> {
>> @@ -335,6 +334,20 @@ static void ep93xx_gpio_set(struct gpio_chip *chip, unsigned offset, int val)
>> local_irq_restore(flags);
>> }
>>
>> +static int ep93xx_gpio_set_debounce(struct gpio_chip *chip,
>> + unsigned offset, unsigned debounce)
>> +{
>> + int gpio = chip->base + offset;
>> + int irq = gpio_to_irq(gpio);
>> +
>> + if (irq < 0)
>> + return -EINVAL;
>> +
>> + ep93xx_gpio_int_debounce(irq, debounce ? true : false);
>
> We should just move the code from ep93xx_gpio_int_debounce here. Why
> have two functions to do one thing?
The reason I left the original function it that it messes with the cached gpio_int_debounce
values. Also, the 'debounce' feature is interrupt specific. If the gpio pin is no enabled
as an interrupt the debounce has no effect. As such I figured it was cleaner to leave it
in place.
Would you still like me to combine the functions?
Regards,
Hartley
More information about the linux-arm-kernel
mailing list