diff options
author | Robin Gong <yibin.gong@nxp.com> | 2016-06-27 16:42:13 +0800 |
---|---|---|
committer | Leonard Crestez <leonard.crestez@nxp.com> | 2018-08-24 12:41:33 +0300 |
commit | b1f6a805780bf3e88ad3ef6839785b03bad7040c (patch) | |
tree | 28a86343ed9e804182aac3c033255e4c2f38341a /drivers/mfd | |
parent | 37925b8104c71681f77e70386ee42abbf1bb8ff6 (diff) |
MLK-12928-21 power: pf1550: fix charger interrupt never caught
Charger interrupt can't be caught anymore after plug in DC 5V in/out dozens of
times, that caused by VBUS_I or CHG_I pending interrupt not cleared in time. The root
cause is VBUS_I and CHG_I will be triggered in very narrow window, and VBUS_I/CHG_I
act as the sub-interrupt of charger and share the same interrupt handler. Thus if CHG_I
interrupt status is coming while VBUS_I handler is running, CHG_I interrupt status will
never be cleared, since interrupt has been disabled in ISR. The unclear CHG_I interrupt
status make pf1550 never trigger next interrupt again. So clear all charger interrupt
status in ISR to workaround instead of ack for every sub-intterrupt.
Signed-off-by: Robin Gong <yibin.gong@nxp.com>
Diffstat (limited to 'drivers/mfd')
-rw-r--r-- | drivers/mfd/pf1550.c | 3 |
1 files changed, 0 insertions, 3 deletions
diff --git a/drivers/mfd/pf1550.c b/drivers/mfd/pf1550.c index 06d0befd0643..44c92f466a99 100644 --- a/drivers/mfd/pf1550.c +++ b/drivers/mfd/pf1550.c @@ -107,11 +107,8 @@ static const struct regmap_irq pf1550_charger_irqs[] = { static const struct regmap_irq_chip pf1550_charger_irq_chip = { .name = "pf1550-charger", .status_base = PF1550_CHARG_REG_CHG_INT, - .ack_base = PF1550_CHARG_REG_CHG_INT, .mask_base = PF1550_CHARG_REG_CHG_INT_MASK, .mask_invert = false, - .use_ack = 1, - .init_ack_masked = 1, .num_regs = 1, .irqs = pf1550_charger_irqs, .num_irqs = ARRAY_SIZE(pf1550_charger_irqs), |