[Intel-gfx] [PATCH 1/5] drm/i915: add encoder->pre_enable/post_disable
Paulo Zanoni
przanoni at gmail.com
Wed Sep 12 15:48:37 CEST 2012
Hi
2012/9/6 Daniel Vetter <daniel.vetter at ffwll.ch>:
> The cpu eDP encoder has some horrible hacks to set up the DP pll at
> the right time. To be able to move them to the right place, add some
> more encoder callbacks so that this can happen at the right time.
>
> LVDS has some similar funky hacks, but that would require more work
> (we need to move around the pll setup a bit). Hence for now only
> wire these new callbacks up for ilk+ - we only have cpu eDP on these
> platforms.
>
> Signed-Off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
I also plan to use these callbacks in the future.
Reviewed-by: Paulo Zanoni <paulo.r.zanoni at intel.com>
Notice that this patch can not be applied to dinq as-is because of
small easy-to-solve conflicts.
> ---
> drivers/gpu/drm/i915/intel_display.c | 8 ++++++++
> drivers/gpu/drm/i915/intel_drv.h | 2 ++
> 2 files changed, 10 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index bff0936..1d31364 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -3189,6 +3189,10 @@ static void ironlake_crtc_enable(struct drm_crtc *crtc)
> assert_fdi_rx_disabled(dev_priv, pipe);
> }
>
> + for_each_encoder_on_crtc(dev, crtc, encoder)
> + if (encoder->pre_enable)
> + encoder->pre_enable(encoder);
> +
> /* Enable panel fitting for LVDS */
> if (dev_priv->pch_pf_size &&
> (intel_pipe_has_type(crtc, INTEL_OUTPUT_LVDS) || HAS_eDP)) {
> @@ -3258,6 +3262,10 @@ static void ironlake_crtc_disable(struct drm_crtc *crtc)
> I915_WRITE(PF_CTL(pipe), 0);
> I915_WRITE(PF_WIN_SZ(pipe), 0);
>
> + for_each_encoder_on_crtc(dev, crtc, encoder)
> + if (encoder->post_disable)
> + encoder->post_disable(encoder);
> +
> ironlake_fdi_disable(crtc);
>
> intel_disable_transcoder(dev_priv, pipe);
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index 4f2b2d6..1306f05 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -153,7 +153,9 @@ struct intel_encoder {
> bool connectors_active;
> void (*hot_plug)(struct intel_encoder *);
> void (*enable)(struct intel_encoder *);
> + void (*pre_enable)(struct intel_encoder *);
> void (*disable)(struct intel_encoder *);
> + void (*post_disable)(struct intel_encoder *);
> /* Read out the current hw state of this connector, returning true if
> * the encoder is active. If the encoder is enabled it also set the pipe
> * it is connected to in the pipe parameter. */
> --
> 1.7.11.2
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Paulo Zanoni
More information about the Intel-gfx
mailing list