Loading drivers/power/supply/qcom/battery.h +1 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ struct charger_param { u32 fcc_step_size_ua; u32 smb_version; u32 hvdcp2_max_icl_ua; u32 hvdcp2_12v_max_icl_ua; u32 hvdcp3_max_icl_ua; u32 forced_main_fcc; u32 qc4_max_icl_ua; Loading drivers/power/supply/qcom/qpnp-smb5.c +6 −0 Original line number Diff line number Diff line Loading @@ -610,6 +610,12 @@ static int smb5_parse_dt_misc(struct smb5 *chip, struct device_node *node) if (chg->chg_param.hvdcp2_max_icl_ua <= 0) chg->chg_param.hvdcp2_max_icl_ua = MICRO_3PA; of_property_read_u32(node, "qcom,hvdcp2-12v-max-icl-ua", &chg->chg_param.hvdcp2_12v_max_icl_ua); if (chg->chg_param.hvdcp2_12v_max_icl_ua <= 0) chg->chg_param.hvdcp2_12v_max_icl_ua = chg->chg_param.hvdcp2_max_icl_ua; /* Used only in Adapter CV mode of operation */ of_property_read_u32(node, "qcom,qc4-max-icl-ua", &chg->chg_param.qc4_max_icl_ua); Loading drivers/power/supply/qcom/smb5-lib.c +8 −1 Original line number Diff line number Diff line Loading @@ -1218,6 +1218,7 @@ static void smblib_uusb_removal(struct smb_charger *chg) is_flash_active(chg) ? SDP_CURRENT_UA : SDP_100_MA); vote(chg->usb_icl_votable, SW_QC3_VOTER, false, 0); vote(chg->usb_icl_votable, HVDCP2_ICL_VOTER, false, 0); vote(chg->usb_icl_votable, HVDCP2_12V_ICL_VOTER, false, 0); vote(chg->usb_icl_votable, CHG_TERMINATION_VOTER, false, 0); vote(chg->usb_icl_votable, THERMAL_THROTTLE_VOTER, false, 0); vote(chg->limited_irq_disable_votable, CHARGER_TYPE_VOTER, Loading Loading @@ -2666,6 +2667,8 @@ int smblib_dp_dm(struct smb_charger *chg, int val) rc = smblib_force_vbus_voltage(chg, FORCE_5V_BIT); if (rc < 0) pr_err("Failed to force 5V\n"); vote(chg->usb_icl_votable, HVDCP2_12V_ICL_VOTER, false, 0); break; case POWER_SUPPLY_DP_DM_FORCE_9V: if (chg->qc2_unsupported_voltage == QC2_NON_COMPLIANT_9V) { Loading @@ -2691,6 +2694,8 @@ int smblib_dp_dm(struct smb_charger *chg, int val) rc = smblib_force_vbus_voltage(chg, FORCE_9V_BIT); if (rc < 0) pr_err("Failed to force 9V\n"); vote(chg->usb_icl_votable, HVDCP2_12V_ICL_VOTER, false, 0); break; case POWER_SUPPLY_DP_DM_FORCE_12V: if (chg->qc2_unsupported_voltage == QC2_NON_COMPLIANT_12V) { Loading @@ -2707,6 +2712,8 @@ int smblib_dp_dm(struct smb_charger *chg, int val) } if ((stat & QC_9V_BIT) || (stat & QC_5V_BIT)) { vote(chg->usb_icl_votable, HVDCP2_12V_ICL_VOTER, true, chg->chg_param.hvdcp2_12v_max_icl_ua); /* Force 1A ICL before requesting higher voltage */ vote(chg->usb_icl_votable, HVDCP2_ICL_VOTER, true, 1000000); Loading Loading @@ -5704,7 +5711,6 @@ static void smblib_handle_hvdcp_check_timeout(struct smb_charger *chg, u32 hvdcp_ua = 0; if (rising) { if (qc_charger) { hvdcp_ua = (chg->real_charger_type == POWER_SUPPLY_TYPE_USB_HVDCP) ? Loading Loading @@ -6249,6 +6255,7 @@ static void typec_src_removal(struct smb_charger *chg) vote(chg->usb_icl_votable, SW_QC3_VOTER, false, 0); vote(chg->usb_icl_votable, CTM_VOTER, false, 0); vote(chg->usb_icl_votable, HVDCP2_ICL_VOTER, false, 0); vote(chg->usb_icl_votable, HVDCP2_12V_ICL_VOTER, false, 0); vote(chg->usb_icl_votable, CHG_TERMINATION_VOTER, false, 0); vote(chg->usb_icl_votable, THERMAL_THROTTLE_VOTER, false, 0); vote(chg->usb_icl_votable, LPD_VOTER, false, 0); Loading drivers/power/supply/qcom/smb5-lib.h +1 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ enum print_reason { #define JEITA_ARB_VOTER "JEITA_ARB_VOTER" #define MOISTURE_VOTER "MOISTURE_VOTER" #define HVDCP2_ICL_VOTER "HVDCP2_ICL_VOTER" #define HVDCP2_12V_ICL_VOTER "HVDCP2_12V_ICL_VOTER" #define AICL_THRESHOLD_VOTER "AICL_THRESHOLD_VOTER" #define USBOV_DBC_VOTER "USBOV_DBC_VOTER" #define CHG_TERMINATION_VOTER "CHG_TERMINATION_VOTER" Loading Loading
drivers/power/supply/qcom/battery.h +1 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ struct charger_param { u32 fcc_step_size_ua; u32 smb_version; u32 hvdcp2_max_icl_ua; u32 hvdcp2_12v_max_icl_ua; u32 hvdcp3_max_icl_ua; u32 forced_main_fcc; u32 qc4_max_icl_ua; Loading
drivers/power/supply/qcom/qpnp-smb5.c +6 −0 Original line number Diff line number Diff line Loading @@ -610,6 +610,12 @@ static int smb5_parse_dt_misc(struct smb5 *chip, struct device_node *node) if (chg->chg_param.hvdcp2_max_icl_ua <= 0) chg->chg_param.hvdcp2_max_icl_ua = MICRO_3PA; of_property_read_u32(node, "qcom,hvdcp2-12v-max-icl-ua", &chg->chg_param.hvdcp2_12v_max_icl_ua); if (chg->chg_param.hvdcp2_12v_max_icl_ua <= 0) chg->chg_param.hvdcp2_12v_max_icl_ua = chg->chg_param.hvdcp2_max_icl_ua; /* Used only in Adapter CV mode of operation */ of_property_read_u32(node, "qcom,qc4-max-icl-ua", &chg->chg_param.qc4_max_icl_ua); Loading
drivers/power/supply/qcom/smb5-lib.c +8 −1 Original line number Diff line number Diff line Loading @@ -1218,6 +1218,7 @@ static void smblib_uusb_removal(struct smb_charger *chg) is_flash_active(chg) ? SDP_CURRENT_UA : SDP_100_MA); vote(chg->usb_icl_votable, SW_QC3_VOTER, false, 0); vote(chg->usb_icl_votable, HVDCP2_ICL_VOTER, false, 0); vote(chg->usb_icl_votable, HVDCP2_12V_ICL_VOTER, false, 0); vote(chg->usb_icl_votable, CHG_TERMINATION_VOTER, false, 0); vote(chg->usb_icl_votable, THERMAL_THROTTLE_VOTER, false, 0); vote(chg->limited_irq_disable_votable, CHARGER_TYPE_VOTER, Loading Loading @@ -2666,6 +2667,8 @@ int smblib_dp_dm(struct smb_charger *chg, int val) rc = smblib_force_vbus_voltage(chg, FORCE_5V_BIT); if (rc < 0) pr_err("Failed to force 5V\n"); vote(chg->usb_icl_votable, HVDCP2_12V_ICL_VOTER, false, 0); break; case POWER_SUPPLY_DP_DM_FORCE_9V: if (chg->qc2_unsupported_voltage == QC2_NON_COMPLIANT_9V) { Loading @@ -2691,6 +2694,8 @@ int smblib_dp_dm(struct smb_charger *chg, int val) rc = smblib_force_vbus_voltage(chg, FORCE_9V_BIT); if (rc < 0) pr_err("Failed to force 9V\n"); vote(chg->usb_icl_votable, HVDCP2_12V_ICL_VOTER, false, 0); break; case POWER_SUPPLY_DP_DM_FORCE_12V: if (chg->qc2_unsupported_voltage == QC2_NON_COMPLIANT_12V) { Loading @@ -2707,6 +2712,8 @@ int smblib_dp_dm(struct smb_charger *chg, int val) } if ((stat & QC_9V_BIT) || (stat & QC_5V_BIT)) { vote(chg->usb_icl_votable, HVDCP2_12V_ICL_VOTER, true, chg->chg_param.hvdcp2_12v_max_icl_ua); /* Force 1A ICL before requesting higher voltage */ vote(chg->usb_icl_votable, HVDCP2_ICL_VOTER, true, 1000000); Loading Loading @@ -5704,7 +5711,6 @@ static void smblib_handle_hvdcp_check_timeout(struct smb_charger *chg, u32 hvdcp_ua = 0; if (rising) { if (qc_charger) { hvdcp_ua = (chg->real_charger_type == POWER_SUPPLY_TYPE_USB_HVDCP) ? Loading Loading @@ -6249,6 +6255,7 @@ static void typec_src_removal(struct smb_charger *chg) vote(chg->usb_icl_votable, SW_QC3_VOTER, false, 0); vote(chg->usb_icl_votable, CTM_VOTER, false, 0); vote(chg->usb_icl_votable, HVDCP2_ICL_VOTER, false, 0); vote(chg->usb_icl_votable, HVDCP2_12V_ICL_VOTER, false, 0); vote(chg->usb_icl_votable, CHG_TERMINATION_VOTER, false, 0); vote(chg->usb_icl_votable, THERMAL_THROTTLE_VOTER, false, 0); vote(chg->usb_icl_votable, LPD_VOTER, false, 0); Loading
drivers/power/supply/qcom/smb5-lib.h +1 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ enum print_reason { #define JEITA_ARB_VOTER "JEITA_ARB_VOTER" #define MOISTURE_VOTER "MOISTURE_VOTER" #define HVDCP2_ICL_VOTER "HVDCP2_ICL_VOTER" #define HVDCP2_12V_ICL_VOTER "HVDCP2_12V_ICL_VOTER" #define AICL_THRESHOLD_VOTER "AICL_THRESHOLD_VOTER" #define USBOV_DBC_VOTER "USBOV_DBC_VOTER" #define CHG_TERMINATION_VOTER "CHG_TERMINATION_VOTER" Loading