# Kconfig - STM32 UART configuration
#
# Copyright (c) 2016 Open-RnD Sp. z o.o.
#
# SPDX-License-Identifier: Apache-2.0
#

menuconfig UART_STM32
	bool "STM32 MCU serial driver"
	select SERIAL_HAS_DRIVER
	select SERIAL_SUPPORT_INTERRUPT
	depends on SOC_FAMILY_STM32
	help
	  This option enables the UART driver for STM32 family of
	  processors.
	  Say y if you wish to use serial port on STM32 MCU.

if UART_STM32

# --- port 1 ---

config UART_STM32_PORT_1
	bool "Enable STM32 USART1 Port"
	depends on UART_STM32
	help
	  Enable support for USART1 port in the driver.
	  Say y here if you want to use USART1 device.

# --- port 2 ---

config UART_STM32_PORT_2
	bool "Enable STM32 USART2 Port"
	depends on UART_STM32
	help
	  Enable support for USART2 port in the driver.
	  Say y here if you want to use USART2 device.

# --- port 3 ---

config UART_STM32_PORT_3
	bool "Enable STM32 USART3 Port"
	depends on UART_STM32
	help
	  Enable support for USART3 port in the driver.
	  Say y here if you want to use USART3 device.

# --- port 4 ---

config UART_STM32_PORT_4
	bool "Enable STM32 U(S)ART4 Port"
	depends on UART_STM32
	help
	  Enable support for U(S)ART4 port in the driver.
	  Say y here if you want to use U(S)ART4 device.

# --- port 5 ---

config UART_STM32_PORT_5
	bool "Enable STM32 U(S)ART5 Port"
	depends on UART_STM32
	help
	  Enable support for U(S)ART5 port in the driver.
	  Say y here if you want to use U(S)ART5 device.

# --- port 6 ---

config UART_STM32_PORT_6
	bool "Enable STM32 USART6 Port"
	depends on UART_STM32
	help
	  Enable support for USART6 port in the driver.
	  Say y here if you want to use USART6 device.

# --- port 7 ---

config UART_STM32_PORT_7
	bool "Enable STM32 U(S)ART7 Port"
	depends on UART_STM32
	help
	  Enable support for U(S)ART7 port in the driver.
	  Say y here if you want to use U(S)ART7 device.

# --- port 8 ---

config UART_STM32_PORT_8
	bool "Enable STM32 U(S)ART8 Port"
	depends on UART_STM32
	help
	  Enable support for U(S)ART8 port in the driver.
	  Say y here if you want to use U(S)ART8 device.

# --- port 9 ---

config UART_STM32_PORT_9
	bool "Enable STM32 UART9 Port"
	depends on UART_STM32
	help
	  Enable support for UART9 port in the driver.
	  Say y here if you want to use UART9 device.

# --- port 10 ---

config UART_STM32_PORT_10
	bool "Enable STM32 UART10 Port"
	depends on UART_STM32
	help
	  Enable support for UART10 port in the driver.
	  Say y here if you want to use UART10 device.

if SOC_SERIES_STM32L0X || SOC_SERIES_STM32L4X

# --- low power port 1 ---

config UART_STM32_LPUART_1
	bool "Enable STM32 LPUART1 Port"
	depends on UART_STM32
	help
	  Enable support for LPUART1 port in the driver.
	  Say y here if you want to use LPUART1 device.

endif # SOC_SERIES_STM32L0X || SOC_SERIES_STM32L4X

endif # UART_STM32
