mirror of
https://github.com/torvalds/linux.git
synced 2026-08-01 20:22:08 +02:00
drm/i915/hdcp: use generic poll_timeout_us() instead of wait_for()
Prefer generic poll helpers over i915 custom helpers. The functional change is losing the exponentially growing sleep of wait_for(), which used to be 10, 20, 40, ..., 640, and 1280 us. Use an arbitrary constant 100 us sleep instead. The timeout remains at 1 ms. While at it, use the last failing value for debug logging instead of reading it again. Reviewed-by: Jouni Högander <jouni.hogander@intel.com> Link: https://lore.kernel.org/r/2871a07337401c25ef3df44073c5e78fedc45e8e.1756383233.git.jani.nikula@intel.com Signed-off-by: Jani Nikula <jani.nikula@intel.com>
This commit is contained in:
parent
6f1759df0f
commit
e54d34e4b3
|
|
@ -817,6 +817,7 @@ static int intel_hdcp_auth(struct intel_connector *connector)
|
|||
enum port port = dig_port->base.port;
|
||||
unsigned long r0_prime_gen_start;
|
||||
int ret, i, tries = 2;
|
||||
u32 val;
|
||||
union {
|
||||
u32 reg[2];
|
||||
u8 shim[DRM_HDCP_AN_LEN];
|
||||
|
|
@ -905,8 +906,10 @@ static int intel_hdcp_auth(struct intel_connector *connector)
|
|||
HDCP_CONF_AUTH_AND_ENC);
|
||||
|
||||
/* Wait for R0 ready */
|
||||
if (wait_for(intel_de_read(display, HDCP_STATUS(display, cpu_transcoder, port)) &
|
||||
(HDCP_STATUS_R0_READY | HDCP_STATUS_ENC), 1)) {
|
||||
ret = poll_timeout_us(val = intel_de_read(display, HDCP_STATUS(display, cpu_transcoder, port)),
|
||||
val & (HDCP_STATUS_R0_READY | HDCP_STATUS_ENC),
|
||||
100, 1000, false);
|
||||
if (ret) {
|
||||
drm_err(display->drm, "Timed out waiting for R0 ready\n");
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
|
|
@ -938,16 +941,16 @@ static int intel_hdcp_auth(struct intel_connector *connector)
|
|||
ri.reg);
|
||||
|
||||
/* Wait for Ri prime match */
|
||||
if (!wait_for(intel_de_read(display, HDCP_STATUS(display, cpu_transcoder, port)) &
|
||||
(HDCP_STATUS_RI_MATCH | HDCP_STATUS_ENC), 1))
|
||||
ret = poll_timeout_us(val = intel_de_read(display, HDCP_STATUS(display, cpu_transcoder, port)),
|
||||
val & (HDCP_STATUS_RI_MATCH | HDCP_STATUS_ENC),
|
||||
100, 1000, false);
|
||||
if (!ret)
|
||||
break;
|
||||
}
|
||||
|
||||
if (i == tries) {
|
||||
drm_dbg_kms(display->drm,
|
||||
"Timed out waiting for Ri prime match (%x)\n",
|
||||
intel_de_read(display,
|
||||
HDCP_STATUS(display, cpu_transcoder, port)));
|
||||
"Timed out waiting for Ri prime match (%x)\n", val);
|
||||
return -ETIMEDOUT;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user