diff mbox series

[U-Boot,v1,1/7] usb: gadget: Do not call board_usb_xxx() directly in USB gadget drivers

Message ID 1527240762-27114-2-git-send-email-jjhiblot@ti.com
State Superseded
Delegated to: Marek Vasut
Headers show
Series Improvements for the dwc3_generic driver | expand

Commit Message

Jean-Jacques Hiblot May 25, 2018, 9:32 a.m. UTC
Add 2 functions to wrap the calls to board_usb_init() and
board_usb_cleanup().

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
---

 cmd/fastboot.c             |  4 ++--
 cmd/rockusb.c              |  4 ++--
 cmd/thordown.c             |  4 ++--
 cmd/usb_gadget_sdp.c       |  4 ++--
 cmd/usb_mass_storage.c     |  4 ++--
 common/dfu.c               |  6 +++---
 drivers/usb/gadget/ether.c | 38 +++++---------------------------------
 include/linux/usb/gadget.h | 10 ++++++++++
 8 files changed, 28 insertions(+), 46 deletions(-)

Comments

Michal Simek May 28, 2018, 8:35 a.m. UTC | #1
On 25.5.2018 11:32, Jean-Jacques Hiblot wrote:
> Add 2 functions to wrap the calls to board_usb_init() and
> board_usb_cleanup().

Here should be written why you need this change.

M

