diff options
Diffstat (limited to 'drivers/power/smb349-charger.c')
-rw-r--r-- | drivers/power/smb349-charger.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/power/smb349-charger.c b/drivers/power/smb349-charger.c index 134b8154a2b9..c6dc43158b82 100644 --- a/drivers/power/smb349-charger.c +++ b/drivers/power/smb349-charger.c @@ -406,6 +406,19 @@ static int smb349_enable_charging(struct regulator_dev *rdev, int ret; if (!max_uA) { + /* Wait for SMB349 to debounce and get reset to POR when cable is unpluged */ + msleep(50); + + ret = smb349_read(client, SMB349_STS_REG_C); + if (ret < 0) { + dev_err(&client->dev, "%s(): Failed in reading register" + "0x%02x\n", __func__, SMB349_STS_REG_C); + return ret; + } + + if (ret & CHARGING) + return 0; + charger->state = stopped; charger->chrg_type = NONE; } else { |