Add a misc driver for MUSB wrapper, so that based on dr_mode the
USB devices can bind to USB host or USB device drivers.

Signed-off-by: Mugunthan V N <mugunthan...@ti.com>
Reviewed-by: Tom Rini <tr...@konsulko.com>
---
 drivers/usb/musb-new/Kconfig   |  9 ++++++
 drivers/usb/musb-new/Makefile  |  1 +
 drivers/usb/musb-new/ti-musb.c | 64 ++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 74 insertions(+)
 create mode 100644 drivers/usb/musb-new/ti-musb.c

diff --git a/drivers/usb/musb-new/Kconfig b/drivers/usb/musb-new/Kconfig
index c264859b6c..caba42c26f 100644
--- a/drivers/usb/musb-new/Kconfig
+++ b/drivers/usb/musb-new/Kconfig
@@ -14,6 +14,15 @@ config USB_MUSB_GADGET
        help
          Enables the MUSB USB dual-role controller in gadget mode.
 
+config USB_MUSB_TI
+       bool "Enable TI OTG USB controller"
+       depends on DM_USB
+       default n
+       help
+         Say y here to enable support for the dual role high
+         speed USB controller based on the Mentor Graphics
+         silicon IP.
+
 if USB_MUSB_HOST || USB_MUSB_GADGET
 
 config USB_MUSB_PIC32
diff --git a/drivers/usb/musb-new/Makefile b/drivers/usb/musb-new/Makefile
index df1c3c8a45..296f230fbf 100644
--- a/drivers/usb/musb-new/Makefile
+++ b/drivers/usb/musb-new/Makefile
@@ -12,6 +12,7 @@ obj-$(CONFIG_USB_MUSB_AM35X) += am35x.o
 obj-$(CONFIG_USB_MUSB_OMAP2PLUS) += omap2430.o
 obj-$(CONFIG_USB_MUSB_PIC32) += pic32.o
 obj-$(CONFIG_USB_MUSB_SUNXI) += sunxi.o
+obj-$(CONFIG_USB_MUSB_TI) += ti-musb.o
 
 ccflags-y := $(call cc-option,-Wno-unused-variable) \
                $(call cc-option,-Wno-unused-but-set-variable) \
diff --git a/drivers/usb/musb-new/ti-musb.c b/drivers/usb/musb-new/ti-musb.c
new file mode 100644
index 0000000000..cf0e296bd0
--- /dev/null
+++ b/drivers/usb/musb-new/ti-musb.c
@@ -0,0 +1,64 @@
+/*
+ * MISC driver for TI MUSB Glue.
+ *
+ * (C) Copyright 2016
+ *     Texas Instruments Incorporated, <www.ti.com>
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+#include <common.h>
+#include <command.h>
+#include <console.h>
+#include <dm.h>
+#include <linux/usb/otg.h>
+#include <dm/device-internal.h>
+#include <dm/lists.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#ifdef CONFIG_DM_USB
+
+static int ti_musb_wrapper_bind(struct udevice *parent)
+{
+       const void *fdt = gd->fdt_blob;
+       int node;
+       int ret;
+
+       for (node = fdt_first_subnode(fdt, parent->of_offset); node > 0;
+            node = fdt_next_subnode(fdt, node)) {
+               struct udevice *dev;
+               const char *name = fdt_get_name(fdt, node, NULL);
+               enum usb_dr_mode dr_mode;
+               struct driver *drv;
+
+               if (strncmp(name, "usb@", 4))
+                       continue;
+
+               dr_mode = usb_get_dr_mode(node);
+               switch (dr_mode) {
+               case USB_DR_MODE_PERIPHERAL:
+                       /* Bind MUSB device */
+                       break;
+               case USB_DR_MODE_HOST:
+                       /* Bind MUSB host */
+                       break;
+               default:
+                       break;
+               };
+       }
+       return 0;
+}
+
+static const struct udevice_id ti_musb_ids[] = {
+       { .compatible = "ti,am33xx-usb" },
+       { }
+};
+
+U_BOOT_DRIVER(ti_musb_wrapper) = {
+       .name   = "ti-musb-wrapper",
+       .id     = UCLASS_MISC,
+       .of_match = ti_musb_ids,
+       .bind = ti_musb_wrapper_bind,
+};
+
+#endif /* CONFIG_DM_USB */
-- 
2.11.0.rc1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to