> 
> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
> ---
> 
>  cmd/fastboot.c             |  4 ++--
>  cmd/rockusb.c              |  4 ++--
>  cmd/thordown.c             |  4 ++--
>  cmd/usb_gadget_sdp.c       |  4 ++--
>  cmd/usb_mass_storage.c     |  4 ++--
>  common/dfu.c               |  6 +++---
>  drivers/usb/gadget/ether.c | 38 +++++---------------------------------
>  include/linux/usb/gadget.h | 10 ++++++++++
>  8 files changed, 28 insertions(+), 46 deletions(-)
> 
> diff --git a/cmd/fastboot.c b/cmd/fastboot.c
> index a5ec5f4..93f97fd 100644
> --- a/cmd/fastboot.c
> +++ b/cmd/fastboot.c
> @@ -24,7 +24,7 @@ static int do_fastboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
>  	usb_controller = argv[1];
>  	controller_index = simple_strtoul(usb_controller, NULL, 0);
>  
> -	ret = board_usb_init(controller_index, USB_INIT_DEVICE);
> +	ret = usb_gadget_initialize(controller_index);
>  	if (ret) {
>  		pr_err("USB init failed: %d", ret);
>  		return CMD_RET_FAILURE;
> @@ -55,7 +55,7 @@ static int do_fastboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
>  exit:
>  	g_dnl_unregister();
>  	g_dnl_clear_detach();
> -	board_usb_cleanup(controller_index, USB_INIT_DEVICE);
> +	usb_gadget_release(controller_index);
>  
>  	return ret;
>  }
> diff --git a/cmd/rockusb.c b/cmd/rockusb.c
> index 8206643..e0c1480 100644
> --- a/cmd/rockusb.c
> +++ b/cmd/rockusb.c
> @@ -33,7 +33,7 @@ static int do_rockusb(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
>  	dev_index = simple_strtoul(devnum, NULL, 0);
>  	rockusb_dev_init(devtype, dev_index);
>  
> -	ret = board_usb_init(controller_index, USB_INIT_DEVICE);
> +	ret = usb_gadget_initialize(controller_index);
>  	if (ret) {
>  		printf("USB init failed: %d\n", ret);
>  		return CMD_RET_FAILURE;
> @@ -62,7 +62,7 @@ static int do_rockusb(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
>  exit:
>  	g_dnl_unregister();
>  	g_dnl_clear_detach();
> -	board_usb_cleanup(controller_index, USB_INIT_DEVICE);
> +	usb_gadget_release(controller_index);
>  
>  	return ret;
>  }
> diff --git a/cmd/thordown.c b/cmd/thordown.c
> index e297de2..b7866d1 100644
> --- a/cmd/thordown.c
> +++ b/cmd/thordown.c
> @@ -30,7 +30,7 @@ int do_thor_down(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>  		goto done;
>  
>  	int controller_index = simple_strtoul(usb_controller, NULL, 0);
> -	ret = board_usb_init(controller_index, USB_INIT_DEVICE);
> +	ret = usb_gadget_initialize(controller_index);
>  	if (ret) {
>  		pr_err("USB init failed: %d", ret);
>  		ret = CMD_RET_FAILURE;
> @@ -55,7 +55,7 @@ int do_thor_down(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>  
>  exit:
>  	g_dnl_unregister();
> -	board_usb_cleanup(controller_index, USB_INIT_DEVICE);
> +	usb_gadget_realease(controller_index);
>  done:
>  	dfu_free_entities();
>  
> diff --git a/cmd/usb_gadget_sdp.c b/cmd/usb_gadget_sdp.c
> index ba1f66a..808ed97 100644
> --- a/cmd/usb_gadget_sdp.c
> +++ b/cmd/usb_gadget_sdp.c
> @@ -20,7 +20,7 @@ static int do_sdp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>  
>  	char *usb_controller = argv[1];
>  	int controller_index = simple_strtoul(usb_controller, NULL, 0);
> -	board_usb_init(controller_index, USB_INIT_DEVICE);
> +	usb_gadget_initialize(controller_index);
>  
>  	g_dnl_clear_detach();
>  	g_dnl_register("usb_dnl_sdp");
> @@ -37,7 +37,7 @@ static int do_sdp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>  
>  exit:
>  	g_dnl_unregister();
> -	board_usb_cleanup(controller_index, USB_INIT_DEVICE);
> +	usb_gadget_release(controller_index);
>  
>  	return ret;
>  }
> diff --git a/cmd/usb_mass_storage.c b/cmd/usb_mass_storage.c
> index 89b9ddf..7c6d0c6 100644
> --- a/cmd/usb_mass_storage.c
> +++ b/cmd/usb_mass_storage.c
> @@ -160,7 +160,7 @@ static int do_usb_mass_storage(cmd_tbl_t *cmdtp, int flag,
>  
>  	controller_index = (unsigned int)(simple_strtoul(
>  				usb_controller,	NULL, 0));
> -	if (board_usb_init(controller_index, USB_INIT_DEVICE)) {
> +	if (usb_gadget_initialize(controller_index)) {
>  		pr_err("Couldn't init USB controller.");
>  		rc = CMD_RET_FAILURE;
>  		goto cleanup_ums_init;
> @@ -231,7 +231,7 @@ static int do_usb_mass_storage(cmd_tbl_t *cmdtp, int flag,
>  cleanup_register:
>  	g_dnl_unregister();
>  cleanup_board:
> -	board_usb_cleanup(controller_index, USB_INIT_DEVICE);
> +	usb_gadget_release(controller_index);
>  cleanup_ums_init:
>  	ums_fini();
>  
> diff --git a/common/dfu.c b/common/dfu.c
> index 2620d32..44d1484 100644
> --- a/common/dfu.c
> +++ b/common/dfu.c
> @@ -23,9 +23,9 @@ int run_usb_dnl_gadget(int usbctrl_index, char *usb_dnl_gadget)
>  	bool dfu_reset = false;
>  	int ret, i = 0;
>  
> -	ret = board_usb_init(usbctrl_index, USB_INIT_DEVICE);
> +	ret = usb_gadget_initialize(usbctrl_index);
>  	if (ret) {
> -		pr_err("board usb init failed\n");
> +		pr_err("usb_gadget_initialize failed\n");
>  		return CMD_RET_FAILURE;
>  	}
>  	g_dnl_clear_detach();
> @@ -84,7 +84,7 @@ int run_usb_dnl_gadget(int usbctrl_index, char *usb_dnl_gadget)
>  	}
>  exit:
>  	g_dnl_unregister();
> -	board_usb_cleanup(usbctrl_index, USB_INIT_DEVICE);
> +	usb_gadget_release(usbctrl_index);
>  
>  	if (dfu_reset)
>  		do_reset(NULL, 0, 0, NULL);
> diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
> index 8ab9b9f..1c438c3 100644
> --- a/drivers/usb/gadget/ether.c
> +++ b/drivers/usb/gadget/ether.c
> @@ -105,9 +105,6 @@ struct eth_dev {
>  	struct usb_gadget	*gadget;
>  	struct usb_request	*req;		/* for control responses */
>  	struct usb_request	*stat_req;	/* for cdc & rndis status */
> -#ifdef CONFIG_DM_USB
> -	struct udevice		*usb_udev;
> -#endif
>  
>  	u8			config;
>  	struct usb_ep		*in_ep, *out_ep, *status_ep;
> @@ -2341,40 +2338,17 @@ fail:
>  }
>  
>  /*-------------------------------------------------------------------------*/
> -
> -#ifdef CONFIG_DM_USB
> -int dm_usb_init(struct eth_dev *e_dev)
> -{
> -	struct udevice *dev = NULL;
> -	int ret;
> -
> -	ret = uclass_first_device(UCLASS_USB_DEV_GENERIC, &dev);
> -	if (!dev || ret) {
> -		pr_err("No USB device found\n");
> -		return -ENODEV;
> -	}
> -
> -	e_dev->usb_udev = dev;
> -
> -	return ret;
> -}
> -#endif
> -
>  static int _usb_eth_init(struct ether_priv *priv)
>  {
>  	struct eth_dev *dev = &priv->ethdev;
>  	struct usb_gadget *gadget;
>  	unsigned long ts;
> +	int ret;
>  	unsigned long timeout = USB_CONNECT_TIMEOUT;
>  
> -#ifdef CONFIG_DM_USB
> -	if (dm_usb_init(dev)) {
> -		pr_err("USB ether not found\n");
> -		return -ENODEV;
> -	}
> -#else
> -	board_usb_init(0, USB_INIT_DEVICE);
> -#endif
> +	ret = usb_gadget_initialize(0);
> +	if (ret)
> +		return ret;
>  
>  	/* Configure default mac-addresses for the USB ethernet device */
>  #ifdef CONFIG_USBNET_DEV_ADDR
> @@ -2546,9 +2520,7 @@ void _usb_eth_halt(struct ether_priv *priv)
>  	}
>  
>  	usb_gadget_unregister_driver(&priv->eth_driver);
> -#ifndef CONFIG_DM_USB
> -	board_usb_cleanup(0, USB_INIT_DEVICE);
> -#endif
> +	usb_gadget_release(0);
>  }
>  
>  #ifndef CONFIG_DM_ETH
> diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h
> index b824f13..40ca2d3 100644
> --- a/include/linux/usb/gadget.h
> +++ b/include/linux/usb/gadget.h
> @@ -19,6 +19,7 @@
>  #define __LINUX_USB_GADGET_H
>  
>  #include <errno.h>
> +#include <usb.h>
>  #include <linux/compat.h>
>  #include <linux/list.h>
>  
> @@ -926,4 +927,13 @@ extern void usb_ep_autoconfig_reset(struct usb_gadget *);
>  
>  extern int usb_gadget_handle_interrupts(int index);
>  
> +static inline int usb_gadget_initialize(int index)
> +{
> +	return board_usb_init(index, USB_INIT_DEVICE);
> +}
> +
> +static inline int usb_gadget_release(int index)
> +{
> +	return board_usb_cleanup(index, USB_INIT_DEVICE);
> +}
>  #endif	/* __LINUX_USB_GADGET_H */
>
Jean-Jacques Hiblot May 29, 2018, 7:41 a.m. UTC | #2
On 28/05/2018 10:35, Michal Simek wrote:
> On 25.5.2018 11:32, Jean-Jacques Hiblot wrote:
>> Add 2 functions to wrap the calls to board_usb_init() and
>> board_usb_cleanup().
> Here should be written why you need this change.
>
> M
I'll update the commit log.
It's a preparatory work for DM support for UDC drivers.
>
>> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
>> ---
>>
>>   cmd/fastboot.c             |  4 ++--
>>   cmd/rockusb.c              |  4 ++--
>>   cmd/thordown.c             |  4 ++--
>>   cmd/usb_gadget_sdp.c       |  4 ++--
>>   cmd/usb_mass_storage.c     |  4 ++--
>>   common/dfu.c               |  6 +++---
>>   drivers/usb/gadget/ether.c | 38 +++++---------------------------------
>>   include/linux/usb/gadget.h | 10 ++++++++++
>>   8 files changed, 28 insertions(+), 46 deletions(-)
>>
>> diff --git a/cmd/fastboot.c b/cmd/fastboot.c
>> index a5ec5f4..93f97fd 100644
>> --- a/cmd/fastboot.c
>> +++ b/cmd/fastboot.c
>> @@ -24,7 +24,7 @@ static int do_fastboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
>>   	usb_controller = argv[1];
>>   	controller_index = simple_strtoul(usb_controller, NULL, 0);
>>   
>> -	ret = board_usb_init(controller_index, USB_INIT_DEVICE);
>> +	ret = usb_gadget_initialize(controller_index);
>>   	if (ret) {
>>   		pr_err("USB init failed: %d", ret);
>>   		return CMD_RET_FAILURE;
>> @@ -55,7 +55,7 @@ static int do_fastboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
>>   exit:
>>   	g_dnl_unregister();
>>   	g_dnl_clear_detach();
>> -	board_usb_cleanup(controller_index, USB_INIT_DEVICE);
>> +	usb_gadget_release(controller_index);
>>   
>>   	return ret;
>>   }
>> diff --git a/cmd/rockusb.c b/cmd/rockusb.c
>> index 8206643..e0c1480 100644
>> --- a/cmd/rockusb.c
>> +++ b/cmd/rockusb.c
>> @@ -33,7 +33,7 @@ static int do_rockusb(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
>>   	dev_index = simple_strtoul(devnum, NULL, 0);
>>   	rockusb_dev_init(devtype, dev_index);
>>   
>> -	ret = board_usb_init(controller_index, USB_INIT_DEVICE);
>> +	ret = usb_gadget_initialize(controller_index);
>>   	if (ret) {
>>   		printf("USB init failed: %d\n", ret);
>>   		return CMD_RET_FAILURE;
>> @@ -62,7 +62,7 @@ static int do_rockusb(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
>>   exit:
>>   	g_dnl_unregister();
>>   	g_dnl_clear_detach();
>> -	board_usb_cleanup(controller_index, USB_INIT_DEVICE);
>> +	usb_gadget_release(controller_index);
>>   
>>   	return ret;
>>   }
>> diff --git a/cmd/thordown.c b/cmd/thordown.c
>> index e297de2..b7866d1 100644
>> --- a/cmd/thordown.c
>> +++ b/cmd/thordown.c
>> @@ -30,7 +30,7 @@ int do_thor_down(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>>   		goto done;
>>   
>>   	int controller_index = simple_strtoul(usb_controller, NULL, 0);
>> -	ret = board_usb_init(controller_index, USB_INIT_DEVICE);
>> +	ret = usb_gadget_initialize(controller_index);
>>   	if (ret) {
>>   		pr_err("USB init failed: %d", ret);
>>   		ret = CMD_RET_FAILURE;
>> @@ -55,7 +55,7 @@ int do_thor_down(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>>   
>>   exit:
>>   	g_dnl_unregister();
>> -	board_usb_cleanup(controller_index, USB_INIT_DEVICE);
>> +	usb_gadget_realease(controller_index);
>>   done:
>>   	dfu_free_entities();
>>   
>> diff --git a/cmd/usb_gadget_sdp.c b/cmd/usb_gadget_sdp.c
>> index ba1f66a..808ed97 100644
>> --- a/cmd/usb_gadget_sdp.c
>> +++ b/cmd/usb_gadget_sdp.c
>> @@ -20,7 +20,7 @@ static int do_sdp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>>   
>>   	char *usb_controller = argv[1];
>>   	int controller_index = simple_strtoul(usb_controller, NULL, 0);
>> -	board_usb_init(controller_index, USB_INIT_DEVICE);
>> +	usb_gadget_initialize(controller_index);
>>   
>>   	g_dnl_clear_detach();
>>   	g_dnl_register("usb_dnl_sdp");
>> @@ -37,7 +37,7 @@ static int do_sdp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>>   
>>   exit:
>>   	g_dnl_unregister();
>> -	board_usb_cleanup(controller_index, USB_INIT_DEVICE);
>> +	usb_gadget_release(controller_index);
>>   
>>   	return ret;
>>   }
>> diff --git a/cmd/usb_mass_storage.c b/cmd/usb_mass_storage.c
>> index 89b9ddf..7c6d0c6 100644
>> --- a/cmd/usb_mass_storage.c
>> +++ b/cmd/usb_mass_storage.c
>> @@ -160,7 +160,7 @@ static int do_usb_mass_storage(cmd_tbl_t *cmdtp, int flag,
>>   
>>   	controller_index = (unsigned int)(simple_strtoul(
>>   				usb_controller,	NULL, 0));
>> -	if (board_usb_init(controller_index, USB_INIT_DEVICE)) {
>> +	if (usb_gadget_initialize(controller_index)) {
>>   		pr_err("Couldn't init USB controller.");
>>   		rc = CMD_RET_FAILURE;
>>   		goto cleanup_ums_init;
>> @@ -231,7 +231,7 @@ static int do_usb_mass_storage(cmd_tbl_t *cmdtp, int flag,
>>   cleanup_register:
>>   	g_dnl_unregister();
>>   cleanup_board:
>> -	board_usb_cleanup(controller_index, USB_INIT_DEVICE);
>> +	usb_gadget_release(controller_index);
>>   cleanup_ums_init:
>>   	ums_fini();
>>   
>> diff --git a/common/dfu.c b/common/dfu.c
>> index 2620d32..44d1484 100644
>> --- a/common/dfu.c
>> +++ b/common/dfu.c
>> @@ -23,9 +23,9 @@ int run_usb_dnl_gadget(int usbctrl_index, char *usb_dnl_gadget)
>>   	bool dfu_reset = false;
>>   	int ret, i = 0;
>>   
>> -	ret = board_usb_init(usbctrl_index, USB_INIT_DEVICE);
>> +	ret = usb_gadget_initialize(usbctrl_index);
>>   	if (ret) {
>> -		pr_err("board usb init failed\n");
>> +		pr_err("usb_gadget_initialize failed\n");
>>   		return CMD_RET_FAILURE;
>>   	}
>>   	g_dnl_clear_detach();
>> @@ -84,7 +84,7 @@ int run_usb_dnl_gadget(int usbctrl_index, char *usb_dnl_gadget)
>>   	}
>>   exit:
>>   	g_dnl_unregister();
>> -	board_usb_cleanup(usbctrl_index, USB_INIT_DEVICE);
>> +	usb_gadget_release(usbctrl_index);
>>   
>>   	if (dfu_reset)
>>   		do_reset(NULL, 0, 0, NULL);
>> diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
>> index 8ab9b9f..1c438c3 100644
>> --- a/drivers/usb/gadget/ether.c
>> +++ b/drivers/usb/gadget/ether.c
>> @@ -105,9 +105,6 @@ struct eth_dev {
>>   	struct usb_gadget	*gadget;
>>   	struct usb_request	*req;		/* for control responses */
>>   	struct usb_request	*stat_req;	/* for cdc & rndis status */
>> -#ifdef CONFIG_DM_USB
>> -	struct udevice		*usb_udev;
>> -#endif
>>   
>>   	u8			config;
>>   	struct usb_ep		*in_ep, *out_ep, *status_ep;
>> @@ -2341,40 +2338,17 @@ fail:
>>   }
>>   
>>   /*-------------------------------------------------------------------------*/
>> -
>> -#ifdef CONFIG_DM_USB
>> -int dm_usb_init(struct eth_dev *e_dev)
>> -{
>> -	struct udevice *dev = NULL;
>> -	int ret;
>> -
>> -	ret = uclass_first_device(UCLASS_USB_DEV_GENERIC, &dev);
>> -	if (!dev || ret) {
>> -		pr_err("No USB device found\n");
>> -		return -ENODEV;
>> -	}
>> -
>> -	e_dev->usb_udev = dev;
>> -
>> -	return ret;
>> -}
>> -#endif
>> -
>>   static int _usb_eth_init(struct ether_priv *priv)
>>   {
>>   	struct eth_dev *dev = &priv->ethdev;
>>   	struct usb_gadget *gadget;
>>   	unsigned long ts;
>> +	int ret;
>>   	unsigned long timeout = USB_CONNECT_TIMEOUT;
>>   
>> -#ifdef CONFIG_DM_USB
>> -	if (dm_usb_init(dev)) {
>> -		pr_err("USB ether not found\n");
>> -		return -ENODEV;
>> -	}
>> -#else
>> -	board_usb_init(0, USB_INIT_DEVICE);
>> -#endif
>> +	ret = usb_gadget_initialize(0);
>> +	if (ret)
>> +		return ret;
>>   
>>   	/* Configure default mac-addresses for the USB ethernet device */
>>   #ifdef CONFIG_USBNET_DEV_ADDR
>> @@ -2546,9 +2520,7 @@ void _usb_eth_halt(struct ether_priv *priv)
>>   	}
>>   
>>   	usb_gadget_unregister_driver(&priv->eth_driver);
>> -#ifndef CONFIG_DM_USB
>> -	board_usb_cleanup(0, USB_INIT_DEVICE);
>> -#endif
>> +	usb_gadget_release(0);
>>   }
>>   
>>   #ifndef CONFIG_DM_ETH
>> diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h
>> index b824f13..40ca2d3 100644
>> --- a/include/linux/usb/gadget.h
>> +++ b/include/linux/usb/gadget.h
>> @@ -19,6 +19,7 @@
>>   #define __LINUX_USB_GADGET_H
>>   
>>   #include <errno.h>
>> +#include <usb.h>
>>   #include <linux/compat.h>
>>   #include <linux/list.h>
>>   
>> @@ -926,4 +927,13 @@ extern void usb_ep_autoconfig_reset(struct usb_gadget *);
>>   
>>   extern int usb_gadget_handle_interrupts(int index);
>>   
>> +static inline int usb_gadget_initialize(int index)
>> +{
>> +	return board_usb_init(index, USB_INIT_DEVICE);
>> +}
>> +
>> +static inline int usb_gadget_release(int index)
>> +{
>> +	return board_usb_cleanup(index, USB_INIT_DEVICE);
>> +}
>>   #endif	/* __LINUX_USB_GADGET_H */
>>
>
diff mbox series

Patch

diff --git a/cmd/fastboot.c b/cmd/fastboot.c
index a5ec5f4..93f97fd 100644
--- a/cmd/fastboot.c
+++ b/cmd/fastboot.c
@@ -24,7 +24,7 @@  static int do_fastboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
 	usb_controller = argv[1];
 	controller_index = simple_strtoul(usb_controller, NULL, 0);
 
-	ret = board_usb_init(controller_index, USB_INIT_DEVICE);
+	ret = usb_gadget_initialize(controller_index);
 	if (ret) {
 		pr_err("USB init failed: %d", ret);
 		return CMD_RET_FAILURE;
@@ -55,7 +55,7 @@  static int do_fastboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
 exit:
 	g_dnl_unregister();
 	g_dnl_clear_detach();
-	board_usb_cleanup(controller_index, USB_INIT_DEVICE);
+	usb_gadget_release(controller_index);
 
 	return ret;
 }
diff --git a/cmd/rockusb.c b/cmd/rockusb.c
index 8206643..e0c1480 100644
--- a/cmd/rockusb.c
+++ b/cmd/rockusb.c
@@ -33,7 +33,7 @@  static int do_rockusb(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
 	dev_index = simple_strtoul(devnum, NULL, 0);
 	rockusb_dev_init(devtype, dev_index);
 
-	ret = board_usb_init(controller_index, USB_INIT_DEVICE);
+	ret = usb_gadget_initialize(controller_index);
 	if (ret) {
 		printf("USB init failed: %d\n", ret);
 		return CMD_RET_FAILURE;
@@ -62,7 +62,7 @@  static int do_rockusb(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
 exit:
 	g_dnl_unregister();
 	g_dnl_clear_detach();
-	board_usb_cleanup(controller_index, USB_INIT_DEVICE);
+	usb_gadget_release(controller_index);
 
 	return ret;
 }
diff --git a/cmd/thordown.c b/cmd/thordown.c
index e297de2..b7866d1 100644
--- a/cmd/thordown.c
+++ b/cmd/thordown.c
@@ -30,7 +30,7 @@  int do_thor_down(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 		goto done;
 
 	int controller_index = simple_strtoul(usb_controller, NULL, 0);
-	ret = board_usb_init(controller_index, USB_INIT_DEVICE);
+	ret = usb_gadget_initialize(controller_index);
 	if (ret) {
 		pr_err("USB init failed: %d", ret);
 		ret = CMD_RET_FAILURE;
@@ -55,7 +55,7 @@  int do_thor_down(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
 exit:
 	g_dnl_unregister();
-	board_usb_cleanup(controller_index, USB_INIT_DEVICE);
+	usb_gadget_realease(controller_index);
 done:
 	dfu_free_entities();
 
diff --git a/cmd/usb_gadget_sdp.c b/cmd/usb_gadget_sdp.c
index ba1f66a..808ed97 100644
--- a/cmd/usb_gadget_sdp.c
+++ b/cmd/usb_gadget_sdp.c
@@ -20,7 +20,7 @@  static int do_sdp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
 	char *usb_controller = argv[1];
 	int controller_index = simple_strtoul(usb_controller, NULL, 0);
-	board_usb_init(controller_index, USB_INIT_DEVICE);
+	usb_gadget_initialize(controller_index);
 
 	g_dnl_clear_detach();
 	g_dnl_register("usb_dnl_sdp");
@@ -37,7 +37,7 @@  static int do_sdp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
 exit:
 	g_dnl_unregister();
-	board_usb_cleanup(controller_index, USB_INIT_DEVICE);
+	usb_gadget_release(controller_index);
 
 	return ret;
 }
diff --git a/cmd/usb_mass_storage.c b/cmd/usb_mass_storage.c
index 89b9ddf..7c6d0c6 100644
--- a/cmd/usb_mass_storage.c
+++ b/cmd/usb_mass_storage.c
@@ -160,7 +160,7 @@  static int do_usb_mass_storage(cmd_tbl_t *cmdtp, int flag,
 
 	controller_index = (unsigned int)(simple_strtoul(
 				usb_controller,	NULL, 0));
-	if (board_usb_init(controller_index, USB_INIT_DEVICE)) {
+	if (usb_gadget_initialize(controller_index)) {
 		pr_err("Couldn't init USB controller.");
 		rc = CMD_RET_FAILURE;
 		goto cleanup_ums_init;
@@ -231,7 +231,7 @@  static int do_usb_mass_storage(cmd_tbl_t *cmdtp, int flag,
 cleanup_register:
 	g_dnl_unregister();
 cleanup_board:
-	board_usb_cleanup(controller_index, USB_INIT_DEVICE);
+	usb_gadget_release(controller_index);
 cleanup_ums_init:
 	ums_fini();
 
diff --git a/common/dfu.c b/common/dfu.c
index 2620d32..44d1484 100644
--- a/common/dfu.c
+++ b/common/dfu.c
@@ -23,9 +23,9 @@  int run_usb_dnl_gadget(int usbctrl_index, char *usb_dnl_gadget)
 	bool dfu_reset = false;
 	int ret, i = 0;
 
-	ret = board_usb_init(usbctrl_index, USB_INIT_DEVICE);
+	ret = usb_gadget_initialize(usbctrl_index);
 	if (ret) {
-		pr_err("board usb init failed\n");
+		pr_err("usb_gadget_initialize failed\n");
 		return CMD_RET_FAILURE;
 	}
 	g_dnl_clear_detach();
@@ -84,7 +84,7 @@  int run_usb_dnl_gadget(int usbctrl_index, char *usb_dnl_gadget)
 	}
 exit:
 	g_dnl_unregister();
-	board_usb_cleanup(usbctrl_index, USB_INIT_DEVICE);
+	usb_gadget_release(usbctrl_index);
 
 	if (dfu_reset)
 		do_reset(NULL, 0, 0, NULL);
diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
index 8ab9b9f..1c438c3 100644
--- a/drivers/usb/gadget/ether.c
+++ b/drivers/usb/gadget/ether.c
@@ -105,9 +105,6 @@  struct eth_dev {
 	struct usb_gadget	*gadget;
 	struct usb_request	*req;		/* for control responses */
 	struct usb_request	*stat_req;	/* for cdc & rndis status */
-#ifdef CONFIG_DM_USB
-	struct udevice		*usb_udev;
-#endif
 
 	u8			config;
 	struct usb_ep		*in_ep, *out_ep, *status_ep;
@@ -2341,40 +2338,17 @@  fail:
 }
 
 /*-------------------------------------------------------------------------*/
-
-#ifdef CONFIG_DM_USB
-int dm_usb_init(struct eth_dev *e_dev)
-{
-	struct udevice *dev = NULL;
-	int ret;
-
-	ret = uclass_first_device(UCLASS_USB_DEV_GENERIC, &dev);
-	if (!dev || ret) {
-		pr_err("No USB device found\n");
-		return -ENODEV;
-	}
-
-	e_dev->usb_udev = dev;
-
-	return ret;
-}
-#endif
-
 static int _usb_eth_init(struct ether_priv *priv)
 {
 	struct eth_dev *dev = &priv->ethdev;
 	struct usb_gadget *gadget;
 	unsigned long ts;
+	int ret;
 	unsigned long timeout = USB_CONNECT_TIMEOUT;
 
-#ifdef CONFIG_DM_USB
-	if (dm_usb_init(dev)) {
-		pr_err("USB ether not found\n");
-		return -ENODEV;
-	}
-#else
-	board_usb_init(0, USB_INIT_DEVICE);
-#endif
+	ret = usb_gadget_initialize(0);
+	if (ret)
+		return ret;
 
 	/* Configure default mac-addresses for the USB ethernet device */
 #ifdef CONFIG_USBNET_DEV_ADDR
@@ -2546,9 +2520,7 @@  void _usb_eth_halt(struct ether_priv *priv)
 	}
 
 	usb_gadget_unregister_driver(&priv->eth_driver);
-#ifndef CONFIG_DM_USB
-	board_usb_cleanup(0, USB_INIT_DEVICE);
-#endif
+	usb_gadget_release(0);
 }
 
 #ifndef CONFIG_DM_ETH
diff --git a/include/linux/usb/gadget.h b/include/linux/usb/gadget.h
index b824f13..40ca2d3 100644
--- a/include/linux/usb/gadget.h
+++ b/include/linux/usb/gadget.h
@@ -19,6 +19,7 @@ 
 #define __LINUX_USB_GADGET_H
 
 #include <errno.h>
+#include <usb.h>
 #include <linux/compat.h>
 #include <linux/list.h>
 
@@ -926,4 +927,13 @@  extern void usb_ep_autoconfig_reset(struct usb_gadget *);
 
 extern int usb_gadget_handle_interrupts(int index);
 
+static inline int usb_gadget_initialize(int index)
+{
+	return board_usb_init(index, USB_INIT_DEVICE);
+}
+
+static inline int usb_gadget_release(int index)
+{
+	return board_usb_cleanup(index, USB_INIT_DEVICE);
+}
 #endif	/* __LINUX_USB_GADGET_H */