Replace explicit polling in tc_link_training() with equivalent call to
regmap_read_poll_timeout() for simplicity. No functional change
intended (not including slightly altered debug output).

Signed-off-by: Andrey Smirnov <andrew.smir...@gmail.com>
Cc: Archit Taneja <arch...@codeaurora.org>
Cc: Andrzej Hajda <a.ha...@samsung.com>
Cc: Laurent Pinchart <laurent.pinch...@ideasonboard.com>
Cc: Chris Healy <cphe...@gmail.com>
Cc: Lucas Stach <l.st...@pengutronix.de>
Cc: dri-devel@lists.freedesktop.org
Cc: linux-ker...@vger.kernel.org
---
 drivers/gpu/drm/bridge/tc358767.c | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/bridge/tc358767.c 
b/drivers/gpu/drm/bridge/tc358767.c
index 6455e6484722..ea30cec4a0c3 100644
--- a/drivers/gpu/drm/bridge/tc358767.c
+++ b/drivers/gpu/drm/bridge/tc358767.c
@@ -735,7 +735,6 @@ static int tc_link_training(struct tc_data *tc, int pattern)
        const char * const *errors;
        u32 srcctrl = tc_srcctrl(tc) | DP0_SRCCTRL_SCRMBLDIS |
                      DP0_SRCCTRL_AUTOCORRECT;
-       int timeout;
        int retry;
        u32 value;
        int ret;
@@ -765,20 +764,17 @@ static int tc_link_training(struct tc_data *tc, int 
pattern)
                tc_write(DP0CTL, DP_EN);
 
                /* wait */
-               timeout = 1000;
-               do {
-                       tc_read(DP0_LTSTAT, &value);
-                       udelay(1);
-               } while ((!(value & LT_LOOPDONE)) && (--timeout));
-               if (timeout == 0) {
+               ret = regmap_read_poll_timeout(tc->regmap, DP0_LTSTAT, value,
+                                              value & LT_LOOPDONE, 1, 1000);
+               if (ret) {
                        dev_err(tc->dev, "Link training timeout!\n");
                } else {
                        int pattern = (value >> 11) & 0x3;
                        int error = (value >> 8) & 0x7;
 
                        dev_dbg(tc->dev,
-                               "Link training phase %d done after %d uS: %s\n",
-                               pattern, 1000 - timeout, errors[error]);
+                               "Link training phase %d done: %s\n",
+                               pattern, errors[error]);
                        if (pattern == DP_TRAINING_PATTERN_1 && error == 0)
                                break;
                        if (pattern == DP_TRAINING_PATTERN_2) {
-- 
2.20.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to