[igt-dev] [PATCH i-g-t 2/2] tests/kms_psr_sink_crc: Test PSR source HW status.

Rodrigo Vivi rodrigo.vivi at intel.com
Tue Jul 3 00:17:44 UTC 2018


On Mon, Jul 02, 2018 at 04:35:59PM -0700, Dhinakaran Pandiyan wrote:
> We make use of the status MMIO to tell whether the HW entered and
> exited.
>
> Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan at intel.com>
> ---
>  tests/kms_psr_sink_crc.c | 25 +++++++++++++++++--------
>  1 file changed, 17 insertions(+), 8 deletions(-)
>
> diff --git a/tests/kms_psr_sink_crc.c b/tests/kms_psr_sink_crc.c
> index d36be7dd..08d0ce9a 100644
> --- a/tests/kms_psr_sink_crc.c
> +++ b/tests/kms_psr_sink_crc.c
> @@ -195,7 +195,7 @@ static bool sink_support(data_t *data)
>  		strstr(buf, "Sink_Support: yes\n");
>  }
>
> -static bool psr_enabled(data_t *data)
> +static bool psr_hw_enabled(data_t *data)
>  {
>  	char buf[512];
>
> @@ -205,15 +205,23 @@ static bool psr_enabled(data_t *data)
>  		strstr(buf, "HW Enabled & Active bit: yes\n");
>  }
>
> +static bool psr_hw_status(data_t *data, bool active)
> +{
> +	char buf[512];
> +
> +	igt_debugfs_read(data->drm_fd, "i915_edp_psr_status", buf);

this read will trigger aux read and consequently psr exit right?

drm_dp_dpcd_readb(aux, DP_PSR_STATUS, &val) == 1)
                        seq_printf(m, "Sink PSR status: 0x%x [%s]\n", val,

I believe we need to split the debugfs interfaces to handle the mmio bits
without touching the aux ones what by itself triggers the psr exit


> +
> +	/* TODO: Update the checks for PSR2 */

hm... probably better to find a psr2 bit already here....

> +	return strstr(buf, "Source PSR status:") &&
> +	       (active ? !!strstr(buf, "SRDENT") : !strstr(buf, "SRDENT"));
> +}
> +
>  static bool wait_psr_entry(data_t *data)
>  {
> -	int timeout = 5;
> -	while (timeout--) {
> -		if (psr_enabled(data))
> -			return true;
> -		sleep(1);
> -	}
> -	return false;
> +	if (!psr_hw_enabled(data))
> +		return false;
> +
> +	return igt_wait(psr_hw_status(data, true), 500, 1);
>  }
>
>  static inline void manual(const char *expected)
> @@ -303,6 +311,7 @@ static void run_test(data_t *data)
>  		expected = "screen GREEN";
>  		break;
>  	}
> +	igt_assert(psr_hw_status(data, false));
>  	manual(expected);
>  }
>
> --
> 2.14.1
>


More information about the igt-dev mailing list