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 5 ms sleep instead. The timeouts remain, being
400 ms or 800 ms, depending on the case.

Signed-off-by: Jani Nikula <jani.nik...@intel.com>
---
 drivers/gpu/drm/i915/display/intel_lspcon.c | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_lspcon.c 
b/drivers/gpu/drm/i915/display/intel_lspcon.c
index abc4b562083d..d56026c4efdd 100644
--- a/drivers/gpu/drm/i915/display/intel_lspcon.c
+++ b/drivers/gpu/drm/i915/display/intel_lspcon.c
@@ -23,6 +23,8 @@
  *
  */
 
+#include <linux/iopoll.h>
+
 #include <drm/display/drm_dp_dual_mode_helper.h>
 #include <drm/display/drm_hdmi_helper.h>
 #include <drm/drm_atomic_helper.h>
@@ -181,6 +183,8 @@ static enum drm_lspcon_mode lspcon_wait_mode(struct 
intel_lspcon *lspcon,
        struct intel_dp *intel_dp = lspcon_to_intel_dp(lspcon);
        struct intel_display *display = to_intel_display(intel_dp);
        enum drm_lspcon_mode current_mode;
+       int timeout_us;
+       int ret;
 
        current_mode = lspcon_get_current_mode(lspcon);
        if (current_mode == mode)
@@ -189,9 +193,12 @@ static enum drm_lspcon_mode lspcon_wait_mode(struct 
intel_lspcon *lspcon,
        drm_dbg_kms(display->drm, "Waiting for LSPCON mode %s to settle\n",
                    lspcon_mode_name(mode));
 
-       wait_for((current_mode = lspcon_get_current_mode(lspcon)) == mode,
-                lspcon_get_mode_settle_timeout(lspcon));
-       if (current_mode != mode)
+       timeout_us = lspcon_get_mode_settle_timeout(lspcon) * 1000;
+
+       ret = poll_timeout_us(current_mode = lspcon_get_current_mode(lspcon),
+                             current_mode == mode,
+                             5000, timeout_us, false);
+       if (ret)
                drm_err(display->drm, "LSPCON mode hasn't settled\n");
 
 out:
-- 
2.47.2

Reply via email to