]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
drm/i915/psr: report live PSR2 State
authorNagaraju, Vathsala <vathsala.nagaraju@intel.com>
Fri, 6 Jan 2017 16:32:32 +0000 (22:02 +0530)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Fri, 13 Jan 2017 18:47:30 +0000 (10:47 -0800)
Reports  live state of PSR2 form PSR2_STATUS register.
bit field 31:28 gives the live state of PSR2.
It can be used to check if system is in deep sleep,
selective update or selective update standby.
During video play back, we can use this to check
if system is entering SU mode or not.
when system is in idle state, DEEP_SLEEP(8) must be entered.
When video playback is happening, system must be in
SLEEP(3 / selective update) or SU_STANDBY( 6 / selective update standby)

v2: (Rodrigo)
- Remove EDP_PSR2_STATUS_TG_ON=a ,instead use ARRAY_SIZE

Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Jim Bride <jim.bride@linux.intel.com>
Signed-off-by: Vathsala Nagaraju <vathsala.nagaraju@intel.com>
Signed-off-by: Patil Deepti <deepti.patil@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1483720352-24761-1-git-send-email-vathsala.nagaraju@intel.com
drivers/gpu/drm/i915/i915_debugfs.c
drivers/gpu/drm/i915/i915_reg.h

index e367f06f5883dadffaec97ab4c8d46ef5ec44084..32ede342ab94f55af01e85f8c34f894e0b8a2393 100644 (file)
@@ -2633,6 +2633,30 @@ static int i915_edp_psr_status(struct seq_file *m, void *data)
 
                seq_printf(m, "Performance_Counter: %u\n", psrperf);
        }
+       if (dev_priv->psr.psr2_support) {
+               static const char * const live_status[] = {
+                                                       "IDLE",
+                                                       "CAPTURE",
+                                                       "CAPTURE_FS",
+                                                       "SLEEP",
+                                                       "BUFON_FW",
+                                                       "ML_UP",
+                                                       "SU_STANDBY",
+                                                       "FAST_SLEEP",
+                                                       "DEEP_SLEEP",
+                                                       "BUF_ON",
+                                                       "TG_ON" };
+               u8 pos = (I915_READ(EDP_PSR2_STATUS_CTL) &
+                       EDP_PSR2_STATUS_STATE_MASK) >>
+                       EDP_PSR2_STATUS_STATE_SHIFT;
+
+               seq_printf(m, "PSR2_STATUS_EDP: %x\n",
+                       I915_READ(EDP_PSR2_STATUS_CTL));
+
+               if (pos < ARRAY_SIZE(live_status))
+               seq_printf(m, "PSR2 live state %s\n",
+                       live_status[pos]);
+       }
        mutex_unlock(&dev_priv->psr.lock);
 
        intel_runtime_pm_put(dev_priv);
index ca76887120ee86f4f24527c2653fd3dc0585223b..72f9f36ae5ce57c22edc1f31064433d635dd9a8a 100644 (file)
@@ -3621,6 +3621,7 @@ enum {
 
 #define EDP_PSR2_STATUS_CTL            _MMIO(0x6f940)
 #define EDP_PSR2_STATUS_STATE_MASK     (0xf<<28)
+#define EDP_PSR2_STATUS_STATE_SHIFT    28
 
 /* VGA port control */
 #define ADPA                   _MMIO(0x61100)