[U-Boot] [PATCH 03/17] drivers: usb: musb: add ti musb misc driver for wrapper

Mugunthan V N mugunthanvnm at ti.com
Mon Feb 29 09:46:18 CET 2016


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 <mugunthanvnm at ti.com>
> ---
>  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, <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 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 */
> 



More information about the U-Boot mailing list