[PATCH v6 10/26] drm/i915/psr: Print Panel Replay status instead of frame lock status

Manna, Animesh animesh.manna at intel.com
Thu Jun 6 14:35:38 UTC 2024



> -----Original Message-----
> From: Hogander, Jouni <jouni.hogander at intel.com>
> Sent: Wednesday, June 5, 2024 3:56 PM
> To: intel-gfx at lists.freedesktop.org
> Cc: Manna, Animesh <animesh.manna at intel.com>; Kahola, Mika
> <mika.kahola at intel.com>; Hogander, Jouni <jouni.hogander at intel.com>
> Subject: [PATCH v6 10/26] drm/i915/psr: Print Panel Replay status instead of
> frame lock status
> 
> Currently Panel Replay status printout is printing frame lock status. It
> should print Panel Replay status instead. Panel Replay status register
> field follows PSR status register field. Use existing PSR code for that.
> 
> Fixes: ef75c25e8fed ("drm/i915/panelreplay: Debugfs support for panel
> replay")
> Signed-off-by: Jouni Högander <jouni.hogander at intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_psr.c | 22 +++++-----------------
>  1 file changed, 5 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_psr.c
> b/drivers/gpu/drm/i915/display/intel_psr.c
> index 7bdae0d0ea45..3530e5f44096 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.c
> +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> @@ -3579,16 +3579,9 @@ static int i915_psr_sink_status_show(struct
> seq_file *m, void *data)
>  		"reserved",
>  		"sink internal error",
>  	};
> -	static const char * const panel_replay_status[] = {
> -		"Sink device frame is locked to the Source device",
> -		"Sink device is coasting, using the VTotal target",
> -		"Sink device is governing the frame rate (frame rate unlock is
> granted)",
> -		"Sink device in the process of re-locking with the Source
> device",
> -	};
>  	const char *str;
>  	int ret;
>  	u8 status, error_status;
> -	u32 idx;
> 
>  	if (!(CAN_PSR(intel_dp) || CAN_PANEL_REPLAY(intel_dp))) {
>  		seq_puts(m, "PSR/Panel-Replay Unsupported\n");
> @@ -3602,16 +3595,11 @@ static int i915_psr_sink_status_show(struct
> seq_file *m, void *data)
>  	if (ret)
>  		return ret;
> 
> -	str = "unknown";
> -	if (intel_dp->psr.panel_replay_enabled) {
> -		idx = (status & DP_SINK_FRAME_LOCKED_MASK) >>
> DP_SINK_FRAME_LOCKED_SHIFT;
> -		if (idx < ARRAY_SIZE(panel_replay_status))
> -			str = panel_replay_status[idx];
> -	} else if (intel_dp->psr.enabled) {
> -		idx = status & DP_PSR_SINK_STATE_MASK;
> -		if (idx < ARRAY_SIZE(sink_status))
> -			str = sink_status[idx];
> -	}
> +	status &= DP_PSR_SINK_STATE_MASK;
> +	if (status < ARRAY_SIZE(sink_status))
> +		str = sink_status[status];
> +	else
> +		str = "unknown";

psr_get_status_and_error_status() is returning frame-locked-status for panel replay, Its different dpcd DP_SINK_DEVICE_PR_AND_FRAME_LOCK_STATUS, not same like psr.

Regards,
Animesh

> 
>  	seq_printf(m, "Sink %s status: 0x%x [%s]\n", psr_mode_str(intel_dp),
> status, str);
> 
> --
> 2.34.1



More information about the Intel-gfx mailing list