mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
dfu: Use plain udevice for UDC controller interaction
Convert to plain udevice interaction with UDC controller device, avoid the use of UDC uclass dev_array . Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> Signed-off-by: Marek Vasut <marex@denx.de>
This commit is contained in:
parent
edd6042d45
commit
2dfae17512
1 changed files with 8 additions and 7 deletions
15
common/dfu.c
15
common/dfu.c
|
@ -23,11 +23,12 @@
|
|||
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();
|
||||
|
@ -55,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
|
||||
*/
|
||||
|
@ -68,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.
|
||||
*
|
||||
|
@ -77,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) {
|
||||
|
@ -103,12 +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();
|
||||
err_detach:
|
||||
usb_gadget_release(usbctrl_index);
|
||||
udc_device_put(udc);
|
||||
|
||||
if (dfu_reset)
|
||||
do_reset(NULL, 0, 0, NULL);
|
||||
|
|
Loading…
Reference in a new issue