dynamic adjust vindpm

Details:
dynamic adjust vindpm

Change-Id: I1028138cbd5ee95c9a62d4c6114c5eeb8949ab58
Reviewed-on: https://gerrit.mot.com/2427536
SME-Granted: SME Approvals Granted
SLTApproved: Slta Waiver
Tested-by: Jira Key
Reviewed-by: Wei Xu <xuwei9@lenovo.com>
Reviewed-by: Wang Wang <wangwang1@lenovo.com>
Submit-Approved: Jira Key
This commit is contained in:
[A authored and hq114 committed 2022-11-11 04:29:30 -06:00
1 parent fbda6c5497
commit ede8130ea6
2 files changed
+41

No files matched your search

@@ -1635,6 +1635,8 @@ static void charger_monitor_work_func(struct work_struct *work)
/* enable dynamic adjust battery voltage */ /* enable dynamic adjust battery voltage */
union power_supply_propval val_battery = {0}; union power_supply_propval val_battery = {0};
int vbat_uv, ibat_ua; int vbat_uv, ibat_ua;
/* enable dynamic adjust battery voltage */
int soc;
charge_monitor_work = container_of(work, struct delayed_work, work); charge_monitor_work = container_of(work, struct delayed_work, work);
if(charge_monitor_work == NULL) { if(charge_monitor_work == NULL) {
@@ -1679,6 +1681,25 @@ static void charger_monitor_work_func(struct work_struct *work)
} }
} }
/* enable dynamic adjust vindpm */
if(sgm->enable_dynamic_adjust_vindpm){
if (!sgm->battery)
sgm->battery = power_supply_get_by_name ("battery");
if (sgm->battery) {
power_supply_get_property(sgm->battery, POWER_SUPPLY_PROP_CAPACITY, &val_battery);
soc = val_battery.intval;
dev_err(sgm->dev, "soc = %d\n", soc);
if(soc > 80 && sgm->vindpm_flag == false){
ret = sgm4154x_set_input_volt_lim(sgm, 4700000);
sgm->vindpm_flag = true;
}
if(soc <= 80 && sgm->vindpm_flag){
ret = sgm4154x_set_input_volt_lim(sgm, sgm->init_data.vlim);
sgm->vindpm_flag = false;
}
}
}
sgm4154x_dump_register(sgm); sgm4154x_dump_register(sgm);
pr_err("%s\n",__func__); pr_err("%s\n",__func__);
OUT: OUT:
@@ -2216,6 +2237,8 @@ static bool mmi_start_bc12_charger_type_detect(struct sgm4154x_device *sgm, int
static void sgm4154x_vbus_remove(struct sgm4154x_device * sgm) static void sgm4154x_vbus_remove(struct sgm4154x_device * sgm)
{ {
/* enable dynamic adjust vindpm */
int ret = 0;
dev_err(sgm->dev, "Vbus removed, disable charge\n"); dev_err(sgm->dev, "Vbus removed, disable charge\n");
#ifdef CONFIG_MMI_QC3P_TURBO_CHARGER #ifdef CONFIG_MMI_QC3P_TURBO_CHARGER
@@ -2231,6 +2254,13 @@ static void sgm4154x_vbus_remove(struct sgm4154x_device * sgm)
sgm4154x_set_chrg_adjust_volt(sgm, sgm->final_cv, 0); sgm4154x_set_chrg_adjust_volt(sgm, sgm->final_cv, 0);
mmi_regmap_update_bits(sgm, SGM4154x_CHRG_CTRL_f, SGM4154x_VREG_FT_MASK, 0); mmi_regmap_update_bits(sgm, SGM4154x_CHRG_CTRL_f, SGM4154x_VREG_FT_MASK, 0);
} }
/* enable dynamic adjust vindpm */
if(sgm->enable_dynamic_adjust_vindpm){
ret = sgm4154x_set_input_volt_lim(sgm, sgm->init_data.vlim);
sgm->vindpm_flag = false;
}
sgm->pulse_cnt = 0; sgm->pulse_cnt = 0;
sgm->mmi_qc3p_rerun_done = false; sgm->mmi_qc3p_rerun_done = false;
sgm->mmi_qc3p_wa = false; sgm->mmi_qc3p_wa = false;
@@ -2675,6 +2705,13 @@ static int sgm4154x_parse_dt(struct sgm4154x_device *sgm)
sgm->enable_dynamic_adjust_batvol = of_property_read_bool(sgm->dev->of_node, "enable_dynamic_adjust_batvol"); sgm->enable_dynamic_adjust_batvol = of_property_read_bool(sgm->dev->of_node, "enable_dynamic_adjust_batvol");
dev_err(sgm->dev, "%s: enable_dynamic_adjust_batvol = %d \n", __func__, sgm->enable_dynamic_adjust_batvol); dev_err(sgm->dev, "%s: enable_dynamic_adjust_batvol = %d \n", __func__, sgm->enable_dynamic_adjust_batvol);
/* enable dynamic adjust vindpm */
sgm->enable_dynamic_adjust_vindpm = of_property_read_bool(sgm->dev->of_node, "enable_dynamic_adjust_vindpm");
dev_err(sgm->dev, "%s: enable_dynamic_adjust_vindpm = %d \n", __func__, sgm->enable_dynamic_adjust_vindpm);
if(sgm->enable_dynamic_adjust_vindpm){
sgm->vindpm_flag = false;
}
if (of_property_read_u32(sgm->dev->of_node, "jeita_temp_above_t4_cv", &val) >= 0) if (of_property_read_u32(sgm->dev->of_node, "jeita_temp_above_t4_cv", &val) >= 0)
sgm->data.jeita_temp_above_t4_cv = val; sgm->data.jeita_temp_above_t4_cv = val;
else { else {
@@ -364,6 +364,10 @@ struct sgm4154x_device {
int final_cv; int final_cv;
int cv_tune; int cv_tune;
/* enable dynamic adjust vindpm */
bool enable_dynamic_adjust_vindpm;
bool vindpm_flag;
struct regulator *dpdm_reg; struct regulator *dpdm_reg;
struct regulator *otg_vbus_reg; struct regulator *otg_vbus_reg;
struct mutex regulator_lock; struct mutex regulator_lock;