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:
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;
|
||||||
|
|||||||
Reference in new issue
Block a user