u-boot/drivers
Pali Rohár ff77bb301e usb: musb: Fix receiving of bigger buffers
If musb_peri_rx_ep() was called to process received HW buffer but U-Boot
cannot read it yet (e.g. because U-Boot SW buffer is full) then interrupt
was marked as processed also when HW buffer stayed unprocessed.

U-Boot tried to process this buffer again when it received interrupt again,
but it can receive it only when sender (host) sends a new data. As sender
(host) is not going to send a new data until U-Boot process current data
this issue caused a deadlock in case sender (host) is emitting data faster
than U-Boot can process it.

Reading musb intrrx register automatically clears this register and marks
interrupt as processed. So to prevent marking interrupt in U-Boot as
processed, adds a new variable pending_intrrx which would contain
unprocessed bits of intrrx register.

For a second step, every time when musb_peri_rx_ep() is called and there
are waiting data to be processed (signaled by MUSB_RXCSR_RXPKTRDY) either
acknowledge sender (via musb_peri_rx_ack()) that whole HW buffer was
processed or set corresponding bit in pending_intrrx that HW buffer was not
fully processed yet and next iteration is required after U-Boot allocates
space for reading HW buffer.

This patch fixes receiving large usb buffers, e.g. file transfer via Kermit
protocol implemented by 'loadb' U-Boot command over usbtty serial console.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Lukasz Majewski <lukma@denx.de>
Acked-by: Pavel Machek <pavel@ucw.cz>
2021-03-03 04:12:46 +01:00
..
adc adc: meson-saradc: add support for getting reference voltage value 2021-02-18 11:37:26 +01:00
ata common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
axi dm: treewide: Rename auto_alloc_size members to be shorter 2020-12-13 08:00:25 -07:00
bios_emulator common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
block common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
bootcount common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
bus bus: ti: am33xx: add pwm subsystem driver 2021-01-12 10:58:05 +05:30
button button: add a simple Analog to Digital Converter device based button driver 2021-02-18 11:37:26 +01:00
cache common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
clk Xilinx changes for v2021.04-rc3 2021-02-23 10:45:55 -05:00
core dm: Introduce DMA constraints into the core device model 2021-02-18 11:56:25 +01:00
cpu common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
crypto common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
ddr ddr: marvell: a38x: fix comment in conditional macro 2021-02-26 10:22:29 +01:00
demo common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
dfu dfu: dfu_sf: use correct print code 2021-02-07 19:22:54 +01:00
dma dma: bcm6348: incorrect buffer allocation 2021-01-18 15:23:06 -05:00
fastboot fastboot: add UUU command UCmd and ACmd support 2021-02-26 15:30:55 +01:00
firmware firmware: smci: possible NULL dereference 2021-02-03 03:38:41 -07:00
fpga Xilinx changes for v2021.04-rc3 2021-02-23 10:45:55 -05:00
gpio Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
hwspinlock common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
i2c Xilinx changes for v2021.04-rc3 2021-02-23 10:45:55 -05:00
input common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
led dm: treewide: Rename ..._platdata variables to just ..._plat 2020-12-13 16:51:09 -07:00
mailbox common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
memory memory: stm32-fmc2: migrate trace to dev and log macro 2021-01-13 09:52:58 +01:00
misc dm: i2c: allow disabling driver model in SPL 2021-02-21 06:07:30 +01:00
mmc drivers: mmc: iproc_sdhci: enable HS200 mode 2021-03-02 13:53:37 +01:00
mtd mtd: nand: spi: Support GigaDevice GD5F1GQ5UExxG 2021-02-26 16:01:37 +05:30
mux dm: Use access methods for dev/uclass private data 2021-01-05 12:24:40 -07:00
net net: cortina_ni: buffer overrun 2021-02-24 16:51:49 -05:00
nvme Prepare v2021.01-rc5 2021-01-05 16:20:26 -05:00
pch dm: treewide: Rename auto_alloc_size members to be shorter 2020-12-13 08:00:25 -07:00
pci pci: pci_mvebu: set local dev to number 1 2021-02-26 10:22:29 +01:00
pci_endpoint common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
phy Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
pinctrl Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
power power: pmic: remove pmic_max8997/8 files 2021-02-23 15:43:13 +09:00
pwm common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
qe common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
ram common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
remoteproc Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
reset common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
rng rng: iproc_rng200: Enable support for RPi4 armv7 2021-03-02 13:53:48 +01:00
rtc sandbox: keep time offset when resetting 2021-01-30 14:25:42 -07:00
scsi dm: treewide: Rename ..._platdata variables to just ..._plat 2020-12-13 16:51:09 -07:00
serial serial: usbtty: Send urb data in correct order 2021-03-03 04:12:45 +01:00
smem Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
soc dm: treewide: Rename ..._platdata variables to just ..._plat 2020-12-13 16:51:09 -07:00
sound common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
spi spi: nxp_fspi: Fix error reporting 2021-02-26 15:09:38 +05:30
spmi common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
sysinfo dm: treewide: Rename auto_alloc_size members to be shorter 2020-12-13 08:00:25 -07:00
sysreset common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
tee drivers: tee: sandbox: add rpc test ta emulation 2021-02-16 11:48:20 -05:00
thermal common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
timer common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
tpm dm: i2c: use CONFIG_IS_ENABLED macro for DM_I2C/DM_I2C_GPIO 2021-02-21 06:08:00 +01:00
ufs dm: treewide: Rename ..._platdata variables to just ..._plat 2020-12-13 16:51:09 -07:00
usb usb: musb: Fix receiving of bigger buffers 2021-03-03 04:12:46 +01:00
video drivers: video: Add Support for Himax HX8238D Panel 2021-02-19 23:38:06 +01:00
virtio virtio: fix off by one device id comparison 2021-02-24 16:51:48 -05:00
w1 w1: mxc: fix build 2021-01-23 11:30:31 +01:00
w1-eeprom dm: treewide: Rename 'platdata' variables to just 'plat' 2020-12-13 16:51:08 -07:00
watchdog Xilinx changes for v2021.04-rc3 2021-02-23 10:45:55 -05:00
xen common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
Kconfig board: Rename uclass to sysinfo 2020-11-06 10:18:20 +08:00
Makefile bootcount: allow to use this feature on TPL 2021-01-27 16:58:57 -05:00