Browse Source

plat/arm/fvp: populate runtime console parameters dynamically

We query the UART base address and clk frequency in runtime
using fconf getter APIs.

Change-Id: I5f4e84953be5f384472bf90720b706d45cb86260
Signed-off-by: Madhukar Pappireddy <madhukar.pappireddy@arm.com>
pull/1979/head
Madhukar Pappireddy 5 years ago
parent
commit
12d1343027
  1. 54
      plat/arm/board/fvp/fvp_console.c
  2. 1
      plat/arm/board/fvp/platform.mk
  3. 1
      plat/arm/board/fvp/sp_min/sp_min-fvp.mk
  4. 3
      plat/arm/common/arm_console.c

54
plat/arm/board/fvp/fvp_console.c

@ -0,0 +1,54 @@
/*
* Copyright (c) 2020, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <assert.h>
#include <platform_def.h>
#include <common/debug.h>
#include <drivers/arm/pl011.h>
#include <drivers/console.h>
#include <fconf_hw_config_getter.h>
#include <plat/arm/common/plat_arm.h>
static console_t fvp_runtime_console;
/* Initialize the runtime console */
void arm_console_runtime_init(void)
{
uintptr_t uart_base;
uint32_t uart_clk;
/*
* fconf APIs are not supported for RESET_TO_SP_MIN, RESET_TO_BL31 and
* BL2_AT_EL3 systems.
*/
#if RESET_TO_SP_MIN || RESET_TO_BL31 || BL2_AT_EL3
uart_base = PLAT_ARM_RUN_UART_BASE;
uart_clk = PLAT_ARM_RUN_UART_CLK_IN_HZ;
#else
uart_base = FCONF_GET_PROPERTY(hw_config, uart_serial_config,
uart_base);
uart_clk = FCONF_GET_PROPERTY(hw_config, uart_serial_config,
uart_clk);
#endif
int rc = console_pl011_register(uart_base, uart_clk,
ARM_CONSOLE_BAUDRATE,
&fvp_runtime_console);
if (rc == 0) {
panic();
}
console_set_scope(&fvp_runtime_console, CONSOLE_FLAG_RUNTIME);
}
void arm_console_runtime_end(void)
{
(void)console_flush();
(void)console_unregister(&fvp_runtime_console);
}

1
plat/arm/board/fvp/platform.mk

@ -201,6 +201,7 @@ BL31_SOURCES += drivers/arm/fvp/fvp_pwrc.c \
drivers/cfi/v2m/v2m_flash.c \
lib/utils/mem_region.c \
plat/arm/board/fvp/fvp_bl31_setup.c \
plat/arm/board/fvp/fvp_console.c \
plat/arm/board/fvp/fvp_pm.c \
plat/arm/board/fvp/fvp_topology.c \
plat/arm/board/fvp/aarch64/fvp_helpers.S \

1
plat/arm/board/fvp/sp_min/sp_min-fvp.mk

@ -10,6 +10,7 @@ BL32_SOURCES += drivers/arm/fvp/fvp_pwrc.c \
lib/utils/mem_region.c \
plat/arm/board/fvp/aarch32/fvp_helpers.S \
plat/arm/board/fvp/fvp_pm.c \
plat/arm/board/fvp/fvp_console.c \
plat/arm/board/fvp/fvp_topology.c \
plat/arm/board/fvp/sp_min/fvp_sp_min_setup.c \
plat/arm/common/arm_nor_psci_mem_protect.c \

3
plat/arm/common/arm_console.c

@ -13,6 +13,9 @@
#include <drivers/console.h>
#include <plat/arm/common/plat_arm.h>
#pragma weak arm_console_runtime_init
#pragma weak arm_console_runtime_end
/*******************************************************************************
* Functions that set up the console
******************************************************************************/

Loading…
Cancel
Save