xref: /rk3399_ARM-atf/plat/arm/board/fvp/fvp_console.c (revision c0dbc3af6a3a9df0749b4489d0d9d440ef41e4c0)
112d13430SMadhukar Pappireddy /*
2*f185a542SBoyan Karatotev  * Copyright (c) 2020-2025, 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 */
arm_console_runtime_init(void)2012d13430SMadhukar Pappireddy void arm_console_runtime_init(void)
2112d13430SMadhukar Pappireddy {
2212d13430SMadhukar Pappireddy 	uintptr_t uart_base;
2312d13430SMadhukar Pappireddy 	uint32_t uart_clk;
2412d13430SMadhukar Pappireddy 
25*f185a542SBoyan Karatotev 	/* If the console was initialized already, don't initialize again */
26*f185a542SBoyan Karatotev 	if (fvp_runtime_console.base != 0UL) {
27*f185a542SBoyan Karatotev 		return;
28*f185a542SBoyan Karatotev 	}
29*f185a542SBoyan Karatotev 
3012d13430SMadhukar Pappireddy 	/*
3112d13430SMadhukar Pappireddy 	 * fconf APIs are not supported for RESET_TO_SP_MIN, RESET_TO_BL31 and
3242d4d3baSArvind Ram Prakash 	 * RESET_TO_BL2 systems.
3312d13430SMadhukar Pappireddy 	 */
3442d4d3baSArvind Ram Prakash #if RESET_TO_SP_MIN || RESET_TO_BL31 || RESET_TO_BL2
3512d13430SMadhukar Pappireddy 	uart_base = PLAT_ARM_RUN_UART_BASE;
3612d13430SMadhukar Pappireddy 	uart_clk = PLAT_ARM_RUN_UART_CLK_IN_HZ;
3712d13430SMadhukar Pappireddy #else
3812d13430SMadhukar Pappireddy 	uart_base = FCONF_GET_PROPERTY(hw_config, uart_serial_config,
3912d13430SMadhukar Pappireddy 					uart_base);
4012d13430SMadhukar Pappireddy 	uart_clk = FCONF_GET_PROPERTY(hw_config, uart_serial_config,
4112d13430SMadhukar Pappireddy 					uart_clk);
4212d13430SMadhukar Pappireddy #endif
4312d13430SMadhukar Pappireddy 
4412d13430SMadhukar Pappireddy 	int rc = console_pl011_register(uart_base, uart_clk,
4512d13430SMadhukar Pappireddy 					ARM_CONSOLE_BAUDRATE,
4612d13430SMadhukar Pappireddy 					&fvp_runtime_console);
4712d13430SMadhukar Pappireddy 
4812d13430SMadhukar Pappireddy 	if (rc == 0) {
4912d13430SMadhukar Pappireddy 		panic();
5012d13430SMadhukar Pappireddy 	}
5112d13430SMadhukar Pappireddy 
5212d13430SMadhukar Pappireddy 	console_set_scope(&fvp_runtime_console, CONSOLE_FLAG_RUNTIME);
5312d13430SMadhukar Pappireddy }
54