[Intel-gfx] [PATCH] drm/i915: clean up PIPECONF bpc #defines

Jani Nikula jani.nikula at linux.intel.com
Mon Dec 17 12:12:07 CET 2012


On Mon, 17 Dec 2012, Daniel Vetter <daniel.vetter at ffwll.ch> wrote:
> Ilk+ somehow used #defines in near the PIPESTAT definitions, which
> decently confused me. Earlier platforms called it BPP instead of
> BPC. Clean this all up.

This patch does what it says on the box, so

Reviewed-by: Jani Nikula <jani.nikula at intel.com>

*BUT* see a related comment below.

> Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
> ---
>  drivers/gpu/drm/i915/i915_reg.h      |   15 +++++----------
>  drivers/gpu/drm/i915/intel_display.c |   28 ++++++++++++++--------------
>  2 files changed, 19 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index 062ca21..596d629 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -2648,11 +2648,11 @@
>  #define   PIPECONF_INTERLACED_DBL_ILK		(4 << 21) /* ilk/snb only */
>  #define   PIPECONF_PFIT_PF_INTERLACED_DBL_ILK	(5 << 21) /* ilk/snb only */
>  #define   PIPECONF_CXSR_DOWNCLOCK	(1<<16)
> -#define   PIPECONF_BPP_MASK	(0x000000e0)
> -#define   PIPECONF_BPP_8	(0<<5)
> -#define   PIPECONF_BPP_10	(1<<5)
> -#define   PIPECONF_BPP_6	(2<<5)
> -#define   PIPECONF_BPP_12	(3<<5)
> +#define   PIPECONF_BPC_MASK	(0x7 << 5)
> +#define   PIPECONF_8BPC		(0<<5)
> +#define   PIPECONF_10BPC	(1<<5)
> +#define   PIPECONF_6BPC		(2<<5)
> +#define   PIPECONF_12BPC	(3<<5)
>  #define   PIPECONF_DITHER_EN	(1<<4)
>  #define   PIPECONF_DITHER_TYPE_MASK (0x0000000c)
>  #define   PIPECONF_DITHER_TYPE_SP (0<<2)
> @@ -2696,11 +2696,6 @@
>  #define   PIPE_START_VBLANK_INTERRUPT_STATUS	(1UL<<2) /* 965 or later */
>  #define   PIPE_VBLANK_INTERRUPT_STATUS		(1UL<<1)
>  #define   PIPE_OVERLAY_UPDATED_STATUS		(1UL<<0)
> -#define   PIPE_BPC_MASK				(7 << 5) /* Ironlake */
> -#define   PIPE_8BPC				(0 << 5)
> -#define   PIPE_10BPC				(1 << 5)
> -#define   PIPE_6BPC				(2 << 5)
> -#define   PIPE_12BPC				(3 << 5)
>  
>  #define PIPESRC(pipe) _PIPE(pipe, _PIPEASRC, _PIPEBSRC)
>  #define PIPECONF(tran) _TRANSCODER(tran, _PIPEACONF, _PIPEBCONF)
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 0eb8821..02cd329 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -1633,8 +1633,8 @@ static void ironlake_enable_pch_transcoder(struct drm_i915_private *dev_priv,
>  		 * make the BPC in transcoder be consistent with
>  		 * that in pipeconf reg.
>  		 */
> -		val &= ~PIPE_BPC_MASK;
> -		val |= pipeconf_val & PIPE_BPC_MASK;
> +		val &= ~PIPECONF_BPC_MASK;
> +		val |= pipeconf_val & PIPECONF_BPC_MASK;
>  	}
>  
>  	val &= ~TRANS_INTERLACE_MASK;
> @@ -2712,7 +2712,7 @@ static void ironlake_fdi_pll_enable(struct intel_crtc *intel_crtc)
>  	temp = I915_READ(reg);
>  	temp &= ~((0x7 << 19) | (0x7 << 16));
>  	temp |= (intel_crtc->fdi_lanes - 1) << 19;
> -	temp |= (I915_READ(PIPECONF(pipe)) & PIPE_BPC_MASK) << 11;
> +	temp |= (I915_READ(PIPECONF(pipe)) & PIPECONF_BPC_MASK) << 11;
>  	I915_WRITE(reg, temp | FDI_RX_PLL_ENABLE);

The magic shift by 11 made me look at FDI RX CTL specs, and turns out
the register has changed in LPT PCH, and the above no longer matches
spec. Port width is just one bit now, and color depth is nowhere to be
found.


