|
@@ -634,6 +634,10 @@ static unsigned int nmk_gpio_irq_startup(struct irq_data *d)
|
|
|
{
|
|
|
struct nmk_gpio_chip *nmk_chip = irq_data_get_irq_chip_data(d);
|
|
|
|
|
|
+ if (gpio_lock_as_irq(&nmk_chip->chip, d->hwirq))
|
|
|
+ dev_err(nmk_chip->chip.dev,
|
|
|
+ "unable to lock HW IRQ %lu for IRQ\n",
|
|
|
+ d->hwirq);
|
|
|
clk_enable(nmk_chip->clk);
|
|
|
nmk_gpio_irq_unmask(d);
|
|
|
return 0;
|
|
@@ -645,6 +649,7 @@ static void nmk_gpio_irq_shutdown(struct irq_data *d)
|
|
|
|
|
|
nmk_gpio_irq_mask(d);
|
|
|
clk_disable(nmk_chip->clk);
|
|
|
+ gpio_unlock_as_irq(&nmk_chip->chip, d->hwirq);
|
|
|
}
|
|
|
|
|
|
static struct irq_chip nmk_gpio_irq_chip = {
|