[U-Boot] [PATCH v2 1/6] usb: dwc3: Add dwc3_init/remove with DM_USB

Jean-Jacques Hiblot jjhiblot at ti.com
Fri May 18 13:21:11 UTC 2018


Hi Michal,

I've been trying your series on DRA7 platforms. Thanks for the work.

I have a few comments though.


On 18/05/2018 13:15, Michal Simek wrote:
> From: Mugunthan V N <mugunthanvnm at ti.com>
>
> The patch is preparing dwc3 core for enabling DM_USB with peripheral
> driver with using driver model support.
> The driver will be bound by the DWC3 wrapper driver based on the
> dr_mode device tree entry.
>
> Signed-off-by: Mugunthan V N <mugunthanvnm at ti.com>
> (Remove dwc3-omap changes)
> Signed-off-by: Michal Simek <michal.simek at xilinx.com>
> ---
>
> Changes in v2:
> - Retype dwc->dev in gadget.c to avoid compilation warning
> - Guard udevice with __UBOOT__
> - Move ifdef in core.c to avoid compilation issues for some platforms
>    (for example edison)
>
> Origin series here: https://patchwork.ozlabs.org/patch/775108/
>
> - Fix labels as was asked in previous review.
>
> ---
>   drivers/usb/dwc3/core.c   | 55 +++++++++++++++++++++++++++++++++++++++
>   drivers/usb/dwc3/core.h   |  6 +++++
>   drivers/usb/dwc3/gadget.c |  2 +-
>   3 files changed, 62 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
> index dbdad22d1134..1ab5cee60969 100644
> --- a/drivers/usb/dwc3/core.c
> +++ b/drivers/usb/dwc3/core.c
> @@ -788,3 +788,58 @@ MODULE_ALIAS("platform:dwc3");
>   MODULE_AUTHOR("Felipe Balbi <balbi at ti.com>");
>   MODULE_LICENSE("GPL v2");
>   MODULE_DESCRIPTION("DesignWare USB3 DRD Controller Driver");
> +
> +#ifdef CONFIG_DM_USB
What about having a separate config for device ? like CONFIG_DM_USB_DEV.
This would allow patforms to keep using non-DM USB device and DM USB hosts
> +
> +int dwc3_init(struct dwc3 *dwc)
> +{
> +	int ret;
> +
> +	dwc3_cache_hwparams(dwc);
> +
> +	ret = dwc3_alloc_event_buffers(dwc, DWC3_EVENT_BUFFERS_SIZE);
> +	if (ret) {
> +		dev_err(dwc->dev, "failed to allocate event buffers\n");
> +		return -ENOMEM;
> +	}
> +
> +	ret = dwc3_core_init(dwc);
> +	if (ret) {
> +		dev_err(dev, "failed to initialize core\n");
> +		goto core_fail;
> +	}
> +
> +	ret = dwc3_event_buffers_setup(dwc);
> +	if (ret) {
> +		dev_err(dwc->dev, "failed to setup event buffers\n");
> +		goto event_fail;
> +	}
> +
> +	ret = dwc3_core_init_mode(dwc);
> +	if (ret)
> +		goto mode_fail;
> +
> +	return 0;
> +
> +mode_fail:
> +	dwc3_event_buffers_cleanup(dwc);
> +
> +event_fail:
> +	dwc3_core_exit(dwc);
> +
> +core_fail:
> +	dwc3_free_event_buffers(dwc);
> +
> +	return ret;
> +}
> +
> +void dwc3_remove(struct dwc3 *dwc)
> +{
> +	dwc3_core_exit_mode(dwc);
> +	dwc3_event_buffers_cleanup(dwc);
> +	dwc3_free_event_buffers(dwc);
> +	dwc3_core_exit(dwc);
> +	kfree(dwc->mem);
> +}
> +
> +#endif
> diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
> index cbe9850a0bda..58fe91dc5131 100644
> --- a/drivers/usb/dwc3/core.h
> +++ b/drivers/usb/dwc3/core.h
> @@ -712,7 +712,11 @@ struct dwc3 {
>   	/* device lock */
>   	spinlock_t		lock;
>   
> +#if defined(__UBOOT__) && defined(CONFIG_DM_USB)
> +	struct udevice		*dev;
> +#else
>   	struct device		*dev;
> +#endif
>   
>   	struct platform_device	*xhci;
>   	struct resource		xhci_resources[DWC3_XHCI_RESOURCES_NUM];
> @@ -987,6 +991,8 @@ struct dwc3_gadget_ep_cmd_params {
>   
>   /* prototypes */
>   int dwc3_gadget_resize_tx_fifos(struct dwc3 *dwc);
> +int dwc3_init(struct dwc3 *dwc);
> +void dwc3_remove(struct dwc3 *dwc);
>   
>   #ifdef CONFIG_USB_DWC3_HOST
>   int dwc3_host_init(struct dwc3 *dwc);
> diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
> index d45fae044c4a..e340cb268fcd 100644
> --- a/drivers/usb/dwc3/gadget.c
> +++ b/drivers/usb/dwc3/gadget.c
> @@ -2609,7 +2609,7 @@ int dwc3_gadget_init(struct dwc3 *dwc)
>   	if (ret)
>   		goto err4;
>   
> -	ret = usb_add_gadget_udc(dwc->dev, &dwc->gadget);
> +	ret = usb_add_gadget_udc((struct device *)dwc->dev, &dwc->gadget);
>   	if (ret) {
>   		dev_err(dwc->dev, "failed to register udc\n");
>   		goto err4;



More information about the U-Boot mailing list