u-boot-brain/drivers/usb/gadget
Paul Kocialkowski bc9071c9f3 usb: gadget: fastboot: Dequeue the previous IN request for the current request
Recent versions of the fastboot tool will query the partition type before doing
an operation on a partition (such as erase, flash, etc). It will then submit
the operation as soon as the response for the partition type is received.

Usually, the MUSB controller will see that the partition type request return
status was read by the host at the very same time as the actual operation
request is submitted by the host. However, the operation will be read first
(int_rx is handled first in musb_interrupt) and after it is completed, the
fastboot USB gadget driver will send another return status. Hence, this happens
before the musb gadget framework has had a chance to handle the previous
acknowledgement that the host read the return status and dequeue the request.

The host will then usually empty the FIFO by the time musb_interrupt gets around
handling the return status acknowledgement (for the previous request, this is
still on the same musb_interrupt call), so no other interrupt is generated and
the most recent return status acknowledgement remains unaccounted for.

It will then be used as a response for the next command, and the proper response
for it will be delayed to the next command, and so on.

Dequeuing the previous IN request in the fastboot code ensures that no previous
return status remains. It is acceptable to do it since there is no callback to
it anyways.

Signed-off-by: Paul Kocialkowski <contact@paulk.fr>
2015-07-22 08:57:54 +02:00
..
udc usb: dwc3: Makefile: Make dwc3 driver compile in u-boot 2015-04-14 05:48:10 +02:00
atmel_usba_udc.c usb: modify usb_gadget_handle_interrupts to take controller index 2015-04-14 05:48:11 +02:00
atmel_usba_udc.h USB: gadget: add atmel usba udc driver 2013-09-24 17:51:35 +02:00
ci_udc.c ci_udc: Update the ci_udc driver to support bulk transfers 2015-05-29 12:41:04 +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: Add .reset callback to usb_gadget_driver structure 2015-04-14 05:48:12 +02:00
config.c usb: gadget: config: fix unaligned access issues 2013-09-24 17:51:35 +02:00
core.c Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
designware_udc.c linux/kernel.h: sync min, max, min3, max3 macros with Linux 2014-11-23 06:48:30 -05:00
ep0.c cosmetic: replace MIN, MAX with min, max 2014-09-24 18:30:29 -04:00
ep0.h Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
epautoconf.c usb: dwc3: gadget: add common endpoint configuration for dwc3 udc driver 2015-04-14 05:48:12 +02:00
ether.c net: cosmetic: Fix var naming net <-> eth drivers 2015-04-18 11:11:33 -06:00
f_dfu.c usb: gadget: f_dfu: Add get_alt function to pass the USB compliance test 2015-01-18 12:31:00 +01:00
f_dfu.h usb: dfu: f_dfu: Provide infrastructure to adjust DFU's Poll Timeout value 2013-12-18 19:53:19 +01:00
f_fastboot.c usb: gadget: fastboot: Dequeue the previous IN request for the current request 2015-07-22 08:57:54 +02:00
f_mass_storage.c usb: f_mass_storage: sleep_thread: decrease the interval for check ctrlc() 2015-06-08 15:26:00 +02:00
f_thor.c usb: gadget: thor: Claim EP after allocating it in thor gadget 2015-04-14 05:48:12 +02:00
f_thor.h sizes.h - consolidate for all architectures 2014-03-04 12:15:01 -05:00
fotg210.c usb: modify usb_gadget_handle_interrupts to take controller index 2015-04-14 05:48:11 +02:00
g_dnl.c usb: gadget: Weak board_usb_init/cleanup definitions in USB download gadget code 2015-07-22 08:57:53 +02:00
gadget_chips.h usb: dwc3: gadget: add common endpoint configuration for dwc3 udc driver 2015-04-14 05:48:12 +02:00
Makefile usb: Fastboot function config for better consistency with other functions 2015-07-22 08:57:53 +02:00
mpc8xx_udc.c cosmetic: replace MIN, MAX with min, max 2014-09-24 18:30:29 -04:00
ndis.h USB: Add USB RNDIS gadget protocol 2011-02-19 20:32:37 +01:00
pxa25x_udc.c usb: modify usb_gadget_handle_interrupts to take controller index 2015-04-14 05:48:11 +02:00
pxa25x_udc.h Add GPL-2.0+ SPDX-License-Identifier to source files 2013-07-24 09:44:38 -04:00
pxa27x_udc.c linux/kernel.h: sync min, max, min3, max3 macros with Linux 2014-11-23 06:48:30 -05:00
regs-otg.h driver:usb:s3c_udc: add support for Exynos4x12 2013-12-02 11:22:32 +09:00
rndis.c net: Add ethernet FCS length macro in net.h 2015-03-24 21:22:37 -06:00
rndis.h USB-RNDIS: Send RNDIS state on disconnecting 2011-02-19 20:32:38 +01:00
s3c_udc_otg_phy.c usb: s3c-otg: Split out PHY control 2014-11-07 16:32:02 +01:00
s3c_udc_otg_xfer_dma.c linux/kernel.h: sync min, max, min3, max3 macros with Linux 2014-11-23 06:48:30 -05:00
s3c_udc_otg.c usb: modify usb_gadget_handle_interrupts to take controller index 2015-04-14 05:48:11 +02:00
storage_common.c lib, linux: move linux specific defines to linux/compat.h 2014-08-25 19:25:03 -04:00
usbstring.c usb: handle NULL table in usb_gadget_get_string 2014-04-30 10:30:57 +02:00