xref: /rk3399_ARM-atf/plat/arm/board/fvp/fvp_console.c (revision 42d4d3baacb3b11c68163ec85de1bf2e34e0c882)
112d13430SMadhukar Pappireddy /*
2*42d4d3baSArvind Ram Prakash  * Copyright (c) 2020-2023, ARM Limited and Contributors. All rights reserved.
312d13430SMadhukar Pappireddy  *
412d13430SMadhukar Pappireddy  * SPDX-License-Identifier: BSD-3-Clause
512d13430SMadhukar Pappireddy  */
612d13430SMadhukar Pappireddy 
712d13430SMadhukar Pappireddy #include <assert.h>
812d13430SMadhukar Pappireddy 
912d13430SMadhukar Pappireddy #include <platform_def.h>
1012d13430SMadhukar Pappireddy 
1112d13430SMadhukar Pappireddy #include <common/debug.h>
1212d13430SMadhukar Pappireddy #include <drivers/arm/pl011.h>
1312d13430SMadhukar Pappireddy #include <drivers/console.h>
1412d13430SMadhukar Pappireddy #include <fconf_hw_config_getter.h>
1512d13430SMadhukar Pappireddy #include <plat/arm/common/plat_arm.h>
1612d13430SMadhukar Pappireddy 
1712d13430SMadhukar Pappireddy static console_t fvp_runtime_console;
1812d13430SMadhukar Pappireddy 
1912d13430SMadhukar Pappireddy /* Initialize the runtime console */
2012d13430SMadhukar Pappireddy void arm_console_runtime_init(void)
2112d13430SMadhukar Pappireddy {
2212d13430SMadhukar Pappireddy 	uintptr_t uart_base;
2312d13430SMadhukar Pappireddy 	uint32_t uart_clk;
2412d13430SMadhukar Pappireddy 
2512d13430SMadhukar Pappireddy 	/*
2612d13430SMadhukar Pappireddy 	 * fconf APIs are not supported for RESET_TO_SP_MIN, RESET_TO_BL31 and
27*42d4d3baSArvind Ram Prakash 	 * RESET_TO_BL2 systems.
2812d13430SMadhukar Pappireddy 	 */
29*42d4d3baSArvind Ram Prakash #if RESET_TO_SP_MIN || RESET_TO_BL31 || RESET_TO_BL2
3012d13430SMadhukar Pappireddy 	uart_base = PLAT_ARM_RUN_UART_BASE;
3112d13430SMadhukar Pappireddy 	uart_clk = PLAT_ARM_RUN_UART_CLK_IN_HZ;
3212d13430SMadhukar Pappireddy #else
3312d13430SMadhukar Pappireddy 	uart_base = FCONF_GET_PROPERTY(hw_config, uart_serial_config,
3412d13430SMadhukar Pappireddy 					uart_base);
3512d13430SMadhukar Pappireddy 	uart_clk = FCONF_GET_PROPERTY(hw_config, uart_serial_config,
3612d13430SMadhukar Pappireddy 					uart_clk);
3712d13430SMadhukar Pappireddy #endif
3812d13430SMadhukar Pappireddy 
3912d13430SMadhukar Pappireddy 	int rc = console_pl011_register(uart_base, uart_clk,
4012d13430SMadhukar Pappireddy 					ARM_CONSOLE_BAUDRATE,
4112d13430SMadhukar Pappireddy 					&fvp_runtime_console);
4212d13430SMadhukar Pappireddy 
4312d13430SMadhukar Pappireddy 	if (rc == 0) {
4412d13430SMadhukar Pappireddy 		panic();
4512d13430SMadhukar Pappireddy 	}
4612d13430SMadhukar Pappireddy 
4712d13430SMadhukar Pappireddy 	console_set_scope(&fvp_runtime_console, CONSOLE_FLAG_RUNTIME);
4812d13430SMadhukar Pappireddy }
4912d13430SMadhukar Pappireddy 
5012d13430SMadhukar Pappireddy void arm_console_runtime_end(void)
5112d13430SMadhukar Pappireddy {
52831b0e98SJimmy Brisson 	console_flush();
5312d13430SMadhukar Pappireddy 	(void)console_unregister(&fvp_runtime_console);
5412d13430SMadhukar Pappireddy }
55