u-boot/drivers/usb/gadget
Patrick Delaunay 86b6a38863 dfu: handle short frame result of UPLOAD in state_dfu_idle
In DFU v1.1 specification [1] the DFU_UPLOAD (Short Frame)
is handled only in dfuUPLOADIDLE state:

- Figure A.1 Interface state transition diagram

- the state description in chapter A.2

A.2.3 State 2 dfuIDLE
  on Receipt of the DFU_UPLOAD request,and bitCanUpload = 1
  the Next State is dfuUPLOADIDLE

A.2.10 State 9 dfuUPLOAD-IDLE
  When the length of the data transferred by the device in response
  to a DFU_UPLOAD request is less than wLength. (Short frame)
  the Next State is dfuIDLE

In current code, when an UPLOAD is completely performed after the first
request (for example with wLength=200 and data read = 9), the DFU state
stay at dfuUPLOADIDLE until receiving a DFU_UPLOAD or a DFU_ABORT request
even it is unnecessary as the previous DFU_UPLOAD request already reached
the EOF.

This patch proposes to finish the DFU uploading (don't go to dfuUPLOADIDLE)
and completes the control-read operation (go to DFU_STATE_dfuIDLE) when
the first UPLOAD response has a short frame as an end of file (EOF)
indicator even if it is not explicitly allowed in the DFU specification
but this seems logical.

[1] https://www.usb.org/sites/default/files/DFU_1.1.pdf

Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
2022-01-28 10:21:51 -05: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: gaget: ci: set ep's desc when enable ep 2021-01-31 14:08:56 +01: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
designware_udc.c common: Drop linux/delay.h from common header 2020-05-18 21:19:23 -04:00
dwc2_udc_otg.c drivers/usb/gadget/dwc2_udc_otg.c: Fix spelling of "resetting". 2022-01-13 07:57:50 -05: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 usb: dwc2: Fix control OUT transfer issue 2020-10-20 00:48:58 +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 global: Convert simple_strtoul() with decimal to dectoul() 2021-08-02 13:32:14 -04:00
ether.c global: Convert simple_strtoul() with decimal to dectoul() 2021-08-02 13:32:14 -04:00
f_acm.c usb: gadget: Add CDC ACM function 2022-01-26 23:23:17 +01: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 fastboot: add UUU command UCmd and ACmd support 2021-02-26 15:30:55 +01: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 SPL: Add struct spl_boot_device parameter into spl_parse_board_header() 2022-01-20 11:35:29 +01: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 usb: gadget: Add bcdDevice for the DWC2 USB Gadget Controller 2021-10-12 14:20:04 +02:00
Kconfig usb: gadget: Add CDC ACM function 2022-01-26 23:23:17 +01:00
Makefile usb: gadget: Add CDC ACM function 2022-01-26 23:23:17 +01:00
max3420_udc.c dm: Avoid accessing seq directly 2020-12-18 20:32:21 -07:00
ndis.h USB: Add USB RNDIS gadget protocol 2011-02-19 20:32:37 +01:00
pxa25x_udc.c common: Drop linux/delay.h from common header 2020-05-18 21:19:23 -04:00
pxa25x_udc.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
pxa27x_udc.c WS cleanup: remove SPACE(s) followed by TAB 2021-09-30 09:08:16 -04: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