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