# 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"
	default n
	select SERIAL_HAS_DRIVER
	select SERIAL_SUPPORT_INTERRUPT
	depends on SOC_FAMILY_STM32
	help
	  This option enables the UART driver for STM32F10x family of
	  processors. Say y if you wish to use serial port on STM32F10x
	  MCU.

if UART_STM32

# --- port 1 ---

config UART_STM32_PORT_1
	bool "Enable STM32 USART1 Port"
	default n
	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"
	default n
	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"
	default n
	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 UART4 Port"
	default n
	depends on UART_STM32
	help
	  Enable support for UART4 port in the driver. Say y here
	  if you want to use UART4 device.

# --- port 5 ---

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

# --- port 6 ---

config UART_STM32_PORT_6
	bool "Enable STM32 USART6 Port"
	default n
	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 UART7 Port"
	default n
	depends on UART_STM32
	help
	  Enable support for UART7 port in the driver. Say y here
	  if you want to use UART7 device.

# --- port 8 ---

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

# --- port 9 ---

config UART_STM32_PORT_9
	bool "Enable STM32 UART9 Port"
	default n
	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"
	default n
	depends on UART_STM32
	help
	  Enable support for UART10 port in the driver. Say y here
	  if you want to use UART10 device.

endif # UART_STM32
