aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/renesas_usbhs
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/renesas_usbhs
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/renesas_usbhs')
-rw-r--r--drivers/usb/renesas_usbhs/mod_gadget.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/drivers/usb/renesas_usbhs/mod_gadget.c b/drivers/usb/renesas_usbhs/mod_gadget.c
index aa591b66383..c9c56e7a1b1 100644
--- a/drivers/usb/renesas_usbhs/mod_gadget.c
+++ b/drivers/usb/renesas_usbhs/mod_gadget.c
@@ -725,7 +725,7 @@ static int usbhsg_try_stop(struct usbhs_priv *priv, u32 status)
725 * 725 *
726 */ 726 */
727struct usbhsg_gpriv *the_controller; 727struct usbhsg_gpriv *the_controller;
728int usb_gadget_probe_driver(struct usb_gadget_driver *driver, 728static int usbhsg_gadget_start(struct usb_gadget_driver *driver,
729 int (*bind)(struct usb_gadget *)) 729 int (*bind)(struct usb_gadget *))
730{ 730{
731 struct usbhsg_gpriv *gpriv = the_controller; 731 struct usbhsg_gpriv *gpriv = the_controller;
@@ -775,9 +775,8 @@ add_fail:
775 775
776 return ret; 776 return ret;
777} 777}
778EXPORT_SYMBOL(usb_gadget_probe_driver);
779 778
780int usb_gadget_unregister_driver(struct usb_gadget_driver *driver) 779static int usbhsg_gadget_stop(struct usb_gadget_driver *driver)
781{ 780{
782 struct usbhsg_gpriv *gpriv = the_controller; 781 struct usbhsg_gpriv *gpriv = the_controller;
783 struct usbhs_priv *priv; 782 struct usbhs_priv *priv;
@@ -806,7 +805,6 @@ int usb_gadget_unregister_driver(struct usb_gadget_driver *driver)
806 805
807 return 0; 806 return 0;
808} 807}
809EXPORT_SYMBOL(usb_gadget_unregister_driver);
810 808
811/* 809/*
812 * usb gadget ops 810 * usb gadget ops
@@ -821,6 +819,8 @@ static int usbhsg_get_frame(struct usb_gadget *gadget)
821 819
822static struct usb_gadget_ops usbhsg_gadget_ops = { 820static struct usb_gadget_ops usbhsg_gadget_ops = {
823 .get_frame = usbhsg_get_frame, 821 .get_frame = usbhsg_get_frame,
822 .start = usbhsg_gadget_start,
823 .stop = usbhsg_gadget_stop,
824}; 824};
825 825
826static int usbhsg_start(struct usbhs_priv *priv) 826static int usbhsg_start(struct usbhs_priv *priv)
@@ -840,6 +840,7 @@ int __devinit usbhs_mod_gadget_probe(struct usbhs_priv *priv)
840 struct device *dev = usbhs_priv_to_dev(priv); 840 struct device *dev = usbhs_priv_to_dev(priv);
841 int pipe_size = usbhs_get_dparam(priv, pipe_size); 841 int pipe_size = usbhs_get_dparam(priv, pipe_size);
842 int i; 842 int i;
843 int ret;
843 844
844 gpriv = kzalloc(sizeof(struct usbhsg_gpriv), GFP_KERNEL); 845 gpriv = kzalloc(sizeof(struct usbhsg_gpriv), GFP_KERNEL);
845 if (!gpriv) { 846 if (!gpriv) {
@@ -850,6 +851,7 @@ int __devinit usbhs_mod_gadget_probe(struct usbhs_priv *priv)
850 uep = kzalloc(sizeof(struct usbhsg_uep) * pipe_size, GFP_KERNEL); 851 uep = kzalloc(sizeof(struct usbhsg_uep) * pipe_size, GFP_KERNEL);
851 if (!uep) { 852 if (!uep) {
852 dev_err(dev, "Could not allocate ep\n"); 853 dev_err(dev, "Could not allocate ep\n");
854 ret = -ENOMEM;
853 goto usbhs_mod_gadget_probe_err_gpriv; 855 goto usbhs_mod_gadget_probe_err_gpriv;
854 } 856 }
855 857
@@ -911,20 +913,28 @@ int __devinit usbhs_mod_gadget_probe(struct usbhs_priv *priv)
911 913
912 the_controller = gpriv; 914 the_controller = gpriv;
913 915
916 ret = usb_add_gadget_udc(dev, &gpriv->gadget);
917 if (ret)
918 goto err_add_udc;
919
920
914 dev_info(dev, "gadget probed\n"); 921 dev_info(dev, "gadget probed\n");
915 922
916 return 0; 923 return 0;
924err_add_udc:
925 kfree(gpriv->uep);
917 926
918usbhs_mod_gadget_probe_err_gpriv: 927usbhs_mod_gadget_probe_err_gpriv:
919 kfree(gpriv); 928 kfree(gpriv);
920 929
921 return -ENOMEM; 930 return ret;
922} 931}
923 932
924void __devexit usbhs_mod_gadget_remove(struct usbhs_priv *priv) 933void __devexit usbhs_mod_gadget_remove(struct usbhs_priv *priv)
925{ 934{
926 struct usbhsg_gpriv *gpriv = usbhsg_priv_to_gpriv(priv); 935 struct usbhsg_gpriv *gpriv = usbhsg_priv_to_gpriv(priv);
927 936
937 usb_del_gadget_udc(&gpriv->gadget);
928 kfree(gpriv->uep); 938 kfree(gpriv->uep);
929 kfree(gpriv); 939 kfree(gpriv);
930} 940}