aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/gadget/fsl_qe_udc.c
diff options
context:
space:
mode:
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>2011-06-28 09:33:47 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2011-06-28 14:13:35 -0400
commit0f91349b89f37dfad7b77f7829a105b6a0f526ec (patch)
tree4a2b109d3d736318913d0209a5f4ce89aaad1d24 /drivers/usb/gadget/fsl_qe_udc.c
parent2ccea03a8f7ec93641791f2760d7cdc6cab6205f (diff)
usb: gadget: convert all users to the new udc infrastructure
peripheral drivers are using usb_add_gadget()/usb_del_gadget() to register/unregister to the udc-core. The udc-core will take the first available gadget driver and attach function driver which is calling usb_gadget_register_driver(). This is the same behaviour we have right now. Only dummy_hcd was tested, the others were compiled tested. Cc: Alan Stern <stern@rowland.harvard.edu> Cc: Anton Tikhomirov <av.tikhomirov@samsung.com> Cc: Ben Dooks <ben-linux@fluff.org> Cc: Dan Carpenter <error27@gmail.com> Cc: Darius Augulis <augulis.darius@gmail.com> Cc: Eric Miao <eric.y.miao@gmail.com> Cc: Jingoo Han <jg1.han@samsung.com> Cc: Kukjin Kim <kgene.kim@samsung.com> Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Cc: Li Yang <leoli@freescale.com> Cc: Michael Hennerich <michael.hennerich@analog.com> Acked-by: Mike Frysinger <vapier@gentoo.org> Cc: Nicolas Ferre <nicolas.ferre@atmel.com> Cc: Pavankumar Kondeti <pkondeti@codeaurora.org> Cc: Roy Huang <roy.huang@analog.com> Cc: Russell King <linux@arm.linux.org.uk> Cc: Toshiharu Okada <toshiharu-linux@dsn.okisemi.com> Cc: Xiaochen Shen <xiaochen.shen@intel.com> Cc: Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com> Cc: Yuan-Hsin Chen <yhchen@faraday-tech.com> Cc: cxie4 <cxie4@marvell.com> Cc: linux-geode@lists.infradead.org Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Felipe Balbi <balbi@ti.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/gadget/fsl_qe_udc.c')
-rw-r--r--drivers/usb/gadget/fsl_qe_udc.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/drivers/usb/gadget/fsl_qe_udc.c b/drivers/usb/gadget/fsl_qe_udc.c
index 3a68e09309f7..3bf872e1ad39 100644
--- a/drivers/usb/gadget/fsl_qe_udc.c
+++ b/drivers/usb/gadget/fsl_qe_udc.c
@@ -1927,6 +1927,10 @@ static int qe_pullup(struct usb_gadget *gadget, int is_on)
1927 return -ENOTSUPP; 1927 return -ENOTSUPP;
1928} 1928}
1929 1929
1930static int fsl_qe_start(struct usb_gadget_driver *driver,
1931 int (*bind)(struct usb_gadget *));
1932static int fsl_qe_stop(struct usb_gadget_driver *driver);
1933
1930/* defined in usb_gadget.h */ 1934/* defined in usb_gadget.h */
1931static struct usb_gadget_ops qe_gadget_ops = { 1935static struct usb_gadget_ops qe_gadget_ops = {
1932 .get_frame = qe_get_frame, 1936 .get_frame = qe_get_frame,
@@ -1935,6 +1939,8 @@ static struct usb_gadget_ops qe_gadget_ops = {
1935 .vbus_session = qe_vbus_session, 1939 .vbus_session = qe_vbus_session,
1936 .vbus_draw = qe_vbus_draw, 1940 .vbus_draw = qe_vbus_draw,
1937 .pullup = qe_pullup, 1941 .pullup = qe_pullup,
1942 .start = fsl_qe_start,
1943 .stop = fsl_qe_stop,
1938}; 1944};
1939 1945
1940/*------------------------------------------------------------------------- 1946/*-------------------------------------------------------------------------
@@ -2320,7 +2326,7 @@ static irqreturn_t qe_udc_irq(int irq, void *_udc)
2320/*------------------------------------------------------------------------- 2326/*-------------------------------------------------------------------------
2321 Gadget driver probe and unregister. 2327 Gadget driver probe and unregister.
2322 --------------------------------------------------------------------------*/ 2328 --------------------------------------------------------------------------*/
2323int usb_gadget_probe_driver(struct usb_gadget_driver *driver, 2329static int fsl_qe_start(struct usb_gadget_driver *driver,
2324 int (*bind)(struct usb_gadget *)) 2330 int (*bind)(struct usb_gadget *))
2325{ 2331{
2326 int retval; 2332 int retval;
@@ -2369,9 +2375,8 @@ int usb_gadget_probe_driver(struct usb_gadget_driver *driver,
2369 udc_controller->gadget.name, driver->driver.name); 2375 udc_controller->gadget.name, driver->driver.name);
2370 return 0; 2376 return 0;
2371} 2377}
2372EXPORT_SYMBOL(usb_gadget_probe_driver);
2373 2378
2374int usb_gadget_unregister_driver(struct usb_gadget_driver *driver) 2379static int fsl_qe_stop(struct usb_gadget_driver *driver)
2375{ 2380{
2376 struct qe_ep *loop_ep; 2381 struct qe_ep *loop_ep;
2377 unsigned long flags; 2382 unsigned long flags;
@@ -2411,7 +2416,6 @@ int usb_gadget_unregister_driver(struct usb_gadget_driver *driver)
2411 driver->driver.name); 2416 driver->driver.name);
2412 return 0; 2417 return 0;
2413} 2418}
2414EXPORT_SYMBOL(usb_gadget_unregister_driver);
2415 2419
2416/* udc structure's alloc and setup, include ep-param alloc */ 2420/* udc structure's alloc and setup, include ep-param alloc */
2417static struct qe_udc __devinit *qe_udc_config(struct platform_device *ofdev) 2421static struct qe_udc __devinit *qe_udc_config(struct platform_device *ofdev)
@@ -2662,11 +2666,17 @@ static int __devinit qe_udc_probe(struct platform_device *ofdev)
2662 if (ret) 2666 if (ret)
2663 goto err6; 2667 goto err6;
2664 2668
2669 ret = usb_add_gadget_udc(&ofdev->dev, &udc_controller->gadget);
2670 if (ret)
2671 goto err7;
2672
2665 dev_info(udc_controller->dev, 2673 dev_info(udc_controller->dev,
2666 "%s USB controller initialized as device\n", 2674 "%s USB controller initialized as device\n",
2667 (udc_controller->soc_type == PORT_QE) ? "QE" : "CPM"); 2675 (udc_controller->soc_type == PORT_QE) ? "QE" : "CPM");
2668 return 0; 2676 return 0;
2669 2677
2678err7:
2679 device_unregister(&udc_controller->gadget.dev);
2670err6: 2680err6:
2671 free_irq(udc_controller->usb_irq, udc_controller); 2681 free_irq(udc_controller->usb_irq, udc_controller);
2672err5: 2682err5:
@@ -2721,6 +2731,8 @@ static int __devexit qe_udc_remove(struct platform_device *ofdev)
2721 if (!udc_controller) 2731 if (!udc_controller)
2722 return -ENODEV; 2732 return -ENODEV;
2723 2733
2734 usb_del_gadget_udc(&udc_controller->gadget);
2735
2724 udc_controller->done = &done; 2736 udc_controller->done = &done;
2725 tasklet_disable(&udc_controller->rx_tasklet); 2737 tasklet_disable(&udc_controller->rx_tasklet);
2726 2738