• Maxime Ripard's avatar
    usb: XHCI: platform: Move the Marvell quirks after the enabling the clocks · 1e7e4fb6
    Maxime Ripard authored
    The commit 97374792 ("usb: host: xhci-plat: add support for the Armada
    375/38x XHCI controllers") extended the xhci-plat driver to support the Armada
    375/38x SoCs, mostly by adding a quirk configuring the MBUS window.
    
    However, that quirk was run before the clock the controllers needs has been
    enabled. This usually worked because the clock was first enabled by the
    bootloader, and left as such until the driver is probe, where it tries to
    access the MBUS configuration registers before enabling the clock.
    
    Things get messy when EPROBE_DEFER is involved during the probe, since as part
    of its error path, the driver will rightfully disable the clock. When the
    driver will be reprobed, it will retry to access the MBUS registers, but this
    time with the clock disabled, which hangs forever.
    
    Fix this by running the quirks after the clock has been enabled by the driver.
    Signed-off-by: default avatarMaxime Ripard <maxime.ripard@free-electrons.com>
    Cc: <stable@vger.kernel.org> # v3.16+
    Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    1e7e4fb6
xhci-plat.c 6.74 KB