xref: /rk3399_ARM-atf/plat/marvell/armada/common/marvell_console.c (revision 5a91c439cbeb1f64b8b9830de91efad5113d3c89)
1a2847172SGrzegorz Jaszczyk /*
2831b0e98SJimmy Brisson  * Copyright (c) 2018-2020, ARM Limited and Contributors. All rights reserved.
3a2847172SGrzegorz Jaszczyk  *
4a2847172SGrzegorz Jaszczyk  * SPDX-License-Identifier: BSD-3-Clause
5a2847172SGrzegorz Jaszczyk  */
6a2847172SGrzegorz Jaszczyk #include <assert.h>
7a2847172SGrzegorz Jaszczyk 
8a2847172SGrzegorz Jaszczyk #include <platform_def.h>
9a2847172SGrzegorz Jaszczyk 
10a2847172SGrzegorz Jaszczyk #include <common/debug.h>
11a2847172SGrzegorz Jaszczyk #include <drivers/console.h>
12a2847172SGrzegorz Jaszczyk 
13a2847172SGrzegorz Jaszczyk #include <plat_marvell.h>
14a2847172SGrzegorz Jaszczyk 
15a2847172SGrzegorz Jaszczyk #ifdef PLAT_a3700
16a2847172SGrzegorz Jaszczyk #include <drivers/marvell/uart/a3700_console.h>
17*5a91c439SPali Rohár #define PLAT_MARVELL_UART_CLK_IN_HZ (get_ref_clk() * 1000000)
18a2847172SGrzegorz Jaszczyk #define console_marvell_register console_a3700_register
19a2847172SGrzegorz Jaszczyk #else
20a2847172SGrzegorz Jaszczyk #include <drivers/ti/uart/uart_16550.h>
21a2847172SGrzegorz Jaszczyk #define console_marvell_register console_16550_register
22a2847172SGrzegorz Jaszczyk #endif
23a2847172SGrzegorz Jaszczyk 
24a2847172SGrzegorz Jaszczyk static console_t marvell_boot_console;
25a2847172SGrzegorz Jaszczyk static console_t marvell_runtime_console;
26a2847172SGrzegorz Jaszczyk 
27a2847172SGrzegorz Jaszczyk /*******************************************************************************
28a2847172SGrzegorz Jaszczyk  * Functions that set up the console
29a2847172SGrzegorz Jaszczyk  ******************************************************************************/
30a2847172SGrzegorz Jaszczyk 
31a2847172SGrzegorz Jaszczyk /* Initialize the console to provide early debug support */
32a2847172SGrzegorz Jaszczyk void marvell_console_boot_init(void)
33a2847172SGrzegorz Jaszczyk {
34a2847172SGrzegorz Jaszczyk 	int rc =
3531336258SPali Rohár 	console_marvell_register(PLAT_MARVELL_UART_BASE,
3631336258SPali Rohár 				 PLAT_MARVELL_UART_CLK_IN_HZ,
37a2847172SGrzegorz Jaszczyk 				 MARVELL_CONSOLE_BAUDRATE,
38a2847172SGrzegorz Jaszczyk 				 &marvell_boot_console);
39a2847172SGrzegorz Jaszczyk 	if (rc == 0) {
40a2847172SGrzegorz Jaszczyk 		/*
41a2847172SGrzegorz Jaszczyk 		 * The crash console doesn't use the multi console API, it uses
42a2847172SGrzegorz Jaszczyk 		 * the core console functions directly. It is safe to call panic
43a2847172SGrzegorz Jaszczyk 		 * and let it print debug information.
44a2847172SGrzegorz Jaszczyk 		 */
45a2847172SGrzegorz Jaszczyk 		panic();
46a2847172SGrzegorz Jaszczyk 	}
47a2847172SGrzegorz Jaszczyk 
48a2847172SGrzegorz Jaszczyk 	console_set_scope(&marvell_boot_console, CONSOLE_FLAG_BOOT);
49a2847172SGrzegorz Jaszczyk }
50a2847172SGrzegorz Jaszczyk 
51a2847172SGrzegorz Jaszczyk void marvell_console_boot_end(void)
52a2847172SGrzegorz Jaszczyk {
53831b0e98SJimmy Brisson 	console_flush();
54a2847172SGrzegorz Jaszczyk 
55a2847172SGrzegorz Jaszczyk 	(void)console_unregister(&marvell_boot_console);
56a2847172SGrzegorz Jaszczyk }
57a2847172SGrzegorz Jaszczyk 
58a2847172SGrzegorz Jaszczyk /* Initialize the runtime console */
59a2847172SGrzegorz Jaszczyk void marvell_console_runtime_init(void)
60a2847172SGrzegorz Jaszczyk {
61a2847172SGrzegorz Jaszczyk 	int rc =
6231336258SPali Rohár 	console_marvell_register(PLAT_MARVELL_UART_BASE,
6331336258SPali Rohár 				 PLAT_MARVELL_UART_CLK_IN_HZ,
64a2847172SGrzegorz Jaszczyk 				 MARVELL_CONSOLE_BAUDRATE,
65a2847172SGrzegorz Jaszczyk 				 &marvell_runtime_console);
66a2847172SGrzegorz Jaszczyk 	if (rc == 0)
67a2847172SGrzegorz Jaszczyk 		panic();
68a2847172SGrzegorz Jaszczyk 
69a2847172SGrzegorz Jaszczyk 	console_set_scope(&marvell_runtime_console, CONSOLE_FLAG_RUNTIME);
70a2847172SGrzegorz Jaszczyk }
71a2847172SGrzegorz Jaszczyk 
72a2847172SGrzegorz Jaszczyk void marvell_console_runtime_end(void)
73a2847172SGrzegorz Jaszczyk {
74831b0e98SJimmy Brisson 	console_flush();
75a2847172SGrzegorz Jaszczyk 
76a2847172SGrzegorz Jaszczyk 	(void)console_unregister(&marvell_runtime_console);
77a2847172SGrzegorz Jaszczyk }
78