diff options
Diffstat (limited to 'drivers/gpio/gpio-em.c')
-rw-r--r-- | drivers/gpio/gpio-em.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/gpio/gpio-em.c b/drivers/gpio/gpio-em.c index 1e98a9873967..8765bd6f48e1 100644 --- a/drivers/gpio/gpio-em.c +++ b/drivers/gpio/gpio-em.c | |||
@@ -99,23 +99,23 @@ static void em_gio_irq_enable(struct irq_data *d) | |||
99 | em_gio_write(p, GIO_IEN, BIT(irqd_to_hwirq(d))); | 99 | em_gio_write(p, GIO_IEN, BIT(irqd_to_hwirq(d))); |
100 | } | 100 | } |
101 | 101 | ||
102 | static unsigned int em_gio_irq_startup(struct irq_data *d) | 102 | static int em_gio_irq_reqres(struct irq_data *d) |
103 | { | 103 | { |
104 | struct em_gio_priv *p = irq_data_get_irq_chip_data(d); | 104 | struct em_gio_priv *p = irq_data_get_irq_chip_data(d); |
105 | 105 | ||
106 | if (gpio_lock_as_irq(&p->gpio_chip, irqd_to_hwirq(d))) | 106 | if (gpio_lock_as_irq(&p->gpio_chip, irqd_to_hwirq(d))) { |
107 | dev_err(p->gpio_chip.dev, | 107 | dev_err(p->gpio_chip.dev, |
108 | "unable to lock HW IRQ %lu for IRQ\n", | 108 | "unable to lock HW IRQ %lu for IRQ\n", |
109 | irqd_to_hwirq(d)); | 109 | irqd_to_hwirq(d)); |
110 | em_gio_irq_enable(d); | 110 | return -EINVAL; |
111 | } | ||
111 | return 0; | 112 | return 0; |
112 | } | 113 | } |
113 | 114 | ||
114 | static void em_gio_irq_shutdown(struct irq_data *d) | 115 | static void em_gio_irq_relres(struct irq_data *d) |
115 | { | 116 | { |
116 | struct em_gio_priv *p = irq_data_get_irq_chip_data(d); | 117 | struct em_gio_priv *p = irq_data_get_irq_chip_data(d); |
117 | 118 | ||
118 | em_gio_irq_disable(d); | ||
119 | gpio_unlock_as_irq(&p->gpio_chip, irqd_to_hwirq(d)); | 119 | gpio_unlock_as_irq(&p->gpio_chip, irqd_to_hwirq(d)); |
120 | } | 120 | } |
121 | 121 | ||
@@ -359,8 +359,8 @@ static int em_gio_probe(struct platform_device *pdev) | |||
359 | irq_chip->irq_mask = em_gio_irq_disable; | 359 | irq_chip->irq_mask = em_gio_irq_disable; |
360 | irq_chip->irq_unmask = em_gio_irq_enable; | 360 | irq_chip->irq_unmask = em_gio_irq_enable; |
361 | irq_chip->irq_set_type = em_gio_irq_set_type; | 361 | irq_chip->irq_set_type = em_gio_irq_set_type; |
362 | irq_chip->irq_startup = em_gio_irq_startup; | 362 | irq_chip->irq_request_resources = em_gio_irq_reqres; |
363 | irq_chip->irq_shutdown = em_gio_irq_shutdown; | 363 | irq_chip->irq_release_resources = em_gio_irq_relres; |
364 | irq_chip->flags = IRQCHIP_SKIP_SET_WAKE | IRQCHIP_MASK_ON_SUSPEND; | 364 | irq_chip->flags = IRQCHIP_SKIP_SET_WAKE | IRQCHIP_MASK_ON_SUSPEND; |
365 | 365 | ||
366 | p->irq_domain = irq_domain_add_simple(pdev->dev.of_node, | 366 | p->irq_domain = irq_domain_add_simple(pdev->dev.of_node, |