diff --git a/drivers/power/bq2589x_chg_mmi/bq2589x_charger.c b/drivers/power/bq2589x_chg_mmi/bq2589x_charger.c index 1dc4fd55b1c8..5fcd37f3492b 100644 --- a/drivers/power/bq2589x_chg_mmi/bq2589x_charger.c +++ b/drivers/power/bq2589x_chg_mmi/bq2589x_charger.c @@ -721,16 +721,23 @@ int bq2589x_is_enabled_charging(struct charger_device *chg_dev, bool *en) int bq2589x_pumpx_enable(struct bq2589x *bq, int enable) { u8 val; - int ret; - + int ret; + int retry_cnt; + if (enable) val = BQ2589X_PUMPX_ENABLE << BQ2589X_EN_PUMPX_SHIFT; else - val = BQ2589X_PUMPX_DISABLE << BQ2589X_EN_PUMPX_SHIFT; - - ret = bq2589x_update_bits(bq, BQ2589X_REG_04, BQ2589X_EN_PUMPX_MASK, val); - - return ret; + val = BQ2589X_PUMPX_DISABLE << BQ2589X_EN_PUMPX_SHIFT; + + for (retry_cnt = 3; retry_cnt > 0; retry_cnt--) { + ret = bq2589x_update_bits(bq, BQ2589X_REG_04, BQ2589X_EN_PUMPX_MASK, val); + if(!ret) + break; + msleep(10); + dev_info(bq->dev,"%s:enable pumpx:%d retry_cnt=%d\n", __func__, enable,retry_cnt); + } + + return ret; } int bq2589x_pumpx_increase_volt(struct bq2589x *bq)