diff options
Diffstat (limited to 'drivers/mfd/pm8921-core.c')
-rw-r--r-- | drivers/mfd/pm8921-core.c | 7 |
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 | ||
194 | static void pm8xxx_irq_mask_ack(struct irq_data *d) | 197 | 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 | 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 | } |