1*12d13430SMadhukar Pappireddy /* 2*12d13430SMadhukar Pappireddy * Copyright (c) 2020, ARM Limited and Contributors. All rights reserved. 3*12d13430SMadhukar Pappireddy * 4*12d13430SMadhukar Pappireddy * SPDX-License-Identifier: BSD-3-Clause 5*12d13430SMadhukar Pappireddy */ 6*12d13430SMadhukar Pappireddy 7*12d13430SMadhukar Pappireddy #include <assert.h> 8*12d13430SMadhukar Pappireddy 9*12d13430SMadhukar Pappireddy #include <platform_def.h> 10*12d13430SMadhukar Pappireddy 11*12d13430SMadhukar Pappireddy #include <common/debug.h> 12*12d13430SMadhukar Pappireddy #include <drivers/arm/pl011.h> 13*12d13430SMadhukar Pappireddy #include <drivers/console.h> 14*12d13430SMadhukar Pappireddy #include <fconf_hw_config_getter.h> 15*12d13430SMadhukar Pappireddy #include <plat/arm/common/plat_arm.h> 16*12d13430SMadhukar Pappireddy 17*12d13430SMadhukar Pappireddy static console_t fvp_runtime_console; 18*12d13430SMadhukar Pappireddy 19*12d13430SMadhukar Pappireddy /* Initialize the runtime console */ 20*12d13430SMadhukar Pappireddy void arm_console_runtime_init(void) 21*12d13430SMadhukar Pappireddy { 22*12d13430SMadhukar Pappireddy uintptr_t uart_base; 23*12d13430SMadhukar Pappireddy uint32_t uart_clk; 24*12d13430SMadhukar Pappireddy 25*12d13430SMadhukar Pappireddy /* 26*12d13430SMadhukar Pappireddy * fconf APIs are not supported for RESET_TO_SP_MIN, RESET_TO_BL31 and 27*12d13430SMadhukar Pappireddy * BL2_AT_EL3 systems. 28*12d13430SMadhukar Pappireddy */ 29*12d13430SMadhukar Pappireddy #if RESET_TO_SP_MIN || RESET_TO_BL31 || BL2_AT_EL3 30*12d13430SMadhukar Pappireddy uart_base = PLAT_ARM_RUN_UART_BASE; 31*12d13430SMadhukar Pappireddy uart_clk = PLAT_ARM_RUN_UART_CLK_IN_HZ; 32*12d13430SMadhukar Pappireddy #else 33*12d13430SMadhukar Pappireddy uart_base = FCONF_GET_PROPERTY(hw_config, uart_serial_config, 34*12d13430SMadhukar Pappireddy uart_base); 35*12d13430SMadhukar Pappireddy uart_clk = FCONF_GET_PROPERTY(hw_config, uart_serial_config, 36*12d13430SMadhukar Pappireddy uart_clk); 37*12d13430SMadhukar Pappireddy #endif 38*12d13430SMadhukar Pappireddy 39*12d13430SMadhukar Pappireddy int rc = console_pl011_register(uart_base, uart_clk, 40*12d13430SMadhukar Pappireddy ARM_CONSOLE_BAUDRATE, 41*12d13430SMadhukar Pappireddy &fvp_runtime_console); 42*12d13430SMadhukar Pappireddy 43*12d13430SMadhukar Pappireddy if (rc == 0) { 44*12d13430SMadhukar Pappireddy panic(); 45*12d13430SMadhukar Pappireddy } 46*12d13430SMadhukar Pappireddy 47*12d13430SMadhukar Pappireddy console_set_scope(&fvp_runtime_console, CONSOLE_FLAG_RUNTIME); 48*12d13430SMadhukar Pappireddy } 49*12d13430SMadhukar Pappireddy 50*12d13430SMadhukar Pappireddy void arm_console_runtime_end(void) 51*12d13430SMadhukar Pappireddy { 52*12d13430SMadhukar Pappireddy (void)console_flush(); 53*12d13430SMadhukar Pappireddy (void)console_unregister(&fvp_runtime_console); 54*12d13430SMadhukar Pappireddy } 55