[PATCH v7 15/24] usb: gadget: fix up the last UDC drivers after the resync
Anders Roxell <[email protected]>
| Newsgroups | org.u-boot-project.lists.u-boot |
|---|---|
| Message-ID | <[email protected]> |
Adapt at91_udc and atmel_usba_udc to the new gadget API. udc-core has its own usb_gadget_register_driver() now, so drop the local ones. That leaves vbus_is_present(), usba_udc_enable() and usba_udc_disable() used only from usba_udc_start() and usba_udc_stop(), which are DM_USB_GADGET only. Move them under the same guard. Co-developed-by: Jerome Forissier <[email protected]> Signed-off-by: Jerome Forissier <[email protected]> Co-developed-by: Jens Wiklander <[email protected]> Signed-off-by: Jens Wiklander <[email protected]> Signed-off-by: Anders Roxell <[email protected]> --- drivers/usb/gadget/at91_udc.c | 46 ------------- drivers/usb/gadget/atmel_usba_udc.c | 102 ++++++++-------------------- drivers/usb/gadget/epautoconf.c | 2 - 3 files changed, 28 insertions(+), 122 deletions(-) diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c index b3c780a4e35c..5b0c55d59c8d 100644 --- a/drivers/usb/gadget/at91_udc.c +++ b/drivers/usb/gadget/at91_udc.c @@ -1435,52 +1435,6 @@ int dm_usb_gadget_handle_interrupts(struct udevice *dev) return at91_udc_irq(udc); } -int usb_gadget_register_driver(struct usb_gadget_driver *driver) -{ - struct at91_udc *udc = controller; - int ret; - - if (!driver || !driver->bind || !driver->setup) { - printf("bad paramter\n"); - return -EINVAL; - } - - if (udc->driver) { - printf("UDC already has a gadget driver\n"); - return -EBUSY; - } - - at91_start(&udc->gadget, driver); - - udc->driver = driver; - - ret = driver->bind(&udc->gadget); - if (ret) { - pr_err("driver->bind() returned %d\n", ret); - udc->driver = NULL; - } - - return ret; -} - -int usb_gadget_unregister_driver(struct usb_gadget_driver *driver) -{ - struct at91_udc *udc = controller; - - if (!driver || !driver->unbind || !driver->disconnect) { - pr_err("bad paramter\n"); - return -EINVAL; - } - - driver->disconnect(&udc->gadget); - driver->unbind(&udc->gadget); - udc->driver = NULL; - - at91_stop(&udc->gadget); - - return 0; -} - int at91_udc_probe(struct at91_udc_data *pdata) { struct at91_udc *udc; diff --git a/drivers/usb/gadget/atmel_usba_udc.c b/drivers/usb/gadget/atmel_usba_udc.c index 0caf8b8b7b45..52900ad654cf 100644 --- a/drivers/usb/gadget/atmel_usba_udc.c +++ b/drivers/usb/gadget/atmel_usba_udc.c @@ -32,12 +32,6 @@ static int usba_udc_stop(struct usb_gadget *gadget); #include "atmel_usba_udc.h" -static int vbus_is_present(struct usba_udc *udc) -{ - /* No Vbus detection: Assume always present */ - return 1; -} - static void next_fifo_transaction(struct usba_ep *ep, struct usba_request *req) { unsigned int transaction_len; @@ -1169,32 +1163,6 @@ static int usba_udc_irq(struct usba_udc *udc) return 0; } -static int usba_udc_enable(struct usba_udc *udc) -{ - udc->devstatus = 1 << USB_DEVICE_SELF_POWERED; - - udc->vbus_prev = 0; - - /* If Vbus is present, enable the controller and wait for reset */ - if (vbus_is_present(udc) && udc->vbus_prev == 0) { - usba_writel(udc, CTRL, USBA_ENABLE_MASK); - usba_writel(udc, INT_ENB, USBA_END_OF_RESET); - } - - return 0; -} - -static int usba_udc_disable(struct usba_udc *udc) -{ - udc->gadget.speed = USB_SPEED_UNKNOWN; - reset_all_endpoints(udc); - - /* This will also disable the DP pullup */ - usba_writel(udc, CTRL, USBA_DISABLE_MASK); - - return 0; -} - static struct usba_ep *usba_udc_pdata(struct usba_platform_data *pdata, struct usba_udc *udc) { @@ -1255,69 +1223,55 @@ int dm_usb_gadget_handle_interrupts(struct udevice *dev) return usba_udc_irq(udc); } -int usb_gadget_register_driver(struct usb_gadget_driver *driver) +int usba_udc_probe(struct usba_platform_data *pdata) { - struct usba_udc *udc = &controller; - int ret; - - if (!driver || !driver->bind || !driver->setup) { - log_err("bad parameter\n"); - return -EINVAL; - } + struct usba_udc *udc; - if (udc->driver) { - log_err("UDC already has a gadget driver\n"); - return -EBUSY; - } + udc = &controller; - usba_udc_enable(udc); + udc->usba_ep = usba_udc_pdata(pdata, udc); - udc->driver = driver; + return 0; +} - ret = driver->bind(&udc->gadget); - if (ret) { - log_err("driver->bind() returned %d\n", ret); - udc->driver = NULL; - } +#else /* !CONFIG_IS_ENABLED(DM_USB_GADGET) */ +struct usba_priv_data { + struct clk_bulk clks; + struct usba_udc udc; +}; - return ret; +static int vbus_is_present(struct usba_udc *udc) +{ + /* No Vbus detection: Assume always present */ + return 1; } -int usb_gadget_unregister_driver(struct usb_gadget_driver *driver) +static int usba_udc_enable(struct usba_udc *udc) { - struct usba_udc *udc = &controller; - - if (!driver || !driver->unbind || !driver->disconnect) { - log_err("bad parameter\n"); - return -EINVAL; - } + udc->devstatus = 1 << USB_DEVICE_SELF_POWERED; - driver->disconnect(&udc->gadget); - driver->unbind(&udc->gadget); - udc->driver = NULL; + udc->vbus_prev = 0; - usba_udc_disable(udc); + /* If Vbus is present, enable the controller and wait for reset */ + if (vbus_is_present(udc) && udc->vbus_prev == 0) { + usba_writel(udc, CTRL, USBA_ENABLE_MASK); + usba_writel(udc, INT_ENB, USBA_END_OF_RESET); + } return 0; } -int usba_udc_probe(struct usba_platform_data *pdata) +static int usba_udc_disable(struct usba_udc *udc) { - struct usba_udc *udc; - - udc = &controller; + udc->gadget.speed = USB_SPEED_UNKNOWN; + reset_all_endpoints(udc); - udc->usba_ep = usba_udc_pdata(pdata, udc); + /* This will also disable the DP pullup */ + usba_writel(udc, CTRL, USBA_DISABLE_MASK); return 0; } -#else /* !CONFIG_IS_ENABLED(DM_USB_GADGET) */ -struct usba_priv_data { - struct clk_bulk clks; - struct usba_udc udc; -}; - static int usba_udc_start(struct usb_gadget *gadget, struct usb_gadget_driver *driver) { diff --git a/drivers/usb/gadget/epautoconf.c b/drivers/usb/gadget/epautoconf.c index 4fbea9137240..5128d147c168 100644 --- a/drivers/usb/gadget/epautoconf.c +++ b/drivers/usb/gadget/epautoconf.c @@ -7,9 +7,7 @@ */ #include <linux/kernel.h> -#include <linux/module.h> #include <linux/types.h> -#include <linux/device.h> #include <linux/ctype.h> #include <linux/string.h> -- 2.53.0