[U-Boot] [RFC] usb: ehci-mx6: Create MISC USB device wrapper
Adam Ford
aford173 at gmail.com
Wed Apr 3 15:17:43 UTC 2019
In preparation to support DM_USB_GADGET, this creates a misc
device which binds the host. This is necessary because
U_BOOT_DRIVER(usb_mx6) is currently hard coded to UCLASS_USB
and if we want to support UCLASS_USB_GADGET_GENERIC we'll need
to bind a separate device in the future.
Signed-off-by: Adam Ford <aford173 at gmail.com>
diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
index ba1e6bfa43..25c7e2d6a1 100644
--- a/drivers/usb/host/Kconfig
+++ b/drivers/usb/host/Kconfig
@@ -134,6 +134,7 @@ config USB_EHCI_MARVELL
config USB_EHCI_MX6
bool "Support for i.MX6 on-chip EHCI USB controller"
+ select MISC
depends on ARCH_MX6
default y
---help---
diff --git a/drivers/usb/host/ehci-mx6.c b/drivers/usb/host/ehci-mx6.c
index 16abeef3b2..4003b8616f 100644
--- a/drivers/usb/host/ehci-mx6.c
+++ b/drivers/usb/host/ehci-mx6.c
@@ -19,6 +19,7 @@
#include <asm/mach-types.h>
#include <power/regulator.h>
#include <linux/usb/otg.h>
+#include <dm/lists.h>
#include "ehci.h"
@@ -567,7 +568,6 @@ static const struct udevice_id mx6_usb_ids[] = {
U_BOOT_DRIVER(usb_mx6) = {
.name = "ehci_mx6",
.id = UCLASS_USB,
- .of_match = mx6_usb_ids,
.ofdata_to_platdata = ehci_usb_ofdata_to_platdata,
.probe = ehci_usb_probe,
.remove = ehci_deregister,
@@ -576,4 +576,30 @@ U_BOOT_DRIVER(usb_mx6) = {
.priv_auto_alloc_size = sizeof(struct ehci_mx6_priv_data),
.flags = DM_FLAG_ALLOC_PRIV_DMA,
};
+
+static int mx6_usb_wrapper_bind(struct udevice *dev)
+{
+ const void *fdt = gd->fdt_blob;
+ int node = dev_of_offset(dev);
+ const char *name = fdt_get_name(fdt, node, NULL);
+ int ret;
+
+ ret = device_bind_driver_to_node(dev,
+ "ehci_mx6",
+ name,
+ offset_to_ofnode(node),
+ &dev);
+ if (ret)
+ pr_err("mx6_usb - Unable to bind USB host node\n");
+
+ return ret;
+}
+
+U_BOOT_DRIVER(usb_mx6_wrapper) = {
+ .name = "mx6-usb-wrapper",
+ .id = UCLASS_MISC,
+ .of_match = mx6_usb_ids,
+ .bind = mx6_usb_wrapper_bind,
+};
+
#endif
--
2.17.1
More information about the U-Boot
mailing list