[Intel-gfx] [PATCH] drm/i915/tgl: Add DKL PHY vswing table for HDMI

Souza, Jose jose.souza at intel.com
Mon Nov 18 20:45:59 UTC 2019


On Mon, 2019-11-18 at 10:02 -0800, Matt Roper wrote:
> The bspec initially provided a single DKL PHY vswing table for both
> HDMI
> and DP, but was recently updated to include an independent table for
> HDMI.
> 

Thanks, I had that in my TODO list to finish TC legacy.

Reviewed-by: José Roberto de Souza <jose.souza at intel.com>

> Bspec: 49292
> Fixes: 978c3e539be2 ("drm/i915/tgl: Add dkl phy programming
> sequences")
> Cc: Clinton A Taylor <clinton.a.taylor at intel.com>
> Cc: Lucas De Marchi <lucas.demarchi at intel.com>
> Signed-off-by: Matt Roper <matthew.d.roper at intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_ddi.c | 29 ++++++++++++++++++++
> ----
>  1 file changed, 24 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c
> b/drivers/gpu/drm/i915/display/intel_ddi.c
> index 8f817de34460..a976606d21c7 100644
> --- a/drivers/gpu/drm/i915/display/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/display/intel_ddi.c
> @@ -593,7 +593,7 @@ struct tgl_dkl_phy_ddi_buf_trans {
>  	u32 dkl_de_emphasis_control;
>  };
>  
> -static const struct tgl_dkl_phy_ddi_buf_trans
> tgl_dkl_phy_ddi_translations[] = {
> +static const struct tgl_dkl_phy_ddi_buf_trans
> tgl_dkl_phy_dp_ddi_trans[] = {
>  				/* VS	pre-emp	Non-trans mV	Pre-
> emph dB */
>  	{ 0x7, 0x0, 0x00 },	/* 0	0	400mV		0 dB
> */
>  	{ 0x5, 0x0, 0x03 },	/* 0	1	400mV		3.5
> dB */
> @@ -607,6 +607,20 @@ static const struct tgl_dkl_phy_ddi_buf_trans
> tgl_dkl_phy_ddi_translations[] = {
>  	{ 0x0, 0x0, 0x00 },	/* 3	0	1200mV		0 dB
> HDMI default */
>  };
>  
> +static const struct tgl_dkl_phy_ddi_buf_trans
> tgl_dkl_phy_hdmi_ddi_trans[] = {
> +				/* HDMI Preset	VS	Pre-emph */
> +	{ 0x7, 0x0, 0x0 },	/* 1		400mV	0dB */
> +	{ 0x6, 0x0, 0x0 },	/* 2		500mV	0dB */
> +	{ 0x4, 0x0, 0x0 },	/* 3		650mV	0dB */
> +	{ 0x2, 0x0, 0x0 },	/* 4		800mV	0dB */
> +	{ 0x0, 0x0, 0x0 },	/* 5		1000mV	0dB */
> +	{ 0x0, 0x0, 0x5 },	/* 6		Full	-1.5 dB */
> +	{ 0x0, 0x0, 0x6 },	/* 7		Full	-1.8 dB */
> +	{ 0x0, 0x0, 0x7 },	/* 8		Full	-2 dB */
> +	{ 0x0, 0x0, 0x8 },	/* 9		Full	-2.5 dB */
> +	{ 0x0, 0x0, 0xA },	/* 10		Full	-3 dB */
> +};
> +
>  static const struct ddi_buf_trans *
>  bdw_get_buf_trans_edp(struct drm_i915_private *dev_priv, int
> *n_entries)
>  {
> @@ -897,7 +911,7 @@ static int intel_ddi_hdmi_level(struct
> drm_i915_private *dev_priv, enum port por
>  			icl_get_combo_buf_trans(dev_priv,
> INTEL_OUTPUT_HDMI,
>  						0, &n_entries);
>  		else
> -			n_entries =
> ARRAY_SIZE(tgl_dkl_phy_ddi_translations);
> +			n_entries =
> ARRAY_SIZE(tgl_dkl_phy_hdmi_ddi_trans);
>  		default_entry = n_entries - 1;
>  	} else if (INTEL_GEN(dev_priv) == 11) {
>  		if (intel_phy_is_combo(dev_priv, phy))
> @@ -2358,7 +2372,7 @@ u8 intel_ddi_dp_voltage_max(struct
> intel_encoder *encoder)
>  			icl_get_combo_buf_trans(dev_priv, encoder-
> >type,
>  						intel_dp->link_rate,
> &n_entries);
>  		else
> -			n_entries =
> ARRAY_SIZE(tgl_dkl_phy_ddi_translations);
> +			n_entries =
> ARRAY_SIZE(tgl_dkl_phy_dp_ddi_trans);
>  	} else if (INTEL_GEN(dev_priv) == 11) {
>  		if (intel_phy_is_combo(dev_priv, phy))
>  			icl_get_combo_buf_trans(dev_priv, encoder-
> >type,
> @@ -2810,8 +2824,13 @@ tgl_dkl_phy_ddi_vswing_sequence(struct
> intel_encoder *encoder, int link_clock,
>  	const struct tgl_dkl_phy_ddi_buf_trans *ddi_translations;
>  	u32 n_entries, val, ln, dpcnt_mask, dpcnt_val;
>  
> -	n_entries = ARRAY_SIZE(tgl_dkl_phy_ddi_translations);
> -	ddi_translations = tgl_dkl_phy_ddi_translations;
> +	if (encoder->type == INTEL_OUTPUT_HDMI) {
> +		n_entries = ARRAY_SIZE(tgl_dkl_phy_hdmi_ddi_trans);
> +		ddi_translations = tgl_dkl_phy_hdmi_ddi_trans;
> +	} else {
> +		n_entries = ARRAY_SIZE(tgl_dkl_phy_dp_ddi_trans);
> +		ddi_translations = tgl_dkl_phy_dp_ddi_trans;
> +	}
>  
>  	if (level >= n_entries)
>  		level = n_entries - 1;


More information about the Intel-gfx mailing list