[Intel-gfx] [PATCH 10/16] drm/i915: Power down the DSI PLL before reconfiguring it

Jani Nikula jani.nikula at linux.intel.com
Wed Mar 16 08:45:52 UTC 2016


On Tue, 15 Mar 2016, ville.syrjala at linux.intel.com wrote:
> [ text/plain ]
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> On VLV at least, the BIOS may leave the DSI PLL enabled in some wonky
> state where it just refuses to lock. Simply disabling the PLL before
> reconfiguring it is not enough to fix it, but power gating the PLL
> prior to reconfiguring does work.
>
> This happens on BYT FFRD8 when booting with HDMI connected so the DSI
> display will not be lit up by the BIOS.
>
> Also we can remove the code for BXT that disables the PLL before
> enabling it again.
>
> v2: s/vlv/intel/ since BXT made thing generic
> v3: Remove the BXT disable PLL before enable trick
>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>

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

> ---
>  drivers/gpu/drm/i915/intel_dsi.c     | 6 ++++++
>  drivers/gpu/drm/i915/intel_dsi_pll.c | 8 --------
>  2 files changed, 6 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
> index 4023b6bffa47..787411e1c36f 100644
> --- a/drivers/gpu/drm/i915/intel_dsi.c
> +++ b/drivers/gpu/drm/i915/intel_dsi.c
> @@ -482,7 +482,13 @@ static void intel_dsi_pre_enable(struct intel_encoder *encoder)
>  
>  	DRM_DEBUG_KMS("\n");
>  
> +	/*
> +	 * The BIOS may leave the PLL in a wonky state where it doesn't
> +	 * lock. It needs to be fully powered down to fix it.
> +	 */
> +	intel_disable_dsi_pll(encoder);
>  	intel_enable_dsi_pll(encoder);
> +
>  	intel_dsi_prepare(encoder);
>  
>  	/* Panel Enable over CRC PMIC */
> diff --git a/drivers/gpu/drm/i915/intel_dsi_pll.c b/drivers/gpu/drm/i915/intel_dsi_pll.c
> index 916cc92c1400..978cc2668a3d 100644
> --- a/drivers/gpu/drm/i915/intel_dsi_pll.c
> +++ b/drivers/gpu/drm/i915/intel_dsi_pll.c
> @@ -474,14 +474,6 @@ static void bxt_enable_dsi_pll(struct intel_encoder *encoder)
>  
>  	DRM_DEBUG_KMS("\n");
>  
> -	val = I915_READ(BXT_DSI_PLL_ENABLE);
> -
> -	if (val & BXT_DSI_PLL_DO_ENABLE) {
> -		WARN(1, "DSI PLL already enabled. Disabling it.\n");
> -		val &= ~BXT_DSI_PLL_DO_ENABLE;
> -		I915_WRITE(BXT_DSI_PLL_ENABLE, val);
> -	}
> -
>  	/* Configure PLL vales */
>  	if (!bxt_configure_dsi_pll(encoder)) {
>  		DRM_ERROR("Configure DSI PLL failed, abort PLL enable\n");

-- 
Jani Nikula, Intel Open Source Technology Center


More information about the Intel-gfx mailing list