Message ID | 1543485170-15478-7-git-send-email-jjhiblot@ti.com |
---|---|
State | Accepted |
Commit | 0131162439508801b9f8a330fa731f04273c9337 |
Delegated to: | Lukasz Majewski |
Headers | show |
Series | Improvements for the dwc3_generic driver | expand |
Hi Jean-Jacques, On Thu, 29 Nov 2018 at 02:54, Jean-Jacques Hiblot <jjhiblot@ti.com> wrote: > > UCLASS_USB_DEV_GENERIC was meant for USB devices connected to host > controllers, not gadget devices. > Adding a new UCLASS for gadget devices alone. > > Also move the generic DM code for USB gadgets in a separate file for > clarity. > > Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com> > > --- > > Changes in v4: None > Changes in v3: None > Changes in v2: None > > board/sunxi/board.c | 2 +- > drivers/usb/dwc3/dwc3-generic.c | 2 +- > drivers/usb/gadget/ether.c | 2 +- > drivers/usb/gadget/udc/Makefile | 4 +++ > drivers/usb/gadget/udc/udc-core.c | 41 -------------------------- > drivers/usb/gadget/udc/udc-uclass.c | 58 +++++++++++++++++++++++++++++++++++++ > drivers/usb/musb-new/omap2430.c | 2 +- > drivers/usb/musb-new/sunxi.c | 2 +- > include/dm/uclass-id.h | 1 + > 9 files changed, 68 insertions(+), 46 deletions(-) > create mode 100644 drivers/usb/gadget/udc/udc-uclass.c We should have a test for this, with a sandbox driver for this uclass, as we have done for UCLASS_USB. Regards, Simon
On Thu, Nov 29, 2018 at 3:30 PM Jean-Jacques Hiblot <jjhiblot@ti.com> wrote: > > UCLASS_USB_DEV_GENERIC was meant for USB devices connected to host > controllers, not gadget devices. > Adding a new UCLASS for gadget devices alone. > > Also move the generic DM code for USB gadgets in a separate file for > clarity. > > Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com> > > --- > > Changes in v4: None > Changes in v3: None > Changes in v2: None > > board/sunxi/board.c | 2 +- > drivers/usb/dwc3/dwc3-generic.c | 2 +- > drivers/usb/gadget/ether.c | 2 +- > drivers/usb/gadget/udc/Makefile | 4 +++ > drivers/usb/gadget/udc/udc-core.c | 41 -------------------------- > drivers/usb/gadget/udc/udc-uclass.c | 58 +++++++++++++++++++++++++++++++++++++ > drivers/usb/musb-new/omap2430.c | 2 +- > drivers/usb/musb-new/sunxi.c | 2 +- > include/dm/uclass-id.h | 1 + > 9 files changed, 68 insertions(+), 46 deletions(-) > create mode 100644 drivers/usb/gadget/udc/udc-uclass.c > > diff --git a/board/sunxi/board.c b/board/sunxi/board.c > index 64ccbc7..9b36cc7 100644 > --- a/board/sunxi/board.c > +++ b/board/sunxi/board.c > @@ -663,7 +663,7 @@ int g_dnl_board_usb_cable_connected(void) > struct phy phy; > int ret; > > - ret = uclass_get_device(UCLASS_USB_DEV_GENERIC, 0, &dev); > + ret = uclass_get_device(UCLASS_USB_GADGET_GENERIC, 0, &dev); This is breaking sunxi boards which uses gadget mode. U-Boot 2019.01-rc2 (Dec 18 2018 - 17:31:53 +0530) Allwinner Technology CPU: Allwinner H3 (SUN8I 1680) Model: Banana Pi BPI-M2-Plus DRAM: 1 GiB Error binding driver 'sunxi-musb': -96 Some drivers failed to bind Error binding driver 'generic_simple_bus': -96 Some drivers failed to bind initcall sequence 7dfd127c failed at call 4a00c3a3 (err=-96) ### ERROR ### Please RESET the board ###
On Tue, Dec 18, 2018 at 6:08 AM Jagan Teki <jagan@amarulasolutions.com> wrote: > > On Thu, Nov 29, 2018 at 3:30 PM Jean-Jacques Hiblot <jjhiblot@ti.com> wrote: > > > > UCLASS_USB_DEV_GENERIC was meant for USB devices connected to host > > controllers, not gadget devices. > > Adding a new UCLASS for gadget devices alone. > > > > Also move the generic DM code for USB gadgets in a separate file for > > clarity. > > > > Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com> > > > > --- > > > > Changes in v4: None > > Changes in v3: None > > Changes in v2: None > > > > board/sunxi/board.c | 2 +- > > drivers/usb/dwc3/dwc3-generic.c | 2 +- > > drivers/usb/gadget/ether.c | 2 +- > > drivers/usb/gadget/udc/Makefile | 4 +++ > > drivers/usb/gadget/udc/udc-core.c | 41 -------------------------- > > drivers/usb/gadget/udc/udc-uclass.c | 58 +++++++++++++++++++++++++++++++++++++ > > drivers/usb/musb-new/omap2430.c | 2 +- > > drivers/usb/musb-new/sunxi.c | 2 +- > > include/dm/uclass-id.h | 1 + > > 9 files changed, 68 insertions(+), 46 deletions(-) > > create mode 100644 drivers/usb/gadget/udc/udc-uclass.c > > > > diff --git a/board/sunxi/board.c b/board/sunxi/board.c > > index 64ccbc7..9b36cc7 100644 > > --- a/board/sunxi/board.c > > +++ b/board/sunxi/board.c > > @@ -663,7 +663,7 @@ int g_dnl_board_usb_cable_connected(void) > > struct phy phy; > > int ret; > > > > - ret = uclass_get_device(UCLASS_USB_DEV_GENERIC, 0, &dev); > > + ret = uclass_get_device(UCLASS_USB_GADGET_GENERIC, 0, &dev); > > This is breaking sunxi boards which uses gadget mode. > > U-Boot 2019.01-rc2 (Dec 18 2018 - 17:31:53 +0530) Allwinner Technology > > CPU: Allwinner H3 (SUN8I 1680) > Model: Banana Pi BPI-M2-Plus > DRAM: 1 GiB > Error binding driver 'sunxi-musb': -96 > Some drivers failed to bind > Error binding driver 'generic_simple_bus': -96 > Some drivers failed to bind > initcall sequence 7dfd127c failed at call 4a00c3a3 (err=-96) > ### ERROR ### Please RESET the board ### I got a similar error when I tried to port the work done for the gadget mode to the omap2420 glue. I don't know if they're related, but the messages are the same (-96). I ended up just ignoring the generic device all together and used the #ifdef to load either host or gadget in the patch I submitted for the omap2430 glue. If this gets resolved, I might re-evaluate how I did the patch. adam > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > https://lists.denx.de/listinfo/u-boot
On 18/12/2018 13:08, Jagan Teki wrote: > On Thu, Nov 29, 2018 at 3:30 PM Jean-Jacques Hiblot <jjhiblot@ti.com> wrote: >> UCLASS_USB_DEV_GENERIC was meant for USB devices connected to host >> controllers, not gadget devices. >> Adding a new UCLASS for gadget devices alone. >> >> Also move the generic DM code for USB gadgets in a separate file for >> clarity. >> >> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com> >> >> --- >> >> Changes in v4: None >> Changes in v3: None >> Changes in v2: None >> >> board/sunxi/board.c | 2 +- >> drivers/usb/dwc3/dwc3-generic.c | 2 +- >> drivers/usb/gadget/ether.c | 2 +- >> drivers/usb/gadget/udc/Makefile | 4 +++ >> drivers/usb/gadget/udc/udc-core.c | 41 -------------------------- >> drivers/usb/gadget/udc/udc-uclass.c | 58 +++++++++++++++++++++++++++++++++++++ >> drivers/usb/musb-new/omap2430.c | 2 +- >> drivers/usb/musb-new/sunxi.c | 2 +- >> include/dm/uclass-id.h | 1 + >> 9 files changed, 68 insertions(+), 46 deletions(-) >> create mode 100644 drivers/usb/gadget/udc/udc-uclass.c >> >> diff --git a/board/sunxi/board.c b/board/sunxi/board.c >> index 64ccbc7..9b36cc7 100644 >> --- a/board/sunxi/board.c >> +++ b/board/sunxi/board.c >> @@ -663,7 +663,7 @@ int g_dnl_board_usb_cable_connected(void) >> struct phy phy; >> int ret; >> >> - ret = uclass_get_device(UCLASS_USB_DEV_GENERIC, 0, &dev); >> + ret = uclass_get_device(UCLASS_USB_GADGET_GENERIC, 0, &dev); > This is breaking sunxi boards which uses gadget mode. > > U-Boot 2019.01-rc2 (Dec 18 2018 - 17:31:53 +0530) Allwinner Technology > > CPU: Allwinner H3 (SUN8I 1680) > Model: Banana Pi BPI-M2-Plus > DRAM: 1 GiB > Error binding driver 'sunxi-musb': -96 > Some drivers failed to bind Can you try with DM_USB_GADGET enabled ? JJ > Error binding driver 'generic_simple_bus': -96 > Some drivers failed to bind > initcall sequence 7dfd127c failed at call 4a00c3a3 (err=-96) > ### ERROR ### Please RESET the board ### >
On 19/12/2018 11:31, Jean-Jacques Hiblot wrote: > > On 18/12/2018 13:08, Jagan Teki wrote: >> On Thu, Nov 29, 2018 at 3:30 PM Jean-Jacques Hiblot <jjhiblot@ti.com> >> wrote: >>> UCLASS_USB_DEV_GENERIC was meant for USB devices connected to host >>> controllers, not gadget devices. >>> Adding a new UCLASS for gadget devices alone. >>> >>> Also move the generic DM code for USB gadgets in a separate file for >>> clarity. >>> >>> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com> >>> >>> --- >>> >>> Changes in v4: None >>> Changes in v3: None >>> Changes in v2: None >>> >>> board/sunxi/board.c | 2 +- >>> drivers/usb/dwc3/dwc3-generic.c | 2 +- >>> drivers/usb/gadget/ether.c | 2 +- >>> drivers/usb/gadget/udc/Makefile | 4 +++ >>> drivers/usb/gadget/udc/udc-core.c | 41 -------------------------- >>> drivers/usb/gadget/udc/udc-uclass.c | 58 >>> +++++++++++++++++++++++++++++++++++++ >>> drivers/usb/musb-new/omap2430.c | 2 +- >>> drivers/usb/musb-new/sunxi.c | 2 +- >>> include/dm/uclass-id.h | 1 + >>> 9 files changed, 68 insertions(+), 46 deletions(-) >>> create mode 100644 drivers/usb/gadget/udc/udc-uclass.c >>> >>> diff --git a/board/sunxi/board.c b/board/sunxi/board.c >>> index 64ccbc7..9b36cc7 100644 >>> --- a/board/sunxi/board.c >>> +++ b/board/sunxi/board.c >>> @@ -663,7 +663,7 @@ int g_dnl_board_usb_cable_connected(void) >>> struct phy phy; >>> int ret; >>> >>> - ret = uclass_get_device(UCLASS_USB_DEV_GENERIC, 0, &dev); >>> + ret = uclass_get_device(UCLASS_USB_GADGET_GENERIC, 0, &dev); >> This is breaking sunxi boards which uses gadget mode. >> >> U-Boot 2019.01-rc2 (Dec 18 2018 - 17:31:53 +0530) Allwinner Technology >> >> CPU: Allwinner H3 (SUN8I 1680) >> Model: Banana Pi BPI-M2-Plus >> DRAM: 1 GiB >> Error binding driver 'sunxi-musb': -96 >> Some drivers failed to bind > > Can you try with DM_USB_GADGET enabled ? The reasoning is that UCLASS_DRIVER(usb_gadget_generic) is defined if and only if DM_USB_GADGET is enabled. > > JJ > > >> Error binding driver 'generic_simple_bus': -96 >> Some drivers failed to bind >> initcall sequence 7dfd127c failed at call 4a00c3a3 (err=-96) >> ### ERROR ### Please RESET the board ### >> > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > https://lists.denx.de/listinfo/u-boot
On Wed, Dec 19, 2018 at 4:34 AM Jean-Jacques Hiblot <jjhiblot@ti.com> wrote: > > > On 19/12/2018 11:31, Jean-Jacques Hiblot wrote: > > > > On 18/12/2018 13:08, Jagan Teki wrote: > >> On Thu, Nov 29, 2018 at 3:30 PM Jean-Jacques Hiblot <jjhiblot@ti.com> > >> wrote: > >>> UCLASS_USB_DEV_GENERIC was meant for USB devices connected to host > >>> controllers, not gadget devices. > >>> Adding a new UCLASS for gadget devices alone. > >>> > >>> Also move the generic DM code for USB gadgets in a separate file for > >>> clarity. > >>> > >>> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com> > >>> > >>> --- > >>> > >>> Changes in v4: None > >>> Changes in v3: None > >>> Changes in v2: None > >>> > >>> board/sunxi/board.c | 2 +- > >>> drivers/usb/dwc3/dwc3-generic.c | 2 +- > >>> drivers/usb/gadget/ether.c | 2 +- > >>> drivers/usb/gadget/udc/Makefile | 4 +++ > >>> drivers/usb/gadget/udc/udc-core.c | 41 -------------------------- > >>> drivers/usb/gadget/udc/udc-uclass.c | 58 > >>> +++++++++++++++++++++++++++++++++++++ > >>> drivers/usb/musb-new/omap2430.c | 2 +- > >>> drivers/usb/musb-new/sunxi.c | 2 +- > >>> include/dm/uclass-id.h | 1 + > >>> 9 files changed, 68 insertions(+), 46 deletions(-) > >>> create mode 100644 drivers/usb/gadget/udc/udc-uclass.c > >>> > >>> diff --git a/board/sunxi/board.c b/board/sunxi/board.c > >>> index 64ccbc7..9b36cc7 100644 > >>> --- a/board/sunxi/board.c > >>> +++ b/board/sunxi/board.c > >>> @@ -663,7 +663,7 @@ int g_dnl_board_usb_cable_connected(void) > >>> struct phy phy; > >>> int ret; > >>> > >>> - ret = uclass_get_device(UCLASS_USB_DEV_GENERIC, 0, &dev); > >>> + ret = uclass_get_device(UCLASS_USB_GADGET_GENERIC, 0, &dev); > >> This is breaking sunxi boards which uses gadget mode. > >> > >> U-Boot 2019.01-rc2 (Dec 18 2018 - 17:31:53 +0530) Allwinner Technology > >> > >> CPU: Allwinner H3 (SUN8I 1680) > >> Model: Banana Pi BPI-M2-Plus > >> DRAM: 1 GiB > >> Error binding driver 'sunxi-musb': -96 > >> Some drivers failed to bind > > > > Can you try with DM_USB_GADGET enabled ? > > The reasoning is that UCLASS_DRIVER(usb_gadget_generic) is defined if > and only if DM_USB_GADGET is enabled. I tried this when trying to port to the omap2430 glue, and got the same -96 error when using the MISC class driver and I enabled DM_USB_GADGET. adam > > > > > JJ > > > > > >> Error binding driver 'generic_simple_bus': -96 > >> Some drivers failed to bind > >> initcall sequence 7dfd127c failed at call 4a00c3a3 (err=-96) > >> ### ERROR ### Please RESET the board ### > >> > > _______________________________________________ > > U-Boot mailing list > > U-Boot@lists.denx.de > > https://lists.denx.de/listinfo/u-boot > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > https://lists.denx.de/listinfo/u-boot
diff --git a/board/sunxi/board.c b/board/sunxi/board.c index 64ccbc7..9b36cc7 100644 --- a/board/sunxi/board.c +++ b/board/sunxi/board.c @@ -663,7 +663,7 @@ int g_dnl_board_usb_cable_connected(void) struct phy phy; int ret; - ret = uclass_get_device(UCLASS_USB_DEV_GENERIC, 0, &dev); + ret = uclass_get_device(UCLASS_USB_GADGET_GENERIC, 0, &dev); if (ret) { pr_err("%s: Cannot find USB device\n", __func__); return ret; diff --git a/drivers/usb/dwc3/dwc3-generic.c b/drivers/usb/dwc3/dwc3-generic.c index 681b5c7..7375660 100644 --- a/drivers/usb/dwc3/dwc3-generic.c +++ b/drivers/usb/dwc3/dwc3-generic.c @@ -72,7 +72,7 @@ static int dwc3_generic_peripheral_ofdata_to_platdata(struct udevice *dev) U_BOOT_DRIVER(dwc3_generic_peripheral) = { .name = "dwc3-generic-peripheral", - .id = UCLASS_USB_DEV_GENERIC, + .id = UCLASS_USB_GADGET_GENERIC, .ofdata_to_platdata = dwc3_generic_peripheral_ofdata_to_platdata, .probe = dwc3_generic_peripheral_probe, .remove = dwc3_generic_peripheral_remove, diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c index 5a9ffd7..3b3d9af 100644 --- a/drivers/usb/gadget/ether.c +++ b/drivers/usb/gadget/ether.c @@ -2671,7 +2671,7 @@ int usb_ether_init(void) struct udevice *usb_dev; int ret; - ret = uclass_first_device(UCLASS_USB_DEV_GENERIC, &usb_dev); + ret = uclass_first_device(UCLASS_USB_GADGET_GENERIC, &usb_dev); if (!usb_dev || ret) { pr_err("No USB device found\n"); return ret; diff --git a/drivers/usb/gadget/udc/Makefile b/drivers/usb/gadget/udc/Makefile index 449339f..38ac2dd 100644 --- a/drivers/usb/gadget/udc/Makefile +++ b/drivers/usb/gadget/udc/Makefile @@ -2,4 +2,8 @@ # # USB peripheral controller drivers +ifndef CONFIG_$(SPL_)DM_USB_GADGET obj-$(CONFIG_USB_DWC3_GADGET) += udc-core.o +endif + +obj-$(CONFIG_$(SPL_)DM_USB_GADGET) += udc-uclass.o udc-core.o diff --git a/drivers/usb/gadget/udc/udc-core.c b/drivers/usb/gadget/udc/udc-core.c index 34bea27..62b4778 100644 --- a/drivers/usb/gadget/udc/udc-core.c +++ b/drivers/usb/gadget/udc/udc-core.c @@ -352,44 +352,3 @@ EXPORT_SYMBOL_GPL(usb_gadget_unregister_driver); MODULE_DESCRIPTION("UDC Framework"); MODULE_AUTHOR("Felipe Balbi <balbi@ti.com>"); MODULE_LICENSE("GPL v2"); - -#if CONFIG_IS_ENABLED(DM_USB_GADGET) -#define MAX_UDC_DEVICES 4 -static struct udevice *dev_array[MAX_UDC_DEVICES]; -int usb_gadget_initialize(int index) -{ - int ret; - struct udevice *dev = NULL; - - if (index < 0 || index >= ARRAY_SIZE(dev_array)) - return -EINVAL; - if (dev_array[index]) - return 0; - ret = uclass_get_device(UCLASS_USB_DEV_GENERIC, index, &dev); - if (!dev || ret) { - pr_err("No USB device found\n"); - return -ENODEV; - } - dev_array[index] = dev; - return 0; -} - -int usb_gadget_release(int index) -{ - int ret; - - if (index < 0 || index >= ARRAY_SIZE(dev_array)) - return -EINVAL; - ret = device_remove(dev_array[index], DM_REMOVE_NORMAL); - if (!ret) - dev_array[index] = NULL; - return ret; -} - -int usb_gadget_handle_interrupts(int index) -{ - if (index < 0 || index >= ARRAY_SIZE(dev_array)) - return -EINVAL; - return dm_usb_gadget_handle_interrupts(dev_array[index]); -} -#endif diff --git a/drivers/usb/gadget/udc/udc-uclass.c b/drivers/usb/gadget/udc/udc-uclass.c new file mode 100644 index 0000000..0620518 --- /dev/null +++ b/drivers/usb/gadget/udc/udc-uclass.c @@ -0,0 +1,58 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Copyright (C) 2018 Texas Instruments Incorporated - http://www.ti.com + * Written by Jean-Jacques Hiblot <jjhiblot@ti.com> + */ + +#include <common.h> +#include <dm.h> +#include <dm/device-internal.h> +#include <linux/usb/gadget.h> + +#define MAX_UDC_DEVICES 4 +static struct udevice *dev_array[MAX_UDC_DEVICES]; +int usb_gadget_initialize(int index) +{ + int ret; + struct udevice *dev = NULL; + + if (index < 0 || index >= ARRAY_SIZE(dev_array)) + return -EINVAL; + if (dev_array[index]) + return 0; + ret = uclass_get_device(UCLASS_USB_GADGET_GENERIC, index, &dev); + if (!dev || ret) { + pr_err("No USB device found\n"); + return -ENODEV; + } + dev_array[index] = dev; + return 0; +} + +int usb_gadget_release(int index) +{ +#if CONFIG_IS_ENABLED(DM_DEVICE_REMOVE) + int ret; + if (index < 0 || index >= ARRAY_SIZE(dev_array)) + return -EINVAL; + + ret = device_remove(dev_array[index], DM_REMOVE_NORMAL); + if (!ret) + dev_array[index] = NULL; + return ret; +#else + return -ENOTSUPP; +#endif +} + +int usb_gadget_handle_interrupts(int index) +{ + if (index < 0 || index >= ARRAY_SIZE(dev_array)) + return -EINVAL; + return dm_usb_gadget_handle_interrupts(dev_array[index]); +} + +UCLASS_DRIVER(usb_gadget_generic) = { + .id = UCLASS_USB_GADGET_GENERIC, + .name = "usb_gadget_generic", +}; diff --git a/drivers/usb/musb-new/omap2430.c b/drivers/usb/musb-new/omap2430.c index 58aed72..32743aa 100644 --- a/drivers/usb/musb-new/omap2430.c +++ b/drivers/usb/musb-new/omap2430.c @@ -263,7 +263,7 @@ U_BOOT_DRIVER(omap2430_musb) = { #ifdef CONFIG_USB_MUSB_HOST .id = UCLASS_USB, #else - .id = UCLASS_USB_DEV_GENERIC, + .id = UCLASS_USB_GADGET_GENERIC, #endif .of_match = omap2430_musb_ids, .ofdata_to_platdata = omap2430_musb_ofdata_to_platdata, diff --git a/drivers/usb/musb-new/sunxi.c b/drivers/usb/musb-new/sunxi.c index 6cf9826..d7170a3 100644 --- a/drivers/usb/musb-new/sunxi.c +++ b/drivers/usb/musb-new/sunxi.c @@ -535,7 +535,7 @@ U_BOOT_DRIVER(usb_musb) = { #ifdef CONFIG_USB_MUSB_HOST .id = UCLASS_USB, #else - .id = UCLASS_USB_DEV_GENERIC, + .id = UCLASS_USB_GADGET_GENERIC, #endif .of_match = sunxi_musb_ids, .probe = musb_usb_probe, diff --git a/include/dm/uclass-id.h b/include/dm/uclass-id.h index c91dca1..1601100 100644 --- a/include/dm/uclass-id.h +++ b/include/dm/uclass-id.h @@ -92,6 +92,7 @@ enum uclass_id { UCLASS_USB, /* USB bus */ UCLASS_USB_DEV_GENERIC, /* USB generic device */ UCLASS_USB_HUB, /* USB hub */ + UCLASS_USB_GADGET_GENERIC, /* USB generic device */ UCLASS_VIDEO, /* Video or LCD device */ UCLASS_VIDEO_BRIDGE, /* Video bridge, e.g. DisplayPort to LVDS */ UCLASS_VIDEO_CONSOLE, /* Text console driver for video device */
UCLASS_USB_DEV_GENERIC was meant for USB devices connected to host controllers, not gadget devices. Adding a new UCLASS for gadget devices alone. Also move the generic DM code for USB gadgets in a separate file for clarity. Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com> --- Changes in v4: None Changes in v3: None Changes in v2: None board/sunxi/board.c | 2 +- drivers/usb/dwc3/dwc3-generic.c | 2 +- drivers/usb/gadget/ether.c | 2 +- drivers/usb/gadget/udc/Makefile | 4 +++ drivers/usb/gadget/udc/udc-core.c | 41 -------------------------- drivers/usb/gadget/udc/udc-uclass.c | 58 +++++++++++++++++++++++++++++++++++++ drivers/usb/musb-new/omap2430.c | 2 +- drivers/usb/musb-new/sunxi.c | 2 +- include/dm/uclass-id.h | 1 + 9 files changed, 68 insertions(+), 46 deletions(-) create mode 100644 drivers/usb/gadget/udc/udc-uclass.c