diff options
author | Mark Dykes <mardyk01@review.trustedfirmware.org> | 2020-05-22 17:45:46 +0000 |
---|---|---|
committer | TrustedFirmware Code Review <review@review.trustedfirmware.org> | 2020-05-22 17:45:46 +0000 |
commit | beff49107559a77583cf06b57150a811de3a7d44 (patch) | |
tree | a4ad61f4195e01b9c43f4b28e1a57d1650722275 | |
parent | de9d0d7c7ffc592e34f9c8c38c1971556d4d4de8 (diff) | |
parent | 12d1343027694634c4be3dcfb43c2e9c47a58388 (diff) | |
download | platform_external_arm-trusted-firmware-beff49107559a77583cf06b57150a811de3a7d44.tar.gz platform_external_arm-trusted-firmware-beff49107559a77583cf06b57150a811de3a7d44.tar.bz2 platform_external_arm-trusted-firmware-beff49107559a77583cf06b57150a811de3a7d44.zip |
Merge "plat/arm/fvp: populate runtime console parameters dynamically" into integration
-rw-r--r-- | plat/arm/board/fvp/fvp_console.c | 54 | ||||
-rw-r--r-- | plat/arm/board/fvp/platform.mk | 1 | ||||
-rw-r--r-- | plat/arm/board/fvp/sp_min/sp_min-fvp.mk | 1 | ||||
-rw-r--r-- | plat/arm/common/arm_console.c | 3 |
4 files changed, 59 insertions, 0 deletions
diff --git a/plat/arm/board/fvp/fvp_console.c b/plat/arm/board/fvp/fvp_console.c new file mode 100644 index 000000000..928b47bf1 --- /dev/null +++ b/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); +} diff --git a/plat/arm/board/fvp/platform.mk b/plat/arm/board/fvp/platform.mk index a88ec1336..33531f3fd 100644 --- a/plat/arm/board/fvp/platform.mk +++ b/plat/arm/board/fvp/platform.mk @@ -205,6 +205,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 \ diff --git a/plat/arm/board/fvp/sp_min/sp_min-fvp.mk b/plat/arm/board/fvp/sp_min/sp_min-fvp.mk index 36bf441ab..ba6ceec4e 100644 --- a/plat/arm/board/fvp/sp_min/sp_min-fvp.mk +++ b/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 \ diff --git a/plat/arm/common/arm_console.c b/plat/arm/common/arm_console.c index 0cac5d999..c2281c42d 100644 --- a/plat/arm/common/arm_console.c +++ b/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 ******************************************************************************/ |