mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-30 04:06:33 +08:00
Correction to the ZLP fix for the STM32 F4 OTG FS driver
git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@4591 7fd9a85b-ad96-42d3-883c-3090e2eb8679
This commit is contained in:
@@ -2,3 +2,19 @@
|
|||||||
# For a description of the syntax of this configuration file,
|
# For a description of the syntax of this configuration file,
|
||||||
# see misc/tools/kconfig-language.txt.
|
# see misc/tools/kconfig-language.txt.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
menu "Custom free memory command"
|
||||||
|
source "$APPSDIR/system/free/Kconfig"
|
||||||
|
endmenu
|
||||||
|
|
||||||
|
menu "I2C tool"
|
||||||
|
source "$APPSDIR/system/i2c/Kconfig"
|
||||||
|
endmenu
|
||||||
|
|
||||||
|
menu "FLASH Program Installation"
|
||||||
|
source "$APPSDIR/system/install/Kconfig"
|
||||||
|
endmenu
|
||||||
|
|
||||||
|
menu "readline() support"
|
||||||
|
source "$APPSDIR/system/readline/Kconfig"
|
||||||
|
endmenu
|
||||||
|
|||||||
@@ -2,3 +2,49 @@
|
|||||||
# For a description of the syntax of this configuration file,
|
# For a description of the syntax of this configuration file,
|
||||||
# see misc/tools/kconfig-language.txt.
|
# see misc/tools/kconfig-language.txt.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
#if I2C
|
||||||
|
config I2CTOOL_BUILTIN
|
||||||
|
int "NSH built-in command"
|
||||||
|
default y
|
||||||
|
depends on NSH_BUILTIN_APPS
|
||||||
|
---help---
|
||||||
|
Build the tools as an NSH built-in command
|
||||||
|
|
||||||
|
config I2CTOOL_MINBUS
|
||||||
|
int "Minimum bus number"
|
||||||
|
default 0
|
||||||
|
---help---
|
||||||
|
Smallest bus index supported by the hardware (default 0).
|
||||||
|
|
||||||
|
config I2CTOOL_MAXBUS
|
||||||
|
int "Maximum bus number"
|
||||||
|
default 3
|
||||||
|
---help---
|
||||||
|
Largest bus index supported by the hardware (default 3)
|
||||||
|
|
||||||
|
config I2CTOOL_MINADDR
|
||||||
|
int "Minimum I2C address"
|
||||||
|
default 0x03
|
||||||
|
---help---
|
||||||
|
Minium 7-bit device address (default: 0x03)
|
||||||
|
|
||||||
|
config I2CTOOL_MAXADDR
|
||||||
|
int "Maximum I2C address"
|
||||||
|
default 0x77
|
||||||
|
---help---
|
||||||
|
Largest 7-bit device address (default: 0x77)
|
||||||
|
|
||||||
|
config I2CTOOL_MAXREGADDR
|
||||||
|
int "Maximum I2C register address"
|
||||||
|
default 0xff
|
||||||
|
---help---
|
||||||
|
Largest I2C register address (default: 0xff)
|
||||||
|
|
||||||
|
config I2CTOOL_DEFFREQ
|
||||||
|
int "Default I2C frequency"
|
||||||
|
default 4000000
|
||||||
|
---help---
|
||||||
|
Default I2C frequency (default: 4000000)
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -2,3 +2,30 @@
|
|||||||
# For a description of the syntax of this configuration file,
|
# For a description of the syntax of this configuration file,
|
||||||
# see misc/tools/kconfig-language.txt.
|
# see misc/tools/kconfig-language.txt.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
config READLINE_ECHO
|
||||||
|
bool "Echo character input"
|
||||||
|
default y
|
||||||
|
---help---
|
||||||
|
Echo received character input back via stdout. This is normal
|
||||||
|
behavior and should be selected unless the source of stdin input
|
||||||
|
already has local echo support or you need to suppress the back-channel
|
||||||
|
responses for any other reason.
|
||||||
|
|
||||||
|
choice
|
||||||
|
prompt "Newline Options"
|
||||||
|
default EOL_IS_EITHER_CRLF
|
||||||
|
|
||||||
|
config EOL_IS_CR
|
||||||
|
bool "EOL is CR"
|
||||||
|
|
||||||
|
config EOL_IS_LF
|
||||||
|
bool "EOL is LF"
|
||||||
|
|
||||||
|
config EOL_IS_BOTH_CRLF
|
||||||
|
bool "EOL is CR and LF"
|
||||||
|
|
||||||
|
config EOL_IS_EITHER_CRLF
|
||||||
|
bool "EOL is CR or LF"
|
||||||
|
|
||||||
|
endchoice
|
||||||
|
|||||||
@@ -1027,6 +1027,11 @@ static void stm32_epin_request(FAR struct stm32_usbdev_s *priv,
|
|||||||
|
|
||||||
if (privreq->req.len == 0)
|
if (privreq->req.len == 0)
|
||||||
{
|
{
|
||||||
|
/* The ZLP flag is set TRUE whenever we want to force the driver to
|
||||||
|
* send a zero-length-packet on the next pass through the loop (below).
|
||||||
|
* The flag is cleared whenever a packet is sent in the loop below.
|
||||||
|
*/
|
||||||
|
|
||||||
privep->zlp = true;
|
privep->zlp = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1043,6 +1048,10 @@ static void stm32_epin_request(FAR struct stm32_usbdev_s *priv,
|
|||||||
bytesleft = privreq->req.len - privreq->req.xfrd;
|
bytesleft = privreq->req.len - privreq->req.xfrd;
|
||||||
nbytes = bytesleft;
|
nbytes = bytesleft;
|
||||||
|
|
||||||
|
/* Assume no zero-length-packet on the next pass through this loop */
|
||||||
|
|
||||||
|
privep->zlp = false;
|
||||||
|
|
||||||
/* Limit the size of the transfer to one full packet and handle
|
/* Limit the size of the transfer to one full packet and handle
|
||||||
* zero-length packets (ZLPs).
|
* zero-length packets (ZLPs).
|
||||||
*/
|
*/
|
||||||
@@ -1053,7 +1062,6 @@ static void stm32_epin_request(FAR struct stm32_usbdev_s *priv,
|
|||||||
* the request.
|
* the request.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
privep->zlp = false;
|
|
||||||
if (nbytes >= privep->ep.maxpacket)
|
if (nbytes >= privep->ep.maxpacket)
|
||||||
{
|
{
|
||||||
nbytes = privep->ep.maxpacket;
|
nbytes = privep->ep.maxpacket;
|
||||||
@@ -1066,6 +1074,14 @@ static void stm32_epin_request(FAR struct stm32_usbdev_s *priv,
|
|||||||
if (bytesleft == privep->ep.maxpacket &&
|
if (bytesleft == privep->ep.maxpacket &&
|
||||||
(privreq->req.flags & USBDEV_REQFLAGS_NULLPKT) != 0)
|
(privreq->req.flags & USBDEV_REQFLAGS_NULLPKT) != 0)
|
||||||
{
|
{
|
||||||
|
/* The ZLP flag is set TRUE whenever we want to force
|
||||||
|
* the driver to send a zero-length-packet on the next
|
||||||
|
* pass through this loop. The flag is cleared (above)
|
||||||
|
* whenever we are committed to sending any packet and
|
||||||
|
* set here when we want to force one more pass through
|
||||||
|
* the loop.
|
||||||
|
*/
|
||||||
|
|
||||||
privep->zlp = true;
|
privep->zlp = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user