Hello
I am trying to configure GPIO 106 as external interrupt PIN to use with ADP5588 keypad controller. I am running the Linux 2.6.37 on AM3517.
It looks like the way I configured GPIO pin 106 as external interrupt is not correct, due to which registered IRG function is not getting invoked.
Could someone suggest what is wrong /missing in my configuration function to enable GPIO Pin as external interrupt?
Here is the function which I wrote to configure GPIO pin
#define ADP_5588_KEYPAD_IRQ 106
/* I2C board info to initialize ADP client */
static struct i2c_board_info __initdata am3517evm_ADP5588_boardinfo[] =
{
{
I2C_BOARD_INFO("adp5588-keys", 0x34),
.platform_data = &adp5588_kpad_data_info,
.irq = OMAP_GPIO_IRQ(106),
},
};
/* Function which configures GPIO 106 as interrupt */
static int ADP_5588_keypad_init_irq(void)
{
int ret = 0;
omap_mux_init_gpio(ADP_5588_KEYPAD_IRQ, OMAP_PIN_INPUT_PULLUP);
ret = gpio_request(ADP_5588_KEYPAD_IRQ, "ADP-5588-keypad-irq");
if (ret < 0)
{
printk(KERN_WARNING "ADP-5588-keypad failed to request GPIO#%d: %d\n", ADP_5588_KEYPAD_IRQ, ret);
return ret;
}
if (gpio_direction_input(ADP_5588_KEYPAD_IRQ))
{
printk(KERN_WARNING "ADP-5588-GPIO#%d cannot be configured as " "input\n", ADP_5588_KEYPAD_IRQ);
return -ENXIO;
}
if (gpio_set_debounce(ADP_5588_KEYPAD_IRQ, 0x05))
{
printk(KERN_WARNING "ADP-5588-GPIO#%d cannot set debouce " "input\n", ADP_5588_KEYPAD_IRQ);
return -ENXIO;
}
printk(KERN_INFO "ADP_5588_keypad_init_irq - successful\n");
return ret;
}
And also I added enable_irq_wake(client->irq); in my ADP5588 probe function.