Commit 1bf0cf60 authored by Felipe Balbi's avatar Felipe Balbi

usb: gadget: omap_udc: convert to udc_start/udc_stop

Mechanical change making use of the new (can we
still call it new ?) interface for registering
UDC drivers.
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 3381fb60
...@@ -1309,9 +1309,10 @@ static int omap_pullup(struct usb_gadget *gadget, int is_on) ...@@ -1309,9 +1309,10 @@ static int omap_pullup(struct usb_gadget *gadget, int is_on)
return 0; return 0;
} }
static int omap_udc_start(struct usb_gadget_driver *driver, static int omap_udc_start(struct usb_gadget *g,
int (*bind)(struct usb_gadget *, struct usb_gadget_driver *)); struct usb_gadget_driver *driver)
static int omap_udc_stop(struct usb_gadget_driver *driver); static int omap_udc_stop(struct usb_gadget *g,
struct usb_gadget_driver *driver);
static struct usb_gadget_ops omap_gadget_ops = { static struct usb_gadget_ops omap_gadget_ops = {
.get_frame = omap_get_frame, .get_frame = omap_get_frame,
...@@ -1320,8 +1321,8 @@ static struct usb_gadget_ops omap_gadget_ops = { ...@@ -1320,8 +1321,8 @@ static struct usb_gadget_ops omap_gadget_ops = {
.vbus_session = omap_vbus_session, .vbus_session = omap_vbus_session,
.vbus_draw = omap_vbus_draw, .vbus_draw = omap_vbus_draw,
.pullup = omap_pullup, .pullup = omap_pullup,
.start = omap_udc_start, .udc_start = omap_udc_start,
.stop = omap_udc_stop, .udc_stop = omap_udc_stop,
}; };
/*-------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------*/
...@@ -2041,28 +2042,15 @@ static inline int machine_without_vbus_sense(void) ...@@ -2041,28 +2042,15 @@ static inline int machine_without_vbus_sense(void)
|| cpu_is_omap7xx(); || cpu_is_omap7xx();
} }
static int omap_udc_start(struct usb_gadget_driver *driver, static int omap_udc_start(struct usb_gadget *g,
int (*bind)(struct usb_gadget *, struct usb_gadget_driver *)) struct usb_gadget_driver *driver)
{ {
int status = -ENODEV; int status = -ENODEV;
struct omap_ep *ep; struct omap_ep *ep;
unsigned long flags; unsigned long flags;
/* basic sanity tests */
if (!udc)
return -ENODEV;
if (!driver
/* FIXME if otg, check: driver->is_otg */
|| driver->max_speed < USB_SPEED_FULL
|| !bind || !driver->setup)
return -EINVAL;
spin_lock_irqsave(&udc->lock, flags); spin_lock_irqsave(&udc->lock, flags);
if (udc->driver) {
spin_unlock_irqrestore(&udc->lock, flags);
return -EBUSY;
}
/* reset state */ /* reset state */
list_for_each_entry(ep, &udc->gadget.ep_list, ep.ep_list) { list_for_each_entry(ep, &udc->gadget.ep_list, ep.ep_list) {
ep->irqs = 0; ep->irqs = 0;
...@@ -2084,15 +2072,6 @@ static int omap_udc_start(struct usb_gadget_driver *driver, ...@@ -2084,15 +2072,6 @@ static int omap_udc_start(struct usb_gadget_driver *driver,
if (udc->dc_clk != NULL) if (udc->dc_clk != NULL)
omap_udc_enable_clock(1); omap_udc_enable_clock(1);
status = bind(&udc->gadget, driver);
if (status) {
DBG("bind to %s --> %d\n", driver->driver.name, status);
udc->gadget.dev.driver = NULL;
udc->driver = NULL;
goto done;
}
DBG("bound to driver %s\n", driver->driver.name);
omap_writew(UDC_IRQ_SRC_MASK, UDC_IRQ_SRC); omap_writew(UDC_IRQ_SRC_MASK, UDC_IRQ_SRC);
/* connect to bus through transceiver */ /* connect to bus through transceiver */
...@@ -2124,19 +2103,16 @@ static int omap_udc_start(struct usb_gadget_driver *driver, ...@@ -2124,19 +2103,16 @@ static int omap_udc_start(struct usb_gadget_driver *driver,
done: done:
if (udc->dc_clk != NULL) if (udc->dc_clk != NULL)
omap_udc_enable_clock(0); omap_udc_enable_clock(0);
return status; return status;
} }
static int omap_udc_stop(struct usb_gadget_driver *driver) static int omap_udc_stop(struct usb_gadget *g,
struct usb_gadget_driver *driver)
{ {
unsigned long flags; unsigned long flags;
int status = -ENODEV; int status = -ENODEV;
if (!udc)
return -ENODEV;
if (!driver || driver != udc->driver || !driver->unbind)
return -EINVAL;
if (udc->dc_clk != NULL) if (udc->dc_clk != NULL)
omap_udc_enable_clock(1); omap_udc_enable_clock(1);
...@@ -2152,13 +2128,12 @@ static int omap_udc_stop(struct usb_gadget_driver *driver) ...@@ -2152,13 +2128,12 @@ static int omap_udc_stop(struct usb_gadget_driver *driver)
udc_quiesce(udc); udc_quiesce(udc);
spin_unlock_irqrestore(&udc->lock, flags); spin_unlock_irqrestore(&udc->lock, flags);
driver->unbind(&udc->gadget);
udc->gadget.dev.driver = NULL; udc->gadget.dev.driver = NULL;
udc->driver = NULL; udc->driver = NULL;
if (udc->dc_clk != NULL) if (udc->dc_clk != NULL)
omap_udc_enable_clock(0); omap_udc_enable_clock(0);
DBG("unregistered driver '%s'\n", driver->driver.name);
return status; return status;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment