Lets make PSR register macros explicit about what transcoder is used
to calculate the register offset.

Cc: Dhinakaran Pandiyan <dhinakaran.pandi...@intel.com>
Cc: Rodrigo Vivi <rodrigo.v...@intel.com>
Signed-off-by: José Roberto de Souza <jose.so...@intel.com>
---
 drivers/gpu/drm/i915/i915_debugfs.c | 18 ++++++----
 drivers/gpu/drm/i915/i915_reg.h     | 26 +++++++-------
 drivers/gpu/drm/i915/intel_psr.c    | 55 +++++++++++++++++------------
 3 files changed, 56 insertions(+), 43 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_debugfs.c 
b/drivers/gpu/drm/i915/i915_debugfs.c
index 77b3252bdb2e..4f1f460f30fc 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -2470,7 +2470,7 @@ psr_source_status(struct drm_i915_private *dev_priv, 
struct seq_file *m)
                        "BUF_ON",
                        "TG_ON"
                };
-               val = I915_READ(EDP_PSR2_STATUS);
+               val = I915_READ(EDP_PSR2_STATUS(dev_priv->psr.transcoder));
                status_val = (val & EDP_PSR2_STATUS_STATE_MASK) >>
                              EDP_PSR2_STATUS_STATE_SHIFT;
                if (status_val < ARRAY_SIZE(live_status))
@@ -2486,7 +2486,7 @@ psr_source_status(struct drm_i915_private *dev_priv, 
struct seq_file *m)
                        "SRDOFFACK",
                        "SRDENT_ON",
                };
-               val = I915_READ(EDP_PSR_STATUS);
+               val = I915_READ(EDP_PSR_STATUS(dev_priv->psr.transcoder));
                status_val = (val & EDP_PSR_STATUS_STATE_MASK) >>
                              EDP_PSR_STATUS_STATE_SHIFT;
                if (status_val < ARRAY_SIZE(live_status))
@@ -2529,10 +2529,10 @@ static int i915_edp_psr_status(struct seq_file *m, void 
*data)
                goto unlock;
 
        if (psr->psr2_enabled) {
-               val = I915_READ(EDP_PSR2_CTL);
+               val = I915_READ(EDP_PSR2_CTL(dev_priv->psr.transcoder));
                enabled = val & EDP_PSR2_ENABLE;
        } else {
-               val = I915_READ(EDP_PSR_CTL);
+               val = I915_READ(EDP_PSR_CTL(dev_priv->psr.transcoder));
                enabled = val & EDP_PSR_ENABLE;
        }
        seq_printf(m, "Source PSR ctl: %s [0x%08x]\n",
@@ -2545,7 +2545,8 @@ static int i915_edp_psr_status(struct seq_file *m, void 
*data)
         * SKL+ Perf counter is reset to 0 everytime DC state is entered
         */
        if (IS_HASWELL(dev_priv) || IS_BROADWELL(dev_priv)) {
-               val = I915_READ(EDP_PSR_PERF_CNT) & EDP_PSR_PERF_CNT_MASK;
+               val = I915_READ(EDP_PSR_PERF_CNT(dev_priv->psr.transcoder));
+               val &= EDP_PSR_PERF_CNT_MASK;
                seq_printf(m, "Performance counter: %u\n", val);
        }
 
@@ -2563,8 +2564,11 @@ static int i915_edp_psr_status(struct seq_file *m, void 
*data)
                 * Reading all 3 registers before hand to minimize crossing a
                 * frame boundary between register reads
                 */
-               for (frame = 0; frame < PSR2_SU_STATUS_FRAMES; frame += 3)
-                       su_frames_val[frame / 3] = 
I915_READ(PSR2_SU_STATUS(frame));
+               for (frame = 0; frame < PSR2_SU_STATUS_FRAMES; frame += 3) {
+                       val = I915_READ(PSR2_SU_STATUS(dev_priv->psr.transcoder,
+                                                      frame));
+                       su_frames_val[frame / 3] = val;
+               }
 
                seq_puts(m, "Frame:\tPSR2 SU blocks:\n");
 
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 094bd19abb35..e26afbfb6fae 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -4216,12 +4216,12 @@ enum {
 #define HSW_EDP_PSR_BASE       0x64000
 
 /* PSR registers on HSW is not relative to eDP transcoder */
-#define _TRANS2_PSR(reg)       (_TRANS2(dev_priv->psr.transcoder, (reg)) - 
dev_priv->psr.mmio_base_adjust)
-#define _MMIO_TRANS2_PSR(reg)  _MMIO(_TRANS2_PSR(reg))
+#define _TRANS2_PSR(trans, reg)                (_TRANS2(trans, (reg)) - 
dev_priv->psr.mmio_base_adjust)
+#define _MMIO_TRANS2_PSR(trans, reg)   _MMIO(_TRANS2_PSR(trans, reg))
 
 #define _SRD_CTL_A                             0x60800
 #define _SRD_CTL_EDP                           0x6F800
