/*
 * Copyright (c) 2018 Synopsys, Inc. All rights reserved.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <zephyr/arch/cpu.h>
#include <zephyr/devicetree.h>
#include <zephyr/init.h>


#ifdef CONFIG_UART_NS16550

static int uart_ns16550_init(void)
{

	/* On ARC EM Starter kit board,
	 * send the UART the command to clear the interrupt
	 */
#if DT_NODE_HAS_STATUS(DT_INST(0, ns16550), okay)
	sys_write32(0, DT_REG_ADDR(DT_INST(0, ns16550))+0x4);
	sys_write32(0, DT_REG_ADDR(DT_INST(0, ns16550))+0x10);
#endif /* DT_NODE_HAS_STATUS(DT_INST(0, ns16550), okay) */
#if DT_NODE_HAS_STATUS(DT_INST(1, ns16550), okay)
	sys_write32(0, DT_REG_ADDR(DT_INST(1, ns16550))+0x4);
	sys_write32(0, DT_REG_ADDR(DT_INST(1, ns16550))+0x10);
#endif /* DT_NODE_HAS_STATUS(DT_INST(1, ns16550), okay) */

	return 0;
}

SYS_INIT(uart_ns16550_init, PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT);

#endif /* CONFIG_UART_NS16550 */
