diff options
| author | Tom Rini <trini@konsulko.com> | 2023-09-16 12:14:08 -0400 | 
|---|---|---|
| committer | Tom Rini <trini@konsulko.com> | 2023-09-16 12:14:08 -0400 | 
| commit | 8fcd28aae590cdca86f497f1e2431f6e4af1b268 (patch) | |
| tree | 3daf43bed41e1ff8eed9f8e1a020bf10319e9095 /common/dfu.c | |
| parent | 2fe4b54556ea6271237b35de68dc458bfceab94c (diff) | |
| parent | 2caf974b5fac69a1b778e64503f2c107a8d7c3a3 (diff) | |
Merge branch 'next' of git://source.denx.de/u-boot-usb into next
- Rework gadget device handling
Diffstat (limited to 'common/dfu.c')
| -rw-r--r-- | common/dfu.c | 19 | 
1 files changed, 11 insertions, 8 deletions
| diff --git a/common/dfu.c b/common/dfu.c index 96190889ab7..45206b9e225 100644 --- a/common/dfu.c +++ b/common/dfu.c @@ -23,18 +23,20 @@  int run_usb_dnl_gadget(int usbctrl_index, char *usb_dnl_gadget)  {  	bool dfu_reset = false; +	struct udevice *udc;  	int ret, i = 0; -	ret = usb_gadget_initialize(usbctrl_index); +	ret = udc_device_get_by_index(usbctrl_index, &udc);  	if (ret) { -		pr_err("usb_gadget_initialize failed\n"); +		pr_err("udc_device_get_by_index failed\n");  		return CMD_RET_FAILURE;  	}  	g_dnl_clear_detach();  	ret = g_dnl_register(usb_dnl_gadget);  	if (ret) {  		pr_err("g_dnl_register failed"); -		return CMD_RET_FAILURE; +		ret = CMD_RET_FAILURE; +		goto err_detach;  	}  #ifdef CONFIG_DFU_TIMEOUT @@ -54,7 +56,7 @@ int run_usb_dnl_gadget(int usbctrl_index, char *usb_dnl_gadget)  			}  			/* -			 * This extra number of usb_gadget_handle_interrupts() +			 * This extra number of dm_usb_gadget_handle_interrupts()  			 * calls is necessary to assure correct transmission  			 * completion with dfu-util  			 */ @@ -67,7 +69,7 @@ int run_usb_dnl_gadget(int usbctrl_index, char *usb_dnl_gadget)  		if (dfu_get_defer_flush()) {  			/* -			 * Call to usb_gadget_handle_interrupts() is necessary +			 * Call to dm_usb_gadget_handle_interrupts() is necessary  			 * to act on ZLP OUT transaction from HOST PC after  			 * transmitting the whole file.  			 * @@ -76,7 +78,7 @@ int run_usb_dnl_gadget(int usbctrl_index, char *usb_dnl_gadget)  			 * 5 seconds). In such situation the dfu-util program  			 * exits with error message.  			 */ -			usb_gadget_handle_interrupts(usbctrl_index); +			dm_usb_gadget_handle_interrupts(udc);  			ret = dfu_flush(dfu_get_defer_flush(), NULL, 0, 0);  			dfu_set_defer_flush(NULL);  			if (ret) { @@ -102,11 +104,12 @@ int run_usb_dnl_gadget(int usbctrl_index, char *usb_dnl_gadget)  			goto exit;  		schedule(); -		usb_gadget_handle_interrupts(usbctrl_index); +		dm_usb_gadget_handle_interrupts(udc);  	}  exit:  	g_dnl_unregister(); -	usb_gadget_release(usbctrl_index); +err_detach: +	udc_device_put(udc);  	if (dfu_reset)  		do_reset(NULL, 0, 0, NULL); | 
