| # SPDX-License-Identifier: Apache-2.0 |
| |
| menuconfig UART_NS16550 |
| bool "NS16550 serial driver" |
| default y |
| depends on DT_HAS_NS16550_ENABLED |
| select SERIAL_HAS_DRIVER |
| select SERIAL_SUPPORT_INTERRUPT |
| help |
| This option enables the NS16550 serial driver. |
| This driver can be used for the serial hardware |
| available on x86 boards. |
| |
| if UART_NS16550 |
| |
| config UART_NS16550_LINE_CTRL |
| bool "Serial Line Control for Apps" |
| depends on UART_LINE_CTRL |
| help |
| This enables the API for apps to control the serial line, |
| such as CTS and RTS. |
| |
| Says n if not sure. |
| |
| config UART_NS16550_DRV_CMD |
| bool "Driver Commands" |
| depends on UART_DRV_CMD |
| help |
| This enables the API for apps to send commands to driver. |
| |
| Says n if not sure. |
| |
| config UART_NS16550_INTEL_LPSS_DMA |
| bool "INTEL LPSS support for NS16550" |
| select SERIAL_SUPPORT_ASYNC |
| select DMA if UART_ASYNC_API |
| help |
| This enables the usage of INTEL LPSS internal DMA for Async operations. |
| |
| choice UART_NS16550_VARIANT |
| prompt "UART variant" |
| default UART_NS16550_VARIANT_NS16550 |
| help |
| Select UART device variant |
| |
| config UART_NS16550_VARIANT_NS16550 |
| bool "UART 16550 (16-bytes FIFO)" |
| help |
| This enables support for 16-bytes FIFO if UART controller is 16550. |
| |
| config UART_NS16550_VARIANT_NS16750 |
| bool "UART 16750 (64-bytes FIFO and auto flow control)" |
| help |
| This enables support for 64-bytes FIFO and automatic hardware |
| flow control if UART controller is 16750. |
| |
| config UART_NS16550_VARIANT_NS16950 |
| bool "UART 16950 (128-bytes FIFO and auto flow control)" |
| help |
| This enables support for 128-bytes FIFO and automatic hardware flow control. |
| endchoice |
| |
| config UART_NS16550_ACCESS_WORD_ONLY |
| bool "NS16550 only allows word access" |
| help |
| In some case, e.g. ARC HS Development kit, the peripheral space of ns |
| 16550 (DesignWare UART) only allows word access, byte access will raise |
| exception. |
| |
| config UART_NS16550_TI_K3 |
| bool "Add support for NS16550 variant specific to TI K3 SoCs" |
| select PINCTRL |
| help |
| Enabling this configuration allows the users to use the UART port in |
| Texas Instruments K3 SoCs by enabling a vendor specific extended register |
| set. |
| |
| config UART_NS16550_DW8250_DW_APB |
| bool "Synopsys DesignWare 8250" |
| help |
| This enables support for Synopsys DesignWare 8250 UART controller. |
| |
| config UART_NS16550_ITE_HIGH_SPEED_BAUDRATE |
| bool "IT8XXX2 specific baud rate configuration" |
| help |
| Enable IT8XXX2 specific baud rate configuration. |
| This applies to high-speed baud rate configuration. |
| |
| menu "NS16550 Workarounds" |
| |
| config UART_NS16550_WA_ISR_REENABLE_INTERRUPT |
| bool "Re-enable interrupts by toggling IER at end of ISR" |
| depends on UART_INTERRUPT_DRIVEN |
| help |
| In some configurations (e.g. edge interrupt triggers), |
| an interruptible event occurs during ISR and the host interrupt |
| controller does not see the new event due to IIR is constantly |
| asserting interrupts. For example, the callback handles RX and |
| then TX. If another character comes in before end of TX processing |
| (TX interrupt still asserts while raising RX interrupt), the host |
| interrupt controller may not see this new event. So if needed, |
| the IER is being toggled to re-assert interrupts at the end of ISR |
| to nudge the host interrupt controller to fire the ISR again. |
| |
| endmenu |
| |
| endif # UART_NS16550 |