If DCD supports queuing of stall requests then USB MSC delay work-around is not necessary
This commit is contained in:
parent
f139391f8a
commit
c6127ad09d
@ -7014,4 +7014,8 @@
|
|||||||
* include/nuttx/i2c.h: More typo fixes from Vijay Kumar (2014-3-19).
|
* include/nuttx/i2c.h: More typo fixes from Vijay Kumar (2014-3-19).
|
||||||
* arch/Kconfig and *_assert.h: Add a configuration option to enable
|
* arch/Kconfig and *_assert.h: Add a configuration option to enable
|
||||||
dumping of the USB trace buffer on assertion (2014-3-19).
|
dumping of the USB trace buffer on assertion (2014-3-19).
|
||||||
|
* drivers/usbdev/Kconfig, arch/arm/src/sam34/Kconfig, and
|
||||||
|
drivers/usbdev/usbmsc_scsi.c: If DCD can support queuing of stall
|
||||||
|
requests, then the USB MSC stall work around delays are not necessary
|
||||||
|
(2014-3-20).
|
||||||
|
|
||||||
|
9
TODO
9
TODO
@ -947,6 +947,15 @@ o USB (drivers/usbdev, drivers/usbhost)
|
|||||||
Description: There is a workaround for a bug in drivers/usbdev/usbdev_storage.c.
|
Description: There is a workaround for a bug in drivers/usbdev/usbdev_storage.c.
|
||||||
that involves delays. This needs to be redesigned to eliminate these
|
that involves delays. This needs to be redesigned to eliminate these
|
||||||
delays. See logic conditioned on CONFIG_USBMSC_RACEWAR.
|
delays. See logic conditioned on CONFIG_USBMSC_RACEWAR.
|
||||||
|
|
||||||
|
If queuing of stall requests is supported by DCD then this workaround
|
||||||
|
is not required. In this case, (1) the stall is not sent until all
|
||||||
|
write requests preceding the stall request are sent, (2) the stall is
|
||||||
|
sent, and then after the stall is cleared, (3) all write requests
|
||||||
|
queued after the stall are sent.
|
||||||
|
|
||||||
|
See, for example, the queuing of pending stall requests in the SAM3/4
|
||||||
|
UDP driver at arch/arm/src/sam34/sam_udp.c.
|
||||||
Status: Open
|
Status: Open
|
||||||
Priority: Medium
|
Priority: Medium
|
||||||
|
|
||||||
|
@ -561,6 +561,7 @@ config SAM34_UDP
|
|||||||
bool "USB Device Full Speed (UDP)"
|
bool "USB Device Full Speed (UDP)"
|
||||||
default n
|
default n
|
||||||
depends on ARCH_CHIP_SAM4S || ARCH_CHIP_SAM4E
|
depends on ARCH_CHIP_SAM4S || ARCH_CHIP_SAM4E
|
||||||
|
select ARCH_USBDEV_STALLQUEUE
|
||||||
|
|
||||||
config SAM34_UDPHS
|
config SAM34_UDPHS
|
||||||
bool "USB Device High Speed (UDPHS)"
|
bool "USB Device High Speed (UDPHS)"
|
||||||
|
@ -72,6 +72,22 @@ bool "Board DMA Allocation Hooks"
|
|||||||
memory of the specified size; usbdev_dma_free() is the corresponding
|
memory of the specified size; usbdev_dma_free() is the corresponding
|
||||||
function that will be called to free the DMA-capable memory.
|
function that will be called to free the DMA-capable memory.
|
||||||
|
|
||||||
|
config ARCH_USBDEV_STALLQUEUE
|
||||||
|
bool
|
||||||
|
default n
|
||||||
|
---help---
|
||||||
|
This option is set by the USB device controller driver (DCD)
|
||||||
|
selection. These selection means that the DCD can support
|
||||||
|
queuing of stall requests. By this, it is meant that, (1) the
|
||||||
|
stall is not sent until all write requests preceding the stall
|
||||||
|
request are sent, (2) the stall is sent, and then after the
|
||||||
|
stall is cleared, (3) all write requests queued after the stall
|
||||||
|
are sent.
|
||||||
|
|
||||||
|
If the driver does not support this feature, that the class drivers
|
||||||
|
will enable some hokey and inefficient delay logic to workaround
|
||||||
|
the lack of queuing.
|
||||||
|
|
||||||
config USBDEV_TRACE
|
config USBDEV_TRACE
|
||||||
bool "Enable USB tracing for debug"
|
bool "Enable USB tracing for debug"
|
||||||
default n
|
default n
|
||||||
|
Loading…
Reference in New Issue
Block a user