[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