diff mbox series

[v2,1/2] phy/qualcomm: add hbr3_hbr2 voltage and premphasis swing table

Message ID 1613667070-27613-1-git-send-email-khsieh@codeaurora.org (mailing list archive)
State Not Applicable, archived
Headers show
Series [v2,1/2] phy/qualcomm: add hbr3_hbr2 voltage and premphasis swing table | expand

Commit Message

Kuogee Hsieh Feb. 18, 2021, 4:51 p.m. UTC
Add hbr3_hbr2 voltage and premphasis swing table to support
HBR3 link rate.

Changes in V2:
-- replaced upper case with lower case at hbr3_hbr2 table

Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>
---
 drivers/phy/qualcomm/phy-qcom-qmp.c | 23 +++++++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)

Comments

Stephen Boyd Feb. 18, 2021, 6:46 p.m. UTC | #1
Quoting Kuogee Hsieh (2021-02-18 08:51:10)
> Add hbr3_hbr2 voltage and premphasis swing table to support
> HBR3 link rate.
> 
> Changes in V2:
> -- replaced upper case with lower case at hbr3_hbr2 table
> 
> Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>
> ---

Reviewed-by: Stephen Boyd <swboyd@chromium.org>

BTW, the DP driver already set rates for HBR2, so does that mean this is
fixing the voltage and preemphasis settings for HBR2? If so we should
backport this to stable trees and mark it as fixing commit 52e013d0bffa
("phy: qcom-qmp: Add support for DP in USB3+DP combo phy").
Stephen Boyd Feb. 18, 2021, 6:47 p.m. UTC | #2
Quoting Kuogee Hsieh (2021-02-18 08:51:10)
> Add hbr3_hbr2 voltage and premphasis swing table to support
> HBR3 link rate.
> 
> Changes in V2:
> -- replaced upper case with lower case at hbr3_hbr2 table
> 
> Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>
> ---

Tested-by: Stephen Boyd <swboyd@chromium.org>
Stephen Boyd Feb. 24, 2021, 7:39 p.m. UTC | #3
Quoting Stephen Boyd (2021-02-18 10:46:17)
> Quoting Kuogee Hsieh (2021-02-18 08:51:10)
> > Add hbr3_hbr2 voltage and premphasis swing table to support
> > HBR3 link rate.
> > 
> > Changes in V2:
> > -- replaced upper case with lower case at hbr3_hbr2 table
> > 
> > Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>
> > ---
> 
> Reviewed-by: Stephen Boyd <swboyd@chromium.org>
> 
> BTW, the DP driver already set rates for HBR2, so does that mean this is
> fixing the voltage and preemphasis settings for HBR2? If so we should
> backport this to stable trees and mark it as fixing commit 52e013d0bffa
> ("phy: qcom-qmp: Add support for DP in USB3+DP combo phy").

Yes? No?
Kuogee Hsieh Feb. 24, 2021, 10:42 p.m. UTC | #4
On 2021-02-24 11:39, Stephen Boyd wrote:
> Quoting Stephen Boyd (2021-02-18 10:46:17)
>> Quoting Kuogee Hsieh (2021-02-18 08:51:10)
>> > Add hbr3_hbr2 voltage and premphasis swing table to support
>> > HBR3 link rate.
>> >
>> > Changes in V2:
>> > -- replaced upper case with lower case at hbr3_hbr2 table
>> >
>> > Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>
>> > ---
>> 
>> Reviewed-by: Stephen Boyd <swboyd@chromium.org>
>> 
>> BTW, the DP driver already set rates for HBR2, so does that mean this 
>> is
>> fixing the voltage and preemphasis settings for HBR2? If so we should
>> backport this to stable trees and mark it as fixing commit 
>> 52e013d0bffa
>> ("phy: qcom-qmp: Add support for DP in USB3+DP combo phy").
> 
> Yes? No?
yes
Vinod Koul March 15, 2021, 10:11 a.m. UTC | #5
On 18-02-21, 08:51, Kuogee Hsieh wrote:
> Add hbr3_hbr2 voltage and premphasis swing table to support
> HBR3 link rate.

Please use phy: qcom-qmp: "...." for the patch title

