Skip to content

Commit 6e94022

Browse files
lumagvinodkoul
authored andcommitted
phy: qcom-qmp-usb: make QPHY_PCS_MISC_CLAMP_ENABLE access conditional
The register QPHY_V[34]_PCS_MISC_CLAMP_ENABLE is present only on some SoC families. Other platforms (qcm2290) can have PCS_MISC region, but do not have this register. Add it to the register layout table and check that it is defined before toggling CLAMP settings. Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Link: https://lore.kernel.org/r/20230824211952.1397699-5-dmitry.baryshkov@linaro.org Signed-off-by: Vinod Koul <vkoul@kernel.org>
1 parent fcf6348 commit 6e94022

1 file changed

Lines changed: 17 additions & 5 deletions

File tree

drivers/phy/qualcomm/phy-qcom-qmp-usb.c

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ enum qphy_reg_layout {
9494
QPHY_PCS_AUTONOMOUS_MODE_CTRL,
9595
QPHY_PCS_LFPS_RXTERM_IRQ_CLEAR,
9696
QPHY_PCS_POWER_DOWN_CONTROL,
97+
QPHY_PCS_MISC_CLAMP_ENABLE,
9798
/* Keep last to ensure regs_layout arrays are properly initialized */
9899
QPHY_LAYOUT_SIZE
99100
};
@@ -114,6 +115,16 @@ static const unsigned int qmp_v3_usb3phy_regs_layout[QPHY_LAYOUT_SIZE] = {
114115
[QPHY_PCS_AUTONOMOUS_MODE_CTRL] = QPHY_V3_PCS_AUTONOMOUS_MODE_CTRL,
115116
[QPHY_PCS_LFPS_RXTERM_IRQ_CLEAR] = QPHY_V3_PCS_LFPS_RXTERM_IRQ_CLEAR,
116117
[QPHY_PCS_POWER_DOWN_CONTROL] = QPHY_V3_PCS_POWER_DOWN_CONTROL,
118+
[QPHY_PCS_MISC_CLAMP_ENABLE] = QPHY_V3_PCS_MISC_CLAMP_ENABLE,
119+
};
120+
121+
static const unsigned int qmp_v3_usb3phy_regs_layout_qcm2290[QPHY_LAYOUT_SIZE] = {
122+
[QPHY_SW_RESET] = QPHY_V3_PCS_SW_RESET,
123+
[QPHY_START_CTRL] = QPHY_V3_PCS_START_CONTROL,
124+
[QPHY_PCS_STATUS] = QPHY_V3_PCS_PCS_STATUS,
125+
[QPHY_PCS_AUTONOMOUS_MODE_CTRL] = QPHY_V3_PCS_AUTONOMOUS_MODE_CTRL,
126+
[QPHY_PCS_LFPS_RXTERM_IRQ_CLEAR] = QPHY_V3_PCS_LFPS_RXTERM_IRQ_CLEAR,
127+
[QPHY_PCS_POWER_DOWN_CONTROL] = QPHY_V3_PCS_POWER_DOWN_CONTROL,
117128
};
118129

119130
static const unsigned int qmp_v4_usb3phy_regs_layout[QPHY_LAYOUT_SIZE] = {
@@ -125,6 +136,7 @@ static const unsigned int qmp_v4_usb3phy_regs_layout[QPHY_LAYOUT_SIZE] = {
125136
/* In PCS_USB */
126137
[QPHY_PCS_AUTONOMOUS_MODE_CTRL] = QPHY_V4_PCS_USB3_AUTONOMOUS_MODE_CTRL,
127138
[QPHY_PCS_LFPS_RXTERM_IRQ_CLEAR] = QPHY_V4_PCS_USB3_LFPS_RXTERM_IRQ_CLEAR,
139+
[QPHY_PCS_MISC_CLAMP_ENABLE] = QPHY_V4_PCS_MISC_CLAMP_ENABLE,
128140
};
129141

130142
static const unsigned int qmp_v5_usb3phy_regs_layout[QPHY_LAYOUT_SIZE] = {
@@ -1523,7 +1535,7 @@ static const struct qmp_phy_cfg qcm2290_usb3phy_cfg = {
15231535
.pcs_tbl_num = ARRAY_SIZE(qcm2290_usb3_pcs_tbl),
15241536
.vreg_list = qmp_phy_vreg_l,
15251537
.num_vregs = ARRAY_SIZE(qmp_phy_vreg_l),
1526-
.regs = qmp_v3_usb3phy_regs_layout,
1538+
.regs = qmp_v3_usb3phy_regs_layout_qcm2290,
15271539
};
15281540

15291541
static void qmp_usb_configure_lane(void __iomem *base,
@@ -1761,8 +1773,8 @@ static void qmp_usb_enable_autonomous_mode(struct qmp_usb *qmp)
17611773
qphy_setbits(pcs_usb, cfg->regs[QPHY_PCS_AUTONOMOUS_MODE_CTRL], intr_mask);
17621774

17631775
/* Enable i/o clamp_n for autonomous mode */
1764-
if (pcs_misc)
1765-
qphy_clrbits(pcs_misc, QPHY_V3_PCS_MISC_CLAMP_ENABLE, CLAMP_EN);
1776+
if (pcs_misc && cfg->regs[QPHY_PCS_MISC_CLAMP_ENABLE])
1777+
qphy_clrbits(pcs_misc, cfg->regs[QPHY_PCS_MISC_CLAMP_ENABLE], CLAMP_EN);
17661778
}
17671779

17681780
static void qmp_usb_disable_autonomous_mode(struct qmp_usb *qmp)
@@ -1772,8 +1784,8 @@ static void qmp_usb_disable_autonomous_mode(struct qmp_usb *qmp)
17721784
void __iomem *pcs_misc = qmp->pcs_misc;
17731785

17741786
/* Disable i/o clamp_n on resume for normal mode */
1775-
if (pcs_misc)
1776-
qphy_setbits(pcs_misc, QPHY_V3_PCS_MISC_CLAMP_ENABLE, CLAMP_EN);
1787+
if (pcs_misc && cfg->regs[QPHY_PCS_MISC_CLAMP_ENABLE])
1788+
qphy_setbits(pcs_misc, cfg->regs[QPHY_PCS_MISC_CLAMP_ENABLE], CLAMP_EN);
17771789

17781790
qphy_clrbits(pcs_usb, cfg->regs[QPHY_PCS_AUTONOMOUS_MODE_CTRL],
17791791
ARCVR_DTCT_EN | ARCVR_DTCT_EVENT_SEL | ALFPS_DTCT_EN);

0 commit comments

Comments
 (0)