From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mugunthan V N Date: Mon, 29 Feb 2016 14:16:18 +0530 Subject: [U-Boot] [PATCH 03/17] drivers: usb: musb: add ti musb misc driver for wrapper In-Reply-To: <1456717460-3132-4-git-send-email-mugunthanvnm@ti.com> References: <1456717460-3132-1-git-send-email-mugunthanvnm@ti.com> <1456717460-3132-4-git-send-email-mugunthanvnm@ti.com> Message-ID: <56D4055A.60405@ti.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Monday 29 February 2016 09:14 AM, Mugunthan V N wrote: > 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 > --- > drivers/usb/musb-new/Kconfig | 9 +++++ > drivers/usb/musb-new/Makefile | 1 + > drivers/usb/musb-new/ti-musb.c | 89 ++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 99 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 6a6cb93..2bcc646 100644 > --- a/drivers/usb/musb-new/Kconfig > +++ b/drivers/usb/musb-new/Kconfig > @@ -13,6 +13,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 y > + help > + Say y here to enable support for the TI OTG USB controller > + used on TI SoCs. fadsf fa fad af adf adf asf adfa fad fd af > + asdf asdf fadsf asf s Oops!, This was done to fix checkpatch warning temporarily but forgot to fix it properly before submitting. Will fix in v2. Regards Mugunthan V N > + > if USB_MUSB_HOST || USB_MUSB_GADGET > > config USB_MUSB_SUNXI > diff --git a/drivers/usb/musb-new/Makefile b/drivers/usb/musb-new/Makefile > index 072d516..d137044 100644 > --- a/drivers/usb/musb-new/Makefile > +++ b/drivers/usb/musb-new/Makefile > @@ -11,6 +11,7 @@ obj-$(CONFIG_USB_MUSB_DSPS) += musb_dsps.o > obj-$(CONFIG_USB_MUSB_AM35X) += am35x.o > obj-$(CONFIG_USB_MUSB_OMAP2PLUS) += omap2430.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 0000000..c1a4952 > --- /dev/null > +++ b/drivers/usb/musb-new/ti-musb.c > @@ -0,0 +1,89 @@ > +/* > + * MISC driver for TI MUSB Glue. > + * > + * (C) Copyright 2012-2016 > + * Texas Instruments Incorporated, > + * > + * SPDX-License-Identifier: GPL-2.0+ > + */ > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +DECLARE_GLOBAL_DATA_PTR; > + > +#ifdef CONFIG_DM_USB > + > +static const char *const usb_dr_modes[] = { > + [USB_DR_MODE_UNKNOWN] = "", > + [USB_DR_MODE_HOST] = "host", > + [USB_DR_MODE_PERIPHERAL] = "peripheral", > + [USB_DR_MODE_OTG] = "otg", > +}; > + > +enum usb_dr_mode usb_get_dr_mode(const char *dr_mode) > +{ > + int i; > + > + for (i = 0; i < ARRAY_SIZE(usb_dr_modes); i++) > + if (!strcmp(dr_mode, usb_dr_modes[i])) > + return i; > + > + return USB_DR_MODE_UNKNOWN; > +} > + > +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); > + const char *dr_mode_str; > + enum usb_dr_mode dr_mode; > + struct driver *drv; > + > + if (strncmp(name, "usb@", 4)) > + continue; > + > + dr_mode_str = fdt_getprop(fdt, node, "dr_mode", NULL); > + if (!dr_mode_str) { > + error("usb dr_mode not found\n"); > + return -ENOENT; > + } > + > + dr_mode = usb_get_dr_mode(dr_mode_str); > + 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 */ >