diff options
| author | Felipe Balbi <balbi@ti.com> | 2013-01-24 10:20:46 -0500 |
|---|---|---|
| committer | Felipe Balbi <balbi@ti.com> | 2013-01-24 14:11:32 -0500 |
| commit | 4991e102c11524aff42ce3a0e7caeb6e5577808c (patch) | |
| tree | bbbed30a39ee243dba4195d5e852864a242d7e3e | |
| parent | 70189a63d408d4ea0cddbf0ff0afe6020844e813 (diff) | |
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: Felipe Balbi <balbi@ti.com>
| -rw-r--r-- | drivers/usb/gadget/s3c2410_udc.c | 65 | ||||
| -rw-r--r-- | drivers/usb/gadget/s3c2410_udc.h | 1 |
2 files changed, 13 insertions, 53 deletions
diff --git a/drivers/usb/gadget/s3c2410_udc.c b/drivers/usb/gadget/s3c2410_udc.c index a2fa6e16d019..fc07b4381286 100644 --- a/drivers/usb/gadget/s3c2410_udc.c +++ b/drivers/usb/gadget/s3c2410_udc.c | |||
| @@ -1538,9 +1538,10 @@ static int s3c2410_vbus_draw(struct usb_gadget *_gadget, unsigned ma) | |||
| 1538 | return -ENOTSUPP; | 1538 | return -ENOTSUPP; |
| 1539 | } | 1539 | } |
| 1540 | 1540 | ||
| 1541 | static int s3c2410_udc_start(struct usb_gadget_driver *driver, | 1541 | static int s3c2410_udc_start(struct usb_gadget *g, |
| 1542 | int (*bind)(struct usb_gadget *, struct usb_gadget_driver *)); | 1542 | struct usb_gadget_driver *driver); |
| 1543 | static int s3c2410_udc_stop(struct usb_gadget_driver *driver); | 1543 | static int s3c2410_udc_stop(struct usb_gadget *g, |
| 1544 | struct usb_gadget_driver *driver); | ||
| 1544 | 1545 | ||
| 1545 | static const struct usb_gadget_ops s3c2410_ops = { | 1546 | static const struct usb_gadget_ops s3c2410_ops = { |
| 1546 | .get_frame = s3c2410_udc_get_frame, | 1547 | .get_frame = s3c2410_udc_get_frame, |
| @@ -1549,8 +1550,8 @@ static const struct usb_gadget_ops s3c2410_ops = { | |||
| 1549 | .pullup = s3c2410_udc_pullup, | 1550 | .pullup = s3c2410_udc_pullup, |
| 1550 | .vbus_session = s3c2410_udc_vbus_session, | 1551 | .vbus_session = s3c2410_udc_vbus_session, |
| 1551 | .vbus_draw = s3c2410_vbus_draw, | 1552 | .vbus_draw = s3c2410_vbus_draw, |
| 1552 | .start = s3c2410_udc_start, | 1553 | .udc_start = s3c2410_udc_start, |
| 1553 | .stop = s3c2410_udc_stop, | 1554 | .udc_stop = s3c2410_udc_stop, |
| 1554 | }; | 1555 | }; |
| 1555 | 1556 | ||
| 1556 | static void s3c2410_udc_command(enum s3c2410_udc_cmd_e cmd) | 1557 | 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 | s3c2410_udc_command(S3C2410_UDC_P_ENABLE); | 1665 | s3c2410_udc_command(S3C2410_UDC_P_ENABLE); |
| 1665 | } | 1666 | } |
| 1666 | 1667 | ||
| 1667 | static int s3c2410_udc_start(struct usb_gadget_driver *driver, | 1668 | static int s3c2410_udc_start(struct usb_gadget *g, |
| 1668 | int (*bind)(struct usb_gadget *, struct usb_gadget_driver *)) | 1669 | struct usb_gadget_driver *driver) |
| 1669 | { | 1670 | { |
| 1670 | struct s3c2410_udc *udc = the_controller; | 1671 | struct s3c2410_udc *udc = to_s3c2410(g) |
| 1671 | int retval; | 1672 | int retval; |
| 1672 | 1673 | ||
| 1673 | dprintk(DEBUG_NORMAL, "%s() '%s'\n", __func__, driver->driver.name); | 1674 | dprintk(DEBUG_NORMAL, "%s() '%s'\n", __func__, driver->driver.name); |
| 1674 | 1675 | ||
| 1675 | /* Sanity checks */ | ||
| 1676 | if (!udc) | ||
| 1677 | return -ENODEV; | ||
| 1678 | |||
| 1679 | if (udc->driver) | ||
| 1680 | return -EBUSY; | ||
| 1681 | |||
| 1682 | if (!bind || !driver->setup || driver->max_speed < USB_SPEED_FULL) { | ||
| 1683 | dev_err(&udc->gadget.dev, "Invalid driver: bind %p setup %p speed %d\n", | ||
| 1684 | bind, driver->setup, driver->max_speed); | ||
| 1685 | return -EINVAL; | ||
| 1686 | } | ||
| 1687 | #if defined(MODULE) | ||
| 1688 | if (!driver->unbind) { | ||
| 1689 | dev_err(&udc->gadget.dev, "Invalid driver: no unbind method\n"); | ||
| 1690 | return -EINVAL; | ||
| 1691 | } | ||
| 1692 | #endif | ||
| 1693 | |||
| 1694 | /* Hook the driver */ | 1676 | /* Hook the driver */ |
| 1695 | udc->driver = driver; | 1677 | udc->driver = driver; |
| 1696 | udc->gadget.dev.driver = &driver->driver; | 1678 | udc->gadget.dev.driver = &driver->driver; |
| @@ -1702,15 +1684,6 @@ static int s3c2410_udc_start(struct usb_gadget_driver *driver, | |||
| 1702 | goto register_error; | 1684 | goto register_error; |
| 1703 | } | 1685 | } |
| 1704 | 1686 | ||
| 1705 | dprintk(DEBUG_NORMAL, "binding gadget driver '%s'\n", | ||
| 1706 | driver->driver.name); | ||
| 1707 | |||
| 1708 | retval = bind(&udc->gadget, driver); | ||
| 1709 | if (retval) { | ||
| 1710 | device_del(&udc->gadget.dev); | ||
| 1711 | goto register_error; | ||
| 1712 | } | ||
| 1713 | |||
| 1714 | /* Enable udc */ | 1687 | /* Enable udc */ |
| 1715 | s3c2410_udc_enable(udc); | 1688 | s3c2410_udc_enable(udc); |
| 1716 | 1689 | ||
| @@ -1722,24 +1695,10 @@ register_error: | |||
| 1722 | return retval; | 1695 | return retval; |
| 1723 | } | 1696 | } |
| 1724 | 1697 | ||
| 1725 | static int s3c2410_udc_stop(struct usb_gadget_driver *driver) | 1698 | static int s3c2410_udc_stop(struct usb_gadget *g, |
| 1699 | struct usb_gadget_driver *driver) | ||
| 1726 | { | 1700 | { |
| 1727 | struct s3c2410_udc *udc = the_controller; | 1701 | struct s3c2410_udc *udc = to_s3c2410(g); |
| 1728 | |||
| 1729 | if (!udc) | ||
| 1730 | return -ENODEV; | ||
| 1731 | |||
| 1732 | if (!driver || driver != udc->driver || !driver->unbind) | ||
| 1733 | return -EINVAL; | ||
| 1734 | |||
| 1735 | dprintk(DEBUG_NORMAL, "usb_gadget_unregister_driver() '%s'\n", | ||
| 1736 | driver->driver.name); | ||
| 1737 | |||
| 1738 | /* report disconnect */ | ||
| 1739 | if (driver->disconnect) | ||
| 1740 | driver->disconnect(&udc->gadget); | ||
| 1741 | |||
| 1742 | driver->unbind(&udc->gadget); | ||
| 1743 | 1702 | ||
| 1744 | device_del(&udc->gadget.dev); | 1703 | device_del(&udc->gadget.dev); |
| 1745 | udc->driver = NULL; | 1704 | udc->driver = NULL; |
diff --git a/drivers/usb/gadget/s3c2410_udc.h b/drivers/usb/gadget/s3c2410_udc.h index 3e80fd5c820f..93bf225f1969 100644 --- a/drivers/usb/gadget/s3c2410_udc.h +++ b/drivers/usb/gadget/s3c2410_udc.h | |||
| @@ -95,5 +95,6 @@ struct s3c2410_udc { | |||
| 95 | u8 vbus; | 95 | u8 vbus; |
| 96 | struct dentry *regs_info; | 96 | struct dentry *regs_info; |
| 97 | }; | 97 | }; |
| 98 | #define to_s3c2410(g) (container_of((g), struct s3c2410_udc, gadget)) | ||
| 98 | 99 | ||
| 99 | #endif | 100 | #endif |
