Loading drivers/power/supply/qcom/qpnp-smb5.c +1 −0 Original line number Diff line number Diff line Loading @@ -370,6 +370,7 @@ static enum power_supply_property smb5_usb_props[] = { POWER_SUPPLY_PROP_PD_VOLTAGE_MIN, POWER_SUPPLY_PROP_SDP_CURRENT_MAX, POWER_SUPPLY_PROP_CONNECTOR_TYPE, POWER_SUPPLY_PROP_VOLTAGE_MAX, }; static int smb5_usb_get_prop(struct power_supply *psy, Loading drivers/power/supply/qcom/smb5-lib.c +33 −1 Original line number Diff line number Diff line Loading @@ -1569,6 +1569,18 @@ static int smblib_dm_pulse(struct smb_charger *chg) return rc; } static int smblib_force_vbus_voltage(struct smb_charger *chg, u8 val) { int rc; rc = smblib_masked_write(chg, CMD_HVDCP_2_REG, val, val); if (rc < 0) smblib_err(chg, "Couldn't write to CMD_HVDCP_2_REG rc=%d\n", rc); return rc; } int smblib_dp_dm(struct smb_charger *chg, int val) { int target_icl_ua, rc = 0; Loading Loading @@ -1619,6 +1631,21 @@ int smblib_dp_dm(struct smb_charger *chg, int val) smblib_dbg(chg, PR_PARALLEL, "ICL DOWN ICL=%d reduction=%d\n", target_icl_ua, chg->usb_icl_delta_ua); break; case POWER_SUPPLY_DP_DM_FORCE_5V: rc = smblib_force_vbus_voltage(chg, FORCE_5V_BIT); if (rc < 0) pr_err("Failed to force 5V\n"); break; case POWER_SUPPLY_DP_DM_FORCE_9V: rc = smblib_force_vbus_voltage(chg, FORCE_9V_BIT); if (rc < 0) pr_err("Failed to force 9V\n"); break; case POWER_SUPPLY_DP_DM_FORCE_12V: rc = smblib_force_vbus_voltage(chg, FORCE_12V_BIT); if (rc < 0) pr_err("Failed to force 12V\n"); break; case POWER_SUPPLY_DP_DM_ICL_UP: default: break; Loading Loading @@ -1745,8 +1772,13 @@ int smblib_get_prop_usb_voltage_max(struct smb_charger *chg, { switch (chg->real_charger_type) { case POWER_SUPPLY_TYPE_USB_HVDCP: case POWER_SUPPLY_TYPE_USB_HVDCP_3: case POWER_SUPPLY_TYPE_USB_PD: if (chg->smb_version == PMI632_SUBTYPE) val->intval = MICRO_9V; else val->intval = MICRO_12V; break; default: val->intval = MICRO_5V; break; Loading drivers/power/supply/qcom/smb5-reg.h +2 −0 Original line number Diff line number Diff line Loading @@ -178,6 +178,8 @@ enum { #define APSD_RERUN_BIT BIT(0) #define CMD_HVDCP_2_REG (USBIN_BASE + 0x43) #define FORCE_12V_BIT BIT(5) #define FORCE_9V_BIT BIT(4) #define FORCE_5V_BIT BIT(3) #define SINGLE_DECREMENT_BIT BIT(1) #define SINGLE_INCREMENT_BIT BIT(0) Loading Loading
drivers/power/supply/qcom/qpnp-smb5.c +1 −0 Original line number Diff line number Diff line Loading @@ -370,6 +370,7 @@ static enum power_supply_property smb5_usb_props[] = { POWER_SUPPLY_PROP_PD_VOLTAGE_MIN, POWER_SUPPLY_PROP_SDP_CURRENT_MAX, POWER_SUPPLY_PROP_CONNECTOR_TYPE, POWER_SUPPLY_PROP_VOLTAGE_MAX, }; static int smb5_usb_get_prop(struct power_supply *psy, Loading
drivers/power/supply/qcom/smb5-lib.c +33 −1 Original line number Diff line number Diff line Loading @@ -1569,6 +1569,18 @@ static int smblib_dm_pulse(struct smb_charger *chg) return rc; } static int smblib_force_vbus_voltage(struct smb_charger *chg, u8 val) { int rc; rc = smblib_masked_write(chg, CMD_HVDCP_2_REG, val, val); if (rc < 0) smblib_err(chg, "Couldn't write to CMD_HVDCP_2_REG rc=%d\n", rc); return rc; } int smblib_dp_dm(struct smb_charger *chg, int val) { int target_icl_ua, rc = 0; Loading Loading @@ -1619,6 +1631,21 @@ int smblib_dp_dm(struct smb_charger *chg, int val) smblib_dbg(chg, PR_PARALLEL, "ICL DOWN ICL=%d reduction=%d\n", target_icl_ua, chg->usb_icl_delta_ua); break; case POWER_SUPPLY_DP_DM_FORCE_5V: rc = smblib_force_vbus_voltage(chg, FORCE_5V_BIT); if (rc < 0) pr_err("Failed to force 5V\n"); break; case POWER_SUPPLY_DP_DM_FORCE_9V: rc = smblib_force_vbus_voltage(chg, FORCE_9V_BIT); if (rc < 0) pr_err("Failed to force 9V\n"); break; case POWER_SUPPLY_DP_DM_FORCE_12V: rc = smblib_force_vbus_voltage(chg, FORCE_12V_BIT); if (rc < 0) pr_err("Failed to force 12V\n"); break; case POWER_SUPPLY_DP_DM_ICL_UP: default: break; Loading Loading @@ -1745,8 +1772,13 @@ int smblib_get_prop_usb_voltage_max(struct smb_charger *chg, { switch (chg->real_charger_type) { case POWER_SUPPLY_TYPE_USB_HVDCP: case POWER_SUPPLY_TYPE_USB_HVDCP_3: case POWER_SUPPLY_TYPE_USB_PD: if (chg->smb_version == PMI632_SUBTYPE) val->intval = MICRO_9V; else val->intval = MICRO_12V; break; default: val->intval = MICRO_5V; break; Loading
drivers/power/supply/qcom/smb5-reg.h +2 −0 Original line number Diff line number Diff line Loading @@ -178,6 +178,8 @@ enum { #define APSD_RERUN_BIT BIT(0) #define CMD_HVDCP_2_REG (USBIN_BASE + 0x43) #define FORCE_12V_BIT BIT(5) #define FORCE_9V_BIT BIT(4) #define FORCE_5V_BIT BIT(3) #define SINGLE_DECREMENT_BIT BIT(1) #define SINGLE_INCREMENT_BIT BIT(0) Loading