aboutsummaryrefslogtreecommitdiff
path: root/common/dfu.c
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2023-09-16 12:14:08 -0400
committerTom Rini <trini@konsulko.com>2023-09-16 12:14:08 -0400
commit8fcd28aae590cdca86f497f1e2431f6e4af1b268 (patch)
tree3daf43bed41e1ff8eed9f8e1a020bf10319e9095 /common/dfu.c
parent2fe4b54556ea6271237b35de68dc458bfceab94c (diff)
parent2caf974b5fac69a1b778e64503f2c107a8d7c3a3 (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.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/common/dfu.c b/common/dfu.c
index 96190889ab..45206b9e22 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);