Merge "qpnp-smb2: enable/disable sw jeita using a property"
This commit is contained in:
commit
bb7cc76a8f
4 changed files with 51 additions and 0 deletions
|
@ -901,6 +901,7 @@ static enum power_supply_property smb2_batt_props[] = {
|
|||
POWER_SUPPLY_PROP_TEMP,
|
||||
POWER_SUPPLY_PROP_TECHNOLOGY,
|
||||
POWER_SUPPLY_PROP_STEP_CHARGING_ENABLED,
|
||||
POWER_SUPPLY_PROP_SW_JEITA_ENABLED,
|
||||
POWER_SUPPLY_PROP_CHARGE_DONE,
|
||||
POWER_SUPPLY_PROP_PARALLEL_DISABLE,
|
||||
POWER_SUPPLY_PROP_SET_SHIP_MODE,
|
||||
|
@ -958,6 +959,9 @@ static int smb2_batt_get_prop(struct power_supply *psy,
|
|||
case POWER_SUPPLY_PROP_STEP_CHARGING_ENABLED:
|
||||
val->intval = chg->step_chg_enabled;
|
||||
break;
|
||||
case POWER_SUPPLY_PROP_SW_JEITA_ENABLED:
|
||||
val->intval = chg->sw_jeita_enabled;
|
||||
break;
|
||||
case POWER_SUPPLY_PROP_VOLTAGE_NOW:
|
||||
rc = smblib_get_prop_batt_voltage_now(chg, val);
|
||||
break;
|
||||
|
@ -1074,6 +1078,13 @@ static int smb2_batt_set_prop(struct power_supply *psy,
|
|||
case POWER_SUPPLY_PROP_STEP_CHARGING_ENABLED:
|
||||
chg->step_chg_enabled = !!val->intval;
|
||||
break;
|
||||
case POWER_SUPPLY_PROP_SW_JEITA_ENABLED:
|
||||
if (chg->sw_jeita_enabled != (!!val->intval)) {
|
||||
rc = smblib_disable_hw_jeita(chg, !!val->intval);
|
||||
if (rc == 0)
|
||||
chg->sw_jeita_enabled = !!val->intval;
|
||||
}
|
||||
break;
|
||||
case POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT_MAX:
|
||||
chg->batt_profile_fcc_ua = val->intval;
|
||||
vote(chg->fcc_votable, BATT_PROFILE_VOTER, true, val->intval);
|
||||
|
@ -1115,6 +1126,7 @@ static int smb2_batt_prop_is_writeable(struct power_supply *psy,
|
|||
case POWER_SUPPLY_PROP_RERUN_AICL:
|
||||
case POWER_SUPPLY_PROP_INPUT_CURRENT_LIMITED:
|
||||
case POWER_SUPPLY_PROP_STEP_CHARGING_ENABLED:
|
||||
case POWER_SUPPLY_PROP_SW_JEITA_ENABLED:
|
||||
return 1;
|
||||
default:
|
||||
break;
|
||||
|
@ -1707,6 +1719,14 @@ static int smb2_init_hw(struct smb2 *chip)
|
|||
}
|
||||
}
|
||||
|
||||
if (chg->sw_jeita_enabled) {
|
||||
rc = smblib_disable_hw_jeita(chg, true);
|
||||
if (rc < 0) {
|
||||
dev_err(chg->dev, "Couldn't set hw jeita rc=%d\n", rc);
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
|
|
@ -2053,6 +2053,29 @@ int smblib_dp_dm(struct smb_charger *chg, int val)
|
|||
return rc;
|
||||
}
|
||||
|
||||
int smblib_disable_hw_jeita(struct smb_charger *chg, bool disable)
|
||||
{
|
||||
int rc;
|
||||
u8 mask;
|
||||
|
||||
/*
|
||||
* Disable h/w base JEITA compensation if s/w JEITA is enabled
|
||||
*/
|
||||
mask = JEITA_EN_COLD_SL_FCV_BIT
|
||||
| JEITA_EN_HOT_SL_FCV_BIT
|
||||
| JEITA_EN_HOT_SL_CCC_BIT
|
||||
| JEITA_EN_COLD_SL_CCC_BIT,
|
||||
rc = smblib_masked_write(chg, JEITA_EN_CFG_REG, mask,
|
||||
disable ? 0 : mask);
|
||||
if (rc < 0) {
|
||||
dev_err(chg->dev,
|
||||
"Couldn't configure s/w jeita rc=%d\n",
|
||||
rc);
|
||||
return rc;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*******************
|
||||
* DC PSY GETTERS *
|
||||
*******************/
|
||||
|
|
|
@ -501,6 +501,7 @@ int smblib_get_prop_fcc_delta(struct smb_charger *chg,
|
|||
union power_supply_propval *val);
|
||||
int smblib_icl_override(struct smb_charger *chg, bool override);
|
||||
int smblib_dp_dm(struct smb_charger *chg, int val);
|
||||
int smblib_disable_hw_jeita(struct smb_charger *chg, bool disable);
|
||||
int smblib_rerun_aicl(struct smb_charger *chg);
|
||||
int smblib_set_icl_current(struct smb_charger *chg, int icl_ua);
|
||||
int smblib_get_icl_current(struct smb_charger *chg, int *icl_ua);
|
||||
|
|
|
@ -271,6 +271,13 @@ static int handle_jeita(struct step_chg_info *chip)
|
|||
int rc = 0, fcc_ua = 0, fv_uv = 0;
|
||||
u64 elapsed_us;
|
||||
|
||||
rc = power_supply_get_property(chip->batt_psy,
|
||||
POWER_SUPPLY_PROP_SW_JEITA_ENABLED, &pval);
|
||||
if (rc < 0)
|
||||
chip->sw_jeita_enable = 0;
|
||||
else
|
||||
chip->sw_jeita_enable = pval.intval;
|
||||
|
||||
if (!chip->sw_jeita_enable) {
|
||||
if (chip->fcc_votable)
|
||||
vote(chip->fcc_votable, JEITA_VOTER, false, 0);
|
||||
|
|
Loading…
Add table
Reference in a new issue