aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mfd/pm8921-core.c
diff options
context:
space:
mode:
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}