xref: /rk3399_ARM-atf/plat/marvell/armada/common/marvell_console.c (revision 831b0e9824e6c7cb07308830c12977acb79156c7)
1a2847172SGrzegorz Jaszczyk /*
2*831b0e98SJimmy 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>
17a2847172SGrzegorz Jaszczyk #define console_marvell_register console_a3700_register
18a2847172SGrzegorz Jaszczyk #else
19a2847172SGrzegorz Jaszczyk #include <drivers/ti/uart/uart_16550.h>
20a2847172SGrzegorz Jaszczyk #define console_marvell_register console_16550_register
21a2847172SGrzegorz Jaszczyk #endif
22a2847172SGrzegorz Jaszczyk 
23a2847172SGrzegorz Jaszczyk static console_t marvell_boot_console;
24a2847172SGrzegorz Jaszczyk static console_t marvell_runtime_console;
25a2847172SGrzegorz Jaszczyk 
26a2847172SGrzegorz Jaszczyk /*******************************************************************************
27a2847172SGrzegorz Jaszczyk  * Functions that set up the console
28a2847172SGrzegorz Jaszczyk  ******************************************************************************/
29a2847172SGrzegorz Jaszczyk 
30a2847172SGrzegorz Jaszczyk /* Initialize the console to provide early debug support */
31a2847172SGrzegorz Jaszczyk void marvell_console_boot_init(void)
32a2847172SGrzegorz Jaszczyk {
33a2847172SGrzegorz Jaszczyk 	int rc =
34a2847172SGrzegorz Jaszczyk 	console_marvell_register(PLAT_MARVELL_BOOT_UART_BASE,
35a2847172SGrzegorz Jaszczyk 				 PLAT_MARVELL_BOOT_UART_CLK_IN_HZ,
36a2847172SGrzegorz Jaszczyk 				 MARVELL_CONSOLE_BAUDRATE,
37a2847172SGrzegorz Jaszczyk 				 &marvell_boot_console);
38a2847172SGrzegorz Jaszczyk 	if (rc == 0) {
39a2847172SGrzegorz Jaszczyk 		/*
40a2847172SGrzegorz Jaszczyk 		 * The crash console doesn't use the multi console API, it uses
41a2847172SGrzegorz Jaszczyk 		 * the core console functions directly. It is safe to call panic
42a2847172SGrzegorz Jaszczyk 		 * and let it print debug information.
43a2847172SGrzegorz Jaszczyk 		 */
44a2847172SGrzegorz Jaszczyk 		panic();
45a2847172SGrzegorz Jaszczyk 	}
46a2847172SGrzegorz Jaszczyk 
47a2847172SGrzegorz Jaszczyk 	console_set_scope(&marvell_boot_console, CONSOLE_FLAG_BOOT);
48a2847172SGrzegorz Jaszczyk }
49a2847172SGrzegorz Jaszczyk 
50a2847172SGrzegorz Jaszczyk void marvell_console_boot_end(void)
51a2847172SGrzegorz Jaszczyk {
52*831b0e98SJimmy Brisson 	console_flush();
53a2847172SGrzegorz Jaszczyk 
54a2847172SGrzegorz Jaszczyk 	(void)console_unregister(&marvell_boot_console);
55a2847172SGrzegorz Jaszczyk }
56a2847172SGrzegorz Jaszczyk 
57a2847172SGrzegorz Jaszczyk /* Initialize the runtime console */
58a2847172SGrzegorz Jaszczyk void marvell_console_runtime_init(void)
59a2847172SGrzegorz Jaszczyk {
60a2847172SGrzegorz Jaszczyk 	int rc =
61a2847172SGrzegorz Jaszczyk 	console_marvell_register(PLAT_MARVELL_BOOT_UART_BASE,
62a2847172SGrzegorz Jaszczyk 				 PLAT_MARVELL_BOOT_UART_CLK_IN_HZ,
63a2847172SGrzegorz Jaszczyk 				 MARVELL_CONSOLE_BAUDRATE,
64a2847172SGrzegorz Jaszczyk 				 &marvell_runtime_console);
65a2847172SGrzegorz Jaszczyk 	if (rc == 0)
66a2847172SGrzegorz Jaszczyk 		panic();
67a2847172SGrzegorz Jaszczyk 
68a2847172SGrzegorz Jaszczyk 	console_set_scope(&marvell_runtime_console, CONSOLE_FLAG_RUNTIME);
69a2847172SGrzegorz Jaszczyk }
70a2847172SGrzegorz Jaszczyk 
71a2847172SGrzegorz Jaszczyk void marvell_console_runtime_end(void)
72a2847172SGrzegorz Jaszczyk {
73*831b0e98SJimmy Brisson 	console_flush();
74a2847172SGrzegorz Jaszczyk 
75a2847172SGrzegorz Jaszczyk 	(void)console_unregister(&marvell_runtime_console);
76a2847172SGrzegorz Jaszczyk }
77