The check was always succeeding even in case of a mismatch due to the HDCP_STATUS_ENC bit being set. Make sure both bits are actually set.
Unified · Split
| @@ -1561,7 +1561,8 @@ bool intel_hdmi_hdcp_check_link(struct intel_digital_port *intel_dig_port) · 1560 unmodified lines | |||
| 1561 | intel_de_write(i915, HDCP_RPRIME(i915, cpu_transcoder, port), ri.reg); | 1561 | intel_de_write(i915, HDCP_RPRIME(i915, cpu_transcoder, port), ri.reg); |
| 1562 | 1562 | ||
| 1563 | /* Wait for Ri prime match */ | 1563 | /* Wait for Ri prime match */ |
| 1564 | if (wait_for(intel_de_read(i915, HDCP_STATUS(i915, cpu_transcoder, port)) & | 1564 | if (wait_for((intel_de_read(i915, HDCP_STATUS(i915, cpu_transcoder, port)) & |
| 1565 | (HDCP_STATUS_RI_MATCH | HDCP_STATUS_ENC)) == | ||
| 1565 | (HDCP_STATUS_RI_MATCH | HDCP_STATUS_ENC), 1)) { | 1566 | (HDCP_STATUS_RI_MATCH | HDCP_STATUS_ENC), 1)) { |
| 1566 | drm_err(&i915->drm, | 1567 | drm_err(&i915->drm, |
| 1567 | "Ri' mismatch detected, link check failed (%x)\n", | 1568 | "Ri' mismatch detected, link check failed (%x)\n", |