1 /* 2 * Arm SCP/MCP Software 3 * Copyright (c) 2018-2023, Arm Limited and Contributors. All rights reserved. 4 * 5 * SPDX-License-Identifier: BSD-3-Clause 6 */ 7 8 #ifndef MORELLO_SDS_H 9 #define MORELLO_SDS_H 10 11 #include <mod_sds.h> 12 13 #include <stdint.h> 14 15 /* 16 * Structure identifiers. 17 */ 18 enum morello_sds_struct_id { 19 MORELLO_SDS_CPU_INFO = 1 | (1 << MOD_SDS_ID_VERSION_MAJOR_POS), 20 MORELLO_SDS_FIRMWARE_VERSION = 2 | (1 << MOD_SDS_ID_VERSION_MAJOR_POS), 21 MORELLO_SDS_PLATFORM_ID = 3 | (1 << MOD_SDS_ID_VERSION_MAJOR_POS), 22 MORELLO_SDS_RESET_SYNDROME = 4 | (1 << MOD_SDS_ID_VERSION_MAJOR_POS), 23 MORELLO_SDS_FEATURE_AVAILABILITY = 5 | (1 << MOD_SDS_ID_VERSION_MAJOR_POS), 24 MORELLO_SDS_CPU_BOOTCTR = 6 | (1 << MOD_SDS_ID_VERSION_MAJOR_POS), 25 MORELLO_SDS_CPU_FLAGS = 7 | (1 << MOD_SDS_ID_VERSION_MAJOR_POS), 26 MORELLO_SDS_PLATFORM_INFO = 8 | (1 << MOD_SDS_ID_VERSION_MAJOR_POS), 27 }; 28 29 enum morello_sds_region_idx { 30 MORELLO_SDS_REGION_SECURE, 31 #ifdef BUILD_MODE_DEBUG 32 MORELLO_SDS_REGION_NONSECURE, 33 #endif 34 MORELLO_SDS_REGION_COUNT, 35 }; 36 37 /* 38 * Structure sizes. 39 */ 40 #define MORELLO_SDS_CPU_INFO_SIZE 4 41 #define MORELLO_SDS_FIRMWARE_VERSION_SIZE 4 42 #define MORELLO_SDS_PLATFORM_ID_SIZE 8 43 #define MORELLO_SDS_RESET_SYNDROME_SIZE 4 44 #define MORELLO_SDS_FEATURE_AVAILABILITY_SIZE 4 45 #define MORELLO_SDS_CPU_BOOTCTR_SIZE 256 46 #define MORELLO_SDS_CPU_FLAGS_SIZE 256 47 #if defined(PLAT_FVP) 48 # define MORELLO_SDS_PLATFORM_INFO_SIZE 8 49 #else 50 # define MORELLO_SDS_PLATFORM_INFO_SIZE 26 51 #endif 52 53 /* 54 * Field offsets for morello silicon revision. 55 */ 56 #define MORELLO_SILICON_REVISION_R_POS 16 57 #define MORELLO_SILICON_REVISION_P_POS 0 58 59 /* 60 * Field masks and offsets for the MORELLO_SDS_AP_CPU_INFO structure. 61 */ 62 #define MORELLO_SDS_CPU_INFO_PRIMARY_MASK 0xFFFFFFFF 63 #define MORELLO_SDS_CPU_INFO_PRIMARY_POS 0 64 65 /* 66 * Platform information 67 */ 68 struct morello_sds_platid { 69 /* Subsystem part number */ 70 uint32_t platform_identifier; 71 /* Platform type information */ 72 uint32_t platform_type_identifier; 73 }; 74 75 /* 76 * Field masks and offsets for the MORELLO_SDS_FEATURE_AVAILABILITY structure. 77 */ 78 #define MORELLO_SDS_FEATURE_FIRMWARE_MASK 0x1 79 #define MORELLO_SDS_FEATURE_DMC_MASK 0x2 80 #define MORELLO_SDS_FEATURE_MESSAGING_MASK 0x4 81 82 #define MORELLO_SDS_FEATURE_FIRMWARE_POS 0 83 #define MORELLO_SDS_FEATURE_DMC_POS 1 84 #define MORELLO_SDS_FEATURE_MESSAGING_POS 2 85 86 /* 87 * Element identifiers for SDS structures 88 */ 89 #define SDS_ELEMENT_IDX_FEATURE_AVAILABILITY 3 90 #define SDS_ELEMENT_IDX_PLATFORM_INFO 4 91 #endif /* MORELLO_SDS_H */ 92