usb: host: xhci-rcar: Don't reload firmware after the completion
authorYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Fri, 27 Aug 2021 06:32:27 +0000 (15:32 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 27 Aug 2021 08:24:58 +0000 (10:24 +0200)
According to the datasheet, "Upon the completion of FW Download,
there is no need to write or reload FW.". Otherwise, it's possible
to cause unexpected behaviors. So, adds such a condition.

Fixes: 4ac8918f3a73 ("usb: host: xhci-plat: add support for the R-Car H2 and M2 xHCI controllers")
Cc: stable@vger.kernel.org # v3.17+
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Link: https://lore.kernel.org/r/20210827063227.81990-1-yoshihiro.shimoda.uh@renesas.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/xhci-rcar.c

index 1bc4fe7..9888ba7 100644 (file)
@@ -134,6 +134,13 @@ static int xhci_rcar_download_firmware(struct usb_hcd *hcd)
        const struct soc_device_attribute *attr;
        const char *firmware_name;
 
+       /*
+        * According to the datasheet, "Upon the completion of FW Download,
+        * there is no need to write or reload FW".
+        */
+       if (readl(regs + RCAR_USB3_DL_CTRL) & RCAR_USB3_DL_CTRL_FW_SUCCESS)
+               return 0;
+
        attr = soc_device_match(rcar_quirks_match);
        if (attr)
                quirks = (uintptr_t)attr->data;