usb: ehci-msm: Use dev interface to get device address
[oweals/u-boot.git] / drivers / usb / host / xhci-rcar.c
index d47c99644d6944d382100c3534fb697e72983f26..d86584b847d48bd17b848ddba168c81116ae5b43 100644 (file)
@@ -1,19 +1,20 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * Copyright (C) 2017 Marek Vasut <marek.vasut@gmail.com>
  *
  * Renesas RCar USB HOST xHCI Controller
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
 #include <clk.h>
 #include <dm.h>
 #include <fdtdec.h>
+#include <malloc.h>
 #include <usb.h>
 #include <wait_bit.h>
+#include <dm/device_compat.h>
 
-#include "xhci.h"
+#include <usb/xhci.h>
 #include "xhci-rcar-r8a779x_usb3_v3.h"
 
 /* Register Offset */
@@ -55,18 +56,18 @@ static int xhci_rcar_download_fw(struct rcar_xhci *ctx, const u32 *fw_data,
                setbits_le32(regs + RCAR_USB3_DL_CTRL,
                             RCAR_USB3_DL_CTRL_FW_SET_DATA0);
 
-               ret = wait_for_bit("xhci-rcar", regs + RCAR_USB3_DL_CTRL,
-                                  RCAR_USB3_DL_CTRL_FW_SET_DATA0, false,
-                                  10, false);
+               ret = wait_for_bit_le32(regs + RCAR_USB3_DL_CTRL,
+                                       RCAR_USB3_DL_CTRL_FW_SET_DATA0, false,
+                                       10, false);
                if (ret)
                        break;
        }
 
        clrbits_le32(regs + RCAR_USB3_DL_CTRL, RCAR_USB3_DL_CTRL_ENABLE);
 
-       ret = wait_for_bit("xhci-rcar", regs + RCAR_USB3_DL_CTRL,
-                          RCAR_USB3_DL_CTRL_FW_SUCCESS, true,
-                          10, false);
+       ret = wait_for_bit_le32(regs + RCAR_USB3_DL_CTRL,
+                               RCAR_USB3_DL_CTRL_FW_SUCCESS, true,
+                               10, false);
 
        return ret;
 }
@@ -118,12 +119,15 @@ err_clk:
 
 static int xhci_rcar_deregister(struct udevice *dev)
 {
+       int ret;
        struct rcar_xhci_platdata *plat = dev_get_platdata(dev);
 
+       ret = xhci_deregister(dev);
+
        clk_disable(&plat->clk);
        clk_free(&plat->clk);
 
-       return xhci_deregister(dev);
+       return ret;
 }
 
 static int xhci_rcar_ofdata_to_platdata(struct udevice *dev)
@@ -142,6 +146,7 @@ static int xhci_rcar_ofdata_to_platdata(struct udevice *dev)
 static const struct udevice_id xhci_rcar_ids[] = {
        { .compatible = "renesas,xhci-r8a7795" },
        { .compatible = "renesas,xhci-r8a7796" },
+       { .compatible = "renesas,xhci-r8a77965" },
        { }
 };