Loading drivers/power/supply/qcom/qpnp-smb5.c +7 −0 Original line number Diff line number Diff line Loading @@ -1659,6 +1659,13 @@ static int smb5_init_hw(struct smb5 *chip) smblib_rerun_apsd_if_required(chg); } /* clear the ICL override if it is set */ rc = smblib_icl_override(chg, false); if (rc < 0) { pr_err("Couldn't disable ICL override rc=%d\n", rc); return rc; } /* vote 0mA on usb_icl for non battery platforms */ vote(chg->usb_icl_votable, DEFAULT_VOTER, chip->dt.no_battery, 0); Loading drivers/power/supply/qcom/smb5-lib.c +27 −1 Original line number Diff line number Diff line Loading @@ -117,6 +117,19 @@ int smblib_get_jeita_cc_delta(struct smb_charger *chg, int *cc_delta_ua) return 0; } int smblib_icl_override(struct smb_charger *chg, bool override) { int rc; rc = smblib_masked_write(chg, USBIN_LOAD_CFG_REG, ICL_OVERRIDE_AFTER_APSD_BIT, override ? ICL_OVERRIDE_AFTER_APSD_BIT : 0); if (rc < 0) smblib_err(chg, "Couldn't override ICL rc=%d\n", rc); return rc; } static int smblib_select_sec_charger(struct smb_charger *chg, int sec_chg) { int rc; Loading Loading @@ -923,7 +936,7 @@ static int get_sdp_current(struct smb_charger *chg, int *icl_ua) int smblib_set_icl_current(struct smb_charger *chg, int icl_ua) { int rc = 0; bool hc_mode = false; bool hc_mode = false, override = false; /* suspend and return if 25mA or less is requested */ if (icl_ua <= USBIN_25MA) Loading @@ -950,6 +963,13 @@ int smblib_set_icl_current(struct smb_charger *chg, int icl_ua) goto out; } hc_mode = true; /* * Micro USB mode follows ICL register independent of override * bit, configure override only for typeC mode. */ if (chg->connector_type == POWER_SUPPLY_CONNECTOR_TYPEC) override = true; } set_mode: Loading @@ -960,6 +980,12 @@ int smblib_set_icl_current(struct smb_charger *chg, int icl_ua) goto out; } rc = smblib_icl_override(chg, override); if (rc < 0) { smblib_err(chg, "Couldn't set ICL override rc=%d\n", rc); goto out; } /* unsuspend after configuring current and override */ rc = smblib_set_usb_suspend(chg, false); if (rc < 0) { Loading drivers/power/supply/qcom/smb5-lib.h +1 −0 Original line number Diff line number Diff line Loading @@ -551,6 +551,7 @@ int smblib_get_prop_pr_swap_in_progress(struct smb_charger *chg, int smblib_set_prop_pr_swap_in_progress(struct smb_charger *chg, const union power_supply_propval *val); int smblib_configure_hvdcp_apsd(struct smb_charger *chg, bool enable); int smblib_icl_override(struct smb_charger *chg, bool override); int smblib_init(struct smb_charger *chg); int smblib_deinit(struct smb_charger *chg); Loading Loading
drivers/power/supply/qcom/qpnp-smb5.c +7 −0 Original line number Diff line number Diff line Loading @@ -1659,6 +1659,13 @@ static int smb5_init_hw(struct smb5 *chip) smblib_rerun_apsd_if_required(chg); } /* clear the ICL override if it is set */ rc = smblib_icl_override(chg, false); if (rc < 0) { pr_err("Couldn't disable ICL override rc=%d\n", rc); return rc; } /* vote 0mA on usb_icl for non battery platforms */ vote(chg->usb_icl_votable, DEFAULT_VOTER, chip->dt.no_battery, 0); Loading
drivers/power/supply/qcom/smb5-lib.c +27 −1 Original line number Diff line number Diff line Loading @@ -117,6 +117,19 @@ int smblib_get_jeita_cc_delta(struct smb_charger *chg, int *cc_delta_ua) return 0; } int smblib_icl_override(struct smb_charger *chg, bool override) { int rc; rc = smblib_masked_write(chg, USBIN_LOAD_CFG_REG, ICL_OVERRIDE_AFTER_APSD_BIT, override ? ICL_OVERRIDE_AFTER_APSD_BIT : 0); if (rc < 0) smblib_err(chg, "Couldn't override ICL rc=%d\n", rc); return rc; } static int smblib_select_sec_charger(struct smb_charger *chg, int sec_chg) { int rc; Loading Loading @@ -923,7 +936,7 @@ static int get_sdp_current(struct smb_charger *chg, int *icl_ua) int smblib_set_icl_current(struct smb_charger *chg, int icl_ua) { int rc = 0; bool hc_mode = false; bool hc_mode = false, override = false; /* suspend and return if 25mA or less is requested */ if (icl_ua <= USBIN_25MA) Loading @@ -950,6 +963,13 @@ int smblib_set_icl_current(struct smb_charger *chg, int icl_ua) goto out; } hc_mode = true; /* * Micro USB mode follows ICL register independent of override * bit, configure override only for typeC mode. */ if (chg->connector_type == POWER_SUPPLY_CONNECTOR_TYPEC) override = true; } set_mode: Loading @@ -960,6 +980,12 @@ int smblib_set_icl_current(struct smb_charger *chg, int icl_ua) goto out; } rc = smblib_icl_override(chg, override); if (rc < 0) { smblib_err(chg, "Couldn't set ICL override rc=%d\n", rc); goto out; } /* unsuspend after configuring current and override */ rc = smblib_set_usb_suspend(chg, false); if (rc < 0) { Loading
drivers/power/supply/qcom/smb5-lib.h +1 −0 Original line number Diff line number Diff line Loading @@ -551,6 +551,7 @@ int smblib_get_prop_pr_swap_in_progress(struct smb_charger *chg, int smblib_set_prop_pr_swap_in_progress(struct smb_charger *chg, const union power_supply_propval *val); int smblib_configure_hvdcp_apsd(struct smb_charger *chg, bool enable); int smblib_icl_override(struct smb_charger *chg, bool override); int smblib_init(struct smb_charger *chg); int smblib_deinit(struct smb_charger *chg); Loading