Some code paths in drivers/serial/serial.c load head and tail values of receive and transmit circular buffers with interrupts enabled, making it possible that the interrupt handler changes the value. As noted in the code, this is safe as long as the load itself is atomic. That is not true for 8bit architectures which fetch the 16-bit values using two load instructions. If interrupt handler runs between those two instructions and changes the value, the read returns corrupted data. This patch introduces CONFIG_ARCH_LDST_16BIT_NOT_ATOMIC configuration option which is automatically selected for AVR architecture. Based on this option, head and tail values are reduced to 8-bit length so the read remains atomic. Patch was tested by building on rv-virt:nsh - disassembly of functions from serial.c showed no difference which is correct as Risc-V does not need to protect reads of these values. There should be no impact for architectures that do not set the new configuration option. It was also tested by by custom echo application running on AVR128DA28. Signed-off-by: Kerogit <kr.git@kerogit.eu>
961 lines
22 KiB
Text
961 lines
22 KiB
Text
#
|
|
# 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
|
|
|
|
config ARCH_HAVE_8BIT_SERIAL_BUFSIZE
|
|
bool
|
|
default n
|
|
---help---
|
|
This is set by ARCH_LDST_16BIT_NOT_ATOMIC if the architecture does
|
|
not support atomic 16-bit load/store instructions. Receive and transmit
|
|
buffer sizes are stored in uint8_t (instead of int16_t) variable
|
|
in such case.
|
|
|
|
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 LIB_GDBSTUB
|
|
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.
|
|
|
|
config SERIAL_GDBSTUB_AUTO_ATTACH
|
|
bool "GDBSTUB Serial Auto attach"
|
|
depends on SERIAL_GDBSTUB
|
|
default n
|
|
---help---
|
|
Attach the serial port to gdbstub by default.
|
|
Will cover the GDBSTUB_SERIAL_PATH, that port will only
|
|
be used for GDB stub.
|
|
|
|
config SERIAL_GDBSTUB_PANIC_TIMEOUT
|
|
int "GDBSTUB Serial panic timeout"
|
|
depends on SERIAL_GDBSTUB
|
|
default 10
|
|
---help---
|
|
Delay the panic timeout for gdbstub to connect.
|
|
0 will disable the timeout.
|
|
|
|
config UART_HOSTFS
|
|
bool "Use hostfs read/write on UART_HOSTFS_DEVPATH as uart console"
|
|
depends on FS_HOSTFS
|
|
default n
|
|
select SERIAL_RXDMA
|
|
select SERIAL_TXDMA
|
|
|
|
config UART_HOSTFS_DEVPATH
|
|
string "The host device node that will be used by"
|
|
depends on UART_HOSTFS
|
|
default "/dev/tty"
|
|
|
|
config UART_HOSTFS_RXBUFSIZE
|
|
int "Uart hostfs receive buffer size"
|
|
default 256
|
|
depends on UART_HOSTFS
|
|
|
|
config UART_HOSTFS_TXBUFSIZE
|
|
int "Uart hostfs transmit buffer size"
|
|
default 256
|
|
depends on UART_HOSTFS
|
|
|
|
config UART_HOSTFS_DELAY_USEC
|
|
int "Uart hostfs polling interval in microseconds"
|
|
default 1000
|
|
depends on UART_HOSTFS
|
|
|
|
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_TIOCGICOUNT
|
|
bool "Support TIOCGICOUNT (U[S]ART Error Report)"
|
|
default n
|
|
---help---
|
|
The ioctl TIOCGICOUNT is used to collect errors from serial ports
|
|
such as frame error, overrun, parity, etc.
|
|
|
|
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"
|
|
depends on SCHED_HPWORK
|
|
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_FORCE_PANIC_REPEAT_COUNT
|
|
int "TTY force crash repeat count"
|
|
default 1
|
|
depends on TTY_FORCE_PANIC
|
|
---help---
|
|
Repeat how many times the panic char 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
|