]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
phy: qcom: qmp-combo: Add polarity inversion support for SAR2130P
authorKrishna Kurapati <krishna.kurapati@oss.qualcomm.com>
Fri, 17 Oct 2025 20:34:38 +0000 (02:04 +0530)
committerVinod Koul <vkoul@kernel.org>
Wed, 14 Jan 2026 09:31:54 +0000 (15:01 +0530)
On SAR2130P QXR Platform, the CC Lines are inverted and the lane
programming is to be done reverse compared to other targets.

As per the HW specifics, Bit-2 of TYPEC_CTRL register indicates
port select polarity. This bit is to be set for SAR2130P.

Signed-off-by: Krishna Kurapati <krishna.kurapati@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Link: https://patch.msgid.link/20251017203438.744197-1-krishna.kurapati@oss.qualcomm.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/phy/qualcomm/phy-qcom-qmp-combo.c

index 97c6ff46c37358fca60c3ee42579eb459f595f71..93f1aa10d40086cc8fa51f34924acd0e76bc7666 100644 (file)
@@ -69,6 +69,7 @@
 /* QPHY_V3_DP_COM_TYPEC_CTRL register bits */
 #define SW_PORTSELECT_VAL                      BIT(0)
 #define SW_PORTSELECT_MUX                      BIT(1)
+#define INVERT_CC_POLARITY                     BIT(2)
 
 #define PHY_INIT_COMPLETE_TIMEOUT              10000
 
@@ -2260,6 +2261,7 @@ struct qmp_phy_cfg {
        /* Offset from PCS to PCS_USB region */
        unsigned int pcs_usb_offset;
 
+       bool invert_cc_polarity;
 };
 
 struct qmp_combo {
@@ -2471,6 +2473,7 @@ static const struct qmp_phy_cfg sar2130p_usb3dpphy_cfg = {
        .num_resets             = ARRAY_SIZE(msm8996_usb3phy_reset_l),
        .vreg_list              = qmp_phy_vreg_l,
        .num_vregs              = ARRAY_SIZE(qmp_phy_vreg_l),
+       .invert_cc_polarity     = true,
 };
 
 static const struct qmp_phy_cfg sc7180_usb3dpphy_cfg = {
@@ -3705,6 +3708,10 @@ static int qmp_combo_com_init(struct qmp_combo *qmp, bool force)
        val = SW_PORTSELECT_MUX;
        if (qmp->orientation == TYPEC_ORIENTATION_REVERSE)
                val |= SW_PORTSELECT_VAL;
+
+       if (cfg->invert_cc_polarity)
+               val |= INVERT_CC_POLARITY;
+
        writel(val, com + QPHY_V3_DP_COM_TYPEC_CTRL);
 
        switch (qmp->qmpphy_mode) {