> 
> Changes in V2:
> -- replaced upper case with lower case at hbr3_hbr2 table
> 
> Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>
> ---
>  drivers/phy/qualcomm/phy-qcom-qmp.c | 23 +++++++++++++++++++++--
>  1 file changed, 21 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/phy/qualcomm/phy-qcom-qmp.c b/drivers/phy/qualcomm/phy-qcom-qmp.c
> index 0939a9e..4dcc074 100644
> --- a/drivers/phy/qualcomm/phy-qcom-qmp.c
> +++ b/drivers/phy/qualcomm/phy-qcom-qmp.c
> @@ -2965,6 +2965,20 @@ static void qcom_qmp_phy_dp_aux_init(struct qmp_phy *qphy)
>  	       qphy->pcs + QSERDES_V3_DP_PHY_AUX_INTERRUPT_MASK);
>  }
>  
> +static const u8 qmp_dp_v3_pre_emphasis_hbr3_hbr2[4][4] = {
> +        { 0x00, 0x0c, 0x15, 0x1a },
> +        { 0x02, 0x0e, 0x16, 0xff },
> +        { 0x02, 0x11, 0xff, 0xff },
> +        { 0x04, 0xff, 0xff, 0xff }

This should use tabs and not spaces, please fix this and resend the
patch after running checkpatch --strict and adding Steve's acks

> +};
> +
> +static const u8 qmp_dp_v3_voltage_swing_hbr3_hbr2[4][4] = {
> +        { 0x02, 0x12, 0x16, 0x1a },
> +        { 0x09, 0x19, 0x1f, 0xff },
> +        { 0x10, 0x1f, 0xff, 0xff },
> +        { 0x1f, 0xff, 0xff, 0xff }
> +};
> +
>  static const u8 qmp_dp_v3_pre_emphasis_hbr_rbr[4][4] = {
>  	{ 0x00, 0x0c, 0x14, 0x19 },
>  	{ 0x00, 0x0b, 0x12, 0xff },
> @@ -3000,8 +3014,13 @@ static void qcom_qmp_phy_configure_dp_tx(struct qmp_phy *qphy)
>  		drvr_en = 0x10;
>  	}
>  
> -	voltage_swing_cfg = qmp_dp_v3_voltage_swing_hbr_rbr[v_level][p_level];
> -	pre_emphasis_cfg = qmp_dp_v3_pre_emphasis_hbr_rbr[v_level][p_level];
> +	if (dp_opts->link_rate <= 2700) {
> +		voltage_swing_cfg = qmp_dp_v3_voltage_swing_hbr_rbr[v_level][p_level];
> +		pre_emphasis_cfg = qmp_dp_v3_pre_emphasis_hbr_rbr[v_level][p_level];
> +	} else {
> +		voltage_swing_cfg = qmp_dp_v3_voltage_swing_hbr3_hbr2[v_level][p_level];
> +		pre_emphasis_cfg = qmp_dp_v3_pre_emphasis_hbr3_hbr2[v_level][p_level];
> +	}
>  
>  	/* TODO: Move check to config check */
>  	if (voltage_swing_cfg == 0xFF && pre_emphasis_cfg == 0xFF)
> -- 
> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
> a Linux Foundation Collaborative Project
diff mbox series

Patch

diff --git a/drivers/phy/qualcomm/phy-qcom-qmp.c b/drivers/phy/qualcomm/phy-qcom-qmp.c
index 0939a9e..4dcc074 100644
--- a/drivers/phy/qualcomm/phy-qcom-qmp.c
+++ b/drivers/phy/qualcomm/phy-qcom-qmp.c
@@ -2965,6 +2965,20 @@  static void qcom_qmp_phy_dp_aux_init(struct qmp_phy *qphy)
 	       qphy->pcs + QSERDES_V3_DP_PHY_AUX_INTERRUPT_MASK);
 }
 
+static const u8 qmp_dp_v3_pre_emphasis_hbr3_hbr2[4][4] = {
+        { 0x00, 0x0c, 0x15, 0x1a },
+        { 0x02, 0x0e, 0x16, 0xff },
+        { 0x02, 0x11, 0xff, 0xff },
+        { 0x04, 0xff, 0xff, 0xff }
+};
+
+static const u8 qmp_dp_v3_voltage_swing_hbr3_hbr2[4][4] = {
+        { 0x02, 0x12, 0x16, 0x1a },
+        { 0x09, 0x19, 0x1f, 0xff },
+        { 0x10, 0x1f, 0xff, 0xff },
+        { 0x1f, 0xff, 0xff, 0xff }
+};
+
 static const u8 qmp_dp_v3_pre_emphasis_hbr_rbr[4][4] = {
 	{ 0x00, 0x0c, 0x14, 0x19 },
 	{ 0x00, 0x0b, 0x12, 0xff },
@@ -3000,8 +3014,13 @@  static void qcom_qmp_phy_configure_dp_tx(struct qmp_phy *qphy)
 		drvr_en = 0x10;
 	}
 
-	voltage_swing_cfg = qmp_dp_v3_voltage_swing_hbr_rbr[v_level][p_level];
-	pre_emphasis_cfg = qmp_dp_v3_pre_emphasis_hbr_rbr[v_level][p_level];
+	if (dp_opts->link_rate <= 2700) {
+		voltage_swing_cfg = qmp_dp_v3_voltage_swing_hbr_rbr[v_level][p_level];
+		pre_emphasis_cfg = qmp_dp_v3_pre_emphasis_hbr_rbr[v_level][p_level];
+	} else {
+		voltage_swing_cfg = qmp_dp_v3_voltage_swing_hbr3_hbr2[v_level][p_level];
+		pre_emphasis_cfg = qmp_dp_v3_pre_emphasis_hbr3_hbr2[v_level][p_level];
+	}
 
 	/* TODO: Move check to config check */
 	if (voltage_swing_cfg == 0xFF && pre_emphasis_cfg == 0xFF)