• Thierry Reding's avatar
    usb: host: ehci-tegra: Grab the correct UTMI pads reset · 89c18f10
    Thierry Reding authored
    commit f8a15a96 upstream.
    
    There are three EHCI controllers on Tegra SoCs, each with its own reset
    line. However, the first controller contains a set of UTMI configuration
    registers that are shared with its siblings. These registers will only
    be reset as part of the first controller's reset. For proper operation
    it must be ensured that the UTMI configuration registers are reset
    before any of the EHCI controllers are enabled, irrespective of the
    probe order.
    
    Commit a47cc24c ("USB: EHCI: tegra: Fix probe order issue leading to
    broken USB") introduced code that ensures the first controller is always
    reset before setting up any of the controllers, and is never again reset
    afterwards.
    
    This code, however, grabs the wrong reset. Each EHCI controller has two
    reset controls attached: 1) the USB controller reset and 2) the UTMI
    pads reset (really the first controller's reset). In order to reset the
    UTMI pads registers the code must grab the second reset, but instead it
    grabbing the first.
    
    Fixes: a47cc24c ("USB: EHCI: tegra: Fix probe order issue leading to broken USB")
    Acked-by: default avatarJon Hunter <jonathanh@nvidia.com>
    Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    89c18f10
ehci-tegra.c 16.4 KB