Skip to content

Commit

Permalink
usb: gadget: omap_udc: convert to udc_start/udc_stop
Browse files Browse the repository at this point in the history
Mechanical change making use of the new (can we
still call it new ?) interface for registering
UDC drivers.

Signed-off-by: Felipe Balbi <balbi@ti.com>
  • Loading branch information
Felipe Balbi committed Jan 24, 2013
1 parent 3381fb6 commit 1bf0cf6
Showing 1 changed file with 12 additions and 37 deletions.
49 changes: 12 additions & 37 deletions drivers/usb/gadget/omap_udc.c
Original file line number Diff line number Diff line change
Expand Up @@ -1309,9 +1309,10 @@ static int omap_pullup(struct usb_gadget *gadget, int is_on)
return 0;
}

static int omap_udc_start(struct usb_gadget_driver *driver,
int (*bind)(struct usb_gadget *, struct usb_gadget_driver *));
static int omap_udc_stop(struct usb_gadget_driver *driver);
static int omap_udc_start(struct usb_gadget *g,
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 = {
.get_frame = omap_get_frame,
Expand All @@ -1320,8 +1321,8 @@ static struct usb_gadget_ops omap_gadget_ops = {
.vbus_session = omap_vbus_session,
.vbus_draw = omap_vbus_draw,
.pullup = omap_pullup,
.start = omap_udc_start,
.stop = omap_udc_stop,
.udc_start = omap_udc_start,
.udc_stop = omap_udc_stop,
};

/*-------------------------------------------------------------------------*/
Expand Down Expand Up @@ -2041,28 +2042,15 @@ static inline int machine_without_vbus_sense(void)
|| cpu_is_omap7xx();
}

static int omap_udc_start(struct usb_gadget_driver *driver,
int (*bind)(struct usb_gadget *, struct usb_gadget_driver *))
static int omap_udc_start(struct usb_gadget *g,
struct usb_gadget_driver *driver)
{
int status = -ENODEV;
struct omap_ep *ep;
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);
if (udc->driver) {
spin_unlock_irqrestore(&udc->lock, flags);
return -EBUSY;
}

/* reset state */
list_for_each_entry(ep, &udc->gadget.ep_list, ep.ep_list) {
ep->irqs = 0;
Expand All @@ -2084,15 +2072,6 @@ static int omap_udc_start(struct usb_gadget_driver *driver,
if (udc->dc_clk != NULL)
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);

/* connect to bus through transceiver */
Expand Down Expand Up @@ -2124,19 +2103,16 @@ static int omap_udc_start(struct usb_gadget_driver *driver,
done:
if (udc->dc_clk != NULL)
omap_udc_enable_clock(0);

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;
int status = -ENODEV;

if (!udc)
return -ENODEV;
if (!driver || driver != udc->driver || !driver->unbind)
return -EINVAL;

if (udc->dc_clk != NULL)
omap_udc_enable_clock(1);

Expand All @@ -2152,13 +2128,12 @@ static int omap_udc_stop(struct usb_gadget_driver *driver)
udc_quiesce(udc);
spin_unlock_irqrestore(&udc->lock, flags);

driver->unbind(&udc->gadget);
udc->gadget.dev.driver = NULL;
udc->driver = NULL;

if (udc->dc_clk != NULL)
omap_udc_enable_clock(0);
DBG("unregistered driver '%s'\n", driver->driver.name);

return status;
}

Expand Down

0 comments on commit 1bf0cf6

Please sign in to comment.