-#define EDP_PSR_CTL                            _MMIO_TRANS2_PSR(_SRD_CTL_A)
+#define EDP_PSR_CTL(trans)                     _MMIO_TRANS2_PSR(trans, 
_SRD_CTL_A)
 #define   EDP_PSR_ENABLE                       (1 << 31)
 #define   BDW_PSR_SINGLE_FRAME                 (1 << 30)
 #define   EDP_PSR_RESTORE_PSR_ACTIVE_CTX_MASK  (1 << 29) /* SW can't modify */
@@ -4256,7 +4256,7 @@ enum {
 
 #define _SRD_AUX_CTL_A                         0x60810
 #define _SRD_AUX_CTL_EDP                       0x6F810
-#define EDP_PSR_AUX_CTL                                
_MMIO_TRANS2_PSR(_SRD_AUX_CTL_A)
+#define EDP_PSR_AUX_CTL(trans)                 _MMIO_TRANS2_PSR(trans, 
_SRD_AUX_CTL_A)
 #define   EDP_PSR_AUX_CTL_TIME_OUT_MASK                (3 << 26)
 #define   EDP_PSR_AUX_CTL_MESSAGE_SIZE_MASK    (0x1f << 20)
 #define   EDP_PSR_AUX_CTL_PRECHARGE_2US_MASK   (0xf << 16)
@@ -4265,11 +4265,11 @@ enum {
 
 #define _SRD_AUX_DATA_A                                0x60814
 #define _SRD_AUX_DATA_EDP                      0x6F814
-#define EDP_PSR_AUX_DATA(i)                    
_MMIO(_TRANS2_PSR(_SRD_AUX_DATA_A) + (i) + 4) /* 5 registers */
+#define EDP_PSR_AUX_DATA(trans, i)             _MMIO(_TRANS2_PSR(trans, 
_SRD_AUX_DATA_A) + (i) + 4) /* 5 registers */
 
 #define _SRD_STATUS_A                          0x60840
 #define _SRD_STATUS_EDP                                0x6F840
-#define EDP_PSR_STATUS                         _MMIO_TRANS2_PSR(_SRD_STATUS_A)
+#define EDP_PSR_STATUS(trans)                  _MMIO_TRANS2_PSR(trans, 
_SRD_STATUS_A)
 #define   EDP_PSR_STATUS_STATE_MASK            (7 << 29)
 #define   EDP_PSR_STATUS_STATE_SHIFT           29
 #define   EDP_PSR_STATUS_STATE_IDLE            (0 << 29)
@@ -4296,13 +4296,13 @@ enum {
 
 #define _SRD_PERF_CNT_A                        0x60844
 #define _SRD_PERF_CNT_EDP              0x6F844
-#define EDP_PSR_PERF_CNT               _MMIO_TRANS2_PSR(_SRD_PERF_CNT_A)
+#define EDP_PSR_PERF_CNT(trans)                _MMIO_TRANS2_PSR(trans, 
_SRD_PERF_CNT_A)
 #define   EDP_PSR_PERF_CNT_MASK                0xffffff
 
 /* PSR_MASK on SKL+ */
 #define _SRD_DEBUG_A                           0x60860
 #define _SRD_DEBUG_EDP                         0x6F860
-#define EDP_PSR_DEBUG                          _MMIO_TRANS2_PSR(_SRD_DEBUG_A)
+#define EDP_PSR_DEBUG(trans)                   _MMIO_TRANS2_PSR(trans, 
_SRD_DEBUG_A)
 #define   EDP_PSR_DEBUG_MASK_MAX_SLEEP         (1 << 28)
 #define   EDP_PSR_DEBUG_MASK_LPSP              (1 << 27)
 #define   EDP_PSR_DEBUG_MASK_MEMUP             (1 << 26)
@@ -4312,7 +4312,7 @@ enum {
 
 #define _PSR2_CTL_A                    0x60900
 #define _PSR2_CTL_EDP                  0x6F900
-#define EDP_PSR2_CTL                   _MMIO_TRANS2_PSR(_PSR2_CTL_A)
+#define EDP_PSR2_CTL(trans)            _MMIO_TRANS2_PSR(trans, _PSR2_CTL_A)
 #define   EDP_PSR2_ENABLE              (1 << 31)
 #define   EDP_SU_TRACK_ENABLE          (1 << 30)
 #define   EDP_Y_COORDINATE_VALID       (1 << 26) /* GLK and CNL+ */
@@ -4332,7 +4332,7 @@ enum {
 
 #define _PSR_EVENT_A                           0x60848
 #define _PSR_EVENT_EDP                         0x6F848
-#define PSR_EVENT                              _MMIO_TRANS2_PSR(_PSR_EVENT_A)
+#define PSR_EVENT(trans)                       _MMIO_TRANS2_PSR(trans, 
_PSR_EVENT_A)
 #define  PSR_EVENT_PSR2_WD_TIMER_EXPIRE                (1 << 17)
 #define  PSR_EVENT_PSR2_DISABLED               (1 << 16)
 #define  PSR_EVENT_SU_DIRTY_FIFO_UNDERRUN      (1 << 15)
@@ -4352,14 +4352,14 @@ enum {
 
 #define _PSR2_STATUS_A                 0x60940
 #define _PSR2_STATUS_EDP               0x6F940
-#define EDP_PSR2_STATUS                        _MMIO_TRANS2_PSR(_PSR2_STATUS_A)
+#define EDP_PSR2_STATUS(trans)         _MMIO_TRANS2_PSR(trans, _PSR2_STATUS_A)
 #define EDP_PSR2_STATUS_STATE_MASK     (0xf << 28)
 #define EDP_PSR2_STATUS_STATE_SHIFT    28
 
 #define _PSR2_SU_STATUS_A              0x60914
 #define _PSR2_SU_STATUS_EDP            0x6F914
-#define _PSR2_SU_STATUS(index)         _MMIO(_TRANS2_PSR(_PSR2_SU_STATUS_A) + 
(index) * 4)
-#define PSR2_SU_STATUS(frame)          (_PSR2_SU_STATUS((frame) / 3))
+#define _PSR2_SU_STATUS(trans, index)  _MMIO(_TRANS2_PSR(trans, 
_PSR2_SU_STATUS_A) + (index) * 4)
+#define PSR2_SU_STATUS(trans, frame)           (_PSR2_SU_STATUS(trans, (frame) 
/ 3))
 #define PSR2_SU_STATUS_SHIFT(frame)    (((frame) % 3) * 10)
 #define PSR2_SU_STATUS_MASK(frame)     (0x3ff << PSR2_SU_STATUS_SHIFT(frame))
 #define PSR2_SU_STATUS_FRAMES          8
diff --git a/drivers/gpu/drm/i915/intel_psr.c b/drivers/gpu/drm/i915/intel_psr.c
index 4e3d74d1b227..bbd7ccae90e6 100644
--- a/drivers/gpu/drm/i915/intel_psr.c
+++ b/drivers/gpu/drm/i915/intel_psr.c
@@ -171,10 +171,10 @@ void intel_psr_irq_handler(struct drm_i915_private 
*dev_priv, u32 psr_iir)
                              transcoder_name(TRANSCODER_EDP));
 
                if (INTEL_GEN(dev_priv) >= 9) {
-                       u32 val = I915_READ(PSR_EVENT);
+                       u32 val = 
I915_READ(PSR_EVENT(dev_priv->psr.transcoder));
                        bool psr2_enabled = dev_priv->psr.psr2_enabled;
 
-                       I915_WRITE(PSR_EVENT, val);
+                       I915_WRITE(PSR_EVENT(dev_priv->psr.transcoder), val);
                        psr_event_print(val, psr2_enabled);
                }
        }
@@ -350,7 +350,7 @@ static void hsw_psr_setup_aux(struct intel_dp *intel_dp)
 
        BUILD_BUG_ON(sizeof(aux_msg) > 20);
        for (i = 0; i < sizeof(aux_msg); i += 4)
-               I915_WRITE(EDP_PSR_AUX_DATA(i >> 2),
+               I915_WRITE(EDP_PSR_AUX_DATA(dev_priv->psr.transcoder, i >> 2),
                           intel_dp_pack_aux(&aux_msg[i], sizeof(aux_msg) - i));
 
        aux_clock_divider = intel_dp->get_aux_clock_divider(intel_dp, 0);
@@ -361,7 +361,7 @@ static void hsw_psr_setup_aux(struct intel_dp *intel_dp)
 
        /* Select only valid bits for SRD_AUX_CTL */
        aux_ctl &= psr_aux_mask;
-       I915_WRITE(EDP_PSR_AUX_CTL, aux_ctl);
+       I915_WRITE(EDP_PSR_AUX_CTL(dev_priv->psr.transcoder), aux_ctl);
 }
 
 static void intel_psr_enable_sink(struct intel_dp *intel_dp)
@@ -451,8 +451,9 @@ static void hsw_activate_psr1(struct intel_dp *intel_dp)
        if (INTEL_GEN(dev_priv) >= 8)
                val |= EDP_PSR_CRC_ENABLE;
 
-       val |= I915_READ(EDP_PSR_CTL) & EDP_PSR_RESTORE_PSR_ACTIVE_CTX_MASK;
-       I915_WRITE(EDP_PSR_CTL, val);
+       val |= (I915_READ(EDP_PSR_CTL(dev_priv->psr.transcoder)) &
+               EDP_PSR_RESTORE_PSR_ACTIVE_CTX_MASK);
+       I915_WRITE(EDP_PSR_CTL(dev_priv->psr.transcoder), val);
 }
 
 static void hsw_activate_psr2(struct intel_dp *intel_dp)
@@ -488,9 +489,9 @@ static void hsw_activate_psr2(struct intel_dp *intel_dp)
         * PSR2 HW is incorrectly using EDP_PSR_TP1_TP3_SEL and BSpec is
         * recommending keep this bit unset while PSR2 is enabled.
         */
-       I915_WRITE(EDP_PSR_CTL, 0);
+       I915_WRITE(EDP_PSR_CTL(dev_priv->psr.transcoder), 0);
 
