aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mfd/pm8921-core.c
diff options
context:
space:
mode:
authorStephen Boyd <sboyd@codeaurora.org>2014-02-26 13:59:20 -0500
committerLee Jones <lee.jones@linaro.org>2014-03-19 04:58:29 -0400
commitcced3548babc6d5338261f1b43ead62d93448567 (patch)
tree5a167db039ef15e6aca063f3fc794ba3ffaefc6f /drivers/mfd/pm8921-core.c
parentbc866fc7a8c4322de40b694ffcfcdda50ab82f35 (diff)
mfd: pm8921: Update for genirq changes
Since this code has been marked broken for some time a few genirq tree wide changes weren't made. set_irq_wake() was renamed to irq_set_irq_wake() in commit a0cd9ca2b (genirq: Namespace cleanup, 2011-02-10) and commit 10a8c383 (irq: introduce entry and exit functions for chained handlers) introduced the chained irq functions but this driver wasn't updated to use them. Fix these problems and remove the BROKEN marking on this driver. Signed-off-by: Stephen Boyd <sboyd@codeaurora.org> Signed-off-by: Lee Jones <lee.jones@linaro.org>
Diffstat (limited to 'drivers/mfd/pm8921-core.c')
-rw-r--r--drivers/mfd/pm8921-core.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/mfd/pm8921-core.c b/drivers/mfd/pm8921-core.c
index 50e0a9b69b9d..9ddc31f7a71d 100644
--- a/drivers/mfd/pm8921-core.c
+++ b/drivers/mfd/pm8921-core.c
@@ -15,6 +15,7 @@
15 15
16#include <linux/kernel.h> 16#include <linux/kernel.h>
17#include <linux/interrupt.h> 17#include <linux/interrupt.h>
18#include <linux/irqchip/chained_irq.h>
18#include <linux/irq.h> 19#include <linux/irq.h>
19#include <linux/module.h> 20#include <linux/module.h>
20#include <linux/platform_device.h> 21#include <linux/platform_device.h>
@@ -174,6 +175,8 @@ static void pm8xxx_irq_handler(unsigned int irq, struct irq_desc *desc)
174 u8 root; 175 u8 root;
175 int i, ret, masters = 0; 176 int i, ret, masters = 0;
176 177
178 chained_irq_enter(irq_chip, desc);
179
177 ret = pm8xxx_read_root_irq(chip, &root); 180 ret = pm8xxx_read_root_irq(chip, &root);
178 if (ret) { 181 if (ret) {
179 pr_err("Can't read root status ret=%d\n", ret); 182 pr_err("Can't read root status ret=%d\n", ret);
@@ -188,7 +191,7 @@ static void pm8xxx_irq_handler(unsigned int irq, struct irq_desc *desc)
188 if (masters & (1 << i)) 191 if (masters & (1 << i))
189 pm8xxx_irq_master_handler(chip, i); 192 pm8xxx_irq_master_handler(chip, i);
190 193
191 irq_chip->irq_ack(&desc->irq_data); 194 chained_irq_exit(irq_chip, desc);
192} 195}
193 196
194static void pm8xxx_irq_mask_ack(struct irq_data *d) 197static void pm8xxx_irq_mask_ack(struct irq_data *d)
@@ -367,7 +370,7 @@ static struct pm_irq_chip *pm8xxx_irq_init(struct device *dev,
367 irq_set_irq_type(devirq, pdata->irq_trigger_flag); 370 irq_set_irq_type(devirq, pdata->irq_trigger_flag);
368 irq_set_handler_data(devirq, chip); 371 irq_set_handler_data(devirq, chip);
369 irq_set_chained_handler(devirq, pm8xxx_irq_handler); 372 irq_set_chained_handler(devirq, pm8xxx_irq_handler);
370 set_irq_wake(devirq, 1); 373 irq_set_irq_wake(devirq, 1);
371 374
372 return chip; 375 return chip;
373} 376}