summaryrefslogtreecommitdiffstats
path: root/drivers/mfd/pm8921-core.c
diff options
context:
space:
mode:
authorStephen Boyd2014-02-26 19:59:20 +0100
committerLee Jones2014-03-19 09:58:29 +0100
commitcced3548babc6d5338261f1b43ead62d93448567 (patch)
tree5a167db039ef15e6aca063f3fc794ba3ffaefc6f /drivers/mfd/pm8921-core.c
parentmfd: pm8xxx: Move pm8xxx-irq.c contents into only driver that uses it (diff)
downloadkernel-qcow2-linux-cced3548babc6d5338261f1b43ead62d93448567.tar.gz
kernel-qcow2-linux-cced3548babc6d5338261f1b43ead62d93448567.tar.xz
kernel-qcow2-linux-cced3548babc6d5338261f1b43ead62d93448567.zip
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 @@
#include <linux/kernel.h>
#include <linux/interrupt.h>
+#include <linux/irqchip/chained_irq.h>
#include <linux/irq.h>
#include <linux/module.h>
#include <linux/platform_device.h>
@@ -174,6 +175,8 @@ static void pm8xxx_irq_handler(unsigned int irq, struct irq_desc *desc)
u8 root;
int i, ret, masters = 0;
+ chained_irq_enter(irq_chip, desc);
+
ret = pm8xxx_read_root_irq(chip, &root);
if (ret) {
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)
if (masters & (1 << i))
pm8xxx_irq_master_handler(chip, i);
- irq_chip->irq_ack(&desc->irq_data);
+ chained_irq_exit(irq_chip, desc);
}
static void pm8xxx_irq_mask_ack(struct irq_data *d)
@@ -367,7 +370,7 @@ static struct pm_irq_chip *pm8xxx_irq_init(struct device *dev,
irq_set_irq_type(devirq, pdata->irq_trigger_flag);
irq_set_handler_data(devirq, chip);
irq_set_chained_handler(devirq, pm8xxx_irq_handler);
- set_irq_wake(devirq, 1);
+ irq_set_irq_wake(devirq, 1);
return chip;
}