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>
This commit is contained in:
parent
3b29121678
commit
23ba2d6372
@ -785,3 +785,58 @@ MODULE_ALIAS("platform:dwc3");
|
||||
MODULE_AUTHOR("Felipe Balbi <balbi@ti.com>");
|
||||
MODULE_LICENSE("GPL v2");
|
||||
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 */
|
||||
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);
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user