u-boot/drivers/usb/gadget
Mattijs Korpershoek 5f7e01e9d5 usb: gadget: fastboot: detach usb on reboot commands
When host issues "fastboot reboot fastboot", it's expected that the
board drops the USB connection before resetting.

On some boards, such as Khadas VIM3L and SEI610, this is not the case.

We observe the following error:
$ fastboot reboot fastboot
Rebooting into fastboot                            OKAY [  0.004s]
fastboot: error: Failed to boot into userspace fastboot; one or more components might be unbootable.

This does not happen when we use the RST button on the board.
It can be reproduced in linux with:
  # echo b > /proc/sysrq-trigger

In this case, we hit a undefined hardware behavior, where D+ and D-
are in an unknown state. Therefore the host can't detect usb
disconnection.

Make sure we always call usb_gadget_release() when a "fastboot reboot"
command is issued.

Note: usb_gadget_release() should be called before g_dnl_unregister()
because g_dnl_unregister() triggers a complete() call on each
endpoint (thus calling do_reset()).

Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
2022-10-10 18:08:18 +02:00
..
udc dm: define LOG_CATEGORY for all uclass 2021-07-06 10:38:03 -06:00
at91_udc.c common: Drop linux/bug.h from common header 2020-05-18 21:19:23 -04:00
at91_udc.h WS cleanup: remove SPACE(s) followed by TAB 2021-09-30 09:08:16 -04:00
atmel_usba_udc.c common: Drop linux/bitops.h from common header 2020-05-18 21:19:23 -04:00
atmel_usba_udc.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
bcm_udc_otg.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
bcm_udc_otg_phy.c common: Drop linux/delay.h from common header 2020-05-18 21:19:23 -04:00
ci_udc.c usb: gadget: ci: Make various ops const 2022-04-22 10:35:14 +02:00
ci_udc.h ci_udc: Update the ci_udc driver to support bulk transfers 2015-05-29 12:41:04 +02:00
composite.c usb: composite: force gadget to be USB2 for HS only function 2021-01-31 14:08:56 +01:00
config.c SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
core.c usb: gadget: Do not export usbd_device_* arrays 2021-01-31 14:08:56 +01:00
dwc2_udc_otg.c usb: dwc2: handle return code of dev_read_size() in of to, plat function 2022-03-14 12:31:12 +01:00
dwc2_udc_otg_phy.c common: Drop linux/delay.h from common header 2020-05-18 21:19:23 -04:00
dwc2_udc_otg_priv.h usb: dwc2_udc_otg: Read MAX_HW_ENDPOINT from HWCFG4 register 2019-04-21 10:26:52 +02:00
dwc2_udc_otg_regs.h usb: dwc2: add "u-boot,force-vbus-detection" for stm32 2020-11-22 13:18:20 +01:00
dwc2_udc_otg_xfer_dma.c Fix out of bound access of ep array. 2022-09-26 01:49:36 +02:00
ep0.c usb: gadget: Use dbg_ep0() macro instead of serial_printf() 2021-03-03 04:12:46 +01:00
ep0.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
epautoconf.c arm: Remove PXA architecture support 2022-07-07 09:29:08 -04:00
ether.c arm: Remove strongarm support 2022-07-08 17:57:33 -04:00
f_acm.c cyclic: Use schedule() instead of WATCHDOG_RESET() 2022-09-18 10:26:33 +02:00
f_dfu.c dfu: handle short frame result of UPLOAD in state_dfu_idle 2022-01-28 10:21:51 -05:00
f_dfu.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
f_fastboot.c usb: gadget: fastboot: detach usb on reboot commands 2022-10-10 18:08:18 +02:00
f_mass_storage.c usb: gadget: Fix controller index in UMS 2020-09-01 14:47:43 +02:00
f_rockusb.c Remove #include <version.h> from files which do not need it 2021-09-17 12:10:44 -04:00
f_sdp.c treewide: Drop image_header_t typedef 2022-09-29 16:07:57 -04:00
f_thor.c thor: add support for the dfu_alt_info reintialization from the flashed script 2021-01-31 14:08:56 +01:00
f_thor.h gadget: f_thor: update to support more than 4GB file as thor 5.0 2018-05-18 13:17:30 +02:00
fotg210.c common: Drop linux/delay.h from common header 2020-05-18 21:19:23 -04:00
g_dnl.c usb: gadget: dnl: set dnl to be super speed 2021-01-31 14:08:56 +01:00
gadget_chips.h arm: Remove strongarm support 2022-07-08 17:57:33 -04:00
Kconfig Merge branch 'next' 2022-07-11 14:58:57 -04:00
Makefile usb: gadget: Clean up Makefile ifdeffery 2022-10-10 18:08:18 +02:00
max3420_udc.c spi: spi-uclass: Add new spi_get_bus_and_cs() implementation 2022-05-23 09:33:10 -04:00
ndis.h USB: Add USB RNDIS gadget protocol 2011-02-19 20:32:37 +01:00
rndis.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
rndis.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
storage_common.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
u_os_desc.h usb: gadget: OS Feature Descriptors support 2021-01-31 14:08:56 +01:00
usbstring.c usb: gadget: move utf8_to_utf16le to header file 2021-01-31 14:08:56 +01:00