drivers: usb: musb: add ti musb misc driver for wrapper
[oweals/u-boot.git] / drivers / usb / musb-new / ti-musb.c
1 /*
2  * MISC driver for TI MUSB Glue.
3  *
4  * (C) Copyright 2016
5  *     Texas Instruments Incorporated, <www.ti.com>
6  *
7  * SPDX-License-Identifier:     GPL-2.0+
8  */
9 #include <common.h>
10 #include <command.h>
11 #include <console.h>
12 #include <dm.h>
13 #include <linux/usb/otg.h>
14 #include <dm/device-internal.h>
15 #include <dm/lists.h>
16
17 DECLARE_GLOBAL_DATA_PTR;
18
19 #ifdef CONFIG_DM_USB
20
21 static int ti_musb_wrapper_bind(struct udevice *parent)
22 {
23         const void *fdt = gd->fdt_blob;
24         int node;
25         int ret;
26
27         for (node = fdt_first_subnode(fdt, parent->of_offset); node > 0;
28              node = fdt_next_subnode(fdt, node)) {
29                 struct udevice *dev;
30                 const char *name = fdt_get_name(fdt, node, NULL);
31                 enum usb_dr_mode dr_mode;
32                 struct driver *drv;
33
34                 if (strncmp(name, "usb@", 4))
35                         continue;
36
37                 dr_mode = usb_get_dr_mode(node);
38                 switch (dr_mode) {
39                 case USB_DR_MODE_PERIPHERAL:
40                         /* Bind MUSB device */
41                         break;
42                 case USB_DR_MODE_HOST:
43                         /* Bind MUSB host */
44                         break;
45                 default:
46                         break;
47                 };
48         }
49         return 0;
50 }
51
52 static const struct udevice_id ti_musb_ids[] = {
53         { .compatible = "ti,am33xx-usb" },
54         { }
55 };
56
57 U_BOOT_DRIVER(ti_musb_wrapper) = {
58         .name   = "ti-musb-wrapper",
59         .id     = UCLASS_MISC,
60         .of_match = ti_musb_ids,
61         .bind = ti_musb_wrapper_bind,
62 };
63
64 #endif /* CONFIG_DM_USB */