Loading drivers/power/supply/qcom/qpnp-smb5.c +7 −0 Original line number Diff line number Diff line Loading @@ -1616,6 +1616,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 @@ -116,6 +116,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; } int smblib_stat_sw_override_cfg(struct smb_charger *chg, bool override) { int rc = 0; Loading Loading @@ -871,7 +884,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 @@ -897,6 +910,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 @@ -907,6 +927,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 @@ -540,6 +540,7 @@ int smblib_stat_sw_override_cfg(struct smb_charger *chg, bool override); int smblib_configure_wdog(struct smb_charger *chg, bool enable); int smblib_force_vbus_voltage(struct smb_charger *chg, u8 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 @@ -1616,6 +1616,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 @@ -116,6 +116,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; } int smblib_stat_sw_override_cfg(struct smb_charger *chg, bool override) { int rc = 0; Loading Loading @@ -871,7 +884,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 @@ -897,6 +910,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 @@ -907,6 +927,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 @@ -540,6 +540,7 @@ int smblib_stat_sw_override_cfg(struct smb_charger *chg, bool override); int smblib_configure_wdog(struct smb_charger *chg, bool enable); int smblib_force_vbus_voltage(struct smb_charger *chg, u8 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