[Intel-gfx] [PATCH 2/2] drm/i915/vlv: Rename VLV DPIO register to be more structure to match configdb document.

Lee, Chon Ming chon.ming.lee at intel.com
Thu Nov 7 03:25:44 CET 2013


On 11/06 14:02, Ville Syrjälä wrote:

> > -#define _DPIO_IREF_CTL_A		0x8040
> > -#define _DPIO_IREF_CTL_B		0x8060
> > -#define DPIO_IREF_CTL(pipe) _PIPE(pipe, _DPIO_IREF_CTL_A, _DPIO_IREF_CTL_B)
> > +#define _VLV_PLL_DW10_CH0		0x8040
> > +#define _VLV_PLL_DW10_CH1		0x8060
> > +#define VLV_PLL_DW10(ch) _PIPE(ch, _VLV_PLL_DW10_CH0, _VLV_PLL_DW10_CH1)
> 
> Configdb starts counting from DW8 at 0x8040/60, which kind of make sense
> since the first PLL block ends at DW7.
> 
The spreadsheet I refer to is using DW10.  The spreadsheet might be incorrect.
Looking at the register offset, it won't be anymore space left after first PLL
block.  Make sense for DW8 for second PLL block.   
> >  
> > -#define DPIO_IREF_BCAST			0xc044
> > -#define _DPIO_IREF_A			0x8044
> > -#define _DPIO_IREF_B			0x8064
> > -#define DPIO_IREF(pipe) _PIPE(pipe, _DPIO_IREF_A, _DPIO_IREF_B)
> > +#define VLV_PLL_DW11_BCAST		0xc044
> > +#define _VLV_PLL_DW11_CH0		0x8044
> > +#define _VLV_PLL_DW11_CH1		0x8064
> > +#define VLV_PLL_DW11(ch) _PIPE(ch, _VLV_PLL_DW11_CH0, _VLV_PLL_DW11_CH1)
> 
> ... which would make this DW9
> 
> >  
> > -#define _DPIO_PLL_CML_A			0x804c
> > -#define _DPIO_PLL_CML_B			0x806c
> > -#define DPIO_PLL_CML(pipe) _PIPE(pipe, _DPIO_PLL_CML_A, _DPIO_PLL_CML_B)
> > +#define _VLV_PLL_DW13_CH0		0x804c
> > +#define _VLV_PLL_DW13_CH1		0x806c
> > +#define VLV_PLL_DW13(ch) _PIPE(ch, _VLV_PLL_DW13_CH0, _VLV_PLL_DW13_CH1)
> jjjjjjjjjjjjjjjjjj
> ... DW11
> 
> >  
> > -#define _DPIO_LPF_COEFF_A		0x8048
> > -#define _DPIO_LPF_COEFF_B		0x8068
> > -#define DPIO_LPF_COEFF(pipe) _PIPE(pipe, _DPIO_LPF_COEFF_A, _DPIO_LPF_COEFF_B)
> > +#define _VLV_PLL_DW12_CH0		0x8048
> > +#define _VLV_PLL_DW12_CH1		0x8068
> > +#define VLV_PLL_DW12(ch) _PIPE(ch, _VLV_PLL_DW12_CH0, _VLV_PLL_DW12_CH1)
> 
> ... DW10
> 
> Maybe also reorder this with the previous one to keep the PLL
> register defiens in numerical order.
> 
> >  
> > -#define DPIO_CALIBRATION		0x80ac
> > +#define VLV_REF_DW11			0x80ac
> 
> And this is DW13 in configdb. So in the ref block it starts counting from
> DW10 for some reason. Yay for consistency.

