Skip to content

Commit

Permalink
usb: gadget: s3c2410: 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 70189a6 commit 4991e10
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 53 deletions.
65 changes: 12 additions & 53 deletions drivers/usb/gadget/s3c2410_udc.c
Original file line number Diff line number Diff line change
Expand Up @@ -1538,9 +1538,10 @@ static int s3c2410_vbus_draw(struct usb_gadget *_gadget, unsigned ma)
return -ENOTSUPP;
}

static int s3c2410_udc_start(struct usb_gadget_driver *driver,
int (*bind)(struct usb_gadget *, struct usb_gadget_driver *));
static int s3c2410_udc_stop(struct usb_gadget_driver *driver);
static int s3c2410_udc_start(struct usb_gadget *g,
struct usb_gadget_driver *driver);
static int s3c2410_udc_stop(struct usb_gadget *g,
struct usb_gadget_driver *driver);

static const struct usb_gadget_ops s3c2410_ops = {
.get_frame = s3c2410_udc_get_frame,
Expand All @@ -1549,8 +1550,8 @@ static const struct usb_gadget_ops s3c2410_ops = {
.pullup = s3c2410_udc_pullup,
.vbus_session = s3c2410_udc_vbus_session,
.vbus_draw = s3c2410_vbus_draw,
.start = s3c2410_udc_start,
.stop = s3c2410_udc_stop,
.udc_start = s3c2410_udc_start,
.udc_stop = s3c2410_udc_stop,
};

static void s3c2410_udc_command(enum s3c2410_udc_cmd_e cmd)
Expand Down Expand Up @@ -1664,33 +1665,14 @@ static void s3c2410_udc_enable(struct s3c2410_udc *dev)
s3c2410_udc_command(S3C2410_UDC_P_ENABLE);
}

static int s3c2410_udc_start(struct usb_gadget_driver *driver,
int (*bind)(struct usb_gadget *, struct usb_gadget_driver *))
static int s3c2410_udc_start(struct usb_gadget *g,
struct usb_gadget_driver *driver)
{
struct s3c2410_udc *udc = the_controller;
struct s3c2410_udc *udc = to_s3c2410(g)
int retval;

dprintk(DEBUG_NORMAL, "%s() '%s'\n", __func__, driver->driver.name);

/* Sanity checks */
if (!udc)
return -ENODEV;

if (udc->driver)
return -EBUSY;

if (!bind || !driver->setup || driver->max_speed < USB_SPEED_FULL) {
dev_err(&udc->gadget.dev, "Invalid driver: bind %p setup %p speed %d\n",
bind, driver->setup, driver->max_speed);
return -EINVAL;
}
#if defined(MODULE)
if (!driver->unbind) {
dev_err(&udc->gadget.dev, "Invalid driver: no unbind method\n");
return -EINVAL;
}
#endif

/* Hook the driver */
udc->driver = driver;
udc->gadget.dev.driver = &driver->driver;
Expand All @@ -1702,15 +1684,6 @@ static int s3c2410_udc_start(struct usb_gadget_driver *driver,
goto register_error;
}

dprintk(DEBUG_NORMAL, "binding gadget driver '%s'\n",
driver->driver.name);

retval = bind(&udc->gadget, driver);
if (retval) {
device_del(&udc->gadget.dev);
goto register_error;
}

/* Enable udc */
s3c2410_udc_enable(udc);

Expand All @@ -1722,24 +1695,10 @@ static int s3c2410_udc_start(struct usb_gadget_driver *driver,
return retval;
}

static int s3c2410_udc_stop(struct usb_gadget_driver *driver)
static int s3c2410_udc_stop(struct usb_gadget *g,
struct usb_gadget_driver *driver)
{
struct s3c2410_udc *udc = the_controller;

if (!udc)
return -ENODEV;

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

dprintk(DEBUG_NORMAL, "usb_gadget_unregister_driver() '%s'\n",
driver->driver.name);

/* report disconnect */
if (driver->disconnect)
driver->disconnect(&udc->gadget);

driver->unbind(&udc->gadget);
struct s3c2410_udc *udc = to_s3c2410(g);

device_del(&udc->gadget.dev);
udc->driver = NULL;
Expand Down
1 change: 1 addition & 0 deletions drivers/usb/gadget/s3c2410_udc.h
Original file line number Diff line number Diff line change
Expand Up @@ -95,5 +95,6 @@ struct s3c2410_udc {
u8 vbus;
struct dentry *regs_info;
};
#define to_s3c2410(g) (container_of((g), struct s3c2410_udc, gadget))

#endif

0 comments on commit 4991e10

Please sign in to comment.