blob: 3aa454b6b38154bd586c771372be2cd5eaa7971c [file] [log] [blame]
Madhukar Pappireddyd0cf0a92020-04-16 17:54:25 -05001/*
Arvind Ram Prakash11b9b492022-11-22 14:41:00 -06002 * Copyright (c) 2020-2023, ARM Limited and Contributors. All rights reserved.
Madhukar Pappireddyd0cf0a92020-04-16 17:54:25 -05003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#include <assert.h>
8
9#include <platform_def.h>
10
11#include <common/debug.h>
12#include <drivers/arm/pl011.h>
13#include <drivers/console.h>
14#include <fconf_hw_config_getter.h>
15#include <plat/arm/common/plat_arm.h>
16
17static console_t fvp_runtime_console;
18
19/* Initialize the runtime console */
20void arm_console_runtime_init(void)
21{
22 uintptr_t uart_base;
23 uint32_t uart_clk;
24
25 /*
26 * fconf APIs are not supported for RESET_TO_SP_MIN, RESET_TO_BL31 and
Arvind Ram Prakash11b9b492022-11-22 14:41:00 -060027 * RESET_TO_BL2 systems.
Madhukar Pappireddyd0cf0a92020-04-16 17:54:25 -050028 */
Arvind Ram Prakash11b9b492022-11-22 14:41:00 -060029#if RESET_TO_SP_MIN || RESET_TO_BL31 || RESET_TO_BL2
Madhukar Pappireddyd0cf0a92020-04-16 17:54:25 -050030 uart_base = PLAT_ARM_RUN_UART_BASE;
31 uart_clk = PLAT_ARM_RUN_UART_CLK_IN_HZ;
32#else
33 uart_base = FCONF_GET_PROPERTY(hw_config, uart_serial_config,
34 uart_base);
35 uart_clk = FCONF_GET_PROPERTY(hw_config, uart_serial_config,
36 uart_clk);
37#endif
38
39 int rc = console_pl011_register(uart_base, uart_clk,
40 ARM_CONSOLE_BAUDRATE,
41 &fvp_runtime_console);
42
43 if (rc == 0) {
44 panic();
45 }
46
47 console_set_scope(&fvp_runtime_console, CONSOLE_FLAG_RUNTIME);
48}
49
50void arm_console_runtime_end(void)
51{
Jimmy Brisson39f9eee2020-08-05 13:44:05 -050052 console_flush();
Madhukar Pappireddyd0cf0a92020-04-16 17:54:25 -050053 (void)console_unregister(&fvp_runtime_console);
54}