aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Chen <peter.chen@freescale.com>2014-07-04 00:39:41 -0400
committerPeter Chen <peter.chen@freescale.com>2014-07-04 05:31:06 -0400
commit2275dc85cecd4d32e31fc4d5223890f0a0f833c1 (patch)
tree316ec26b5aa35a6cb48dbb0693c149b88e4723a7
parent463ada98906cee6035426bba377b7f9d0d2f979c (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.c29
-rw-r--r--include/linux/usb/gadget.h3
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
48static struct class *udc_class; 48static struct class *udc_class;
49static LIST_HEAD(udc_list); 49static LIST_HEAD(udc_list);
50static LIST_HEAD(driver_list);
51static DEFINE_MUTEX(udc_lock); 50static 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
184static 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;
428found: 405found:
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