Commit cced3548 authored by Stephen Boyd's avatar Stephen Boyd Committed by Lee Jones

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 a0cd9ca2 (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: default avatarStephen Boyd <sboyd@codeaurora.org>
Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
parent bc866fc7
...@@ -479,7 +479,6 @@ config MFD_PM8XXX ...@@ -479,7 +479,6 @@ config MFD_PM8XXX
config MFD_PM8921_CORE config MFD_PM8921_CORE
tristate "Qualcomm PM8921 PMIC chip" tristate "Qualcomm PM8921 PMIC chip"
depends on (ARCH_MSM || HEXAGON) depends on (ARCH_MSM || HEXAGON)
depends on BROKEN
select MFD_CORE select MFD_CORE
select MFD_PM8XXX select MFD_PM8XXX
help help
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/irqchip/chained_irq.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
...@@ -174,6 +175,8 @@ static void pm8xxx_irq_handler(unsigned int irq, struct irq_desc *desc) ...@@ -174,6 +175,8 @@ static void pm8xxx_irq_handler(unsigned int irq, struct irq_desc *desc)
u8 root; u8 root;
int i, ret, masters = 0; int i, ret, masters = 0;
chained_irq_enter(irq_chip, desc);
ret = pm8xxx_read_root_irq(chip, &root); ret = pm8xxx_read_root_irq(chip, &root);
if (ret) { if (ret) {
pr_err("Can't read root status ret=%d\n", 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) ...@@ -188,7 +191,7 @@ static void pm8xxx_irq_handler(unsigned int irq, struct irq_desc *desc)
if (masters & (1 << i)) if (masters & (1 << i))
pm8xxx_irq_master_handler(chip, 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) 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, ...@@ -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_irq_type(devirq, pdata->irq_trigger_flag);
irq_set_handler_data(devirq, chip); irq_set_handler_data(devirq, chip);
irq_set_chained_handler(devirq, pm8xxx_irq_handler); irq_set_chained_handler(devirq, pm8xxx_irq_handler);
set_irq_wake(devirq, 1); irq_set_irq_wake(devirq, 1);
return chip; return chip;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment