diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2012-05-09 06:56:28 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-05-19 16:38:29 -0400 |
commit | 1833b134454d5300d8a9d07b78876a20395f01a9 (patch) | |
tree | 5a55265e3a927613c265c28a6fdc0037a139a431 /drivers/gpu/drm/i915/intel_display.c | |
parent | 0e43406bcc1868a316eea6012a0a09d992c53521 (diff) |
drm/i915: gen6_enable_rps() wants to be called after ring initialisation
Currently we call gen6_enable_rps() (which writes into the per-ring
register mmio space) from intel_modeset_init_hw() which is called before
we initialise the rings. If we defer intel_modeset_init_hw() until
afterwards (in the intel_modeset_gem_init() phase) all is well.
v2: Rectify ordering of gem vs display HW init upon resume. (Daniel)
v3: Fix up locking. (Paulo)
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
[danvet: Smash Paulo's locking fix onto Chris' patch.]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_display.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 1cbe2680fdec..42b9e20782b0 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c | |||
@@ -6658,6 +6658,7 @@ void intel_modeset_init_hw(struct drm_device *dev) | |||
6658 | 6658 | ||
6659 | if (IS_IRONLAKE_M(dev)) { | 6659 | if (IS_IRONLAKE_M(dev)) { |
6660 | ironlake_enable_drps(dev); | 6660 | ironlake_enable_drps(dev); |
6661 | ironlake_enable_rc6(dev); | ||
6661 | intel_init_emon(dev); | 6662 | intel_init_emon(dev); |
6662 | } | 6663 | } |
6663 | 6664 | ||
@@ -6719,8 +6720,6 @@ void intel_modeset_init(struct drm_device *dev) | |||
6719 | i915_disable_vga(dev); | 6720 | i915_disable_vga(dev); |
6720 | intel_setup_outputs(dev); | 6721 | intel_setup_outputs(dev); |
6721 | 6722 | ||
6722 | intel_modeset_init_hw(dev); | ||
6723 | |||
6724 | INIT_WORK(&dev_priv->idle_work, intel_idle_update); | 6723 | INIT_WORK(&dev_priv->idle_work, intel_idle_update); |
6725 | setup_timer(&dev_priv->idle_timer, intel_gpu_idle_timer, | 6724 | setup_timer(&dev_priv->idle_timer, intel_gpu_idle_timer, |
6726 | (unsigned long)dev); | 6725 | (unsigned long)dev); |
@@ -6728,8 +6727,7 @@ void intel_modeset_init(struct drm_device *dev) | |||
6728 | 6727 | ||
6729 | void intel_modeset_gem_init(struct drm_device *dev) | 6728 | void intel_modeset_gem_init(struct drm_device *dev) |
6730 | { | 6729 | { |
6731 | if (IS_IRONLAKE_M(dev)) | 6730 | intel_modeset_init_hw(dev); |
6732 | ironlake_enable_rc6(dev); | ||
6733 | 6731 | ||
6734 | intel_setup_overlay(dev); | 6732 | intel_setup_overlay(dev); |
6735 | } | 6733 | } |