[Intel-gfx] [PATCH 3/4] drm/i915: set proper DPIO post divider for VGA on VLV v4

Kenneth Graunke kenneth at whitecape.org
Mon May 6 19:52:36 CEST 2013


On 05/02/2013 10:48 AM, Jesse Barnes wrote:
> Supposedly we should use the DAC divider for <300MHz pixel clocks, but as
> that doesn't actually work as well as the high freq divider here in
> practice, just use the high freq divider all the time.
>
> v2: remove unconditional write (Jesse)
>      check for pixel rate properly (Jesse)
> v3: give up, the DAC divider apparently doesn't work, and low res modes
>      work ok (Jesse)
>      remove debug msg (Jesse)
>
> Signed-off-by: Jesse Barnes <jbarnes at virtuousgeek.org>

VGA is broken with today's drm-intel-next-queued (3a2128bcac1ae). 
Applying this patch fixes it.  Thanks!

Tested-by: Kenneth Graunke <kenneth at whitecape.org>

> ---
>   drivers/gpu/drm/i915/intel_display.c |   11 +++++++----
>   1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 6504337..59c2114 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -4425,10 +4425,13 @@ static void vlv_update_pll(struct intel_crtc *crtc)
>   	mdiv |= ((bestp1 << DPIO_P1_SHIFT) | (bestp2 << DPIO_P2_SHIFT));
>   	mdiv |= ((bestn << DPIO_N_SHIFT));
>   	mdiv |= (1 << DPIO_K_SHIFT);
> -	if (intel_pipe_has_type(&crtc->base, INTEL_OUTPUT_HDMI) ||
> -	    intel_pipe_has_type(&crtc->base, INTEL_OUTPUT_EDP) ||
> -	    intel_pipe_has_type(&crtc->base, INTEL_OUTPUT_DISPLAYPORT))
> -		mdiv |= (DPIO_POST_DIV_HDMIDP << DPIO_POST_DIV_SHIFT);
> +
> +	/*
> +	 * Post divider depends on pixel clock rate, DAC vs digital (and LVDS,
> +	 * but we don't support that).
> +	 * Note: don't use the DAC post divider as it seems unstable.
> +	 */
> +	mdiv |= (DPIO_POST_DIV_HDMIDP << DPIO_POST_DIV_SHIFT);
>   	intel_dpio_write(dev_priv, DPIO_DIV(pipe), mdiv);
>
>   	mdiv |= DPIO_ENABLE_CALIBRATION;
>




More information about the Intel-gfx mailing list