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

drm/i915: Refresh VLV/CHV PSR comments on HW PSR_state machine.

DK had pointed out a comment there was hard to understand, so I
tried to read back again and I couldn't understand that as well.
So let me re-phrase that in a way that anyone can understand
later, even myself.

Also fixed the comment block style.

v2: Accept DK's suggestion on PSR_state 2 and PSR_state 3 named
    as spec.

Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@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/20170912183059.5086-1-rodrigo.vivi@intel.com
parent 767a983a
...@@ -234,7 +234,7 @@ static void vlv_psr_enable_source(struct intel_dp *intel_dp, ...@@ -234,7 +234,7 @@ static void vlv_psr_enable_source(struct intel_dp *intel_dp,
struct drm_i915_private *dev_priv = to_i915(dig_port->base.base.dev); struct drm_i915_private *dev_priv = to_i915(dig_port->base.base.dev);
struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc); struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc);
/* Transition from PSR_state 0 to PSR_state 1, i.e. PSR Inactive */ /* Transition from PSR_state 0 (disabled) to PSR_state 1 (inactive) */
I915_WRITE(VLV_PSRCTL(crtc->pipe), I915_WRITE(VLV_PSRCTL(crtc->pipe),
VLV_EDP_PSR_MODE_SW_TIMER | VLV_EDP_PSR_MODE_SW_TIMER |
VLV_EDP_PSR_SRC_TRANSMITTER_STATE | VLV_EDP_PSR_SRC_TRANSMITTER_STATE |
...@@ -249,10 +249,11 @@ static void vlv_psr_activate(struct intel_dp *intel_dp) ...@@ -249,10 +249,11 @@ static void vlv_psr_activate(struct intel_dp *intel_dp)
struct drm_crtc *crtc = dig_port->base.base.crtc; struct drm_crtc *crtc = dig_port->base.base.crtc;
enum pipe pipe = to_intel_crtc(crtc)->pipe; enum pipe pipe = to_intel_crtc(crtc)->pipe;
/* Let's do the transition from PSR_state 1 to PSR_state 2 /*
* that is PSR transition to active - static frame transmission. * Let's do the transition from PSR_state 1 (inactive) to
* Then Hardware is responsible for the transition to PSR_state 3 * PSR_state 2 (transition to active - static frame transmission).
* that is PSR active - no Remote Frame Buffer (RFB) update. * Then Hardware is responsible for the transition to
* PSR_state 3 (active - no Remote Frame Buffer (RFB) update).
*/ */
I915_WRITE(VLV_PSRCTL(pipe), I915_READ(VLV_PSRCTL(pipe)) | I915_WRITE(VLV_PSRCTL(pipe), I915_READ(VLV_PSRCTL(pipe)) |
VLV_EDP_PSR_ACTIVE_ENTRY); VLV_EDP_PSR_ACTIVE_ENTRY);
...@@ -576,7 +577,7 @@ static void vlv_psr_disable(struct intel_dp *intel_dp, ...@@ -576,7 +577,7 @@ static void vlv_psr_disable(struct intel_dp *intel_dp,
uint32_t val; uint32_t val;
if (dev_priv->psr.active) { if (dev_priv->psr.active) {
/* Put VLV PSR back to PSR_state 0 that is PSR Disabled. */ /* Put VLV PSR back to PSR_state 0 (disabled). */
if (intel_wait_for_register(dev_priv, if (intel_wait_for_register(dev_priv,
VLV_PSRSTAT(crtc->pipe), VLV_PSRSTAT(crtc->pipe),
VLV_EDP_PSR_IN_TRANS, VLV_EDP_PSR_IN_TRANS,
...@@ -766,16 +767,20 @@ static void intel_psr_exit(struct drm_i915_private *dev_priv) ...@@ -766,16 +767,20 @@ static void intel_psr_exit(struct drm_i915_private *dev_priv)
} else { } else {
val = I915_READ(VLV_PSRCTL(pipe)); val = I915_READ(VLV_PSRCTL(pipe));
/* Here we do the transition from PSR_state 3 to PSR_state 5 /*
* directly once PSR State 4 that is active with single frame * Here we do the transition drirectly from
* update can be skipped. PSR_state 5 that is PSR exit then * PSR_state 3 (active - no Remote Frame Buffer (RFB) update) to
* Hardware is responsible to transition back to PSR_state 1 * PSR_state 5 (exit).
* that is PSR inactive. Same state after vlv_psr_enable_source. * PSR State 4 (active with single frame update) can be skipped.
* On PSR_state 5 (exit) Hardware is responsible to transition
* back to PSR_state 1 (inactive).
* Now we are at Same state after vlv_psr_enable_source.
*/ */
val &= ~VLV_EDP_PSR_ACTIVE_ENTRY; val &= ~VLV_EDP_PSR_ACTIVE_ENTRY;
I915_WRITE(VLV_PSRCTL(pipe), val); I915_WRITE(VLV_PSRCTL(pipe), val);
/* Send AUX wake up - Spec says after transitioning to PSR /*
* Send AUX wake up - Spec says after transitioning to PSR
* active we have to send AUX wake up by writing 01h in DPCD * active we have to send AUX wake up by writing 01h in DPCD
* 600h of sink device. * 600h of sink device.
* XXX: This might slow down the transition, but without this * XXX: This might slow down the transition, but without this
......
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