summaryrefslogtreecommitdiff
path: root/drivers/power
diff options
context:
space:
mode:
authorTodd Poynor <toddpoynor@google.com>2012-07-10 17:58:29 -0700
committerVarun Wadekar <vwadekar@nvidia.com>2012-07-23 14:21:25 +0530
commit33eee4f99f13823ac5bf7a118dab52a0fa405319 (patch)
tree0ab8b499c39942af9851e65911ab6a60ba353eb6 /drivers/power
parentc5ab57e082e68edb823bcff4bac53c4f44c0746d (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.c15
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;
}