summaryrefslogtreecommitdiffstats
path: root/drivers/gpio/gpio-lynxpoint.c
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2014-03-14 13:16:20 -0400
committerLinus Walleij <linus.walleij@linaro.org>2014-03-18 04:28:30 -0400
commit57ef04288abd27a717287a652d324f95cb77c3c6 (patch)
tree2cb5e15f0325e6860b008da5997e5f63d4cf6171 /drivers/gpio/gpio-lynxpoint.c
parent1d4a2166f9501fd5b564b33414a2aa9c493fdfb8 (diff)
gpio: switch drivers to use new callback
This switches all GPIO and pin control drivers with irqchips that were using .startup() and .shutdown() callbacks to lock GPIO lines for IRQ usage over to using the .request_resources() and .release_resources() callbacks just introduced into the irqchip vtable. Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Jean-Jacques Hiblot <jjhiblot@traphandler.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/gpio/gpio-lynxpoint.c')
-rw-r--r--drivers/gpio/gpio-lynxpoint.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/gpio/gpio-lynxpoint.c b/drivers/gpio/gpio-lynxpoint.c
index 66b18535b5ae..41f79cb24a9e 100644
--- a/drivers/gpio/gpio-lynxpoint.c
+++ b/drivers/gpio/gpio-lynxpoint.c
@@ -301,23 +301,23 @@ static void lp_irq_disable(struct irq_data *d)
301 spin_unlock_irqrestore(&lg->lock, flags); 301 spin_unlock_irqrestore(&lg->lock, flags);
302} 302}
303 303
304static unsigned int lp_irq_startup(struct irq_data *d) 304static int lp_irq_reqres(struct irq_data *d)
305{ 305{
306 struct lp_gpio *lg = irq_data_get_irq_chip_data(d); 306 struct lp_gpio *lg = irq_data_get_irq_chip_data(d);
307 307
308 if (gpio_lock_as_irq(&lg->chip, irqd_to_hwirq(d))) 308 if (gpio_lock_as_irq(&lg->chip, irqd_to_hwirq(d))) {
309 dev_err(lg->chip.dev, 309 dev_err(lg->chip.dev,
310 "unable to lock HW IRQ %lu for IRQ\n", 310 "unable to lock HW IRQ %lu for IRQ\n",
311 irqd_to_hwirq(d)); 311 irqd_to_hwirq(d));
312 lp_irq_enable(d); 312 return -EINVAL;
313 }
313 return 0; 314 return 0;
314} 315}
315 316
316static void lp_irq_shutdown(struct irq_data *d) 317static void lp_irq_relres(struct irq_data *d)
317{ 318{
318 struct lp_gpio *lg = irq_data_get_irq_chip_data(d); 319 struct lp_gpio *lg = irq_data_get_irq_chip_data(d);
319 320
320 lp_irq_disable(d);
321 gpio_unlock_as_irq(&lg->chip, irqd_to_hwirq(d)); 321 gpio_unlock_as_irq(&lg->chip, irqd_to_hwirq(d));
322} 322}
323 323
@@ -328,8 +328,8 @@ static struct irq_chip lp_irqchip = {
328 .irq_enable = lp_irq_enable, 328 .irq_enable = lp_irq_enable,
329 .irq_disable = lp_irq_disable, 329 .irq_disable = lp_irq_disable,
330 .irq_set_type = lp_irq_type, 330 .irq_set_type = lp_irq_type,
331 .irq_startup = lp_irq_startup, 331 .irq_request_resources = lp_irq_reqres,
332 .irq_shutdown = lp_irq_shutdown, 332 .irq_release_resources = lp_irq_relres,
333 .flags = IRQCHIP_SKIP_SET_WAKE, 333 .flags = IRQCHIP_SKIP_SET_WAKE,
334}; 334};
335 335