Going to add a comment for the DW to start counting.  The spreadsheet I am using
start counting at DW8. :(  
> 
> The rest looks good to me. I double checked the cpp output to make sure
> that the actual changes were limited to i915_debugfs.c.
> 
> >  
> > -#define DPIO_FASTCLK_DISABLE		0x8100
> > +#define VLV_CMN_DW0			0x8100
> >  
> >  /*
> >   * Per DDI channel DPIO regs
> >   */
> >  
> > -#define _DPIO_PCS_TX_0			0x8200
> > -#define _DPIO_PCS_TX_1			0x8400
> > +#define _VLV_PCS_DW0_CH0		0x8200
> > +#define _VLV_PCS_DW0_CH1		0x8400
> >  #define   DPIO_PCS_TX_LANE2_RESET	(1<<16)
> >  #define   DPIO_PCS_TX_LANE1_RESET	(1<<7)
> > -#define DPIO_PCS_TX(port) _PORT(port, _DPIO_PCS_TX_0, _DPIO_PCS_TX_1)
> > +#define VLV_PCS_DW0(ch) _PORT(ch, _VLV_PCS_DW0_CH0, _VLV_PCS_DW0_CH1)
> >  
> > -#define _DPIO_PCS_CLK_0			0x8204
> > -#define _DPIO_PCS_CLK_1			0x8404
> > +#define _VLV_PCS_DW1_CH0		0x8204
> > +#define _VLV_PCS_DW1_CH1		0x8404
> >  #define   DPIO_PCS_CLK_CRI_RXEB_EIOS_EN	(1<<22)
> >  #define   DPIO_PCS_CLK_CRI_RXDIGFILTSG_EN (1<<21)
> >  #define   DPIO_PCS_CLK_DATAWIDTH_SHIFT	(6)
> >  #define   DPIO_PCS_CLK_SOFT_RESET	(1<<5)
> > -#define DPIO_PCS_CLK(port) _PORT(port, _DPIO_PCS_CLK_0, _DPIO_PCS_CLK_1)
> > -
> > -#define _DPIO_PCS_CTL_OVR1_A		0x8224
> > -#define _DPIO_PCS_CTL_OVR1_B		0x8424
> > -#define DPIO_PCS_CTL_OVER1(port) _PORT(port, _DPIO_PCS_CTL_OVR1_A, \
> > -				       _DPIO_PCS_CTL_OVR1_B)
> > -
> > -#define _DPIO_PCS_STAGGER0_A		0x822c
> > -#define _DPIO_PCS_STAGGER0_B		0x842c
> > -#define DPIO_PCS_STAGGER0(port) _PORT(port, _DPIO_PCS_STAGGER0_A, \
> > -				      _DPIO_PCS_STAGGER0_B)
> > -
> > -#define _DPIO_PCS_STAGGER1_A		0x8230
> > -#define _DPIO_PCS_STAGGER1_B		0x8430
> > -#define DPIO_PCS_STAGGER1(port) _PORT(port, _DPIO_PCS_STAGGER1_A, \
> > -				      _DPIO_PCS_STAGGER1_B)
> > -
> > -#define _DPIO_PCS_CLOCKBUF0_A		0x8238
> > -#define _DPIO_PCS_CLOCKBUF0_B		0x8438
> > -#define DPIO_PCS_CLOCKBUF0(port) _PORT(port, _DPIO_PCS_CLOCKBUF0_A, \
> > -				       _DPIO_PCS_CLOCKBUF0_B)
> > -
> > -#define _DPIO_PCS_CLOCKBUF8_A		0x825c
> > -#define _DPIO_PCS_CLOCKBUF8_B		0x845c
> > -#define DPIO_PCS_CLOCKBUF8(port) _PORT(port, _DPIO_PCS_CLOCKBUF8_A, \
> > -				       _DPIO_PCS_CLOCKBUF8_B)
> > -
> > -#define _DPIO_TX_SWING_CTL2_A		0x8288
> > -#define _DPIO_TX_SWING_CTL2_B		0x8488
> > -#define DPIO_TX_SWING_CTL2(port) _PORT(port, _DPIO_TX_SWING_CTL2_A, \
> > -				       _DPIO_TX_SWING_CTL2_B)
> > -
> > -#define _DPIO_TX_SWING_CTL3_A		0x828c
> > -#define _DPIO_TX_SWING_CTL3_B		0x848c
> > -#define DPIO_TX_SWING_CTL3(port) _PORT(port, _DPIO_TX_SWING_CTL3_A, \
> > -				       _DPIO_TX_SWING_CTL3_B)
> > -
> > -#define _DPIO_TX_SWING_CTL4_A		0x8290
> > -#define _DPIO_TX_SWING_CTL4_B		0x8490
> > -#define DPIO_TX_SWING_CTL4(port) _PORT(port, _DPIO_TX_SWING_CTL4_A, \
> > -				       _DPIO_TX_SWING_CTL4_B)
> > -
> > -#define _DPIO_TX_OCALINIT_0		0x8294
> > -#define _DPIO_TX_OCALINIT_1		0x8494
> > +#define VLV_PCS_DW1(ch) _PORT(ch, _VLV_PCS_DW1_CH0, _VLV_PCS_DW1_CH1)
> > +
> > +#define _VLV_PCS_DW8_CH0		0x8220
> > +#define _VLV_PCS_DW8_CH1		0x8420
> > +#define VLV_PCS_DW8(ch) _PORT(ch, _VLV_PCS_DW8_CH0, _VLV_PCS_DW8_CH1)
> > +
> > +#define _VLV_PCS01_DW8_CH0		0x0220
> > +#define _VLV_PCS23_DW8_CH0		0x0420
> > +#define _VLV_PCS01_DW8_CH1		0x2620
> > +#define _VLV_PCS23_DW8_CH1		0x2820
> > +#define VLV_PCS01_DW8(port) _PORT(port, _VLV_PCS01_DW8_CH0, _VLV_PCS01_DW8_CH1)
> > +#define VLV_PCS23_DW8(port) _PORT(port, _VLV_PCS23_DW8_CH0, _VLV_PCS23_DW8_CH1)
> > +
> > +#define _VLV_PCS_DW9_CH0		0x8224
> > +#define _VLV_PCS_DW9_CH1		0x8424
> > +#define	VLV_PCS_DW9(ch) _PORT(ch, _VLV_PCS_DW9_CH0, _VLV_PCS_DW9_CH1)
> > +
> > +#define _VLV_PCS_DW11_CH0		0x822c
> > +#define _VLV_PCS_DW11_CH1		0x842c
> > +#define VLV_PCS_DW11(ch) _PORT(ch, _VLV_PCS_DW11_CH0, _VLV_PCS_DW11_CH1)
> > +
> > +#define _VLV_PCS_DW12_CH0		0x8230
> > +#define _VLV_PCS_DW12_CH1		0x8430
> > +#define VLV_PCS_DW12(ch) _PORT(ch, _VLV_PCS_DW12_CH0, _VLV_PCS_DW12_CH1)
> > +
> > +#define _VLV_PCS_DW14_CH0		0x8238
> > +#define _VLV_PCS_DW14_CH1		0x8438
> > +#define	VLV_PCS_DW14(ch) _PORT(ch, _VLV_PCS_DW14_CH0, _VLV_PCS_DW14_CH1)
> > +
> > +#define _VLV_PCS_DW23_CH0		0x825c
> > +#define _VLV_PCS_DW23_CH1		0x845c
> > +#define VLV_PCS_DW23(ch) _PORT(ch, _VLV_PCS_DW23_CH0, _VLV_PCS_DW23_CH1)
> > +
> > +#define _VLV_TX_DW2_CH0			0x8288
> > +#define _VLV_TX_DW2_CH1			0x8488
> > +#define VLV_TX_DW2(ch) _PORT(ch, _VLV_TX_DW2_CH0, _VLV_TX_DW2_CH1)
> > +
> > +#define _VLV_TX_DW3_CH0			0x828c
> > +#define _VLV_TX_DW3_CH1			0x848c
> > +#define VLV_TX_DW3(ch) _PORT(ch, _VLV_TX_DW3_CH0, _VLV_TX_DW3_CH1)
> > +
> > +#define _VLV_TX_DW4_CH0			0x8290
> > +#define _VLV_TX_DW4_CH1			0x8490
> > +#define VLV_TX_DW4(ch) _PORT(ch, _VLV_TX_DW4_CH0, _VLV_TX_DW4_CH1)
> > +
> > +#define _VLV_TX3_DW4_CH0		0x690
> > +#define _VLV_TX3_DW4_CH1		0x2a90
> > +#define VLV_TX3_DW4(ch) _PORT(ch, _VLV_TX3_DW4_CH0, _VLV_TX3_DW4_CH1)
> > +
> > +#define _VLV_TX_DW5_CH0			0x8294
> > +#define _VLV_TX_DW5_CH1			0x8494
> >  #define   DPIO_TX_OCALINIT_EN		(1<<31)
> > -#define DPIO_TX_OCALINIT(port) _PORT(port, _DPIO_TX_OCALINIT_0, \
> > -				     _DPIO_TX_OCALINIT_1)
> > -
> > -#define _DPIO_TX_CTL_0			0x82ac
> > -#define _DPIO_TX_CTL_1			0x84ac
> > -#define DPIO_TX_CTL(port) _PORT(port, _DPIO_TX_CTL_0, _DPIO_TX_CTL_1)
> > -
> > -#define _DPIO_TX_LANE_0			0x82b8
> > -#define _DPIO_TX_LANE_1			0x84b8
> > -#define DPIO_TX_LANE(port) _PORT(port, _DPIO_TX_LANE_0, _DPIO_TX_LANE_1)
> > -
> > -#define _DPIO_DATA_CHANNEL1		0x8220
> > -#define _DPIO_DATA_CHANNEL2		0x8420
> > -#define DPIO_DATA_CHANNEL(port) _PORT(port, _DPIO_DATA_CHANNEL1, _DPIO_DATA_CHANNEL2)
> > -
> > -#define _DPIO_PORT0_PCS0		0x0220
> > -#define _DPIO_PORT0_PCS1		0x0420
> > -#define _DPIO_PORT1_PCS2		0x2620
> > -#define _DPIO_PORT1_PCS3		0x2820
> > -#define DPIO_DATA_LANE_A(port) _PORT(port, _DPIO_PORT0_PCS0, _DPIO_PORT1_PCS2)
> > -#define DPIO_DATA_LANE_B(port) _PORT(port, _DPIO_PORT0_PCS1, _DPIO_PORT1_PCS3)
> > -#define DPIO_DATA_CHANNEL1              0x8220
> > -#define DPIO_DATA_CHANNEL2              0x8420
> > +#define VLV_TX_DW5(ch) _PORT(ch, _VLV_TX_DW5_CH0, _VLV_TX_DW5_CH1)
> > +
> > +#define _VLV_TX_DW11_CH0		0x82ac
> > +#define _VLV_TX_DW11_CH1		0x84ac
> > +#define VLV_TX_DW11(ch) _PORT(ch, _VLV_TX_DW11_CH0, _VLV_TX_DW11_CH1)
> > +
> > +#define _VLV_TX_DW14_CH0		0x82b8
> > +#define _VLV_TX_DW14_CH1		0x84b8
> > +#define VLV_TX_DW14(ch) _PORT(ch, _VLV_TX_DW14_CH0, _VLV_TX_DW14_CH1)
> >  
> >  /*
> >   * Fence registers
> > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> > index b1d20b6..78a2862 100644
> > --- a/drivers/gpu/drm/i915/intel_display.c
> > +++ b/drivers/gpu/drm/i915/intel_display.c
> > @@ -4794,24 +4794,24 @@ static void vlv_pllb_recal_opamp(struct drm_i915_private *dev_priv, enum pipe
> >  	 * PLLB opamp always calibrates to max value of 0x3f, force enable it
> >  	 * and set it to a reasonable value instead.
> >  	 */
> > -	reg_val = vlv_dpio_read(dev_priv, pipe, DPIO_IREF(1));
> > +	reg_val = vlv_dpio_read(dev_priv, pipe, VLV_PLL_DW11(1));
> >  	reg_val &= 0xffffff00;
> >  	reg_val |= 0x00000030;
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_IREF(1), reg_val);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PLL_DW11(1), reg_val);
> >  
> > -	reg_val = vlv_dpio_read(dev_priv, pipe, DPIO_CALIBRATION);
> > +	reg_val = vlv_dpio_read(dev_priv, pipe, VLV_REF_DW11);
> >  	reg_val &= 0x8cffffff;
> >  	reg_val = 0x8c000000;
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_CALIBRATION, reg_val);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_REF_DW11, reg_val);
> >  
> > -	reg_val = vlv_dpio_read(dev_priv, pipe, DPIO_IREF(1));
> > +	reg_val = vlv_dpio_read(dev_priv, pipe, VLV_PLL_DW11(1));
> >  	reg_val &= 0xffffff00;
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_IREF(1), reg_val);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PLL_DW11(1), reg_val);
> >  
> > -	reg_val = vlv_dpio_read(dev_priv, pipe, DPIO_CALIBRATION);
> > +	reg_val = vlv_dpio_read(dev_priv, pipe, VLV_REF_DW11);
> >  	reg_val &= 0x00ffffff;
> >  	reg_val |= 0xb0000000;
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_CALIBRATION, reg_val);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_REF_DW11, reg_val);
> >  }
> >  
> >  static void intel_pch_transcoder_set_m_n(struct intel_crtc *crtc,
> > @@ -4880,15 +4880,15 @@ static void vlv_update_pll(struct intel_crtc *crtc)
> >  		vlv_pllb_recal_opamp(dev_priv, pipe);
> >  
> >  	/* Set up Tx target for periodic Rcomp update */
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_IREF_BCAST, 0x0100000f);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PLL_DW11_BCAST, 0x0100000f);
> >  
> >  	/* Disable target IRef on PLL */
> > -	reg_val = vlv_dpio_read(dev_priv, pipe, DPIO_IREF_CTL(pipe));
> > +	reg_val = vlv_dpio_read(dev_priv, pipe, VLV_PLL_DW10(pipe));
> >  	reg_val &= 0x00ffffff;
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_IREF_CTL(pipe), reg_val);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PLL_DW10(pipe), reg_val);
> >  
> >  	/* Disable fast lock */
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_FASTCLK_DISABLE, 0x610);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_CMN_DW0, 0x610);
> >  
> >  	/* Set idtafcrecal before PLL is enabled */
> >  	mdiv = ((bestm1 << DPIO_M1DIV_SHIFT) | (bestm2 & DPIO_M2DIV_MASK));
> > @@ -4902,48 +4902,48 @@ static void vlv_update_pll(struct intel_crtc *crtc)
> >  	 * Note: don't use the DAC post divider as it seems unstable.
> >  	 */
> >  	mdiv |= (DPIO_POST_DIV_HDMIDP << DPIO_POST_DIV_SHIFT);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_DIV(pipe), mdiv);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PLL_DW3(pipe), mdiv);
> >  
> >  	mdiv |= DPIO_ENABLE_CALIBRATION;
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_DIV(pipe), mdiv);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PLL_DW3(pipe), mdiv);
> >  
> >  	/* Set HBR and RBR LPF coefficients */
> >  	if (crtc->config.port_clock == 162000 ||
> >  	    intel_pipe_has_type(&crtc->base, INTEL_OUTPUT_ANALOG) ||
> >  	    intel_pipe_has_type(&crtc->base, INTEL_OUTPUT_HDMI))
> > -		vlv_dpio_write(dev_priv, pipe, DPIO_LPF_COEFF(pipe),
> > +		vlv_dpio_write(dev_priv, pipe, VLV_PLL_DW12(pipe),
> >  				 0x009f0003);
> >  	else
> > -		vlv_dpio_write(dev_priv, pipe, DPIO_LPF_COEFF(pipe),
> > +		vlv_dpio_write(dev_priv, pipe, VLV_PLL_DW12(pipe),
> >  				 0x00d0000f);
> >  
> >  	if (intel_pipe_has_type(&crtc->base, INTEL_OUTPUT_EDP) ||
> >  	    intel_pipe_has_type(&crtc->base, INTEL_OUTPUT_DISPLAYPORT)) {
> >  		/* Use SSC source */
> >  		if (!pipe)
> > -			vlv_dpio_write(dev_priv, pipe, DPIO_REFSFR(pipe),
> > +			vlv_dpio_write(dev_priv, pipe, VLV_PLL_DW5(pipe),
> >  					 0x0df40000);
> >  		else
> > -			vlv_dpio_write(dev_priv, pipe, DPIO_REFSFR(pipe),
> > +			vlv_dpio_write(dev_priv, pipe, VLV_PLL_DW5(pipe),
> >  					 0x0df70000);
> >  	} else { /* HDMI or VGA */
> >  		/* Use bend source */
> >  		if (!pipe)
> > -			vlv_dpio_write(dev_priv, pipe, DPIO_REFSFR(pipe),
> > +			vlv_dpio_write(dev_priv, pipe, VLV_PLL_DW5(pipe),
> >  					 0x0df70000);
> >  		else
> > -			vlv_dpio_write(dev_priv, pipe, DPIO_REFSFR(pipe),
> > +			vlv_dpio_write(dev_priv, pipe, VLV_PLL_DW5(pipe),
> >  					 0x0df40000);
> >  	}
> >  
> > -	coreclk = vlv_dpio_read(dev_priv, pipe, DPIO_CORE_CLK(pipe));
> > +	coreclk = vlv_dpio_read(dev_priv, pipe, VLV_PLL_DW7(pipe));
> >  	coreclk = (coreclk & 0x0000ff00) | 0x01c00000;
> >  	if (intel_pipe_has_type(&crtc->base, INTEL_OUTPUT_DISPLAYPORT) ||
> >  	    intel_pipe_has_type(&crtc->base, INTEL_OUTPUT_EDP))
> >  		coreclk |= 0x01000000;
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_CORE_CLK(pipe), coreclk);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PLL_DW7(pipe), coreclk);
> >  
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_PLL_CML(pipe), 0x87871000);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PLL_DW13(pipe), 0x87871000);
> >  
> >  	/* Enable DPIO clock input */
> >  	dpll = DPLL_EXT_BUFFER_ENABLE_VLV | DPLL_REFA_CLK_ENABLE_VLV |
> > @@ -5421,7 +5421,7 @@ static void vlv_crtc_clock_get(struct intel_crtc *crtc,
> >  	int refclk = 100000;
> >  
> >  	mutex_lock(&dev_priv->dpio_lock);
> > -	mdiv = vlv_dpio_read(dev_priv, pipe, DPIO_DIV(pipe));
> > +	mdiv = vlv_dpio_read(dev_priv, pipe, VLV_PLL_DW3(pipe));
> >  	mutex_unlock(&dev_priv->dpio_lock);
> >  
> >  	clock.m1 = (mdiv >> DPIO_M1DIV_SHIFT) & 7;
> > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> > index aea9e28..558cb54 100644
> > --- a/drivers/gpu/drm/i915/intel_dp.c
> > +++ b/drivers/gpu/drm/i915/intel_dp.c
> > @@ -1846,16 +1846,16 @@ static void vlv_pre_enable_dp(struct intel_encoder *encoder)
> >  
> >  	mutex_lock(&dev_priv->dpio_lock);
> >  
> > -	val = vlv_dpio_read(dev_priv, pipe, DPIO_DATA_LANE_A(port));
> > +	val = vlv_dpio_read(dev_priv, pipe, VLV_PCS01_DW8(port));
> >  	val = 0;
> >  	if (pipe)
> >  		val |= (1<<21);
> >  	else
> >  		val &= ~(1<<21);
> >  	val |= 0x001000c4;
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_DATA_CHANNEL(port), val);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_PCS_CLOCKBUF0(port), 0x00760018);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_PCS_CLOCKBUF8(port), 0x00400888);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW8(port), val);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW14(port), 0x00760018);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW23(port), 0x00400888);
> >  
> >  	mutex_unlock(&dev_priv->dpio_lock);
> >  
> > @@ -1881,19 +1881,19 @@ static void vlv_dp_pre_pll_enable(struct intel_encoder *encoder)
> >  
> >  	/* Program Tx lane resets to default */
> >  	mutex_lock(&dev_priv->dpio_lock);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_PCS_TX(port),
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW0(port),
> >  			 DPIO_PCS_TX_LANE2_RESET |
> >  			 DPIO_PCS_TX_LANE1_RESET);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_PCS_CLK(port),
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW1(port),
> >  			 DPIO_PCS_CLK_CRI_RXEB_EIOS_EN |
> >  			 DPIO_PCS_CLK_CRI_RXDIGFILTSG_EN |
> >  			 (1<<DPIO_PCS_CLK_DATAWIDTH_SHIFT) |
> >  				 DPIO_PCS_CLK_SOFT_RESET);
> >  
> >  	/* Fix up inter-pair skew failure */
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_PCS_STAGGER1(port), 0x00750f00);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_TX_CTL(port), 0x00001500);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_TX_LANE(port), 0x40400000);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW12(port), 0x00750f00);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_TX_DW11(port), 0x00001500);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_TX_DW14(port), 0x40400000);
> >  	mutex_unlock(&dev_priv->dpio_lock);
> >  }
> >  
> > @@ -2110,14 +2110,14 @@ static uint32_t intel_vlv_signal_levels(struct intel_dp *intel_dp)
> >  	}
> >  
> >  	mutex_lock(&dev_priv->dpio_lock);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_TX_OCALINIT(port), 0x00000000);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_TX_SWING_CTL4(port), demph_reg_value);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_TX_SWING_CTL2(port),
> > +	vlv_dpio_write(dev_priv, pipe, VLV_TX_DW5(port), 0x00000000);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_TX_DW4(port), demph_reg_value);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_TX_DW2(port),
> >  			 uniqtranscale_reg_value);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_TX_SWING_CTL3(port), 0x0C782040);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_PCS_STAGGER0(port), 0x00030000);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_PCS_CTL_OVER1(port), preemph_reg_value);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_TX_OCALINIT(port), 0x80000000);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_TX_DW3(port), 0x0C782040);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW11(port), 0x00030000);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW9(port), preemph_reg_value);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_TX_DW5(port), 0x80000000);
> >  	mutex_unlock(&dev_priv->dpio_lock);
> >  
> >  	return 0;
> > diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
> > index eeaf533..61cff67 100644
> > --- a/drivers/gpu/drm/i915/intel_hdmi.c
> > +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> > @@ -1090,36 +1090,28 @@ static void vlv_hdmi_pre_enable(struct intel_encoder *encoder)
> >  
> >  	/* Enable clock channels for this port */
> >  	mutex_lock(&dev_priv->dpio_lock);
> > -	val = vlv_dpio_read(dev_priv, pipe, DPIO_DATA_LANE_A(port));
> > +	val = vlv_dpio_read(dev_priv, pipe, VLV_PCS01_DW8(port));
> >  	val = 0;
> >  	if (pipe)
> >  		val |= (1<<21);
> >  	else
> >  		val &= ~(1<<21);
> >  	val |= 0x001000c4;
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_DATA_CHANNEL(port), val);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW8(port), val);
> >  
> >  	/* HDMI 1.0V-2dB */
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_TX_OCALINIT(port), 0);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_TX_SWING_CTL4(port),
> > -			 0x2b245f5f);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_TX_SWING_CTL2(port),
> > -			 0x5578b83a);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_TX_SWING_CTL3(port),
> > -			 0x0c782040);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_TX3_SWING_CTL4(port),
> > -			 0x2b247878);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_PCS_STAGGER0(port), 0x00030000);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_PCS_CTL_OVER1(port),
> > -			 0x00002000);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_TX_OCALINIT(port),
> > -			 DPIO_TX_OCALINIT_EN);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_TX_DW5(port), 0);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_TX_DW4(port), 0x2b245f5f);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_TX_DW2(port), 0x5578b83a);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_TX_DW3(port), 0x0c782040);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_TX3_DW4(port), 0x2b247878);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW11(port), 0x00030000);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW9(port), 0x00002000);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_TX_DW5(port), DPIO_TX_OCALINIT_EN);
> >  
> >  	/* Program lane clock */
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_PCS_CLOCKBUF0(port),
> > -			 0x00760018);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_PCS_CLOCKBUF8(port),
> > -			 0x00400888);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW14(port), 0x00760018);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW23(port), 0x00400888);
> >  	mutex_unlock(&dev_priv->dpio_lock);
> >  
> >  	intel_enable_hdmi(encoder);
> > @@ -1142,24 +1134,22 @@ static void vlv_hdmi_pre_pll_enable(struct intel_encoder *encoder)
> >  
> >  	/* Program Tx lane resets to default */
> >  	mutex_lock(&dev_priv->dpio_lock);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_PCS_TX(port),
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW0(port),
> >  			 DPIO_PCS_TX_LANE2_RESET |
> >  			 DPIO_PCS_TX_LANE1_RESET);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_PCS_CLK(port),
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW1(port),
> >  			 DPIO_PCS_CLK_CRI_RXEB_EIOS_EN |
> >  			 DPIO_PCS_CLK_CRI_RXDIGFILTSG_EN |
> >  			 (1<<DPIO_PCS_CLK_DATAWIDTH_SHIFT) |
> >  			 DPIO_PCS_CLK_SOFT_RESET);
> >  
> >  	/* Fix up inter-pair skew failure */
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_PCS_STAGGER1(port), 0x00750f00);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_TX_CTL(port), 0x00001500);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_TX_LANE(port), 0x40400000);
> > -
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_PCS_CTL_OVER1(port),
> > -			 0x00002000);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_TX_OCALINIT(port),
> > -			 DPIO_TX_OCALINIT_EN);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW12(port), 0x00750f00);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_TX_DW11(port), 0x00001500);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_TX_DW14(port), 0x40400000);
> > +
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW9(port), 0x00002000);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_TX_DW5(port), DPIO_TX_OCALINIT_EN);
> >  	mutex_unlock(&dev_priv->dpio_lock);
> >  }
> >  
> > @@ -1174,8 +1164,8 @@ static void vlv_hdmi_post_disable(struct intel_encoder *encoder)
> >  
> >  	/* Reset lanes to avoid HDMI flicker (VLV w/a) */
> >  	mutex_lock(&dev_priv->dpio_lock);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_PCS_TX(port), 0x00000000);
> > -	vlv_dpio_write(dev_priv, pipe, DPIO_PCS_CLK(port), 0x00e00060);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW0(port), 0x00000000);
> > +	vlv_dpio_write(dev_priv, pipe, VLV_PCS_DW1(port), 0x00e00060);
> >  	mutex_unlock(&dev_priv->dpio_lock);
> >  }
> >  
> > -- 
> > 1.7.7.6
> > 
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
> 
> -- 
> Ville Syrjälä
> Intel OTC



More information about the Intel-gfx mailing list