# Kconfig - iMX7 M4 UART
#
# Copyright (c) 2018, NXP
#
# SPDX-License-Identifier: Apache-2.0
#


menuconfig UART_IMX
	bool "NXP i.MX7 family processor UART driver"
	select SERIAL_HAS_DRIVER
	select SERIAL_SUPPORT_INTERRUPT
	depends on HAS_IMX_HAL
	help
	  This option enables the UART driver for NXP i.MX7
	  family processors.

config UART_IMX_UART_1
	bool "Enable NXP i.MX7 UART1 Port"
	depends on UART_IMX
	help
	  Enable support for UART1 port in the driver. Say y here
	  if you want to use UART1 device.

config UART_IMX_UART_2
	bool "Enable NXP i.MX7 UART2 Port"
	depends on UART_IMX
	help
	  Enable support for UART2 port in the driver. Say y here
	  if you want to use UART2 device.

config UART_IMX_UART_3
	bool "Enable NXP i.MX7 UART3 Port"
	depends on UART_IMX
	help
	  Enable support for UART3 port in the driver. Say y here
	  if you want to use UART3 device.

config UART_IMX_UART_4
	bool "Enable NXP i.MX7 UART4 Port"
	depends on UART_IMX
	help
	  Enable support for UART4 port in the driver. Say y here
	  if you want to use UART4 device.

config UART_IMX_UART_5
	bool "Enable NXP i.MX7 UART5 Port"
	depends on UART_IMX
	help
	  Enable support for UART5 port in the driver. Say y here
	  if you want to use UART5 device.

config UART_IMX_UART_6
	bool "Enable NXP i.MX7 UART6 Port"
	depends on UART_IMX
	help
	  Enable support for UART6 port in the driver. Say y here
	  if you want to use UART6 device.

config UART_IMX_UART_7
	bool "Enable NXP i.MX7 UART7 Port"
	depends on UART_IMX
	help
	  Enable support for UART7 port in the driver. Say y here
	  if you want to use UART7 device.
