incubator-nuttx/drivers/serial/Kconfig

894 lines
20 KiB
Plaintext

#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#
config ARCH_HAVE_SERIAL_TERMIOS
bool
default n
menuconfig SERIAL
bool "Serial Driver Support"
default y
---help---
Front-end character drivers for chip-specific UARTs. This provide
some TTY-like functionality and are commonly used (but not required
for) the NuttX system console. See also include/nuttx/serial/serial.h
if SERIAL
config SERIAL_PM_ACTIVITY_DOMAIN
int "PM activity domain"
default 0
depends on PM
---help---
When characters are received on a console device, pm_activity()
will be called with this PM domain.
config SERIAL_PM_ACTIVITY_PRIORITY
int "PM activity priority when receive character"
default 6
depends on PM
---help---
When characters are received on a console device, pm_activity()
will be called with this PM priority.
config SERIAL_REMOVABLE
bool
default n
config SERIAL_CONSOLE
bool
default n
config SERIAL_GDBSTUB
bool "GDBSTUB Serial support"
depends on ARCH_HAVE_DEBUG
default n
config SERIAL_GDBSTUB_PATH
string "GDBSTUB Serial path"
depends on SERIAL_GDBSTUB
default "/dev/ttyS1"
---help---
The path to the serial device that will be used for GDB stub.
menuconfig UART_PL011
bool "PL011 Chip support"
default n
if UART_PL011
source "drivers/serial/Kconfig-pl011"
endif
menuconfig CMSDK_UART
bool "CMSDK UART Chip support"
select ARCH_HAVE_SERIAL_TERMIOS
default n
if CMSDK_UART
source "drivers/serial/Kconfig-cmsdk"
endif # CMSDK_UART
menuconfig 16550_UART
bool "16550 UART Chip support"
select ARCH_HAVE_SERIAL_TERMIOS
default n
if 16550_UART
source "drivers/serial/Kconfig-16550"
endif
if PCI
source "drivers/serial/Kconfig-pci"
endif
#
# MCU serial peripheral driver?
#
config OTHER_UART_SERIALDRIVER
bool
default n
select MCU_SERIAL
config MCU_SERIAL
bool
default n
config RPMSG_UART
bool "UART RPMSG support"
default n
depends on RPMSG
select ARCH_HAVE_SERIAL_TERMIOS
select SERIAL_RXDMA
select SERIAL_TXDMA
select SERIAL_REMOVABLE
select SERIAL_IFLOWCONTROL
config RPMSG_UART_CONSOLE
bool "UART RPMSG console support"
default n
depends on RPMSG_UART
---help---
Register the UART RPMSG device as /dev/console so that is will be used
as the console device.
NOTE: support for this option must be implemented in the board logic by
setting the \"isconsole\" argument in the uart_rpmsg_init() function to true.
#
# Standard serial driver configuration
#
config STANDARD_SERIAL
bool "Enable standard \"upper-half\" serial driver"
default MCU_SERIAL
---help---
Enable the standard, upper-half serial driver used by most MCU serial peripherals.
config SERIAL_NPOLLWAITERS
int "Number of poll threads"
default 4
---help---
Maximum number of threads than can be waiting for POLL events.
Default: 4
config SERIAL_IFLOWCONTROL
bool
default n
config SERIAL_RS485CONTROL
bool
default n
---help---
Use RTS pin to control RS485 direction (Asserted while transmitting).
config SERIAL_OFLOWCONTROL
bool
default n
config SERIAL_TXDMA
bool
default n
config SERIAL_RXDMA
bool
default n
config SERIAL_IFLOWCONTROL_WATERMARKS
bool "RX flow control watermarks"
default n
depends on SERIAL_IFLOWCONTROL
---help---
Call the "lower half" rxflowcontrol method whenever the number of
characters in the serial RX buffer falls above an upper water mark
level or below a lower watermark level. The default behavior is to
call the rxflowcontrol method only when the RX buffer is empty or
full.
if SERIAL_IFLOWCONTROL_WATERMARKS
config SERIAL_IFLOWCONTROL_LOWER_WATERMARK
int "RX lower Watermark (percent)"
default 10
range 1 99
---help---
Call the rxflowcontrol method then there are this amount (or or less)
data buffered in the serial drivers RX buffer. This is expressed
as a percentage of the total size of the RX buffer which may vary
from instance-to-instance.
config SERIAL_IFLOWCONTROL_UPPER_WATERMARK
int "RX upper Watermark (percent)"
default 90
range 1 99
---help---
Call the rxflowcontrol method then there are this amount (or more)
data buffered in the serial drivers RX buffer. This is expressed
as a percentage of the total size of the RX buffer which may vary
from instance-to-instance.
endif # SERIAL_IFLOWCONTROL_WATERMARKS
config SERIAL_TIOCSERGSTRUCT
bool "Support TIOCSERGSTRUCT"
default n
depends on DEBUG_FEATURES && (MCU_SERIAL || 16550_UART)
---help---
As a debug option, many serial bottom half drivers support the TIOCSERGSTRUCT
that allows you to get the internal driver data structure. By default, this
IOCTL is not supported in order to reduce footprint. But if (1) the driver
supports the TIOCSERGSTRUCT ioctl, and (2) this option is selected, then
support for the TIOCSERGSTRUCT will be enabled.
config SERIAL_TERMIOS
bool "Serial TERMIOS support"
depends on ARCH_HAVE_SERIAL_TERMIOS
default n
---help---
If this is not defined, then the terminal hardware settings
(baud, parity, flow control) are not configurable at runtime.
Note: other software settings (echo, \r\n<->\n, break, tcflush)
are always supported.
config TTY_LAUNCH
bool "Enable feature TTY launch program"
default n
---help---
If select this, then user can launch a program with a special input.
if TTY_LAUNCH
config TTY_LAUNCH_CHAR
hex "TTY launch program characters"
default 0x12
---help---
Use Ctrl-R 0x12 inputs to determine whether launch a program
config TTY_LAUNCH_ARGS
string "TTY launch argument list"
default INIT_ARGS
---help---
The argument list for user applications. e.g.:
"\"arg1\",\"arg2\",\"arg3\""
config TTY_LAUNCH_PRIORITY
int "TTY launch program priority"
default INIT_PRIORITY
config TTY_LAUNCH_STACKSIZE
int "TTY launch program stack size"
default INIT_STACKSIZE
choice
prompt "TTY launch method"
default TTY_LAUNCH_ENTRY
config TTY_LAUNCH_ENTRY
bool "TTY launch program"
config TTY_LAUNCH_FILE
bool "TTY launch file"
depends on !BINFMT_DISABLE
endchoice
config TTY_LAUNCH_ENTRYPOINT
string "TTY launch program entry"
depends on TTY_LAUNCH_ENTRY
default INIT_ENTRYPOINT
config TTY_LAUNCH_ENTRYNAME
string "TTY launch program name"
depends on TTY_LAUNCH_ENTRY
default TTY_LAUNCH_ENTRYPOINT
config TTY_LAUNCH_FILEPATH
string "TTY launch file path"
depends on TTY_LAUNCH_FILE
default INIT_FILEPATH
---help---
The name of the entry point for user applications. For the example
applications this is of the form 'app_main' where 'app' is the application
name. If not defined, INIT_ENTRYPOINT defaults to "main".
endif # TTY_LAUNCH
config TTY_FORCE_PANIC
bool "Enable TTY force crash"
default n
depends on DEBUG_FEATURES
---help---
This is for debugging system busyloop or deadlock, when the shell can't run,
then use this force crash the system to see the dumplog.
config TTY_FORCE_PANIC_CHAR
hex "TTY force crash characters"
default 0x1F
depends on TTY_FORCE_PANIC
---help---
Use Ctrl-? 0x1F inputs to determine whether panic system
config TTY_SIGINT
bool "Support SIGINT"
default n
---help---
Whether support Ctrl-c/x event. Enabled automatically for console
devices. May be enabled for other serial devices using the ISIG bit
in the Termios c_lflag.
REVISIT: This implementation is compliant but incomplete. The
c_lflag ISIG bit normally enables/disables INTR, QUIT, SUSP, and
DSUSP character processing. The relationship between these names,
standard signals, and typical key presses are as follows:
INTR SIGINT Ctrl-C ETX(0x03) Interrupt
KILL SIGKILL Ctrl-U NAK(0x15) Kill
QUIT SIGQUIT Ctrl-\ FS (0x1c) Quit
SUSP SIGTSTP Ctrl-Z SUB(0x1a) Suspend
DSUSP SIGTSTP Ctrl-Y EM (0x19) Delayed suspend
Additional requirements:
- SIGKILL cannot be caught or ignored. Compared to SIGTERM which
is like SIGKILL but can be caught or ignored.
- SIGQUIT is like SIGINT but causes generation of a core dump
- SIGSTOP cannot be caught or ignored. SIGTSTP is like SIGSTOP but
can be caught or ignored.
- The delayed suspend (DSUSD) is like suspend (SUPD), except that
the suspension is delayed until the next read operation
Ctrl-D (EOT 0x04) normally should not generate a signal but, instead,
should cause an immediate End-of-File result.
config TTY_SIGINT_CHAR
hex "Serial parse SIGINT characters"
default 0x03 if SERIAL_CONSOLE
default 0x04 if !SERIAL_CONSOLE
depends on TTY_SIGINT
---help---
Use ASCII 0x03 (Ctrl-c) or 0x04 (ctrl-d) inputs to determine whether
to send a SIGINT event. Other characters may also be selected.
REVISIT: Traditionally Ctrl-C would generate SIGINT. Ctrl-D is the
End-of-File character that should close the stream.
config TTY_SIGTSTP
bool "Support SIGTSTP"
default n
---help---
Whether support Ctrl-z event. Enabled automatically for console
devices. May be enabled for other serial devices using the ISIG bit
in the Termios c_lflag.
REVISIT: This implementation is compliant but incomplete. The
c_lflag ISIG bit normally enables/disables INTR, QUIT, SUSP, and
DSUSP character processing. The relationship between these names,
standard signals, and typical key presses are as follows:
INTR SIGINT Ctrl-C ETX(0x03) Interrupt
KILL SIGKILL Ctrl-U NAK(0x15) Kill
QUIT SIGQUIT Ctrl-\ FS (0x1c) Quit
SUSP SIGTSTP Ctrl-Z SUB(0x1a) Suspend
DSUSP SIGTSTP Ctrl-Y EM (0x19) Delayed suspend
Additional requirements:
- SIGKILL cannot be caught or ignored. Compared to SIGTERM which
is like SIGKILL but can be caught or ignored.
- SIGQUIT is like SIGINT but causes generation of a core dump
- SIGSTOP cannot be caught or ignored. SIGTSTP is like SIGSTOP but
can be caught or ignored.
- The delayed suspend (DSUSD) is like suspend (SUPD), except that
the suspension is delayed until the next read operation
config TTY_SIGTSTP_CHAR
hex "Serial parse SIGTSTP characters"
default 0x1a
depends on TTY_SIGTSTP
---help---
Use ASCII 0x1a (Ctrl-z) input to determine whether to send a SIGTSTP
event. Other characters may also be selected.
#
# Serial console selection
#
choice
prompt "Serial console"
default NO_SERIAL_CONSOLE if !OTHER_UART_SERIALDRIVER
default OTHER_SERIAL_CONSOLE if OTHER_UART_SERIALDRIVER
depends on MCU_SERIAL
#depends on DEV_CONSOLE - We may have serial console with no file system at all
config UART_SERIAL_CONSOLE
bool "UART"
depends on UART_SERIALDRIVER
select SERIAL_CONSOLE
config UART0_SERIAL_CONSOLE
bool "UART0"
depends on UART0_SERIALDRIVER
select SERIAL_CONSOLE
config USART0_SERIAL_CONSOLE
bool "USART0"
depends on USART0_SERIALDRIVER
select SERIAL_CONSOLE
config UART1_SERIAL_CONSOLE
bool "UART1"
depends on UART1_SERIALDRIVER
select SERIAL_CONSOLE
config USART1_SERIAL_CONSOLE
bool "USART1"
depends on USART1_SERIALDRIVER
select SERIAL_CONSOLE
config UART2_SERIAL_CONSOLE
bool "UART2"
depends on UART2_SERIALDRIVER
select SERIAL_CONSOLE
config USART2_SERIAL_CONSOLE
bool "USART2"
depends on USART2_SERIALDRIVER
select SERIAL_CONSOLE
config UART3_SERIAL_CONSOLE
bool "UART3"
depends on UART3_SERIALDRIVER
select SERIAL_CONSOLE
config USART3_SERIAL_CONSOLE
bool "USART3"
depends on USART3_SERIALDRIVER
select SERIAL_CONSOLE
config UART4_SERIAL_CONSOLE
bool "UART4"
depends on UART4_SERIALDRIVER
select SERIAL_CONSOLE
config USART4_SERIAL_CONSOLE
bool "USART4"
depends on USART4_SERIALDRIVER
select SERIAL_CONSOLE
config UART5_SERIAL_CONSOLE
bool "UART5"
depends on UART5_SERIALDRIVER
select SERIAL_CONSOLE
config USART5_SERIAL_CONSOLE
bool "USART5"
depends on USART5_SERIALDRIVER
select SERIAL_CONSOLE
config UART6_SERIAL_CONSOLE
bool "UART6"
depends on UART6_SERIALDRIVER
select SERIAL_CONSOLE
config USART6_SERIAL_CONSOLE
bool "USART6"
depends on USART6_SERIALDRIVER
select SERIAL_CONSOLE
config UART7_SERIAL_CONSOLE
bool "UART7"
depends on UART7_SERIALDRIVER
select SERIAL_CONSOLE
config USART7_SERIAL_CONSOLE
bool "USART7"
depends on USART7_SERIALDRIVER
select SERIAL_CONSOLE
config UART8_SERIAL_CONSOLE
bool "UART8"
depends on UART8_SERIALDRIVER
select SERIAL_CONSOLE
config USART8_SERIAL_CONSOLE
bool "USART8"
depends on USART8_SERIALDRIVER
select SERIAL_CONSOLE
config USART9_SERIAL_CONSOLE
bool "USART8"
depends on USART9_SERIALDRIVER
select SERIAL_CONSOLE
config LPUART0_SERIAL_CONSOLE
bool "LPUART0"
depends on LPUART0_SERIALDRIVER
select SERIAL_CONSOLE
config LPUART1_SERIAL_CONSOLE
bool "LPUART1"
depends on LPUART1_SERIALDRIVER
select SERIAL_CONSOLE
config LPUART2_SERIAL_CONSOLE
bool "LPUART2"
depends on LPUART2_SERIALDRIVER
select SERIAL_CONSOLE
config LPUART3_SERIAL_CONSOLE
bool "LPUART3"
depends on LPUART3_SERIALDRIVER
select SERIAL_CONSOLE
config LPUART4_SERIAL_CONSOLE
bool "LPUART4"
depends on LPUART4_SERIALDRIVER
select SERIAL_CONSOLE
config LPUART5_SERIAL_CONSOLE
bool "LPUART5"
depends on LPUART5_SERIALDRIVER
select SERIAL_CONSOLE
config LPUART6_SERIAL_CONSOLE
bool "LPUART6"
depends on LPUART6_SERIALDRIVER
select SERIAL_CONSOLE
config LPUART7_SERIAL_CONSOLE
bool "LPUART7"
depends on LPUART7_SERIALDRIVER
select SERIAL_CONSOLE
config LPUART8_SERIAL_CONSOLE
bool "LPUART8"
depends on LPUART8_SERIALDRIVER
select SERIAL_CONSOLE
config LPUART9_SERIAL_CONSOLE
bool "LPUART9"
depends on LPUART9_SERIALDRIVER
select SERIAL_CONSOLE
config LPUART10_SERIAL_CONSOLE
bool "LPUART10"
depends on LPUART10_SERIALDRIVER
select SERIAL_CONSOLE
config LPUART11_SERIAL_CONSOLE
bool "LPUART11"
depends on LPUART11_SERIALDRIVER
select SERIAL_CONSOLE
config LPUART12_SERIAL_CONSOLE
bool "LPUART12"
depends on LPUART12_SERIALDRIVER
select SERIAL_CONSOLE
config LPUART13_SERIAL_CONSOLE
bool "LPUART13"
depends on LPUART13_SERIALDRIVER
select SERIAL_CONSOLE
config LPUART14_SERIAL_CONSOLE
bool "LPUART14"
depends on LPUART14_SERIALDRIVER
select SERIAL_CONSOLE
config LPUART15_SERIAL_CONSOLE
bool "LPUART15"
depends on LPUART15_SERIALDRIVER
select SERIAL_CONSOLE
config SCI0_SERIAL_CONSOLE
bool "SCI0"
depends on SCI0_SERIALDRIVER
select SERIAL_CONSOLE
config SCI1_SERIAL_CONSOLE
bool "SCI1"
depends on SCI1_SERIALDRIVER
select SERIAL_CONSOLE
config SCI2_SERIAL_CONSOLE
bool "SCI2"
depends on SCI2_SERIALDRIVER
select SERIAL_CONSOLE
config SCI3_SERIAL_CONSOLE
bool "SCI3"
depends on SCI3_SERIALDRIVER
select SERIAL_CONSOLE
config SCI4_SERIAL_CONSOLE
bool "SCI4"
depends on SCI4_SERIALDRIVER
select SERIAL_CONSOLE
config SCI5_SERIAL_CONSOLE
bool "SCI5"
depends on SCI5_SERIALDRIVER
select SERIAL_CONSOLE
config SCI6_SERIAL_CONSOLE
bool "SCI6"
depends on SCI6_SERIALDRIVER
select SERIAL_CONSOLE
config SCI7_SERIAL_CONSOLE
bool "SCI7"
depends on SCI7_SERIALDRIVER
select SERIAL_CONSOLE
config SCI8_SERIAL_CONSOLE
bool "SCI8"
depends on SCI8_SERIALDRIVER
select SERIAL_CONSOLE
config SCI9_SERIAL_CONSOLE
bool "SCI9"
depends on SCI9_SERIALDRIVER
select SERIAL_CONSOLE
config SCI10_SERIAL_CONSOLE
bool "SCI10"
depends on SCI10_SERIALDRIVER
select SERIAL_CONSOLE
config SCI11_SERIAL_CONSOLE
bool "SCI11"
depends on SCI11_SERIALDRIVER
select SERIAL_CONSOLE
config SCI12_SERIAL_CONSOLE
bool "SCI12"
depends on SCI12_SERIALDRIVER
select SERIAL_CONSOLE
config OTHER_SERIAL_CONSOLE
bool "Other serial console"
select SERIAL_CONSOLE
config NO_SERIAL_CONSOLE
bool "No serial console"
endchoice
#
# U[S]ARTn_XYZ settings for MCU serial drivers
#
menu "UART Configuration"
depends on UART_SERIALDRIVER
config UART_RXBUFSIZE
int "Receive buffer size"
default 256
---help---
Characters are buffered as they are received. This specifies
the size of the receive buffer.
config UART_TXBUFSIZE
int "Transmit buffer size"
default 256
---help---
Characters are buffered before being sent. This specifies
the size of the transmit buffer.
config UART_BAUD
int "BAUD rate"
default 115200
---help---
The configured BAUD of the UART.
config UART_BITS
int "Character size"
default 8
---help---
The number of bits. Must be either 7 or 8.
config UART_PARITY
int "Parity setting"
default 0
range 0 2
---help---
0=no parity, 1=odd parity, 2=even parity
config UART_2STOP
int "use 2 stop bits"
default 0
---help---
1=Two stop bits
config UART_IFLOWCONTROL
bool "UART RTS flow control"
default n
select SERIAL_IFLOWCONTROL
---help---
Enable UART RTS flow control
config UART_OFLOWCONTROL
bool "UART CTS flow control"
default n
select SERIAL_OFLOWCONTROL
---help---
Enable UART CTS flow control
config UART_TXDMA
bool "UART Tx DMA support"
default n
select SERIAL_TXDMA
---help---
Enable Tx DMA transfers on UART
config UART_RXDMA
bool "UART Rx DMA support"
default n
select SERIAL_RXDMA
---help---
Enable Rx DMA transfers on UART
endmenu
source "drivers/serial/Kconfig-uart"
source "drivers/serial/Kconfig-lpuart"
source "drivers/serial/Kconfig-usart"
source "drivers/serial/Kconfig-sci"
config RAM_UART
bool "RAM uart driver"
select SERIAL_RXDMA
select SERIAL_TXDMA
default n
---help---
It uses the memory block in the kernel as a communication medium,
which can communicate between different processes or different CPUs
if RAM_UART
config RAM_UART_POLLING_INTERVAL
int "RAM uart buffer check interval"
default USEC_PER_TICK
---help---
Interval in milliseconds to check for new data on uart ram buffer
config RAM_UART_BUFSIZE
int "RAM_UART buffer size"
default 1024
---help---
The size of the RAM_UART buffer in bytes
config RAM_UART0
bool "RAM uart driver 0"
default n
---help---
RAM_UART device 0
config RAM_UART0_SLAVE
bool "RAM_UART0 is slave"
depends on RAM_UART0
default n
---help---
The RAM uart0 is slave
config RAM_UART1
bool "RAM uart driver 1"
default n
---help---
RAM uart device 1
config RAM_UART1_SLAVE
bool "RAM uart1 is slave"
depends on RAM_UART1
default n
---help---
The RAM uart1 is slave
config RAM_UART2
bool "RAM uart driver 2"
default n
---help---
RAM uart device 2
config RAM_UART2_SLAVE
bool "RAM uart2 is slave"
depends on RAM_UART2
default n
---help---
The RAM uart2 is slave
config RAM_UART_BUFFER_SECTION
string "RAM uart buffer section name"
depends on RAM_UART0 || RAM_UART1 || RAM_UART2
---help---
The name of the section in the kernel memory block
endif # RAM_UART
menuconfig PSEUDOTERM
bool "Pseudo-Terminal (PTY) support"
default n
select PIPES
select ARCH_HAVE_SERIAL_TERMIOS
---help---
Enable support support for master and slave pseudo-terminal devices.
if PSEUDOTERM
config PSEUDOTERM_SUSV1
bool "SUSv1 style"
default y
---help---
PTYs as specified in the Single Unix Specification (SUSv1).
Master: /dev/ptmx (multiplexor)
Slave: /dev/pts/N
Where N is the minor number
config PSEUDOTERM_RXBUFSIZE
int "Pseudo-Terminal Rx buffer size"
default 256
---help---
Master-to-slave pipe buffer size. Default: 256
config PSEUDOTERM_TXBUFSIZE
int "Pseudo-Terminal Tx buffer size"
default 256
---help---
Slave-to-master pipe buffer size. Default: 256
endif # PSEUDOTERM
menuconfig UART_BTH4
bool "BT H4 UART Pseudo Device"
default n
depends on DRIVERS_BLUETOOTH
---help---
Enable support for Bluetooth H4 UART Pseudo Device(eg. /dev/ttyHCI).
This instantiates a serial-like interface over an existing bluetooth
controller via HCI interface. Useful for external Bluetooth
stacks working this way instead of the socket based interface.
if UART_BTH4
config UART_BTH4_TXBUFSIZE
int "BT H4 UART TX Buffer Size"
default 2048
---help---
H4 UART TX Buffer Size. Default: 2048
config UART_BTH4_RXBUFSIZE
int "BT H4 UART RX Buffer Size"
default 8096
---help---
H4 UART RX Buffer Size. Default: 8096
config UART_BTH4_NPOLLWAITERS
int "Number Of Poll Threads"
default 2
---help---
Maximum number of threads than can be waiting for POLL events.
Default: 2
endif # UART_BTH4
menuconfig UART_BTH5
bool "BT H5 UART Pseudo Device"
default n
depends on DRIVERS_BLUETOOTH
---help---
Enable support for Bluetooth H5 UART Pseudo Device(eg. /dev/ttyHCI).
This instantiates a serial-like interface over an existing bluetooth
controller via HCI interface. Useful for external Bluetooth
stacks working this way instead of the socket based interface.
if UART_BTH5
config UART_BTH5_TXBUFSIZE
int "BT H5 UART TX Buffer Size"
default 2048
---help---
H5 UART TX Buffer Size. Default: 2048
config UART_BTH5_TXWIN
int "BT H5 Uart TX Window Size"
default 4
---help---
H5 UART TX Window Size. Default: 4
config UART_BTH5_RXBUFSIZE
int "BT H5 Uart RX Buffer Size"
default 8096
---help---
H5 UART RX Buffer Size. Default: 8096
config UART_BTH5_NPOLLWAITERS
int "Number Of Poll Threads"
default 2
---help---
Maximum number of threads than can be waiting for POLL events.
Default: 2
endif # UART_BTH5
endif # SERIAL