diff --git a/drivers/power/supply/bq24735-charger.c b/drivers/power/supply/bq24735-charger.c index 2787c19d6696..71f977d055d7 100644 --- a/drivers/power/supply/bq24735-charger.c +++ b/drivers/power/supply/bq24735-charger.c @@ -160,9 +160,15 @@ static int bq24735_config_charger(struct bq24735 *charger) static inline int bq24735_enable_charging(struct bq24735 *charger) { + int ret; + if (charger->pdata->ext_control) return 0; + ret = bq24735_config_charger(charger); + if (ret) + return ret; + return bq24735_update_word(charger->client, BQ24735_CHG_OPT, BQ24735_CHG_OPT_CHARGE_DISABLE, 0); } @@ -292,7 +298,6 @@ static int bq24735_charger_set_property(struct power_supply *psy, mutex_unlock(&charger->lock); if (ret) return ret; - bq24735_config_charger(charger); break; case POWER_SUPPLY_STATUS_DISCHARGING: case POWER_SUPPLY_STATUS_NOT_CHARGING: @@ -434,12 +439,6 @@ static int bq24735_charger_probe(struct i2c_client *client, } } - ret = bq24735_config_charger(charger); - if (ret < 0) { - dev_err(&client->dev, "failed in configuring charger"); - return ret; - } - /* check for AC adapter presence */ if (bq24735_charger_is_present(charger)) { ret = bq24735_enable_charging(charger);