/*
 * Copyright (c) 2019 Nordic Semiconductor ASA
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/**
 * @file
 * @brief UART cases header file
 *
 * Header file for UART cases
 */

#ifndef __TEST_UART_H__
#define __TEST_UART_H__

#include <zephyr/drivers/uart.h>
#include <zephyr/ztest.h>

/* RX and TX pins have to be connected together*/

/* RTT is first so that when testing RTT we ensure it
 * get selected over any other SoC specific uart
 */
#if defined(CONFIG_UART_RTT)
#define UART_DEVICE_DEV DT_NODELABEL(rtt0)
#elif defined(CONFIG_BOARD_NRF52840DK_NRF52840)
#define UART_DEVICE_DEV DT_NODELABEL(uart0)
#elif defined(CONFIG_BOARD_NRF9160DK_NRF9160)
#define UART_DEVICE_DEV DT_NODELABEL(uart1)
#elif defined(CONFIG_BOARD_ATSAMD21_XPRO)
#define UART_DEVICE_DEV DT_NODELABEL(sercom1)
#elif defined(CONFIG_BOARD_ATSAMR21_XPRO)
#define UART_DEVICE_DEV DT_NODELABEL(sercom3)
#elif defined(CONFIG_BOARD_ATSAML21_XPRO)
#define UART_DEVICE_NAME DT_NODELABEL(sercom1)
#elif defined(CONFIG_BOARD_ATSAMR34_XPRO)
#define UART_DEVICE_NAME DT_NODELABEL(sercom2)
#elif defined(CONFIG_BOARD_ATSAME54_XPRO)
#define UART_DEVICE_DEV DT_NODELABEL(sercom1)
#elif defined(CONFIG_BOARD_NUCLEO_F103RB) || \
	defined(CONFIG_BOARD_NUCLEO_G071RB) || \
	defined(CONFIG_BOARD_NUCLEO_G474RE) || \
	defined(CONFIG_BOARD_NUCLEO_WL55JC)
#define UART_DEVICE_DEV DT_NODELABEL(usart1)
#elif defined(CONFIG_BOARD_NUCLEO_H723ZG) || \
	defined(CONFIG_BOARD_NUCLEO_H743ZI) || \
	defined(CONFIG_BOARD_STM32F3_DISCO)
#define UART_DEVICE_DEV DT_NODELABEL(usart2)
#elif defined(CONFIG_BOARD_NUCLEO_L4R5ZI) || \
	defined(CONFIG_BOARD_NUCLEO_L152RE) || \
	defined(CONFIG_BOARD_STM32L562E_DK) || \
	defined(CONFIG_BOARD_NUCLEO_L552ZE_Q)
#define UART_DEVICE_DEV DT_NODELABEL(usart3)
#elif defined(CONFIG_BOARD_DISCO_L475_IOT1)
#define UART_DEVICE_DEV DT_NODELABEL(uart4)
#elif defined(CONFIG_BOARD_NUCLEO_F429ZI) || \
	defined(CONFIG_BOARD_NUCLEO_F207ZG) || \
	defined(CONFIG_BOARD_NUCLEO_F767ZI) || \
	defined(CONFIG_BOARD_NUCLEO_F746ZG)
#define UART_DEVICE_DEV DT_NODELABEL(usart6)
#elif defined(CONFIG_BOARD_FRDM_K82F)
#define UART_DEVICE_DEV DT_NODELABEL(lpuart0)
#elif defined(CONFIG_BOARD_MIMXRT1020_EVK) || \
	defined(CONFIG_BOARD_MIMXRT1024_EVK) || \
	defined(CONFIG_BOARD_MIMXRT1160_EVK_CM4) || \
	defined(CONFIG_BOARD_MIMXRT1170_EVK_CM4) || \
	defined(CONFIG_BOARD_MIMXRT1160_EVK_CM7) || \
	defined(CONFIG_BOARD_MIMXRT1170_EVK_CM7) || \
	defined(CONFIG_BOARD_TWR_KE18F)
#define UART_DEVICE_DEV DT_NODELABEL(lpuart2)
#elif defined(CONFIG_BOARD_MIMXRT1050_EVK) || \
	defined(CONFIG_BOARD_MIMXRT1060_EVK) || \
	defined(CONFIG_BOARD_MIMXRT1060_EVKB) || \
	defined(CONFIG_BOARD_MIMXRT1064_EVK)
#define UART_DEVICE_DEV DT_NODELABEL(lpuart3)
#elif defined(CONFIG_BOARD_MIMXRT1010_EVK) || \
	defined(CONFIG_BOARD_MIMXRT1015_EVK)
#define UART_DEVICE_DEV DT_NODELABEL(lpuart4)
#else
#define UART_DEVICE_DEV DT_CHOSEN(zephyr_console)
#endif

#endif /* __TEST_UART_H__ */
