static int __init new_switch(struct gpio_switch *sw)
{
- int r, direction;
+ int r, direction, trigger;
sw->pdev.name = sw->name;
sw->pdev.id = -1;
direction = !(sw->flags & OMAP_GPIO_SWITCH_FLAG_OUTPUT);
omap_set_gpio_direction(sw->gpio, direction);
- if (omap_get_gpio_datain(sw->gpio))
- set_irq_type(OMAP_GPIO_IRQ(sw->gpio), IRQT_FALLING);
- else
- set_irq_type(OMAP_GPIO_IRQ(sw->gpio), IRQT_RISING);
-
switch (sw->type) {
case OMAP_GPIO_SWITCH_TYPE_COVER:
device_create_file(&sw->pdev.dev, &dev_attr_cover_switch);
if (!direction)
return 0;
- r = request_irq(OMAP_GPIO_IRQ(sw->gpio), gpio_sw_irq_handler, SA_SHIRQ,
- sw->name, sw);
+ if (omap_get_gpio_datain(sw->gpio))
+ trigger = SA_TRIGGER_FALLING;
+ else
+ trigger = SA_TRIGGER_RISING;
+ r = request_irq(OMAP_GPIO_IRQ(sw->gpio), gpio_sw_irq_handler,
+ SA_SHIRQ | trigger, sw->name, sw);
if (r < 0) {
printk(KERN_ERR "gpio-switch: request_irq() failed "
"for GPIO %d\n", sw->gpio);