[Intel-gfx] [PATCH 4/6] drm/i915/icl: Gate clocks for DSI

Imre Deak imre.deak at intel.com
Tue Nov 27 14:06:43 UTC 2018


On Tue, Nov 27, 2018 at 03:09:06PM +0530, Vandita Kulkarni wrote:
> From: Madhav Chauhan <madhav.chauhan at intel.com>
> 
> As per BSPEC, depending on the DSI transcoder being used,
> DDI clock for the associated port should be gated. This
> patch does the same.
> 
> Signed-off-by: Madhav Chauhan <madhav.chauhan at intel.com>
> Signed-off-by: Vandita Kulkarni <vandita.kulkarni at intel.com>
> ---
>  drivers/gpu/drm/i915/icl_dsi.c | 20 ++++++++++++++++++++
>  1 file changed, 20 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/icl_dsi.c b/drivers/gpu/drm/i915/icl_dsi.c
> index ec22b2e..fe4efc7 100644
> --- a/drivers/gpu/drm/i915/icl_dsi.c
> +++ b/drivers/gpu/drm/i915/icl_dsi.c
> @@ -536,6 +536,23 @@ static void gen11_dsi_setup_dphy_timings(struct intel_encoder *encoder)
>  	}
>  }
>  
> +static void gen11_dsi_gate_clocks(struct intel_encoder *encoder)
> +{
> +	struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
> +	struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base);
> +	u32 tmp;
> +	enum port port;
> +
> +	mutex_lock(&dev_priv->dpll_lock);
> +	tmp = I915_READ(DPCLKA_CFGCR0_ICL);
> +	for_each_dsi_port(port, intel_dsi->ports) {
> +		tmp |= DPCLKA_CFGCR0_DDI_CLK_OFF(port);
> +	}
> +
> +	I915_WRITE(DPCLKA_CFGCR0_ICL, tmp);
> +	mutex_unlock(&dev_priv->dpll_lock);
> +}
> +
>  static void
>  gen11_dsi_configure_transcoder(struct intel_encoder *encoder,
>  			       const struct intel_crtc_state *pipe_config)
> @@ -883,6 +900,9 @@ static void gen11_dsi_setup_timeouts(struct intel_encoder *encoder)
>  
>  	/* Step (4h, 4i, 4j, 4k): Configure transcoder */
>  	gen11_dsi_configure_transcoder(encoder, pipe_config);
> +
> +	/* Step 4l: Gate DDI clocks */
> +	gen11_dsi_gate_clocks(encoder);

I think the default case should be that DDI clocks are gated and here we
shouldn't do anything.

The DDI clocks will get then ungated only when enabling a DDI encoder in
icl_map_plls_to_ports(). There we should also make sure we don't ungate
the clock for a DSI encoder.

I also have a patch to sanity check the clock gating wrt. DSI too during
HW readout, will send that today.

>  }
>  
>  static void gen11_dsi_powerup_panel(struct intel_encoder *encoder)
> -- 
> 1.9.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx


More information about the Intel-gfx mailing list