[Intel-gfx] [PATCH] drm/i915: Shuffle modeset reset handling around

Paulo Zanoni przanoni at gmail.com
Fri Jan 17 21:14:50 CET 2014


2014/1/16 Daniel Vetter <daniel.vetter at ffwll.ch>:
> Currently we're doing the reset handling a bit late, and we're doing
> it both in the driver load code and on resume. This makes it unusable
> for e.g. resetting the panel power sequence state like Paulo wants to.
>
> Instead of adding yet another single-use callback shuffle things
> around:
> - Output handling code is responsible to reset/init all state on its
>   own at driver load time.
> - We call the reset functions much earlier, before we start using any
>   of the modeset code.
>
> Compared to Paulo's new ->resume callback the only difference in
> placement is that ->reset is still called without dev->struct_mutex
> held. Which is imo a feature.
>
> v2: Rebase on top of the now merge dinq.
>
> Cc: Paulo Zanoni <przanoni at gmail.com>
> Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>

Yeah, now I can use it on the eDP patch.

Reviewed-by: Paulo Zanoni <paulo.r.zanoni at intel.com>

> ---
>  drivers/gpu/drm/i915/i915_drv.c      | 2 +-
>  drivers/gpu/drm/i915/intel_crt.c     | 2 ++
>  drivers/gpu/drm/i915/intel_display.c | 1 -
>  3 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 95dcf9de5c80..ce55440b0526 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -643,6 +643,7 @@ static int __i915_drm_thaw(struct drm_device *dev, bool restore_gtt_mappings)
>         /* KMS EnterVT equivalent */
>         if (drm_core_check_feature(dev, DRIVER_MODESET)) {
>                 intel_init_pch_refclk(dev);
> +               drm_mode_config_reset(dev);
>
>                 mutex_lock(&dev->struct_mutex);
>
> @@ -655,7 +656,6 @@ static int __i915_drm_thaw(struct drm_device *dev, bool restore_gtt_mappings)
>                 intel_modeset_init_hw(dev);
>
>                 drm_modeset_lock_all(dev);
> -               drm_mode_config_reset(dev);
>                 intel_modeset_setup_hw_state(dev, true);
>                 drm_modeset_unlock_all(dev);
>
> diff --git a/drivers/gpu/drm/i915/intel_crt.c b/drivers/gpu/drm/i915/intel_crt.c
> index e2e39e65f109..5b444a4b625c 100644
> --- a/drivers/gpu/drm/i915/intel_crt.c
> +++ b/drivers/gpu/drm/i915/intel_crt.c
> @@ -857,4 +857,6 @@ void intel_crt_init(struct drm_device *dev)
>
>                 dev_priv->fdi_rx_config = I915_READ(_FDI_RXA_CTL) & fdi_config;
>         }
> +
> +       intel_crt_reset(connector);
>  }
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index dde9802033ec..0c9e249e52e6 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -11412,7 +11412,6 @@ void intel_modeset_gem_init(struct drm_device *dev)
>         intel_setup_overlay(dev);
>
>         mutex_lock(&dev->mode_config.mutex);
> -       drm_mode_config_reset(dev);
>         intel_modeset_setup_hw_state(dev, false);
>         mutex_unlock(&dev->mode_config.mutex);
>  }
> --
> 1.8.5.2
>



-- 
Paulo Zanoni



More information about the Intel-gfx mailing list