diff options
author | Todd Poynor <toddpoynor@google.com> | 2012-07-10 17:58:29 -0700 |
---|---|---|
committer | Varun Wadekar <vwadekar@nvidia.com> | 2012-07-23 14:21:25 +0530 |
commit | 33eee4f99f13823ac5bf7a118dab52a0fa405319 (patch) | |
tree | 0ab8b499c39942af9851e65911ab6a60ba353eb6 /drivers/power | |
parent | c5ab57e082e68edb823bcff4bac53c4f44c0746d (diff) |
power: smb347 Handle charger source connect events
Undervoltage IRQs are signalled only on charger disconnect, not
connect.
* Update the comments to reflect this fact.
* Check for changed connected/disconnected status on any interrupt.
Change-Id: I4d542ae5fc94ce9386fdedc298dbc7d84a4e0d6b
Signed-off-by: Todd Poynor <toddpoynor@google.com>
Diffstat (limited to 'drivers/power')
-rw-r--r-- | drivers/power/smb347-charger.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/power/smb347-charger.c b/drivers/power/smb347-charger.c index 33784e5bb0f3..70aecb715f6d 100644 --- a/drivers/power/smb347-charger.c +++ b/drivers/power/smb347-charger.c @@ -814,14 +814,15 @@ static irqreturn_t smb347_interrupt(int irq, void *data) /* * If we got an under voltage interrupt it means that AC/USB input - * was connected or disconnected. + * was disconnected. */ - if (irqstat_e & (IRQSTAT_E_USBIN_UV_IRQ | IRQSTAT_E_DCIN_UV_IRQ)) { - if (smb347_update_status(smb) > 0) { - smb347_update_online(smb); - power_supply_changed(&smb->mains); - power_supply_changed(&smb->usb); - } + if (irqstat_e & (IRQSTAT_E_USBIN_UV_IRQ | IRQSTAT_E_DCIN_UV_IRQ)) + ret = IRQ_HANDLED; + + if (smb347_update_status(smb) > 0) { + smb347_update_online(smb); + power_supply_changed(&smb->mains); + power_supply_changed(&smb->usb); ret = IRQ_HANDLED; } |