Commit b07ea0fa authored by Paulo Zanoni's avatar Paulo Zanoni Committed by Maarten Lankhorst

drm/i915: refactor FBC deactivation at init

Make sure we deactivate FBC at intel_fbc_init(), so we can remove the
call from intel_display.c. Currently we only have the "enabled"
software state, but later we'll have both "enabled" and "active", and
we'll add assertions to them, so just calling intel_fbc_disable() from
intel_modeset_init() won't work. It's better to make sure
intel_fbc_init() already puts the hardware in the expected state, so
we can put nice assertions in the other functions.

v2: Keep/improve the comment (Chris).
v3: Improve the commit message a little bit.
Signed-off-by: default avatarPaulo Zanoni <paulo.r.zanoni@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1446664257-32012-9-git-send-email-paulo.r.zanoni@intel.comSigned-off-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
parent c68ae339
...@@ -15040,9 +15040,6 @@ void intel_modeset_init(struct drm_device *dev) ...@@ -15040,9 +15040,6 @@ void intel_modeset_init(struct drm_device *dev)
i915_disable_vga(dev); i915_disable_vga(dev);
intel_setup_outputs(dev); intel_setup_outputs(dev);
/* Just in case the BIOS is doing something questionable. */
intel_fbc_disable(dev_priv);
drm_modeset_lock_all(dev); drm_modeset_lock_all(dev);
intel_modeset_setup_hw_state(dev); intel_modeset_setup_hw_state(dev);
drm_modeset_unlock_all(dev); drm_modeset_unlock_all(dev);
......
...@@ -1038,9 +1038,9 @@ void intel_fbc_init(struct drm_i915_private *dev_priv) ...@@ -1038,9 +1038,9 @@ void intel_fbc_init(struct drm_i915_private *dev_priv)
enum pipe pipe; enum pipe pipe;
mutex_init(&dev_priv->fbc.lock); mutex_init(&dev_priv->fbc.lock);
dev_priv->fbc.enabled = false;
if (!HAS_FBC(dev_priv)) { if (!HAS_FBC(dev_priv)) {
dev_priv->fbc.enabled = false;
dev_priv->fbc.no_fbc_reason = "unsupported by this chipset"; dev_priv->fbc.no_fbc_reason = "unsupported by this chipset";
return; return;
} }
...@@ -1074,5 +1074,9 @@ void intel_fbc_init(struct drm_i915_private *dev_priv) ...@@ -1074,5 +1074,9 @@ void intel_fbc_init(struct drm_i915_private *dev_priv)
I915_WRITE(FBC_CONTROL, 500 << FBC_CTL_INTERVAL_SHIFT); I915_WRITE(FBC_CONTROL, 500 << FBC_CTL_INTERVAL_SHIFT);
} }
dev_priv->fbc.enabled = dev_priv->fbc.fbc_enabled(dev_priv); /* We still don't have any sort of hardware state readout for FBC, so
* disable it in case the BIOS enabled it to make sure software matches
* the hardware state. */
if (dev_priv->fbc.fbc_enabled(dev_priv))
dev_priv->fbc.disable_fbc(dev_priv);
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment