diff options
author | Peter Chen <peter.chen@freescale.com> | 2014-07-04 00:39:41 -0400 |
---|---|---|
committer | Peter Chen <peter.chen@freescale.com> | 2014-07-04 05:31:06 -0400 |
commit | 2275dc85cecd4d32e31fc4d5223890f0a0f833c1 (patch) | |
tree | 316ec26b5aa35a6cb48dbb0693c149b88e4723a7 | |
parent | 463ada98906cee6035426bba377b7f9d0d2f979c (diff) |
ENGR00320792-2 Revert "drivers: usb: udc-core: add deferred bind for gadget driver"
This reverts commit 22392a023eee469a7068f1ea77492d5ab9af14f9.
Signed-off-by: Peter Chen <peter.chen@freescale.com>
-rw-r--r-- | drivers/usb/gadget/udc-core.c | 29 | ||||
-rw-r--r-- | include/linux/usb/gadget.h | 3 |
2 files changed, 1 insertions, 31 deletions
diff --git a/drivers/usb/gadget/udc-core.c b/drivers/usb/gadget/udc-core.c index 6a84b34472b7..752fd147ce35 100644 --- a/drivers/usb/gadget/udc-core.c +++ b/drivers/usb/gadget/udc-core.c | |||
@@ -47,7 +47,6 @@ struct usb_udc { | |||
47 | 47 | ||
48 | static struct class *udc_class; | 48 | static struct class *udc_class; |
49 | static LIST_HEAD(udc_list); | 49 | static LIST_HEAD(udc_list); |
50 | static LIST_HEAD(driver_list); | ||
51 | static DEFINE_MUTEX(udc_lock); | 50 | static DEFINE_MUTEX(udc_lock); |
52 | 51 | ||
53 | /* ------------------------------------------------------------------------- */ | 52 | /* ------------------------------------------------------------------------- */ |
@@ -181,9 +180,6 @@ static void usb_udc_nop_release(struct device *dev) | |||
181 | dev_vdbg(dev, "%s\n", __func__); | 180 | dev_vdbg(dev, "%s\n", __func__); |
182 | } | 181 | } |
183 | 182 | ||
184 | static int udc_bind_to_driver(struct usb_udc *udc, | ||
185 | struct usb_gadget_driver *driver); | ||
186 | |||
187 | /** | 183 | /** |
188 | * usb_add_gadget_udc_release - adds a new gadget to the udc class driver list | 184 | * usb_add_gadget_udc_release - adds a new gadget to the udc class driver list |
189 | * @parent: the parent device to this udc. Usually the controller driver's | 185 | * @parent: the parent device to this udc. Usually the controller driver's |
@@ -240,20 +236,6 @@ int usb_add_gadget_udc_release(struct device *parent, struct usb_gadget *gadget, | |||
240 | 236 | ||
241 | usb_gadget_set_state(gadget, USB_STATE_NOTATTACHED); | 237 | usb_gadget_set_state(gadget, USB_STATE_NOTATTACHED); |
242 | 238 | ||
243 | if (!list_empty(&driver_list)) { | ||
244 | struct usb_gadget_driver *driver; | ||
245 | list_for_each_entry(driver, &driver_list, list) { | ||
246 | if (driver->attached) | ||
247 | continue; | ||
248 | ret = udc_bind_to_driver(udc, driver); | ||
249 | if (ret) | ||
250 | goto err4; | ||
251 | else | ||
252 | break; | ||
253 | } | ||
254 | |||
255 | } | ||
256 | |||
257 | mutex_unlock(&udc_lock); | 239 | mutex_unlock(&udc_lock); |
258 | 240 | ||
259 | return 0; | 241 | return 0; |
@@ -364,7 +346,6 @@ static int udc_bind_to_driver(struct usb_udc *udc, struct usb_gadget_driver *dri | |||
364 | goto err1; | 346 | goto err1; |
365 | } | 347 | } |
366 | usb_gadget_connect(udc->gadget); | 348 | usb_gadget_connect(udc->gadget); |
367 | driver->attached = true; | ||
368 | 349 | ||
369 | kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE); | 350 | kobject_uevent(&udc->dev.kobj, KOBJ_CHANGE); |
370 | return 0; | 351 | return 0; |
@@ -420,13 +401,8 @@ int usb_gadget_probe_driver(struct usb_gadget_driver *driver) | |||
420 | 401 | ||
421 | pr_debug("couldn't find an available UDC\n"); | 402 | pr_debug("couldn't find an available UDC\n"); |
422 | mutex_unlock(&udc_lock); | 403 | mutex_unlock(&udc_lock); |
423 | 404 | return -ENODEV; | |
424 | driver->attached = false; | ||
425 | list_add_tail(&driver->list, &driver_list); | ||
426 | |||
427 | return 0; | ||
428 | found: | 405 | found: |
429 | list_add_tail(&driver->list, &driver_list); | ||
430 | ret = udc_bind_to_driver(udc, driver); | 406 | ret = udc_bind_to_driver(udc, driver); |
431 | mutex_unlock(&udc_lock); | 407 | mutex_unlock(&udc_lock); |
432 | return ret; | 408 | return ret; |
@@ -451,9 +427,6 @@ int usb_gadget_unregister_driver(struct usb_gadget_driver *driver) | |||
451 | break; | 427 | break; |
452 | } | 428 | } |
453 | 429 | ||
454 | driver->attached = false; | ||
455 | list_del(&driver->list); | ||
456 | |||
457 | mutex_unlock(&udc_lock); | 430 | mutex_unlock(&udc_lock); |
458 | return ret; | 431 | return ret; |
459 | } | 432 | } |
diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h index 28e99a181b35..25a5007f92e3 100644 --- a/include/linux/usb/gadget.h +++ b/include/linux/usb/gadget.h | |||
@@ -837,9 +837,6 @@ struct usb_gadget_driver { | |||
837 | 837 | ||
838 | /* FIXME support safe rmmod */ | 838 | /* FIXME support safe rmmod */ |
839 | struct device_driver driver; | 839 | struct device_driver driver; |
840 | |||
841 | bool attached; | ||
842 | struct list_head list; | ||
843 | }; | 840 | }; |
844 | 841 | ||
845 | 842 | ||