[Intel-gfx] [PATCH 29/31] drm/i915: Stop tracking last calculated Sink CRC.

Paulo Zanoni przanoni at gmail.com
Tue Nov 10 13:36:15 PST 2015


2015-11-05 16:50 GMT-02:00 Rodrigo Vivi <rodrigo.vivi at intel.com>:
> It was created at 'commit aabc95dcf20 (drm/i915: Dont -ETIMEDOUT
> on identical new and previous (count, crc).")' becase the counter
> wasn't reliable.
>
> Now that we properly wait for the counter to be reset we can rely
> a bit more in the counter.
>
> Also that patch stopped to return -ETIMEDOUT so the test case is
> unable to skip when it is unreliable and end up in many fails
> that should be skip instead.
>
> So, with the counter more reliable we can remove
> this hack that just makes things more confusing when test cases
> are really expecting the same CRC and let test case skip if that's
> not the case.
>

Much better this way.

Reviewed-by: Paulo Zanoni <paulo.r.zanoni at intel.com>

> Signed-off-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
> ---
>  drivers/gpu/drm/i915/intel_dp.c  | 39 +++++++++------------------------------
>  drivers/gpu/drm/i915/intel_drv.h |  2 --
>  2 files changed, 9 insertions(+), 32 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index 5d810cd..24d2bff 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -3864,8 +3864,6 @@ static int intel_dp_sink_crc_start(struct intel_dp *intel_dp)
>         if (!(buf & DP_TEST_CRC_SUPPORTED))
>                 return -ENOTTY;
>
> -       intel_dp->sink_crc.last_count = buf & DP_TEST_COUNT_MASK;
> -
>         if (drm_dp_dpcd_readb(&intel_dp->aux, DP_TEST_SINK, &buf) < 0)
>                 return -EIO;
>
> @@ -3890,7 +3888,6 @@ int intel_dp_sink_crc(struct intel_dp *intel_dp, u8 *crc)
>         u8 buf;
>         int count, ret;
>         int attempts = 6;
> -       bool old_equal_new;
>
>         ret = intel_dp_sink_crc_start(intel_dp);
>         if (ret)
> @@ -3906,35 +3903,17 @@ int intel_dp_sink_crc(struct intel_dp *intel_dp, u8 *crc)
>                 }
>                 count = buf & DP_TEST_COUNT_MASK;
>
> -               /*
> -                * Count might be reset during the loop. In this case
> -                * last known count needs to be reset as well.
> -                */
> -               if (count == 0)
> -                       intel_dp->sink_crc.last_count = 0;
> -
> -               if (drm_dp_dpcd_read(&intel_dp->aux, DP_TEST_CRC_R_CR, crc, 6) < 0) {
> -                       ret = -EIO;
> -                       goto stop;
> -               }
> -
> -               old_equal_new = (count == intel_dp->sink_crc.last_count &&
> -                                !memcmp(intel_dp->sink_crc.last_crc, crc,
> -                                        6 * sizeof(u8)));
> -
> -       } while (--attempts && (count == 0 || old_equal_new));
> -
> -       intel_dp->sink_crc.last_count = buf & DP_TEST_COUNT_MASK;
> -       memcpy(intel_dp->sink_crc.last_crc, crc, 6 * sizeof(u8));
> +       } while (--attempts && count == 0);
>
>         if (attempts == 0) {
> -               if (old_equal_new) {
> -                       DRM_DEBUG_KMS("Unreliable Sink CRC counter: Current returned CRC is identical to the previous one\n");
> -               } else {
> -                       DRM_ERROR("Panel is unable to calculate any CRC after 6 vblanks\n");
> -                       ret = -ETIMEDOUT;
> -                       goto stop;
> -               }
> +               DRM_ERROR("Panel is unable to calculate any CRC after 6 vblanks\n");
> +               ret = -ETIMEDOUT;
> +               goto stop;
> +       }
> +
> +       if (drm_dp_dpcd_read(&intel_dp->aux, DP_TEST_CRC_R_CR, crc, 6) < 0) {
> +               ret = -EIO;
> +               goto stop;
>         }
>
>  stop:
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index baa560c..de2a8ff 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -746,8 +746,6 @@ enum link_m_n_set {
>
>  struct sink_crc {
>         bool started;
> -       u8 last_crc[6];
> -       int last_count;
>  };
>
>  struct intel_dp {
> --
> 2.4.3
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx



-- 
Paulo Zanoni


More information about the Intel-gfx mailing list