BR,
Jani.


>  
>  	POSTING_READ(reg);
> @@ -2782,7 +2782,7 @@ static void ironlake_fdi_disable(struct drm_crtc *crtc)
>  	reg = FDI_RX_CTL(pipe);
>  	temp = I915_READ(reg);
>  	temp &= ~(0x7 << 16);
> -	temp |= (I915_READ(PIPECONF(pipe)) & PIPE_BPC_MASK) << 11;
> +	temp |= (I915_READ(PIPECONF(pipe)) & PIPECONF_BPC_MASK) << 11;
>  	I915_WRITE(reg, temp & ~FDI_RX_ENABLE);
>  
>  	POSTING_READ(reg);
> @@ -2811,7 +2811,7 @@ static void ironlake_fdi_disable(struct drm_crtc *crtc)
>  	}
>  	/* BPC in FDI rx is consistent with that in PIPECONF */
>  	temp &= ~(0x07 << 16);
> -	temp |= (I915_READ(PIPECONF(pipe)) & PIPE_BPC_MASK) << 11;
> +	temp |= (I915_READ(PIPECONF(pipe)) & PIPECONF_BPC_MASK) << 11;
>  	I915_WRITE(reg, temp);
>  
>  	POSTING_READ(reg);
> @@ -3046,7 +3046,7 @@ static void ironlake_pch_enable(struct drm_crtc *crtc)
>  	if (HAS_PCH_CPT(dev) &&
>  	    (intel_pipe_has_type(crtc, INTEL_OUTPUT_DISPLAYPORT) ||
>  	     intel_pipe_has_type(crtc, INTEL_OUTPUT_EDP))) {
> -		u32 bpc = (I915_READ(PIPECONF(pipe)) & PIPE_BPC_MASK) >> 5;
> +		u32 bpc = (I915_READ(PIPECONF(pipe)) & PIPECONF_BPC_MASK) >> 5;
>  		reg = TRANS_DP_CTL(pipe);
>  		temp = I915_READ(reg);
>  		temp &= ~(TRANS_DP_PORT_SEL_MASK |
> @@ -4628,10 +4628,10 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
>  	}
>  
>  	/* default to 8bpc */
> -	pipeconf &= ~(PIPECONF_BPP_MASK | PIPECONF_DITHER_EN);
> +	pipeconf &= ~(PIPECONF_BPC_MASK | PIPECONF_DITHER_EN);
>  	if (is_dp) {
>  		if (adjusted_mode->private_flags & INTEL_MODE_DP_FORCE_6BPC) {
> -			pipeconf |= PIPECONF_BPP_6 |
> +			pipeconf |= PIPECONF_6BPC |
>  				    PIPECONF_DITHER_EN |
>  				    PIPECONF_DITHER_TYPE_SP;
>  		}
> @@ -4639,7 +4639,7 @@ static int i9xx_crtc_mode_set(struct drm_crtc *crtc,
>  
>  	if (IS_VALLEYVIEW(dev) && intel_pipe_has_type(crtc, INTEL_OUTPUT_EDP)) {
>  		if (adjusted_mode->private_flags & INTEL_MODE_DP_FORCE_6BPC) {
> -			pipeconf |= PIPECONF_BPP_6 |
> +			pipeconf |= PIPECONF_6BPC |
>  					PIPECONF_ENABLE |
>  					I965_PIPECONF_ACTIVE;
>  		}
> @@ -5022,19 +5022,19 @@ static void ironlake_set_pipeconf(struct drm_crtc *crtc,
>  
>  	val = I915_READ(PIPECONF(pipe));
>  
> -	val &= ~PIPE_BPC_MASK;
> +	val &= ~PIPECONF_BPC_MASK;
>  	switch (intel_crtc->bpp) {
>  	case 18:
> -		val |= PIPE_6BPC;
> +		val |= PIPECONF_6BPC;
>  		break;
>  	case 24:
> -		val |= PIPE_8BPC;
> +		val |= PIPECONF_8BPC;
>  		break;
>  	case 30:
> -		val |= PIPE_10BPC;
> +		val |= PIPECONF_10BPC;
>  		break;
>  	case 36:
> -		val |= PIPE_12BPC;
> +		val |= PIPECONF_12BPC;
>  		break;
>  	default:
>  		/* Case prevented by intel_choose_pipe_bpp_dither. */
> -- 
> 1.7.10.4
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx



More information about the Intel-gfx mailing list