|
@@ -2559,6 +2559,29 @@ DEFINE_SIMPLE_ATTRIBUTE(i915_guc_log_control_fops,
|
|
|
i915_guc_log_control_get, i915_guc_log_control_set,
|
|
|
"%lld\n");
|
|
|
|
|
|
+static const char *psr2_live_status(u32 val)
|
|
|
+{
|
|
|
+ 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"
|
|
|
+ };
|
|
|
+
|
|
|
+ val = (val & EDP_PSR2_STATUS_STATE_MASK) >> EDP_PSR2_STATUS_STATE_SHIFT;
|
|
|
+ if (val < ARRAY_SIZE(live_status))
|
|
|
+ return live_status[val];
|
|
|
+
|
|
|
+ return "unknown";
|
|
|
+}
|
|
|
+
|
|
|
static int i915_edp_psr_status(struct seq_file *m, void *data)
|
|
|
{
|
|
|
struct drm_i915_private *dev_priv = node_to_i915(m->private);
|
|
@@ -2634,28 +2657,10 @@ 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]);
|
|
|
+ u32 psr2 = I915_READ(EDP_PSR2_STATUS_CTL);
|
|
|
+
|
|
|
+ seq_printf(m, "EDP_PSR2_STATUS_CTL: %x [%s]\n",
|
|
|
+ psr2, psr2_live_status(psr2));
|
|
|
}
|
|
|
mutex_unlock(&dev_priv->psr.lock);
|
|
|
|