usb: dwc3: Add dwc3_init/remove with DM_USB

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@ti.com>
(Remove dwc3-omap changes)
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
lime2-spi
Mugunthan V N 7 years ago committed by Marek Vasut
parent 3b29121678
commit 23ba2d6372
  1. 55
      drivers/usb/dwc3/core.c
  2. 6
      drivers/usb/dwc3/core.h
  3. 2
      drivers/usb/dwc3/gadget.c

@ -785,3 +785,58 @@ MODULE_ALIAS("platform:dwc3");
MODULE_AUTHOR("Felipe Balbi <balbi@ti.com>"); MODULE_AUTHOR("Felipe Balbi <balbi@ti.com>");
MODULE_LICENSE("GPL v2"); MODULE_LICENSE("GPL v2");
MODULE_DESCRIPTION("DesignWare USB3 DRD Controller Driver"); MODULE_DESCRIPTION("DesignWare USB3 DRD Controller Driver");
#ifdef CONFIG_DM_USB
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

@ -712,7 +712,11 @@ struct dwc3 {
/* device lock */ /* device lock */
spinlock_t lock; spinlock_t lock;
#if defined(__UBOOT__) && defined(CONFIG_DM_USB)
struct udevice *dev;
#else
struct device *dev; struct device *dev;
#endif
struct platform_device *xhci; struct platform_device *xhci;
struct resource xhci_resources[DWC3_XHCI_RESOURCES_NUM]; struct resource xhci_resources[DWC3_XHCI_RESOURCES_NUM];
@ -987,6 +991,8 @@ struct dwc3_gadget_ep_cmd_params {
/* prototypes */ /* prototypes */
int dwc3_gadget_resize_tx_fifos(struct dwc3 *dwc); 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 #ifdef CONFIG_USB_DWC3_HOST
int dwc3_host_init(struct dwc3 *dwc); int dwc3_host_init(struct dwc3 *dwc);

@ -2609,7 +2609,7 @@ int dwc3_gadget_init(struct dwc3 *dwc)
if (ret) if (ret)
goto err4; goto err4;
ret = usb_add_gadget_udc(dwc->dev, &dwc->gadget); ret = usb_add_gadget_udc((struct device *)dwc->dev, &dwc->gadget);
if (ret) { if (ret) {
dev_err(dwc->dev, "failed to register udc\n"); dev_err(dwc->dev, "failed to register udc\n");
goto err4; goto err4;

Loading…
Cancel
Save