diff options
author | Linus Walleij <linus.walleij@linaro.org> | 2014-04-04 16:02:21 +0200 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2014-04-22 08:41:34 +0200 |
commit | c15c0d160c1f64456ed31dc469f0283768cfcf59 (patch) | |
tree | 01a289c82ab32a05d25ab7c5041246ec2cef7929 /drivers/pinctrl/pinctrl-st.c | |
parent | Linux 3.15-rc2 (diff) | |
download | linux-c15c0d160c1f64456ed31dc469f0283768cfcf59.tar.xz linux-c15c0d160c1f64456ed31dc469f0283768cfcf59.zip |
pinctrl: st: switch IRQ locking to resource callbacks
In the mass-conversion to the new irqchip callbacks, this
in-transit IRQ support was missed. Fix it.
Cc: Srinivas Kandagatla <srinivas.kandagatla@st.com>
Cc: Maxime COQUELIN <maxime.coquelin@st.com>
Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/pinctrl/pinctrl-st.c')
-rw-r--r-- | drivers/pinctrl/pinctrl-st.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/drivers/pinctrl/pinctrl-st.c b/drivers/pinctrl/pinctrl-st.c index bd725b0a4341..639af4a9a2e4 100644 --- a/drivers/pinctrl/pinctrl-st.c +++ b/drivers/pinctrl/pinctrl-st.c @@ -1312,25 +1312,23 @@ static void st_gpio_irq_unmask(struct irq_data *d) writel(BIT(d->hwirq), bank->base + REG_PIO_SET_PMASK); } -static unsigned int st_gpio_irq_startup(struct irq_data *d) +static int st_gpio_irq_reqres(struct irq_data *d) { struct st_gpio_bank *bank = irq_data_get_irq_chip_data(d); - if (gpio_lock_as_irq(&bank->gpio_chip, d->hwirq)) + if (gpio_lock_as_irq(&bank->gpio_chip, d->hwirq)) { dev_err(bank->gpio_chip.dev, "unable to lock HW IRQ %lu for IRQ\n", d->hwirq); - - st_gpio_irq_unmask(d); - + return -EINVAL; + } return 0; } -static void st_gpio_irq_shutdown(struct irq_data *d) +static void st_gpio_irq_relres(struct irq_data *d) { struct st_gpio_bank *bank = irq_data_get_irq_chip_data(d); - st_gpio_irq_mask(d); gpio_unlock_as_irq(&bank->gpio_chip, d->hwirq); } @@ -1491,8 +1489,8 @@ static struct irq_chip st_gpio_irqchip = { .irq_mask = st_gpio_irq_mask, .irq_unmask = st_gpio_irq_unmask, .irq_set_type = st_gpio_irq_set_type, - .irq_startup = st_gpio_irq_startup, - .irq_shutdown = st_gpio_irq_shutdown, + .irq_request_resources = st_gpio_irq_reqres, + .irq_release_resources = st_gpio_irq_relres, }; static int st_gpio_irq_domain_map(struct irq_domain *h, |