Commit 4991e102 authored by Felipe Balbi's avatar Felipe Balbi

usb: gadget: s3c2410: 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 70189a63
...@@ -1538,9 +1538,10 @@ static int s3c2410_vbus_draw(struct usb_gadget *_gadget, unsigned ma) ...@@ -1538,9 +1538,10 @@ static int s3c2410_vbus_draw(struct usb_gadget *_gadget, unsigned ma)
return -ENOTSUPP; return -ENOTSUPP;
} }
static int s3c2410_udc_start(struct usb_gadget_driver *driver, static int s3c2410_udc_start(struct usb_gadget *g,
int (*bind)(struct usb_gadget *, struct usb_gadget_driver *)); struct usb_gadget_driver *driver);
static int s3c2410_udc_stop(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 = { static const struct usb_gadget_ops s3c2410_ops = {
.get_frame = s3c2410_udc_get_frame, .get_frame = s3c2410_udc_get_frame,
...@@ -1549,8 +1550,8 @@ static const struct usb_gadget_ops s3c2410_ops = { ...@@ -1549,8 +1550,8 @@ static const struct usb_gadget_ops s3c2410_ops = {
.pullup = s3c2410_udc_pullup, .pullup = s3c2410_udc_pullup,
.vbus_session = s3c2410_udc_vbus_session, .vbus_session = s3c2410_udc_vbus_session,
.vbus_draw = s3c2410_vbus_draw, .vbus_draw = s3c2410_vbus_draw,
.start = s3c2410_udc_start, .udc_start = s3c2410_udc_start,
.stop = s3c2410_udc_stop, .udc_stop = s3c2410_udc_stop,
}; };
static void s3c2410_udc_command(enum s3c2410_udc_cmd_e cmd) static void s3c2410_udc_command(enum s3c2410_udc_cmd_e cmd)
...@@ -1664,33 +1665,14 @@ static void s3c2410_udc_enable(struct s3c2410_udc *dev) ...@@ -1664,33 +1665,14 @@ static void s3c2410_udc_enable(struct s3c2410_udc *dev)
s3c2410_udc_command(S3C2410_UDC_P_ENABLE); s3c2410_udc_command(S3C2410_UDC_P_ENABLE);
} }
static int s3c2410_udc_start(struct usb_gadget_driver *driver, static int s3c2410_udc_start(struct usb_gadget *g,
int (*bind)(struct usb_gadget *, struct usb_gadget_driver *)) struct usb_gadget_driver *driver)
{ {
struct s3c2410_udc *udc = the_controller; struct s3c2410_udc *udc = to_s3c2410(g)
int retval; int retval;
dprintk(DEBUG_NORMAL, "%s() '%s'\n", __func__, driver->driver.name); 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 */ /* Hook the driver */
udc->driver = driver; udc->driver = driver;
udc->gadget.dev.driver = &driver->driver; udc->gadget.dev.driver = &driver->driver;
...@@ -1702,15 +1684,6 @@ static int s3c2410_udc_start(struct usb_gadget_driver *driver, ...@@ -1702,15 +1684,6 @@ static int s3c2410_udc_start(struct usb_gadget_driver *driver,
goto register_error; 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 */ /* Enable udc */
s3c2410_udc_enable(udc); s3c2410_udc_enable(udc);
...@@ -1722,24 +1695,10 @@ static int s3c2410_udc_start(struct usb_gadget_driver *driver, ...@@ -1722,24 +1695,10 @@ static int s3c2410_udc_start(struct usb_gadget_driver *driver,
return retval; 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; struct s3c2410_udc *udc = to_s3c2410(g);
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);
device_del(&udc->gadget.dev); device_del(&udc->gadget.dev);
udc->driver = NULL; udc->driver = NULL;
......
...@@ -95,5 +95,6 @@ struct s3c2410_udc { ...@@ -95,5 +95,6 @@ struct s3c2410_udc {
u8 vbus; u8 vbus;
struct dentry *regs_info; struct dentry *regs_info;
}; };
#define to_s3c2410(g) (container_of((g), struct s3c2410_udc, gadget))
#endif #endif
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