1 /* 2 * Copyright (c) 2021-2022, Arm Limited. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #include <common/bl_common.h> 8 #include <common/debug.h> 9 #include <drivers/arm/pl011.h> 10 #include <drivers/console.h> 11 #include <services/rmm_core_manifest.h> 12 #include <services/rmmd_svc.h> 13 #include <services/trp/platform_trp.h> 14 #include <trp_helpers.h> 15 16 #include <plat/arm/common/plat_arm.h> 17 #include <platform_def.h> 18 19 /******************************************************************************* 20 * Received from boot manifest and populated here 21 ******************************************************************************/ 22 extern uint32_t trp_boot_manifest_version; 23 24 /******************************************************************************* 25 * Initialize the UART 26 ******************************************************************************/ 27 static console_t arm_trp_runtime_console; 28 arm_trp_process_manifest(rmm_manifest_t * manifest)29static int arm_trp_process_manifest(rmm_manifest_t *manifest) 30 { 31 /* Verify the Boot Manifest Version. Only the Major is considered */ 32 if (RMMD_MANIFEST_VERSION_MAJOR != 33 RMMD_GET_MANIFEST_VERSION_MAJOR(manifest->version)) { 34 return E_RMM_BOOT_MANIFEST_VERSION_NOT_SUPPORTED; 35 } 36 37 trp_boot_manifest_version = manifest->version; 38 flush_dcache_range((uintptr_t)manifest, sizeof(rmm_manifest_t)); 39 40 return 0; 41 } 42 arm_trp_early_platform_setup(rmm_manifest_t * manifest)43void arm_trp_early_platform_setup(rmm_manifest_t *manifest) 44 { 45 int rc; 46 47 rc = arm_trp_process_manifest(manifest); 48 if (rc != 0) { 49 trp_boot_abort(rc); 50 } 51 52 /* 53 * Initialize a different console than already in use to display 54 * messages from trp 55 */ 56 rc = console_pl011_register(PLAT_ARM_TRP_UART_BASE, 57 PLAT_ARM_TRP_UART_CLK_IN_HZ, 58 ARM_CONSOLE_BAUDRATE, 59 &arm_trp_runtime_console); 60 if (rc == 0) { 61 panic(); 62 } 63 64 console_set_scope(&arm_trp_runtime_console, 65 CONSOLE_FLAG_BOOT | CONSOLE_FLAG_RUNTIME); 66 67 } 68 trp_early_platform_setup(rmm_manifest_t * manifest)69void trp_early_platform_setup(rmm_manifest_t *manifest) 70 { 71 arm_trp_early_platform_setup(manifest); 72 } 73