Loading drivers/power/supply/qcom/qpnp-smb5.c +10 −1 Original line number Diff line number Diff line Loading @@ -611,7 +611,7 @@ static int smb5_usb_get_prop(struct power_supply *psy, break; case POWER_SUPPLY_PROP_CONNECTOR_HEALTH: if (chg->connector_health == -EINVAL) rc = smblib_get_prop_connector_health(chg, val); val->intval = smblib_get_prop_connector_health(chg); else val->intval = chg->connector_health; break; Loading Loading @@ -1613,6 +1613,15 @@ static int smb5_init_hw(struct smb5 *chip) return rc; } /* Disable SMB Temperature ADC INT */ rc = smblib_masked_write(chg, MISC_THERMREG_SRC_CFG_REG, THERMREG_SMB_ADC_SRC_EN_BIT, 0); if (rc < 0) { dev_err(chg->dev, "Couldn't configure SMB thermal regulation rc=%d\n", rc); return rc; } /* Use SW based VBUS control, disable HW autonomous mode */ rc = smblib_masked_write(chg, USBIN_OPTIONS_1_CFG_REG, HVDCP_AUTH_ALG_EN_CFG_BIT | HVDCP_AUTONOMOUS_MODE_EN_CFG_BIT, Loading drivers/power/supply/qcom/smb5-lib.c +11 −21 Original line number Diff line number Diff line Loading @@ -2324,8 +2324,7 @@ int smblib_get_prop_die_health(struct smb_charger *chg, return 0; } int smblib_get_prop_connector_health(struct smb_charger *chg, union power_supply_propval *val) int smblib_get_prop_connector_health(struct smb_charger *chg) { int rc; u8 stat; Loading @@ -2334,28 +2333,19 @@ int smblib_get_prop_connector_health(struct smb_charger *chg, if (rc < 0) { smblib_err(chg, "Couldn't read CONNECTOR_TEMP_STATUS_REG, rc=%d\n", rc); return rc; return POWER_SUPPLY_HEALTH_UNKNOWN; } /* Thermal status bits are mutually exclusive */ switch (stat) { case CONNECTOR_TEMP_LB_BIT: val->intval = POWER_SUPPLY_HEALTH_COOL; break; case CONNECTOR_TEMP_UB_BIT: val->intval = POWER_SUPPLY_HEALTH_WARM; break; case CONNECTOR_TEMP_RST_BIT: val->intval = POWER_SUPPLY_HEALTH_HOT; break; case CONNECTOR_TEMP_SHDN_BIT: val->intval = POWER_SUPPLY_HEALTH_OVERHEAT; break; default: val->intval = POWER_SUPPLY_HEALTH_UNKNOWN; } if (stat & CONNECTOR_TEMP_RST_BIT) return POWER_SUPPLY_HEALTH_OVERHEAT; return 0; if (stat & CONNECTOR_TEMP_UB_BIT) return POWER_SUPPLY_HEALTH_HOT; if (stat & CONNECTOR_TEMP_LB_BIT) return POWER_SUPPLY_HEALTH_WARM; return POWER_SUPPLY_HEALTH_COOL; } #define SDP_CURRENT_UA 500000 Loading drivers/power/supply/qcom/smb5-lib.h +1 −2 Original line number Diff line number Diff line Loading @@ -517,8 +517,7 @@ int smblib_get_prop_charger_temp(struct smb_charger *chg, union power_supply_propval *val); int smblib_get_prop_die_health(struct smb_charger *chg, union power_supply_propval *val); int smblib_get_prop_connector_health(struct smb_charger *chg, union power_supply_propval *val); int smblib_get_prop_connector_health(struct smb_charger *chg); int smblib_set_prop_pd_current_max(struct smb_charger *chg, const union power_supply_propval *val); int smblib_set_prop_sdp_current_max(struct smb_charger *chg, Loading drivers/power/supply/qcom/smb5-reg.h +3 −0 Original line number Diff line number Diff line Loading @@ -387,6 +387,9 @@ enum { #define AICL_RERUN_TIME_CFG_REG (MISC_BASE + 0x61) #define AICL_RERUN_TIME_12S_VAL 0x01 #define MISC_THERMREG_SRC_CFG_REG (MISC_BASE + 0x70) #define THERMREG_SMB_ADC_SRC_EN_BIT BIT(5) #define MISC_SMB_CFG_REG (MISC_BASE + 0x90) #define SMB_EN_SEL_BIT BIT(4) #define CP_EN_POLARITY_CFG_BIT BIT(3) Loading Loading
drivers/power/supply/qcom/qpnp-smb5.c +10 −1 Original line number Diff line number Diff line Loading @@ -611,7 +611,7 @@ static int smb5_usb_get_prop(struct power_supply *psy, break; case POWER_SUPPLY_PROP_CONNECTOR_HEALTH: if (chg->connector_health == -EINVAL) rc = smblib_get_prop_connector_health(chg, val); val->intval = smblib_get_prop_connector_health(chg); else val->intval = chg->connector_health; break; Loading Loading @@ -1613,6 +1613,15 @@ static int smb5_init_hw(struct smb5 *chip) return rc; } /* Disable SMB Temperature ADC INT */ rc = smblib_masked_write(chg, MISC_THERMREG_SRC_CFG_REG, THERMREG_SMB_ADC_SRC_EN_BIT, 0); if (rc < 0) { dev_err(chg->dev, "Couldn't configure SMB thermal regulation rc=%d\n", rc); return rc; } /* Use SW based VBUS control, disable HW autonomous mode */ rc = smblib_masked_write(chg, USBIN_OPTIONS_1_CFG_REG, HVDCP_AUTH_ALG_EN_CFG_BIT | HVDCP_AUTONOMOUS_MODE_EN_CFG_BIT, Loading
drivers/power/supply/qcom/smb5-lib.c +11 −21 Original line number Diff line number Diff line Loading @@ -2324,8 +2324,7 @@ int smblib_get_prop_die_health(struct smb_charger *chg, return 0; } int smblib_get_prop_connector_health(struct smb_charger *chg, union power_supply_propval *val) int smblib_get_prop_connector_health(struct smb_charger *chg) { int rc; u8 stat; Loading @@ -2334,28 +2333,19 @@ int smblib_get_prop_connector_health(struct smb_charger *chg, if (rc < 0) { smblib_err(chg, "Couldn't read CONNECTOR_TEMP_STATUS_REG, rc=%d\n", rc); return rc; return POWER_SUPPLY_HEALTH_UNKNOWN; } /* Thermal status bits are mutually exclusive */ switch (stat) { case CONNECTOR_TEMP_LB_BIT: val->intval = POWER_SUPPLY_HEALTH_COOL; break; case CONNECTOR_TEMP_UB_BIT: val->intval = POWER_SUPPLY_HEALTH_WARM; break; case CONNECTOR_TEMP_RST_BIT: val->intval = POWER_SUPPLY_HEALTH_HOT; break; case CONNECTOR_TEMP_SHDN_BIT: val->intval = POWER_SUPPLY_HEALTH_OVERHEAT; break; default: val->intval = POWER_SUPPLY_HEALTH_UNKNOWN; } if (stat & CONNECTOR_TEMP_RST_BIT) return POWER_SUPPLY_HEALTH_OVERHEAT; return 0; if (stat & CONNECTOR_TEMP_UB_BIT) return POWER_SUPPLY_HEALTH_HOT; if (stat & CONNECTOR_TEMP_LB_BIT) return POWER_SUPPLY_HEALTH_WARM; return POWER_SUPPLY_HEALTH_COOL; } #define SDP_CURRENT_UA 500000 Loading
drivers/power/supply/qcom/smb5-lib.h +1 −2 Original line number Diff line number Diff line Loading @@ -517,8 +517,7 @@ int smblib_get_prop_charger_temp(struct smb_charger *chg, union power_supply_propval *val); int smblib_get_prop_die_health(struct smb_charger *chg, union power_supply_propval *val); int smblib_get_prop_connector_health(struct smb_charger *chg, union power_supply_propval *val); int smblib_get_prop_connector_health(struct smb_charger *chg); int smblib_set_prop_pd_current_max(struct smb_charger *chg, const union power_supply_propval *val); int smblib_set_prop_sdp_current_max(struct smb_charger *chg, Loading
drivers/power/supply/qcom/smb5-reg.h +3 −0 Original line number Diff line number Diff line Loading @@ -387,6 +387,9 @@ enum { #define AICL_RERUN_TIME_CFG_REG (MISC_BASE + 0x61) #define AICL_RERUN_TIME_12S_VAL 0x01 #define MISC_THERMREG_SRC_CFG_REG (MISC_BASE + 0x70) #define THERMREG_SMB_ADC_SRC_EN_BIT BIT(5) #define MISC_SMB_CFG_REG (MISC_BASE + 0x90) #define SMB_EN_SEL_BIT BIT(4) #define CP_EN_POLARITY_CFG_BIT BIT(3) Loading