diff --git a/drivers/power/mmi_parallel_charger/mmi_charger_core.c b/drivers/power/mmi_parallel_charger/mmi_charger_core.c index 329b34fa6a1a..ce22e8a6eee0 100644 --- a/drivers/power/mmi_parallel_charger/mmi_charger_core.c +++ b/drivers/power/mmi_parallel_charger/mmi_charger_core.c @@ -1531,6 +1531,9 @@ static int mmi_chrg_manager_parse_dt(struct mmi_charger_manager *chip) chip->extrn_sense = of_property_read_bool(node, "mmi,extrn-sense"); + chip->dont_rerun_aicl= of_property_read_bool(node, + "mmi,dont-rerun-aicl"); + rc = of_property_read_u32(node, "mmi,pps-volt-steps", &chip->pps_volt_steps); diff --git a/drivers/power/mmi_parallel_charger/mmi_charger_core.h b/drivers/power/mmi_parallel_charger/mmi_charger_core.h index e4a84c287325..6f27c569b29f 100644 --- a/drivers/power/mmi_parallel_charger/mmi_charger_core.h +++ b/drivers/power/mmi_parallel_charger/mmi_charger_core.h @@ -197,6 +197,7 @@ struct mmi_charger_manager { const char *extrn_fg_name; bool extrn_sense; bool recovery_pmic_chrg; + bool dont_rerun_aicl; bool sys_therm_cooling; bool sys_therm_force_pmic_chrg; diff --git a/drivers/power/mmi_parallel_charger/mmi_charger_pump_policy.c b/drivers/power/mmi_parallel_charger/mmi_charger_pump_policy.c index a91f0fc53790..f2a4beb829be 100644 --- a/drivers/power/mmi_parallel_charger/mmi_charger_pump_policy.c +++ b/drivers/power/mmi_parallel_charger/mmi_charger_pump_policy.c @@ -615,10 +615,12 @@ static void mmi_chrg_sm_work_func(struct work_struct *work) chrg_list->chrg_dev[PMIC_SW]->charger_limited = false; } - mmi_chrg_info(chip, "Do an rerun usb AICL for PMIC-SW\n"); - mmi_enable_charging(chrg_list->chrg_dev[PMIC_SW], false); - msleep(100); - mmi_enable_charging(chrg_list->chrg_dev[PMIC_SW], true); + if (!chip->dont_rerun_aicl) { + mmi_chrg_info(chip, "Do an rerun usb AICL for PMIC-SW\n"); + mmi_enable_charging(chrg_list->chrg_dev[PMIC_SW], false); + msleep(100); + mmi_enable_charging(chrg_list->chrg_dev[PMIC_SW], true); + } mmi_chrg_info(chip, "Check all effective pdo info again\n"); usbpd_get_pdo_info(chip->pd_handle, chip->mmi_pdo_info); mmi_chrg_info(chip, "Select FIXED pdo for switch charging !\n"); @@ -1183,10 +1185,12 @@ static void mmi_chrg_sm_work_func(struct work_struct *work) DISABLE_CHRG_LIMIT); chrg_list->chrg_dev[PMIC_SW]->charger_limited = false; - mmi_chrg_info(chip,"Do an rerun usb AICL for PMIC-SW\n"); - mmi_enable_charging(chrg_list->chrg_dev[PMIC_SW], false); - msleep(100); - mmi_enable_charging(chrg_list->chrg_dev[PMIC_SW], true); + if (!chip->dont_rerun_aicl) { + mmi_chrg_info(chip,"Do an rerun usb AICL for PMIC-SW\n"); + mmi_enable_charging(chrg_list->chrg_dev[PMIC_SW], false); + msleep(100); + mmi_enable_charging(chrg_list->chrg_dev[PMIC_SW], true); + } chip->recovery_pmic_chrg = true; chrg_cv_taper_tunning_cnt = 0; }