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 /drivers/usb/gadget | |
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>
Diffstat (limited to 'drivers/usb/gadget')
-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 |