zephyr/drivers/usb/udc
Tomasz Moń a26d3c2f2e drivers: udc_dwc2: Workaround endpoint disable race condition
Endpoint disable function is racing against bus traffic. If the bus
traffic leads to transfer completion immediately before the endpoint
disable is executed, then the transfer complete interrupt will remain
set when the endpoint is disabled. For OUT endpoints this leads to "No
buffer for ep" errors, while for IN endpoint this can lead to double
buffer pull which causes assertion failure.

The proper solution would be to change endpoint disable to not actually
wait for the individual events (and accept that the endpoint may not
need to be disabled because the transfer can just finish). For the time
being workaround the issue by clearing XferCompl bit on endpoint
disable.

Signed-off-by: Tomasz Moń <tomasz.mon@nordicsemi.no>
2024-11-30 09:36:17 +01:00
..
CMakeLists.txt drivers: udc_ambiq: Implemented UDC driver for apollo4p 2024-11-16 15:07:29 -05:00
Kconfig drivers: udc_ambiq: Implemented UDC driver for apollo4p 2024-11-16 15:07:29 -05:00
Kconfig.ambiq drivers: udc_ambiq: Implemented UDC driver for apollo4p 2024-11-16 15:07:29 -05:00
Kconfig.dwc2 usb: dwc2: Allow for enabling USB if the cable is disconnected 2024-10-16 16:37:31 +01:00
Kconfig.it82xx2 ITE: it8xxx2: Remove CONFIG_PINCTRL from soc defconfig file 2024-10-15 13:52:55 +02:00
Kconfig.kinetis
Kconfig.mcux boards: nxp: Removing CONFIG_PINCTRL from the boards defconfig 2024-10-15 19:09:45 -04:00
Kconfig.nrf
Kconfig.numaker boards: nuvoton: numaker: Drop PINCTRL from board defconfig 2024-11-20 08:23:58 -05:00
Kconfig.rpi_pico drivers: udc: add UDC driver for RP2040 USB device controller 2024-09-05 16:57:46 -04:00
Kconfig.skeleton
Kconfig.smartbond drivers: usb: udc: add Smartbond UDC driver 2024-10-22 20:41:55 +02:00
Kconfig.stm32 drivers: stm32: Select PINCTRL when required 2024-09-03 14:40:55 +01:00
Kconfig.virtual
udc_ambiq.c drivers: udc_ambiq: defer enqueue event if the endpoint is stalled 2024-11-29 11:45:10 +01:00
udc_common.c lib: net_buf: rename header file from zephyr/net/buf.h to zephyr/net_buf.h 2024-09-07 11:19:05 -05:00
udc_common.h
udc_dwc2_vendor_quirks.h drivers: udc_dwc2: Wait for USBHS clock start 2024-11-29 11:44:26 +01:00
udc_dwc2.c drivers: udc_dwc2: Workaround endpoint disable race condition 2024-11-30 09:36:17 +01:00
udc_dwc2.h drivers: udc_dwc2: Add hibernation vendor quirks 2024-09-26 03:33:52 -04:00
udc_it82xx2.c udc: it82xx2: emit SOF event 2024-10-22 14:01:11 +02:00
udc_kinetis.c drivers: udc_kinetis: reset control endpoint busy flags 2024-11-05 10:53:11 -06:00
udc_mcux_ehci.c drivers: udc: mcux: move isr context codes to work context 2024-09-10 12:38:03 -04:00
udc_mcux_ip3511.c drivers: udc: mcux: move isr context codes to work context 2024-09-10 12:38:03 -04:00
udc_nrf.c drivers: udc_nrf: Handle Suspend and Resume in thread 2024-11-26 14:45:01 +00:00
udc_numaker.c
udc_rpi_pico.c drivers: udc: add UDC driver for RP2040 USB device controller 2024-09-05 16:57:46 -04:00
udc_skeleton.c
udc_smartbond.c drivers: usb: udc: add Smartbond UDC driver 2024-10-22 20:41:55 +02:00
udc_stm32.c drivers: udc_stm32: set address only for standard device requests 2024-11-18 13:17:31 -05:00
udc_virtual.c drivers: udc: do not use the MPS value directly for the endpoint size 2024-08-21 18:25:30 +01:00