[Intel-gfx] [PATCH v8 08/38] drm/i915/icl: Disable DSI transcoders

Madhav Chauhan madhav.chauhan at intel.com
Wed Oct 31 10:10:44 UTC 2018


On 10/30/2018 5:26 PM, Jani Nikula wrote:
> From: Madhav Chauhan <madhav.chauhan at intel.com>
>
> This patch disables transcoders by writing to TRANS_CONF
> registers for each DSI ports.
>
> v2 by Jani:
>   - Wait for pipeconf active to go low
Thanks for catching this, it has to be low.

Regards,
Madhav

>
> Signed-off-by: Madhav Chauhan <madhav.chauhan at intel.com>
> Signed-off-by: Jani Nikula <jani.nikula at intel.com>
> ---
>   drivers/gpu/drm/i915/icl_dsi.c | 26 ++++++++++++++++++++++++++
>   1 file changed, 26 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/icl_dsi.c b/drivers/gpu/drm/i915/icl_dsi.c
> index f7f48ff147d0..644ad7475920 100644
> --- a/drivers/gpu/drm/i915/icl_dsi.c
> +++ b/drivers/gpu/drm/i915/icl_dsi.c
> @@ -777,6 +777,29 @@ gen11_dsi_pre_enable(struct intel_encoder *encoder,
>   	intel_dsi_vbt_exec_sequence(intel_dsi, MIPI_SEQ_BACKLIGHT_ON);
>   }
>   
> +static void gen11_dsi_disable_transcoder(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);
> +	enum port port;
> +	enum transcoder dsi_trans;
> +	u32 tmp;
> +
> +	for_each_dsi_port(port, intel_dsi->ports) {
> +		dsi_trans = dsi_port_to_transcoder(port);
> +
> +		/* disable transcoder */
> +		tmp = I915_READ(PIPECONF(dsi_trans));
> +		tmp &= ~PIPECONF_ENABLE;
> +		I915_WRITE(PIPECONF(dsi_trans), tmp);
> +
> +		/* wait for transcoder to be disabled */
> +		if (intel_wait_for_register(dev_priv, PIPECONF(dsi_trans),
> +					    I965_PIPECONF_ACTIVE, 0, 50))
> +			DRM_ERROR("DSI trancoder not disabled\n");
> +	}
> +}
> +
>   static void __attribute__((unused)) gen11_dsi_disable(
>   			struct intel_encoder *encoder,
>   			const struct intel_crtc_state *old_crtc_state,
> @@ -787,4 +810,7 @@ static void __attribute__((unused)) gen11_dsi_disable(
>   	/* step1: turn off backlight */
>   	intel_dsi_vbt_exec_sequence(intel_dsi, MIPI_SEQ_BACKLIGHT_OFF);
>   	intel_panel_disable_backlight(old_conn_state);
> +
> +	/* step2d,e: disable transcoder and wait */
> +	gen11_dsi_disable_transcoder(encoder);
>   }



More information about the Intel-gfx mailing list