On Thu, 2025-08-28 at 15:20 +0300, Jani Nikula wrote: > 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. > > Signed-off-by: Jani Nikula <jani.nik...@intel.com> > --- > drivers/gpu/drm/i915/display/intel_hdcp.c | 17 ++++++++++------- > 1 file changed, 10 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_hdcp.c > b/drivers/gpu/drm/i915/display/intel_hdcp.c > index 0c98e50501a6..d6a105959d26 100644 > --- a/drivers/gpu/drm/i915/display/intel_hdcp.c > +++ b/drivers/gpu/drm/i915/display/intel_hdcp.c > @@ -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;
You can return ret here? Anyways: Reviewed-by: Jouni Högander <jouni.hogan...@intel.com> > } > @@ -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; > } >