[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