[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