When BKSV is invalid, to mitigate any communication errors, BKSV is read once again. Signed-off-by: Ramalingam C <ramalingam.c@xxxxxxxxx> --- drivers/gpu/drm/i915/intel_hdcp.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_hdcp.c b/drivers/gpu/drm/i915/intel_hdcp.c index b3f407cef8b0..fa2e7c727d00 100644 --- a/drivers/gpu/drm/i915/intel_hdcp.c +++ b/drivers/gpu/drm/i915/intel_hdcp.c @@ -401,7 +401,7 @@ static int intel_hdcp_auth(struct intel_connector *connector) struct drm_i915_private *dev_priv; enum port port; unsigned long r0_prime_gen_start; - int ret, i; + int ret, i, retry = 1; union { u32 reg[2]; u8 shim[DRM_HDCP_AN_LEN]; @@ -443,11 +443,16 @@ static int intel_hdcp_auth(struct intel_connector *connector) r0_prime_gen_start = jiffies; memset(&bksv, 0, sizeof(bksv)); - ret = shim->read_bksv(intel_dig_port, bksv.shim); + + do { + ret = shim->read_bksv(intel_dig_port, bksv.shim); + if (!ret) + if (!intel_hdcp_is_ksv_valid(bksv.shim)) + ret = -ENODEV; + } while (ret && retry--); + if (ret) return ret; - else if (!intel_hdcp_is_ksv_valid(bksv.shim)) - return -ENODEV; I915_WRITE(PORT_HDCP_BKSVLO(port), bksv.reg[0]); I915_WRITE(PORT_HDCP_BKSVHI(port), bksv.reg[1]); -- 2.7.4 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx