Loading drivers/power/supply/qcom/qpnp-smb5.c +2 −0 Original line number Diff line number Diff line Loading @@ -1563,6 +1563,8 @@ static int smb5_configure_typec(struct smb_charger *chg) dev_err(chg->dev, "Couldn't enable try.snk rc=%d\n", rc); return rc; } else { chg->typec_try_mode |= EN_TRY_SNK_BIT; } /* configure VCONN for software control */ Loading drivers/power/supply/qcom/smb5-lib.c +3 −2 Original line number Diff line number Diff line Loading @@ -2729,7 +2729,7 @@ int smblib_set_prop_typec_power_role(struct smb_charger *chg, power_role = TYPEC_DISABLE_CMD_BIT; break; case POWER_SUPPLY_TYPEC_PR_DUAL: power_role = 0; power_role = chg->typec_try_mode; break; case POWER_SUPPLY_TYPEC_PR_SINK: power_role = EN_SNK_ONLY_BIT; Loading @@ -2743,7 +2743,8 @@ int smblib_set_prop_typec_power_role(struct smb_charger *chg, } rc = smblib_masked_write(chg, TYPE_C_MODE_CFG_REG, TYPEC_POWER_ROLE_CMD_MASK, power_role); TYPEC_POWER_ROLE_CMD_MASK | TYPEC_TRY_MODE_MASK, power_role); if (rc < 0) { smblib_err(chg, "Couldn't write 0x%02x to TYPE_C_INTRPT_ENB_SOFTWARE_CTRL rc=%d\n", power_role, rc); Loading drivers/power/supply/qcom/smb5-lib.h +1 −0 Original line number Diff line number Diff line Loading @@ -375,6 +375,7 @@ struct smb_charger { bool jeita_configured; int charger_temp_max; int smb_temp_max; u8 typec_try_mode; /* workaround flag */ u32 wa_flags; Loading drivers/power/supply/qcom/smb5-reg.h +3 −1 Original line number Diff line number Diff line Loading @@ -322,8 +322,10 @@ enum { #define U_USB_GROUND_BIT BIT(4) #define TYPE_C_MODE_CFG_REG (TYPEC_BASE + 0x44) #define TYPEC_POWER_ROLE_CMD_MASK GENMASK(2, 1) #define TYPEC_TRY_MODE_MASK GENMASK(4, 3) #define EN_TRY_SNK_BIT BIT(4) #define EN_TRY_SRC_BIT BIT(3) #define TYPEC_POWER_ROLE_CMD_MASK GENMASK(2, 0) #define EN_SRC_ONLY_BIT BIT(2) #define EN_SNK_ONLY_BIT BIT(1) #define TYPEC_DISABLE_CMD_BIT BIT(0) Loading Loading
drivers/power/supply/qcom/qpnp-smb5.c +2 −0 Original line number Diff line number Diff line Loading @@ -1563,6 +1563,8 @@ static int smb5_configure_typec(struct smb_charger *chg) dev_err(chg->dev, "Couldn't enable try.snk rc=%d\n", rc); return rc; } else { chg->typec_try_mode |= EN_TRY_SNK_BIT; } /* configure VCONN for software control */ Loading
drivers/power/supply/qcom/smb5-lib.c +3 −2 Original line number Diff line number Diff line Loading @@ -2729,7 +2729,7 @@ int smblib_set_prop_typec_power_role(struct smb_charger *chg, power_role = TYPEC_DISABLE_CMD_BIT; break; case POWER_SUPPLY_TYPEC_PR_DUAL: power_role = 0; power_role = chg->typec_try_mode; break; case POWER_SUPPLY_TYPEC_PR_SINK: power_role = EN_SNK_ONLY_BIT; Loading @@ -2743,7 +2743,8 @@ int smblib_set_prop_typec_power_role(struct smb_charger *chg, } rc = smblib_masked_write(chg, TYPE_C_MODE_CFG_REG, TYPEC_POWER_ROLE_CMD_MASK, power_role); TYPEC_POWER_ROLE_CMD_MASK | TYPEC_TRY_MODE_MASK, power_role); if (rc < 0) { smblib_err(chg, "Couldn't write 0x%02x to TYPE_C_INTRPT_ENB_SOFTWARE_CTRL rc=%d\n", power_role, rc); Loading
drivers/power/supply/qcom/smb5-lib.h +1 −0 Original line number Diff line number Diff line Loading @@ -375,6 +375,7 @@ struct smb_charger { bool jeita_configured; int charger_temp_max; int smb_temp_max; u8 typec_try_mode; /* workaround flag */ u32 wa_flags; Loading
drivers/power/supply/qcom/smb5-reg.h +3 −1 Original line number Diff line number Diff line Loading @@ -322,8 +322,10 @@ enum { #define U_USB_GROUND_BIT BIT(4) #define TYPE_C_MODE_CFG_REG (TYPEC_BASE + 0x44) #define TYPEC_POWER_ROLE_CMD_MASK GENMASK(2, 1) #define TYPEC_TRY_MODE_MASK GENMASK(4, 3) #define EN_TRY_SNK_BIT BIT(4) #define EN_TRY_SRC_BIT BIT(3) #define TYPEC_POWER_ROLE_CMD_MASK GENMASK(2, 0) #define EN_SRC_ONLY_BIT BIT(2) #define EN_SNK_ONLY_BIT BIT(1) #define TYPEC_DISABLE_CMD_BIT BIT(0) Loading