drm/bridge: ti-sn65dsi86: Make polling a busy loop
authorStephen Boyd <swboyd@chromium.org>
Mon, 2 Nov 2020 18:11:42 +0000 (10:11 -0800)
committerSam Ravnborg <sam@ravnborg.org>
Sat, 7 Nov 2020 11:06:07 +0000 (12:06 +0100)
There's no reason we need to wait here to poll a register over i2c. The
i2c bus is inherently slow and delays are practically part of the
protocol because we have to wait for the device to respond to any
request for a register. Let's rely on the sleeping of the i2c controller
instead of adding any sort of delay here in the bridge driver.

Reviewed-by: Douglas Anderson <dianders@chromium.org>
Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
Cc: Jonas Karlman <jonas@kwiboo.se>
Cc: Jernej Skrabec <jernej.skrabec@siol.net>
Cc: Sean Paul <seanpaul@chromium.org>
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Stephen Boyd <swboyd@chromium.org>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20201102181144.3469197-3-swboyd@chromium.org
drivers/gpu/drm/bridge/ti-sn65dsi86.c

index 6e2d286a8221dce94a2a4da7e05c5cc0417ce278..fbc3fe427d1aaccb62d5201b24f6d33c8ce8d28a 100644 (file)
@@ -898,9 +898,9 @@ static ssize_t ti_sn_aux_transfer(struct drm_dp_aux *aux,
 
        regmap_write(pdata->regmap, SN_AUX_CMD_REG, request_val | AUX_CMD_SEND);
 
+       /* Zero delay loop because i2c transactions are slow already */
        ret = regmap_read_poll_timeout(pdata->regmap, SN_AUX_CMD_REG, val,
-                                      !(val & AUX_CMD_SEND), 200,
-                                      50 * 1000);
+                                      !(val & AUX_CMD_SEND), 0, 50 * 1000);
        if (ret)
                return ret;