Commit 0f328da6 authored by Rodrigo Vivi's avatar Rodrigo Vivi

drm/i915/psr: Avoid any PSR stuff on platforms without support.

We really don't want to setup vfuncs and lock mutexes on
platforms that has no support to PSR.

Also we know what platforms they are so let's do it quietly.

Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Cc: Vathsala Nagaraju <vathsala.nagaraju@intel.com>
Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: default avatarDhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20170907230041.22978-2-rodrigo.vivi@intel.com
parent 37875d6b
...@@ -496,10 +496,8 @@ void intel_psr_enable(struct intel_dp *intel_dp, ...@@ -496,10 +496,8 @@ void intel_psr_enable(struct intel_dp *intel_dp,
enum transcoder cpu_transcoder = crtc_state->cpu_transcoder; enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
u32 chicken; u32 chicken;
if (!HAS_PSR(dev_priv)) { if (!HAS_PSR(dev_priv))
DRM_DEBUG_KMS("PSR not supported on this platform\n");
return; return;
}
if (!is_edp_psr(intel_dp)) { if (!is_edp_psr(intel_dp)) {
DRM_DEBUG_KMS("PSR not supported by this panel\n"); DRM_DEBUG_KMS("PSR not supported by this panel\n");
...@@ -678,6 +676,9 @@ void intel_psr_disable(struct intel_dp *intel_dp, ...@@ -678,6 +676,9 @@ void intel_psr_disable(struct intel_dp *intel_dp,
struct drm_device *dev = intel_dig_port->base.base.dev; struct drm_device *dev = intel_dig_port->base.base.dev;
struct drm_i915_private *dev_priv = to_i915(dev); struct drm_i915_private *dev_priv = to_i915(dev);
if (!HAS_PSR(dev_priv))
return;
mutex_lock(&dev_priv->psr.lock); mutex_lock(&dev_priv->psr.lock);
if (!dev_priv->psr.enabled) { if (!dev_priv->psr.enabled) {
mutex_unlock(&dev_priv->psr.lock); mutex_unlock(&dev_priv->psr.lock);
...@@ -829,6 +830,9 @@ void intel_psr_single_frame_update(struct drm_i915_private *dev_priv, ...@@ -829,6 +830,9 @@ void intel_psr_single_frame_update(struct drm_i915_private *dev_priv,
enum pipe pipe; enum pipe pipe;
u32 val; u32 val;
if (!HAS_PSR(dev_priv))
return;
/* /*
* Single frame update is already supported on BDW+ but it requires * Single frame update is already supported on BDW+ but it requires
* many W/A and it isn't really needed. * many W/A and it isn't really needed.
...@@ -875,6 +879,9 @@ void intel_psr_invalidate(struct drm_i915_private *dev_priv, ...@@ -875,6 +879,9 @@ void intel_psr_invalidate(struct drm_i915_private *dev_priv,
struct drm_crtc *crtc; struct drm_crtc *crtc;
enum pipe pipe; enum pipe pipe;
if (!HAS_PSR(dev_priv))
return;
mutex_lock(&dev_priv->psr.lock); mutex_lock(&dev_priv->psr.lock);
if (!dev_priv->psr.enabled) { if (!dev_priv->psr.enabled) {
mutex_unlock(&dev_priv->psr.lock); mutex_unlock(&dev_priv->psr.lock);
...@@ -912,6 +919,9 @@ void intel_psr_flush(struct drm_i915_private *dev_priv, ...@@ -912,6 +919,9 @@ void intel_psr_flush(struct drm_i915_private *dev_priv,
struct drm_crtc *crtc; struct drm_crtc *crtc;
enum pipe pipe; enum pipe pipe;
if (!HAS_PSR(dev_priv))
return;
mutex_lock(&dev_priv->psr.lock); mutex_lock(&dev_priv->psr.lock);
if (!dev_priv->psr.enabled) { if (!dev_priv->psr.enabled) {
mutex_unlock(&dev_priv->psr.lock); mutex_unlock(&dev_priv->psr.lock);
...@@ -944,6 +954,9 @@ void intel_psr_flush(struct drm_i915_private *dev_priv, ...@@ -944,6 +954,9 @@ void intel_psr_flush(struct drm_i915_private *dev_priv,
*/ */
void intel_psr_init(struct drm_i915_private *dev_priv) void intel_psr_init(struct drm_i915_private *dev_priv)
{ {
if (!HAS_PSR(dev_priv))
return;
dev_priv->psr_mmio_base = IS_HASWELL(dev_priv) ? dev_priv->psr_mmio_base = IS_HASWELL(dev_priv) ?
HSW_EDP_PSR_BASE : BDW_EDP_PSR_BASE; HSW_EDP_PSR_BASE : BDW_EDP_PSR_BASE;
......
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