-       I915_WRITE(EDP_PSR2_CTL, val);
+       I915_WRITE(EDP_PSR2_CTL(dev_priv->psr.transcoder), val);
 }
 
 static bool intel_psr2_config_valid(struct intel_dp *intel_dp,
@@ -609,8 +610,8 @@ static void intel_psr_activate(struct intel_dp *intel_dp)
        struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
 
        if (INTEL_GEN(dev_priv) >= 9)
-               WARN_ON(I915_READ(EDP_PSR2_CTL) & EDP_PSR2_ENABLE);
-       WARN_ON(I915_READ(EDP_PSR_CTL) & EDP_PSR_ENABLE);
+               WARN_ON(I915_READ(EDP_PSR2_CTL(dev_priv->psr.transcoder)) & 
EDP_PSR2_ENABLE);
+       WARN_ON(I915_READ(EDP_PSR_CTL(dev_priv->psr.transcoder)) & 
EDP_PSR_ENABLE);
        WARN_ON(dev_priv->psr.active);
        lockdep_assert_held(&dev_priv->psr.lock);
 
@@ -658,7 +659,7 @@ static void intel_psr_enable_source(struct intel_dp 
*intel_dp,
        if (INTEL_GEN(dev_priv) < 11)
                mask |= EDP_PSR_DEBUG_MASK_DISP_REG_WRITE;
 
-       I915_WRITE(EDP_PSR_DEBUG, mask);
+       I915_WRITE(EDP_PSR_DEBUG(dev_priv->psr.transcoder), mask);
 }
 
 static void intel_psr_enable_locked(struct drm_i915_private *dev_priv,
@@ -728,20 +729,27 @@ static void intel_psr_exit(struct drm_i915_private 
*dev_priv)
        u32 val;
 
        if (!dev_priv->psr.active) {
-               if (INTEL_GEN(dev_priv) >= 9)
-                       WARN_ON(I915_READ(EDP_PSR2_CTL) & EDP_PSR2_ENABLE);
-               WARN_ON(I915_READ(EDP_PSR_CTL) & EDP_PSR_ENABLE);
+               if (INTEL_GEN(dev_priv) >= 9) {
+                       val = I915_READ(EDP_PSR2_CTL(dev_priv->psr.transcoder));
+                       WARN_ON(val & EDP_PSR2_ENABLE);
+               }
+
+               val = I915_READ(EDP_PSR_CTL(dev_priv->psr.transcoder));
+               WARN_ON(val & EDP_PSR_ENABLE);
+
                return;
        }
 
        if (dev_priv->psr.psr2_enabled) {
-               val = I915_READ(EDP_PSR2_CTL);
+               val = I915_READ(EDP_PSR2_CTL(dev_priv->psr.transcoder));
                WARN_ON(!(val & EDP_PSR2_ENABLE));
-               I915_WRITE(EDP_PSR2_CTL, val & ~EDP_PSR2_ENABLE);
+               val &= ~EDP_PSR2_ENABLE;
+               I915_WRITE(EDP_PSR2_CTL(dev_priv->psr.transcoder), val);
        } else {
-               val = I915_READ(EDP_PSR_CTL);
+               val = I915_READ(EDP_PSR_CTL(dev_priv->psr.transcoder));
                WARN_ON(!(val & EDP_PSR_ENABLE));
-               I915_WRITE(EDP_PSR_CTL, val & ~EDP_PSR_ENABLE);
+               val &= ~EDP_PSR_ENABLE;
+               I915_WRITE(EDP_PSR_CTL(dev_priv->psr.transcoder), val);
        }
        dev_priv->psr.active = false;
 }
@@ -763,10 +771,10 @@ static void intel_psr_disable_locked(struct intel_dp 
*intel_dp)
        intel_psr_exit(dev_priv);
 
        if (dev_priv->psr.psr2_enabled) {
-               psr_status = EDP_PSR2_STATUS;
+               psr_status = EDP_PSR2_STATUS(dev_priv->psr.transcoder);
                psr_status_mask = EDP_PSR2_STATUS_STATE_MASK;
        } else {
-               psr_status = EDP_PSR_STATUS;
+               psr_status = EDP_PSR_STATUS(dev_priv->psr.transcoder);
                psr_status_mask = EDP_PSR_STATUS_STATE_MASK;
        }
 
@@ -893,7 +901,8 @@ int intel_psr_wait_for_idle(const struct intel_crtc_state 
*new_crtc_state,
         * defensive enough to cover everything.
         */
 
-       return __intel_wait_for_register(&dev_priv->uncore, EDP_PSR_STATUS,
+       return __intel_wait_for_register(&dev_priv->uncore,
+                                        
EDP_PSR_STATUS(dev_priv->psr.transcoder),
                                         EDP_PSR_STATUS_STATE_MASK,
                                         EDP_PSR_STATUS_STATE_IDLE, 2, 50,
                                         out_value);
@@ -909,10 +918,10 @@ static bool __psr_wait_for_idle_locked(struct 
drm_i915_private *dev_priv)
                return false;
 
        if (dev_priv->psr.psr2_enabled) {
-               reg = EDP_PSR2_STATUS;
+               reg = EDP_PSR2_STATUS(dev_priv->psr.transcoder);
                mask = EDP_PSR2_STATUS_STATE_MASK;
        } else {
-               reg = EDP_PSR_STATUS;
+               reg = EDP_PSR_STATUS(dev_priv->psr.transcoder);
                mask = EDP_PSR_STATUS_STATE_MASK;
        }
 
-- 
2.21.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to