diff options
Diffstat (limited to 'drivers/power')
-rw-r--r-- | drivers/power/lp8727_charger.c | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/drivers/power/lp8727_charger.c b/drivers/power/lp8727_charger.c index 13a787adcbe9..19c21f9b6d3b 100644 --- a/drivers/power/lp8727_charger.c +++ b/drivers/power/lp8727_charger.c @@ -393,16 +393,20 @@ static int lp8727_battery_get_property(struct power_supply *psy, static void lp8727_charger_changed(struct power_supply *psy) { struct lp8727_chg *pchg = dev_get_drvdata(psy->dev->parent); + u8 eoc_level; + u8 ichg; u8 val; - u8 eoc_level, ichg; - - if (lp8727_is_charger_attached(psy->name, pchg->devid)) { - if (pchg->chg_parm) { - eoc_level = pchg->chg_parm->eoc_level; - ichg = pchg->chg_parm->ichg; - val = (ichg << LP8727_ICHG_SHIFT) | eoc_level; - lp8727_write_byte(pchg, LP8727_CHGCTRL2, val); - } + + /* skip if no charger exists */ + if (!lp8727_is_charger_attached(psy->name, pchg->devid)) + return; + + /* update charging parameters */ + if (pchg->chg_parm) { + eoc_level = pchg->chg_parm->eoc_level; + ichg = pchg->chg_parm->ichg; + val = (ichg << LP8727_ICHG_SHIFT) | eoc_level; + lp8727_write_byte(pchg, LP8727_CHGCTRL2, val); } } |