Message ID | 20230601-topic-sm8550-upstream-dp-phy-init-fix-v1-1-4e9da9f97991@linaro.org |
---|---|
State | Accepted |
Commit | 6cd52a2a06774c6c454ffef084c3d9b17618ca23 |
Headers | show |
Series | phy: qcom: qmp-combo: fix Display Port PHY configuration for SM8550 | expand |
On 1.06.2023 11:39, Neil Armstrong wrote: > The SM8550 PHY also uses a different offset for the CMN_STATUS reg, > use the right one for the v6 Display Port configuration. > > Fixes: 49742e9edab3 ("phy: qcom-qmp-combo: Add support for SM8550") > Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> > --- Must have been fun to debug.. Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org> Konrad > drivers/phy/qualcomm/phy-qcom-qmp-combo.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c > index 33cc99d9c77d..bebce8c591a3 100644 > --- a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c > +++ b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c > @@ -2151,6 +2151,7 @@ static void qmp_v4_configure_dp_tx(struct qmp_combo *qmp) > static int qmp_v456_configure_dp_phy(struct qmp_combo *qmp, > unsigned int com_resetm_ctrl_reg, > unsigned int com_c_ready_status_reg, > + unsigned int com_cmn_status_reg, > unsigned int dp_phy_status_reg) > { > const struct phy_configure_opts_dp *dp_opts = &qmp->dp_opts; > @@ -2207,14 +2208,14 @@ static int qmp_v456_configure_dp_phy(struct qmp_combo *qmp, > 10000)) > return -ETIMEDOUT; > > - if (readl_poll_timeout(qmp->dp_serdes + QSERDES_V4_COM_CMN_STATUS, > + if (readl_poll_timeout(qmp->dp_serdes + com_cmn_status_reg, > status, > ((status & BIT(0)) > 0), > 500, > 10000)) > return -ETIMEDOUT; > > - if (readl_poll_timeout(qmp->dp_serdes + QSERDES_V4_COM_CMN_STATUS, > + if (readl_poll_timeout(qmp->dp_serdes + com_cmn_status_reg, > status, > ((status & BIT(1)) > 0), > 500, > @@ -2250,6 +2251,7 @@ static int qmp_v4_configure_dp_phy(struct qmp_combo *qmp) > > ret = qmp_v456_configure_dp_phy(qmp, QSERDES_V4_COM_RESETSM_CNTRL, > QSERDES_V4_COM_C_READY_STATUS, > + QSERDES_V4_COM_CMN_STATUS, > QSERDES_V4_DP_PHY_STATUS); > if (ret < 0) > return ret; > @@ -2314,6 +2316,7 @@ static int qmp_v5_configure_dp_phy(struct qmp_combo *qmp) > > ret = qmp_v456_configure_dp_phy(qmp, QSERDES_V4_COM_RESETSM_CNTRL, > QSERDES_V4_COM_C_READY_STATUS, > + QSERDES_V4_COM_CMN_STATUS, > QSERDES_V4_DP_PHY_STATUS); > if (ret < 0) > return ret; > @@ -2373,6 +2376,7 @@ static int qmp_v6_configure_dp_phy(struct qmp_combo *qmp) > > ret = qmp_v456_configure_dp_phy(qmp, QSERDES_V6_COM_RESETSM_CNTRL, > QSERDES_V6_COM_C_READY_STATUS, > + QSERDES_V6_COM_CMN_STATUS, > QSERDES_V6_DP_PHY_STATUS); > if (ret < 0) > return ret; > > --- > base-commit: d4cee89031c80066ec461bb77b5e13a4f37d5fd2 > change-id: 20230601-topic-sm8550-upstream-dp-phy-init-fix-ed90c001592d > > Best regards,
Hi Vinod, On 01/06/2023 11:39, Neil Armstrong wrote: > The SM8550 PHY also uses a different offset for the CMN_STATUS reg, > use the right one for the v6 Display Port configuration. > > Fixes: 49742e9edab3 ("phy: qcom-qmp-combo: Add support for SM8550") > Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> <snip> Gentle ping! This fix is needed to have functional DisplayPort on SM8550, Thanks, Neil
On 01-06-23, 11:39, Neil Armstrong wrote: > The SM8550 PHY also uses a different offset for the CMN_STATUS reg, > use the right one for the v6 Display Port configuration. Applied, thanks
diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c index 33cc99d9c77d..bebce8c591a3 100644 --- a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c +++ b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c @@ -2151,6 +2151,7 @@ static void qmp_v4_configure_dp_tx(struct qmp_combo *qmp) static int qmp_v456_configure_dp_phy(struct qmp_combo *qmp, unsigned int com_resetm_ctrl_reg, unsigned int com_c_ready_status_reg, + unsigned int com_cmn_status_reg, unsigned int dp_phy_status_reg) { const struct phy_configure_opts_dp *dp_opts = &qmp->dp_opts; @@ -2207,14 +2208,14 @@ static int qmp_v456_configure_dp_phy(struct qmp_combo *qmp, 10000)) return -ETIMEDOUT; - if (readl_poll_timeout(qmp->dp_serdes + QSERDES_V4_COM_CMN_STATUS, + if (readl_poll_timeout(qmp->dp_serdes + com_cmn_status_reg, status, ((status & BIT(0)) > 0), 500, 10000)) return -ETIMEDOUT; - if (readl_poll_timeout(qmp->dp_serdes + QSERDES_V4_COM_CMN_STATUS, + if (readl_poll_timeout(qmp->dp_serdes + com_cmn_status_reg, status, ((status & BIT(1)) > 0), 500, @@ -2250,6 +2251,7 @@ static int qmp_v4_configure_dp_phy(struct qmp_combo *qmp) ret = qmp_v456_configure_dp_phy(qmp, QSERDES_V4_COM_RESETSM_CNTRL, QSERDES_V4_COM_C_READY_STATUS, + QSERDES_V4_COM_CMN_STATUS, QSERDES_V4_DP_PHY_STATUS); if (ret < 0) return ret; @@ -2314,6 +2316,7 @@ static int qmp_v5_configure_dp_phy(struct qmp_combo *qmp) ret = qmp_v456_configure_dp_phy(qmp, QSERDES_V4_COM_RESETSM_CNTRL, QSERDES_V4_COM_C_READY_STATUS, + QSERDES_V4_COM_CMN_STATUS, QSERDES_V4_DP_PHY_STATUS); if (ret < 0) return ret; @@ -2373,6 +2376,7 @@ static int qmp_v6_configure_dp_phy(struct qmp_combo *qmp) ret = qmp_v456_configure_dp_phy(qmp, QSERDES_V6_COM_RESETSM_CNTRL, QSERDES_V6_COM_C_READY_STATUS, + QSERDES_V6_COM_CMN_STATUS, QSERDES_V6_DP_PHY_STATUS); if (ret < 0) return ret;
The SM8550 PHY also uses a different offset for the CMN_STATUS reg, use the right one for the v6 Display Port configuration. Fixes: 49742e9edab3 ("phy: qcom-qmp-combo: Add support for SM8550") Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org> --- drivers/phy/qualcomm/phy-qcom-qmp-combo.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) --- base-commit: d4cee89031c80066ec461bb77b5e13a4f37d5fd2 change-id: 20230601-topic-sm8550-upstream-dp-phy-init-fix-ed90c001592d Best regards,