xref: /optee_os/core/arch/arm/plat-nuvoton/main.c (revision ba2a6adb764f1310ad3c3091d89de84274f86b02)
1 // SPDX-License-Identifier: BSD-2-Clause
2 /*
3  * Copyright (c) 2016-2023, Linaro Limited
4  * Copyright (c) 2014-2023, STMicroelectronics International N.V.
5  * Copyright (C) 2022-2023 Nuvoton Ltd.
6  */
7 
8 #include <console.h>
9 #include <drivers/gic.h>
10 #include <drivers/ns16550.h>
11 #include <kernel/boot.h>
12 #include <kernel/linker.h>
13 #include <platform_config.h>
14 #include <trace.h>
15 
16 #define COLOR_NORMAL	"\x1B[0m"
17 #define COLOR_RED	"\x1B[31m"
18 #define COLOR_GREEN	"\x1B[32m"
19 #define COLOR_YELLOW	"\x1B[33m"
20 #define COLOR_BLUE	"\x1B[34m"
21 #define COLOR_MAGENTA	"\x1B[35m"
22 #define COLOR_CYAN	"\x1B[36m"
23 #define COLOR_WHITE	"\x1B[37m"
24 
25 static struct ns16550_data console_data __nex_bss;
26 
27 register_phys_mem_pgdir(MEM_AREA_IO_SEC, CONSOLE_UART_BASE, UART_REG_SIZE);
28 register_phys_mem_pgdir(MEM_AREA_IO_SEC, GICD_BASE, GIC_DIST_REG_SIZE);
29 register_phys_mem_pgdir(MEM_AREA_IO_SEC, GICC_BASE, GIC_DIST_REG_SIZE);
30 
31 register_ddr(DRAM0_BASE, DRAM0_SIZE);
32 
33 static void print_version(void)
34 {
35 	IMSG(COLOR_MAGENTA);
36 	IMSG(">================================================");
37 	IMSG("OP-TEE OS Version %s", core_v_str);
38 	IMSG(">================================================");
39 	IMSG(COLOR_NORMAL);
40 }
41 
42 void main_init_gic(void)
43 {
44 	if (IS_ENABLED(CFG_NPCM_DEBUG))
45 		print_version();
46 
47 	gic_init(GICC_BASE, GICD_BASE);
48 }
49 
50 void console_init(void)
51 {
52 	ns16550_init(&console_data, CONSOLE_UART_BASE, IO_WIDTH_U32, 2);
53 	register_serial_console(&console_data.chip);
54 }
55