menuconfig UART_NS16550
	bool "NS16550 serial driver"
	default n
	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.

config UART_NS16550_PCI
	bool "Enable PCI Support"
	default n
	depends on PCI && UART_NS16550
	help
	  This enables NS16550 to probe for PCI-based serial devices.

	  This option enables the driver to auto-detect the device
	  configuration required to access those ports.

config UART_NS16550_DLF
	bool "Enable Divisor Latch Fraction (DLF) support"
	default n
	depends on UART_NS16550
	help
	  This enables support for divisor latch fraction (DLF).
	  It is used to limit frequency error.

	  Says n if you are not sure if hardware supports this.

config UART_NS16550_LINE_CTRL
	bool "Enable Serial Line Control for Apps"
	default n
	depends on UART_LINE_CTRL && UART_NS16550
	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 "Enable Driver Commands"
	default n
	depends on UART_DRV_CMD && UART_NS16550
	help
	  This enables the API for apps to send commands to driver.

	  Says n if not sure.

config UART_NS16750
	bool "Enable 64-bytes FIFO for UART 16750"
	default n
	depends on UART_NS16550
	help
	  This enables support for 64-bytes FIFO if UART controller is 16750.

# ---------- Port 0 ----------

menuconfig UART_NS16550_PORT_0
	bool "Enable NS16550 Port 0"
	default n
	depends on UART_NS16550
	help
	  This tells the driver to configure the UART port at boot, depending on
	  the additional configure options below.
if !HAS_DTS
config UART_NS16550_PORT_0_NAME
	string "Port 0 Device Name"
	default "UART_0"
	depends on UART_NS16550_PORT_0
	help
	  This is the device name for UART, and is included in the device
	  struct.
endif

config UART_NS16550_PORT_0_IRQ_PRI
	int "Port 0 Interrupt Priority"
	default 0
	depends on UART_NS16550_PORT_0
	help
	  The interrupt priority for UART port.

if !HAS_DTS
config UART_NS16550_PORT_0_BAUD_RATE
	int "Port 0 Baud Rate"
	default 0
	depends on UART_NS16550_PORT_0
	help
	  The baud rate for UART port to be set to at boot.

	  Leave at 0 to skip initialization.
endif

config UART_NS16550_PORT_0_OPTIONS
	int "Port 0 Options"
	default 0
	depends on UART_NS16550_PORT_0
	help
	  Options used for port initialization.

config UART_NS16550_PORT_0_DLF
	hex "Port 0 DLF value"
	default 0x0
	depends on UART_NS16550_PORT_0 && UART_NS16550_DLF
	help
	  Value for DLF register.

config UART_NS16550_PORT_0_PCI
	bool "Port 0 is PCI-based"
	default n
	depends on UART_NS16550_PCI && UART_NS16550_PORT_0
	help
	  Obtain port information from PCI.

# ---------- Port 1 ----------

menuconfig UART_NS16550_PORT_1
	bool "Enable NS16550 Port 1"
	default n
	depends on UART_NS16550
	help
	  This tells the driver to configure the UART port at boot, depending on
	  the additional configure options below.

if !HAS_DTS
config UART_NS16550_PORT_1_NAME
	string "Port 1 Device Name"
	default "UART_1"
	depends on UART_NS16550_PORT_1
	help
	  This is the device name for UART, and is included in the device
	  struct.
endif

config UART_NS16550_PORT_1_IRQ_PRI
	int "Port 1 Interrupt Priority"
	default 0
	depends on UART_NS16550_PORT_1
	help
	  The interrupt priority for UART port.

if !HAS_DTS
config UART_NS16550_PORT_1_BAUD_RATE
	int "Port 1 Baud Rate"
	default 0
	depends on UART_NS16550_PORT_1
	help
	  The baud rate for UART port to be set to at boot.

	  Leave at 0 to skip initialization.
endif

config UART_NS16550_PORT_1_OPTIONS
	int "Port 1 Options"
	default 0
	depends on UART_NS16550_PORT_1
	help
	  Options used for port initialization.

config UART_NS16550_PORT_1_DLF
	hex "Port 1 DLF value"
	default 0x0
	depends on UART_NS16550_PORT_1 && UART_NS16550_DLF
	help
	  Value for DLF register.
