diff options
Diffstat (limited to 'drivers/usb/gadget/udc/udc-core.c')
-rw-r--r-- | drivers/usb/gadget/udc/udc-core.c | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/drivers/usb/gadget/udc/udc-core.c b/drivers/usb/gadget/udc/udc-core.c index f2054659f25b..e31d574d8860 100644 --- a/drivers/usb/gadget/udc/udc-core.c +++ b/drivers/usb/gadget/udc/udc-core.c | |||
@@ -174,8 +174,7 @@ EXPORT_SYMBOL_GPL(usb_gadget_udc_reset); | |||
174 | 174 | ||
175 | /** | 175 | /** |
176 | * usb_gadget_udc_start - tells usb device controller to start up | 176 | * usb_gadget_udc_start - tells usb device controller to start up |
177 | * @gadget: The gadget we want to get started | 177 | * @udc: The UDC to be started |
178 | * @driver: The driver we want to bind to @gadget | ||
179 | * | 178 | * |
180 | * This call is issued by the UDC Class driver when it's about | 179 | * This call is issued by the UDC Class driver when it's about |
181 | * to register a gadget driver to the device controller, before | 180 | * to register a gadget driver to the device controller, before |
@@ -186,10 +185,9 @@ EXPORT_SYMBOL_GPL(usb_gadget_udc_reset); | |||
186 | * | 185 | * |
187 | * Returns zero on success, else negative errno. | 186 | * Returns zero on success, else negative errno. |
188 | */ | 187 | */ |
189 | static inline int usb_gadget_udc_start(struct usb_gadget *gadget, | 188 | static inline int usb_gadget_udc_start(struct usb_udc *udc) |
190 | struct usb_gadget_driver *driver) | ||
191 | { | 189 | { |
192 | return gadget->ops->udc_start(gadget, driver); | 190 | return udc->gadget->ops->udc_start(udc->gadget, udc->driver); |
193 | } | 191 | } |
194 | 192 | ||
195 | /** | 193 | /** |
@@ -204,10 +202,9 @@ static inline int usb_gadget_udc_start(struct usb_gadget *gadget, | |||
204 | * far as powering off UDC completely and disable its data | 202 | * far as powering off UDC completely and disable its data |
205 | * line pullups. | 203 | * line pullups. |
206 | */ | 204 | */ |
207 | static inline void usb_gadget_udc_stop(struct usb_gadget *gadget, | 205 | static inline void usb_gadget_udc_stop(struct usb_udc *udc) |
208 | struct usb_gadget_driver *driver) | ||
209 | { | 206 | { |
210 | gadget->ops->udc_stop(gadget, driver); | 207 | udc->gadget->ops->udc_stop(udc->gadget); |
211 | } | 208 | } |
212 | 209 | ||
213 | /** | 210 | /** |
@@ -328,14 +325,14 @@ EXPORT_SYMBOL_GPL(usb_add_gadget_udc); | |||
328 | static void usb_gadget_remove_driver(struct usb_udc *udc) | 325 | static void usb_gadget_remove_driver(struct usb_udc *udc) |
329 | { | 326 | { |
330 | dev_dbg(&udc->dev, "unregistering UDC driver [%s]\n", | 327 | dev_dbg(&udc->dev, "unregistering UDC driver [%s]\n", |
331 | udc->gadget->name); | 328 | udc->driver->function); |
332 | 329 | ||
333 | kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE); | 330 | kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE); |
334 | 331 | ||
335 | usb_gadget_disconnect(udc->gadget); | 332 | usb_gadget_disconnect(udc->gadget); |
336 | udc->driver->disconnect(udc->gadget); | 333 | udc->driver->disconnect(udc->gadget); |
337 | udc->driver->unbind(udc->gadget); | 334 | udc->driver->unbind(udc->gadget); |
338 | usb_gadget_udc_stop(udc->gadget, NULL); | 335 | usb_gadget_udc_stop(udc); |
339 | 336 | ||
340 | udc->driver = NULL; | 337 | udc->driver = NULL; |
341 | udc->dev.driver = NULL; | 338 | udc->dev.driver = NULL; |
@@ -395,7 +392,7 @@ static int udc_bind_to_driver(struct usb_udc *udc, struct usb_gadget_driver *dri | |||
395 | ret = driver->bind(udc->gadget, driver); | 392 | ret = driver->bind(udc->gadget, driver); |
396 | if (ret) | 393 | if (ret) |
397 | goto err1; | 394 | goto err1; |
398 | ret = usb_gadget_udc_start(udc->gadget, driver); | 395 | ret = usb_gadget_udc_start(udc); |
399 | if (ret) { | 396 | if (ret) { |
400 | driver->unbind(udc->gadget); | 397 | driver->unbind(udc->gadget); |
401 | goto err1; | 398 | goto err1; |
@@ -414,7 +411,7 @@ err1: | |||
414 | return ret; | 411 | return ret; |
415 | } | 412 | } |
416 | 413 | ||
417 | int udc_attach_driver(const char *name, struct usb_gadget_driver *driver) | 414 | int usb_udc_attach_driver(const char *name, struct usb_gadget_driver *driver) |
418 | { | 415 | { |
419 | struct usb_udc *udc = NULL; | 416 | struct usb_udc *udc = NULL; |
420 | int ret = -ENODEV; | 417 | int ret = -ENODEV; |
@@ -438,7 +435,7 @@ out: | |||
438 | mutex_unlock(&udc_lock); | 435 | mutex_unlock(&udc_lock); |
439 | return ret; | 436 | return ret; |
440 | } | 437 | } |
441 | EXPORT_SYMBOL_GPL(udc_attach_driver); | 438 | EXPORT_SYMBOL_GPL(usb_udc_attach_driver); |
442 | 439 | ||
443 | int usb_gadget_probe_driver(struct usb_gadget_driver *driver) | 440 | int usb_gadget_probe_driver(struct usb_gadget_driver *driver) |
444 | { | 441 | { |
@@ -513,11 +510,12 @@ static ssize_t usb_udc_softconn_store(struct device *dev, | |||
513 | } | 510 | } |
514 | 511 | ||
515 | if (sysfs_streq(buf, "connect")) { | 512 | if (sysfs_streq(buf, "connect")) { |
516 | usb_gadget_udc_start(udc->gadget, udc->driver); | 513 | usb_gadget_udc_start(udc); |
517 | usb_gadget_connect(udc->gadget); | 514 | usb_gadget_connect(udc->gadget); |
518 | } else if (sysfs_streq(buf, "disconnect")) { | 515 | } else if (sysfs_streq(buf, "disconnect")) { |
519 | usb_gadget_disconnect(udc->gadget); | 516 | usb_gadget_disconnect(udc->gadget); |
520 | usb_gadget_udc_stop(udc->gadget, udc->driver); | 517 | udc->driver->disconnect(udc->gadget); |
518 | usb_gadget_udc_stop(udc); | ||
521 | } else { | 519 | } else { |
522 | dev_err(dev, "unsupported command '%s'\n", buf); | 520 | dev_err(dev, "unsupported command '%s'\n", buf); |
523 | return -EINVAL; | 521 | return -EINVAL; |