|
@@ -646,15 +646,6 @@ static int omap_set_gpio_wakeup(struct gpio_bank *bank, unsigned offset,
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static void omap_reset_gpio(struct gpio_bank *bank, unsigned offset)
|
|
|
|
-{
|
|
|
|
- omap_set_gpio_direction(bank, offset, 1);
|
|
|
|
- omap_set_gpio_irqenable(bank, offset, 0);
|
|
|
|
- omap_clear_gpio_irqstatus(bank, offset);
|
|
|
|
- omap_set_gpio_triggering(bank, offset, IRQ_TYPE_NONE);
|
|
|
|
- omap_clear_gpio_debounce(bank, offset);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
/* Use disable_irq_wake() and enable_irq_wake() functions from drivers */
|
|
/* Use disable_irq_wake() and enable_irq_wake() functions from drivers */
|
|
static int omap_gpio_wake_enable(struct irq_data *d, unsigned int enable)
|
|
static int omap_gpio_wake_enable(struct irq_data *d, unsigned int enable)
|
|
{
|
|
{
|
|
@@ -821,8 +812,12 @@ static void omap_gpio_irq_shutdown(struct irq_data *d)
|
|
|
|
|
|
spin_lock_irqsave(&bank->lock, flags);
|
|
spin_lock_irqsave(&bank->lock, flags);
|
|
bank->irq_usage &= ~(BIT(offset));
|
|
bank->irq_usage &= ~(BIT(offset));
|
|
|
|
+ omap_set_gpio_irqenable(bank, offset, 0);
|
|
|
|
+ omap_clear_gpio_irqstatus(bank, offset);
|
|
|
|
+ omap_set_gpio_triggering(bank, offset, IRQ_TYPE_NONE);
|
|
|
|
+ if (!LINE_USED(bank->mod_usage, offset))
|
|
|
|
+ omap_clear_gpio_debounce(bank, offset);
|
|
omap_disable_gpio_module(bank, offset);
|
|
omap_disable_gpio_module(bank, offset);
|
|
- omap_reset_gpio(bank, offset);
|
|
|
|
spin_unlock_irqrestore(&bank->lock, flags);
|
|
spin_unlock_irqrestore(&bank->lock, flags);
|
|
|
|
|
|
/*
|
|
/*
|