• Tomi Valkeinen's avatar
    drm/bridge: tc358767: fix poll timeouts · 8a6483ac
    Tomi Valkeinen authored
    Link training fails with:
    
      Link training timeout waiting for LT_LOOPDONE!
      main link enable error: -110
    
    This is caused by too tight timeouts, which were changed recently in
    aa92213f ("drm/bridge: tc358767: Simplify polling in tc_link_training()").
    
    With a quick glance, the commit does not change the timeouts. However,
    the method of delaying/sleeping is different, and as the timeout in the
    previous implementation was not explicit, the new version in practice
    has much tighter timeout.
    
    The same change was made to other parts in the driver, but the link
    training timeout is the only one I have seen causing issues.
    Nevertheless, 1 us sleep is not very sane, and the timeouts look pretty
    tight, so lets fix all the timeouts.
    
    One exception was the aux busy poll, where the poll sleep was much
    longer than necessary (or optimal).
    
    I measured the times on my setup, and now the sleep times are set to
    such values that they result in multiple loops, but not too many (say,
    5-10 loops). The timeouts were all increased to 100ms, which should be
    more than enough for all of these, but in case of bad errors, shouldn't
    stop the driver as multi-second timeouts could do.
    Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
    Fixes: aa92213f ("drm/bridge: tc358767: Simplify polling in tc_link_training()")
    Tested-by: default avatarAndrey Smirnov <andrew.smirnov@gmail.com>
    Reviewed-by: default avatarNeil Armstrong <narmstrong@baylibre.com>
    Signed-off-by: default avatarNeil Armstrong <narmstrong@baylibre.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20191209082707.24531-1-tomi.valkeinen@ti.com
    8a6483ac
tc358767.c 42.6 KB