1e62748e3SManish V Badarkhe /* 294127ae2SManish V Badarkhe * Copyright (c) 2022-2025 Arm Limited. All rights reserved. 3e62748e3SManish V Badarkhe * 4e62748e3SManish V Badarkhe * SPDX-License-Identifier: BSD-3-Clause 5e62748e3SManish V Badarkhe * 6e62748e3SManish V Badarkhe * DRTM service 7e62748e3SManish V Badarkhe * 8e62748e3SManish V Badarkhe * Authors: 9e62748e3SManish V Badarkhe * Lucian Paul-Trifu <lucian.paultrifu@gmail.com> 10e62748e3SManish V Badarkhe * Brian Nezvadovitz <brinez@microsoft.com> 2021-02-01 11e62748e3SManish V Badarkhe * 12e62748e3SManish V Badarkhe */ 13e62748e3SManish V Badarkhe 14e62748e3SManish V Badarkhe #ifndef ARM_DRTM_SVC_H 15e62748e3SManish V Badarkhe #define ARM_DRTM_SVC_H 16e62748e3SManish V Badarkhe 178666bcfaSManish V Badarkhe #include <lib/utils_def.h> 188666bcfaSManish V Badarkhe 19e62748e3SManish V Badarkhe /* 20e62748e3SManish V Badarkhe * SMC function IDs for DRTM Service 21e62748e3SManish V Badarkhe * Upper word bits set: Fast call, SMC64, Standard Secure Svc. Call (OEN = 4) 22e62748e3SManish V Badarkhe */ 23e62748e3SManish V Badarkhe #define DRTM_FID(func_num) \ 24e62748e3SManish V Badarkhe ((SMC_TYPE_FAST << FUNCID_TYPE_SHIFT) | \ 25e62748e3SManish V Badarkhe (SMC_64 << FUNCID_CC_SHIFT) | \ 26e62748e3SManish V Badarkhe (OEN_STD_START << FUNCID_OEN_SHIFT) | \ 27e62748e3SManish V Badarkhe ((func_num) << FUNCID_NUM_SHIFT)) 28e62748e3SManish V Badarkhe 29e62748e3SManish V Badarkhe #define DRTM_FNUM_SVC_VERSION U(0x110) 30e62748e3SManish V Badarkhe #define DRTM_FNUM_SVC_FEATURES U(0x111) 31e62748e3SManish V Badarkhe #define DRTM_FNUM_SVC_UNPROTECT_MEM U(0x113) 32e62748e3SManish V Badarkhe #define DRTM_FNUM_SVC_DYNAMIC_LAUNCH U(0x114) 33e62748e3SManish V Badarkhe #define DRTM_FNUM_SVC_CLOSE_LOCALITY U(0x115) 34e62748e3SManish V Badarkhe #define DRTM_FNUM_SVC_GET_ERROR U(0x116) 35e62748e3SManish V Badarkhe #define DRTM_FNUM_SVC_SET_ERROR U(0x117) 36e62748e3SManish V Badarkhe #define DRTM_FNUM_SVC_SET_TCB_HASH U(0x118) 37e62748e3SManish V Badarkhe #define DRTM_FNUM_SVC_LOCK_TCB_HASH U(0x119) 38e62748e3SManish V Badarkhe 39e62748e3SManish V Badarkhe #define ARM_DRTM_SVC_VERSION DRTM_FID(DRTM_FNUM_SVC_VERSION) 40e62748e3SManish V Badarkhe #define ARM_DRTM_SVC_FEATURES DRTM_FID(DRTM_FNUM_SVC_FEATURES) 41e62748e3SManish V Badarkhe #define ARM_DRTM_SVC_UNPROTECT_MEM DRTM_FID(DRTM_FNUM_SVC_UNPROTECT_MEM) 42e62748e3SManish V Badarkhe #define ARM_DRTM_SVC_DYNAMIC_LAUNCH DRTM_FID(DRTM_FNUM_SVC_DYNAMIC_LAUNCH) 43e62748e3SManish V Badarkhe #define ARM_DRTM_SVC_CLOSE_LOCALITY DRTM_FID(DRTM_FNUM_SVC_CLOSE_LOCALITY) 44e62748e3SManish V Badarkhe #define ARM_DRTM_SVC_GET_ERROR DRTM_FID(DRTM_FNUM_SVC_GET_ERROR) 45e62748e3SManish V Badarkhe #define ARM_DRTM_SVC_SET_ERROR DRTM_FID(DRTM_FNUM_SVC_SET_ERROR) 46e62748e3SManish V Badarkhe #define ARM_DRTM_SVC_SET_TCB_HASH DRTM_FID(DRTM_FNUM_SVC_SET_TCB_HASH) 47e62748e3SManish V Badarkhe #define ARM_DRTM_SVC_LOCK_TCB_HASH DRTM_FID(DRTM_FNUM_SVC_LOCK_TCB_HASH) 48e62748e3SManish V Badarkhe 49e9467afbSManish V Badarkhe #define ARM_DRTM_FEATURES_TPM U(0x1) 50e9467afbSManish V Badarkhe #define ARM_DRTM_FEATURES_MEM_REQ U(0x2) 51e9467afbSManish V Badarkhe #define ARM_DRTM_FEATURES_DMA_PROT U(0x3) 52e9467afbSManish V Badarkhe #define ARM_DRTM_FEATURES_BOOT_PE_ID U(0x4) 53e9467afbSManish V Badarkhe #define ARM_DRTM_FEATURES_TCB_HASHES U(0x5) 5494127ae2SManish V Badarkhe #define ARM_DRTM_FEATURES_DLME_IMG_AUTH U(0x6) 55e9467afbSManish V Badarkhe 56e62748e3SManish V Badarkhe #define is_drtm_fid(_fid) \ 57e62748e3SManish V Badarkhe (((_fid) >= ARM_DRTM_SVC_VERSION) && ((_fid) <= ARM_DRTM_SVC_LOCK_TCB_HASH)) 58e62748e3SManish V Badarkhe 59e62748e3SManish V Badarkhe /* ARM DRTM Service Calls version numbers */ 609c36b900SStuart Yoder #define ARM_DRTM_VERSION_MAJOR U(1) 61e62748e3SManish V Badarkhe #define ARM_DRTM_VERSION_MAJOR_SHIFT 16 62e62748e3SManish V Badarkhe #define ARM_DRTM_VERSION_MAJOR_MASK U(0x7FFF) 639c36b900SStuart Yoder #define ARM_DRTM_VERSION_MINOR U(0) 64e62748e3SManish V Badarkhe #define ARM_DRTM_VERSION_MINOR_SHIFT 0 65e62748e3SManish V Badarkhe #define ARM_DRTM_VERSION_MINOR_MASK U(0xFFFF) 66e62748e3SManish V Badarkhe 67e62748e3SManish V Badarkhe #define ARM_DRTM_VERSION \ 68e62748e3SManish V Badarkhe ((((ARM_DRTM_VERSION_MAJOR) & ARM_DRTM_VERSION_MAJOR_MASK) << \ 69e62748e3SManish V Badarkhe ARM_DRTM_VERSION_MAJOR_SHIFT) \ 70e62748e3SManish V Badarkhe | (((ARM_DRTM_VERSION_MINOR) & ARM_DRTM_VERSION_MINOR_MASK) << \ 71e62748e3SManish V Badarkhe ARM_DRTM_VERSION_MINOR_SHIFT)) 72e62748e3SManish V Badarkhe 73e62748e3SManish V Badarkhe #define ARM_DRTM_FUNC_SHIFT U(63) 74e9467afbSManish V Badarkhe #define ARM_DRTM_FUNC_MASK ULL(0x1) 75e62748e3SManish V Badarkhe #define ARM_DRTM_FUNC_ID U(0x0) 76e62748e3SManish V Badarkhe #define ARM_DRTM_FEAT_ID U(0x1) 77e9467afbSManish V Badarkhe #define ARM_DRTM_FEAT_ID_MASK ULL(0xff) 78e62748e3SManish V Badarkhe 792a1cdee4Sjohpow01 /* 80b94d5909SStuart Yoder * Definitions for DRTM features as per DRTM 1.0 section 3.3, 812a1cdee4Sjohpow01 * Table 6 DRTM_FEATURES 822a1cdee4Sjohpow01 */ 832a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_PCR_SCHEMA_SHIFT U(33) 842a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_PCR_SCHEMA_MASK ULL(0xF) 852a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_PCR_SCHEMA_DEFAULT ULL(0x1) 862a1cdee4Sjohpow01 872a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_TPM_HASH_SHIFT U(32) 882a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_TPM_HASH_MASK ULL(0x1) 892a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_TPM_HASH_NOT_SUPPORTED ULL(0x0) 902a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_TPM_HASH_SUPPORTED ULL(0x1) 912a1cdee4Sjohpow01 922a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_FW_HASH_SHIFT U(0) 93c86cfa35SStuart Yoder #define ARM_DRTM_TPM_FEATURES_FW_HASH_MASK ULL(0xFFFF) 942a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_FW_HASH_SHA256 ULL(0xB) 952a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_FW_HASH_SHA384 ULL(0xC) 962a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_FW_HASH_SHA512 ULL(0xD) 972a1cdee4Sjohpow01 982a1cdee4Sjohpow01 #define ARM_DRTM_MIN_MEM_REQ_DCE_SIZE_SHIFT U(32) 992a1cdee4Sjohpow01 #define ARM_DRTM_MIN_MEM_REQ_DCE_SIZE_MASK ULL(0xFFFFFFFF) 1002a1cdee4Sjohpow01 1012a1cdee4Sjohpow01 #define ARM_DRTM_MIN_MEM_REQ_MIN_DLME_DATA_SIZE_SHIFT U(0) 1022a1cdee4Sjohpow01 #define ARM_DRTM_MIN_MEM_REQ_MIN_DLME_DATA_SIZE_MASK ULL(0xFFFFFFFF) 1032a1cdee4Sjohpow01 1042a1cdee4Sjohpow01 #define ARM_DRTM_DMA_PROT_FEATURES_MAX_REGIONS_SHIFT U(8) 105*3b6e5947SManish V Badarkhe #define ARM_DRTM_DMA_PROT_FEATURES_MAX_REGIONS_MASK ULL(0xFFFF) 1062a1cdee4Sjohpow01 1072a1cdee4Sjohpow01 #define ARM_DRTM_DMA_PROT_FEATURES_DMA_SUPPORT_SHIFT U(0) 1082a1cdee4Sjohpow01 #define ARM_DRTM_DMA_PROT_FEATURES_DMA_SUPPORT_MASK ULL(0xFF) 1092a1cdee4Sjohpow01 #define ARM_DRTM_DMA_PROT_FEATURES_DMA_SUPPORT_COMPLETE ULL(0x1) 1102a1cdee4Sjohpow01 #define ARM_DRTM_DMA_PROT_FEATURES_DMA_SUPPORT_REGION ULL(0x2) 1112a1cdee4Sjohpow01 1122a1cdee4Sjohpow01 #define ARM_DRTM_TCB_HASH_FEATURES_MAX_NUM_HASHES_SHIFT U(0) 1132a1cdee4Sjohpow01 #define ARM_DRTM_TCB_HASH_FEATURES_MAX_NUM_HASHES_MASK ULL(0xFF) 1142a1cdee4Sjohpow01 11594127ae2SManish V Badarkhe #define ARM_DRTM_DLME_IMAGE_AUTH_SUPPORT_SHIFT U(0) 11694127ae2SManish V Badarkhe #define ARM_DRTM_DLME_IMAGE_AUTH_SUPPORT_MASK ULL(0x1) 11794127ae2SManish V Badarkhe 1182a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_SET_PCR_SCHEMA(reg, val) \ 1192a1cdee4Sjohpow01 do { \ 1202a1cdee4Sjohpow01 reg = (((reg) & ~(ARM_DRTM_TPM_FEATURES_PCR_SCHEMA_MASK \ 1212a1cdee4Sjohpow01 << ARM_DRTM_TPM_FEATURES_PCR_SCHEMA_SHIFT)) | (((val) & \ 1222a1cdee4Sjohpow01 ARM_DRTM_TPM_FEATURES_PCR_SCHEMA_MASK) << \ 1232a1cdee4Sjohpow01 ARM_DRTM_TPM_FEATURES_PCR_SCHEMA_SHIFT)); \ 1242a1cdee4Sjohpow01 } while (false) 1252a1cdee4Sjohpow01 1262a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_SET_TPM_HASH(reg, val) \ 1272a1cdee4Sjohpow01 do { \ 1282a1cdee4Sjohpow01 reg = (((reg) & ~(ARM_DRTM_TPM_FEATURES_TPM_HASH_MASK \ 1292a1cdee4Sjohpow01 << ARM_DRTM_TPM_FEATURES_TPM_HASH_SHIFT)) | (((val) & \ 1302a1cdee4Sjohpow01 ARM_DRTM_TPM_FEATURES_TPM_HASH_MASK) << \ 1312a1cdee4Sjohpow01 ARM_DRTM_TPM_FEATURES_TPM_HASH_SHIFT)); \ 1322a1cdee4Sjohpow01 } while (false) 1332a1cdee4Sjohpow01 1342a1cdee4Sjohpow01 #define ARM_DRTM_TPM_FEATURES_SET_FW_HASH(reg, val) \ 1352a1cdee4Sjohpow01 do { \ 1362a1cdee4Sjohpow01 reg = (((reg) & ~(ARM_DRTM_TPM_FEATURES_FW_HASH_MASK \ 1372a1cdee4Sjohpow01 << ARM_DRTM_TPM_FEATURES_FW_HASH_SHIFT)) | (((val) & \ 1382a1cdee4Sjohpow01 ARM_DRTM_TPM_FEATURES_FW_HASH_MASK) << \ 1392a1cdee4Sjohpow01 ARM_DRTM_TPM_FEATURES_FW_HASH_SHIFT)); \ 1402a1cdee4Sjohpow01 } while (false) 1412a1cdee4Sjohpow01 1422a1cdee4Sjohpow01 #define ARM_DRTM_MIN_MEM_REQ_SET_DCE_SIZE(reg, val) \ 1432a1cdee4Sjohpow01 do { \ 1442a1cdee4Sjohpow01 reg = (((reg) & ~(ARM_DRTM_MIN_MEM_REQ_DCE_SIZE_MASK \ 1452a1cdee4Sjohpow01 << ARM_DRTM_MIN_MEM_REQ_DCE_SIZE_SHIFT)) | (((val) & \ 1462a1cdee4Sjohpow01 ARM_DRTM_MIN_MEM_REQ_DCE_SIZE_MASK) << \ 1472a1cdee4Sjohpow01 ARM_DRTM_MIN_MEM_REQ_DCE_SIZE_SHIFT)); \ 1482a1cdee4Sjohpow01 } while (false) 1492a1cdee4Sjohpow01 1502a1cdee4Sjohpow01 #define ARM_DRTM_MIN_MEM_REQ_SET_MIN_DLME_DATA_SIZE(reg, val) \ 1512a1cdee4Sjohpow01 do { \ 1522a1cdee4Sjohpow01 reg = (((reg) & \ 1532a1cdee4Sjohpow01 ~(ARM_DRTM_MIN_MEM_REQ_MIN_DLME_DATA_SIZE_MASK << \ 1542a1cdee4Sjohpow01 ARM_DRTM_MIN_MEM_REQ_MIN_DLME_DATA_SIZE_SHIFT)) | \ 1552a1cdee4Sjohpow01 (((val) & ARM_DRTM_MIN_MEM_REQ_MIN_DLME_DATA_SIZE_MASK) \ 1562a1cdee4Sjohpow01 << ARM_DRTM_MIN_MEM_REQ_MIN_DLME_DATA_SIZE_SHIFT)); \ 1572a1cdee4Sjohpow01 } while (false) 1582a1cdee4Sjohpow01 1592a1cdee4Sjohpow01 #define ARM_DRTM_DMA_PROT_FEATURES_SET_MAX_REGIONS(reg, val) \ 1602a1cdee4Sjohpow01 do { \ 1612a1cdee4Sjohpow01 reg = (((reg) & \ 1622a1cdee4Sjohpow01 ~(ARM_DRTM_DMA_PROT_FEATURES_MAX_REGIONS_MASK << \ 1632a1cdee4Sjohpow01 ARM_DRTM_DMA_PROT_FEATURES_MAX_REGIONS_SHIFT)) | \ 1642a1cdee4Sjohpow01 (((val) & ARM_DRTM_DMA_PROT_FEATURES_MAX_REGIONS_MASK) \ 1652a1cdee4Sjohpow01 << ARM_DRTM_DMA_PROT_FEATURES_MAX_REGIONS_SHIFT)); \ 1662a1cdee4Sjohpow01 } while (false) 1672a1cdee4Sjohpow01 1682a1cdee4Sjohpow01 #define ARM_DRTM_DMA_PROT_FEATURES_SET_DMA_SUPPORT(reg, val) \ 1692a1cdee4Sjohpow01 do { \ 1702a1cdee4Sjohpow01 reg = (((reg) & \ 1712a1cdee4Sjohpow01 ~(ARM_DRTM_DMA_PROT_FEATURES_DMA_SUPPORT_MASK << \ 1722a1cdee4Sjohpow01 ARM_DRTM_DMA_PROT_FEATURES_DMA_SUPPORT_SHIFT)) | \ 1732a1cdee4Sjohpow01 (((val) & ARM_DRTM_DMA_PROT_FEATURES_DMA_SUPPORT_MASK) \ 1742a1cdee4Sjohpow01 << ARM_DRTM_DMA_PROT_FEATURES_DMA_SUPPORT_SHIFT)); \ 1752a1cdee4Sjohpow01 } while (false) 1762a1cdee4Sjohpow01 1772a1cdee4Sjohpow01 #define ARM_DRTM_TCB_HASH_FEATURES_SET_MAX_NUM_HASHES(reg, val) \ 1782a1cdee4Sjohpow01 do { \ 1792a1cdee4Sjohpow01 reg = (((reg) & \ 1802a1cdee4Sjohpow01 ~(ARM_DRTM_TCB_HASH_FEATURES_MAX_NUM_HASHES_MASK << \ 1812a1cdee4Sjohpow01 ARM_DRTM_TCB_HASH_FEATURES_MAX_NUM_HASHES_SHIFT)) | \ 1822a1cdee4Sjohpow01 (((val) & \ 1832a1cdee4Sjohpow01 ARM_DRTM_TCB_HASH_FEATURES_MAX_NUM_HASHES_MASK) << \ 1842a1cdee4Sjohpow01 ARM_DRTM_TCB_HASH_FEATURES_MAX_NUM_HASHES_SHIFT)); \ 1852a1cdee4Sjohpow01 } while (false) 1862a1cdee4Sjohpow01 18794127ae2SManish V Badarkhe #define ARM_DRTM_DLME_IMG_AUTH_SUPPORT(reg, val) \ 18894127ae2SManish V Badarkhe do { \ 18994127ae2SManish V Badarkhe reg = (((reg) & \ 19094127ae2SManish V Badarkhe ~(ARM_DRTM_DLME_IMAGE_AUTH_SUPPORT_MASK << \ 19194127ae2SManish V Badarkhe ARM_DRTM_DLME_IMAGE_AUTH_SUPPORT_SHIFT)) | \ 19294127ae2SManish V Badarkhe (((val) & \ 19394127ae2SManish V Badarkhe ARM_DRTM_DLME_IMAGE_AUTH_SUPPORT_MASK) << \ 19494127ae2SManish V Badarkhe ARM_DRTM_DLME_IMAGE_AUTH_SUPPORT_SHIFT)); \ 19594127ae2SManish V Badarkhe } while (false) 19694127ae2SManish V Badarkhe 1972a1cdee4Sjohpow01 /* Definitions for DRTM address map */ 1982a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_CACHEABILITY_SHIFT U(55) 1992a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_CACHEABILITY_MASK ULL(0x3) 2002a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_CACHEABILITY_NC ULL(0) 2012a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_CACHEABILITY_WC ULL(1) 2022a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_CACHEABILITY_WT ULL(2) 2032a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_CACHEABILITY_WB ULL(3) 2042a1cdee4Sjohpow01 2052a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_REGION_TYPE_SHIFT U(52) 2062a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_REGION_TYPE_MASK ULL(0x7) 2072a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_REGION_TYPE_NORMAL ULL(0) 2082a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_REGION_TYPE_NCAR ULL(1) 2092a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_REGION_TYPE_DEVICE ULL(2) 2102a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_REGION_TYPE_NV ULL(3) 2112a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_REGION_TYPE_RSVD ULL(4) 2122a1cdee4Sjohpow01 2132a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_4K_PAGE_NUM_SHIFT U(0) 2142a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_4K_PAGE_NUM_MASK ULL(0xFFFFFFFFFFFFF) 2152a1cdee4Sjohpow01 2162a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_SET_CACHEABILITY(reg, val) \ 2172a1cdee4Sjohpow01 do { \ 2182a1cdee4Sjohpow01 reg = (((reg) & \ 2192a1cdee4Sjohpow01 ~(ARM_DRTM_REGION_SIZE_TYPE_CACHEABILITY_MASK << \ 2202a1cdee4Sjohpow01 ARM_DRTM_REGION_SIZE_TYPE_CACHEABILITY_SHIFT)) | \ 2212a1cdee4Sjohpow01 (((val) & \ 2222a1cdee4Sjohpow01 ARM_DRTM_REGION_SIZE_TYPE_CACHEABILITY_MASK) << \ 2232a1cdee4Sjohpow01 ARM_DRTM_REGION_SIZE_TYPE_CACHEABILITY_SHIFT)); \ 2242a1cdee4Sjohpow01 } while (false) 2252a1cdee4Sjohpow01 2262a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_SET_REGION_TYPE(reg, val) \ 2272a1cdee4Sjohpow01 do { \ 2282a1cdee4Sjohpow01 reg = (((reg) & \ 2292a1cdee4Sjohpow01 ~(ARM_DRTM_REGION_SIZE_TYPE_REGION_TYPE_MASK << \ 2302a1cdee4Sjohpow01 ARM_DRTM_REGION_SIZE_TYPE_REGION_TYPE_SHIFT)) | \ 2312a1cdee4Sjohpow01 (((val) & ARM_DRTM_REGION_SIZE_TYPE_REGION_TYPE_MASK) \ 2322a1cdee4Sjohpow01 << ARM_DRTM_REGION_SIZE_TYPE_REGION_TYPE_SHIFT)); \ 2332a1cdee4Sjohpow01 } while (false) 2342a1cdee4Sjohpow01 2352a1cdee4Sjohpow01 #define ARM_DRTM_REGION_SIZE_TYPE_SET_4K_PAGE_NUM(reg, val) \ 2362a1cdee4Sjohpow01 do { \ 2372a1cdee4Sjohpow01 reg = (((reg) & \ 2382a1cdee4Sjohpow01 ~(ARM_DRTM_REGION_SIZE_TYPE_4K_PAGE_NUM_MASK << \ 2392a1cdee4Sjohpow01 ARM_DRTM_REGION_SIZE_TYPE_4K_PAGE_NUM_SHIFT)) | \ 2402a1cdee4Sjohpow01 (((val) & ARM_DRTM_REGION_SIZE_TYPE_4K_PAGE_NUM_MASK) \ 2412a1cdee4Sjohpow01 << ARM_DRTM_REGION_SIZE_TYPE_4K_PAGE_NUM_SHIFT)); \ 2422a1cdee4Sjohpow01 } while (false) 2432a1cdee4Sjohpow01 2448666bcfaSManish V Badarkhe #define DRTM_LAUNCH_FEAT_DLME_IMG_AUTH_SHIFT U(6) 2458666bcfaSManish V Badarkhe #define DRTM_LAUNCH_FEAT_MEM_PROTECTION_TYPE_SHIFT U(3) 2468666bcfaSManish V Badarkhe #define DRTM_LAUNCH_FEAT_PCR_USAGE_SCHEMA_SHIFT U(1) 2478666bcfaSManish V Badarkhe #define DRTM_LAUNCH_FEAT_HASHING_TYPE_SHIFT U(0) 2488666bcfaSManish V Badarkhe 249f963578bSBoyan Karatotev #define DRTM_LAUNCH_FEAT_DLME_IMG_AUTH_WIDTH U(1) 250f963578bSBoyan Karatotev #define DRTM_LAUNCH_FEAT_MEM_PROTECTION_TYPE_WIDTH U(3) 251f963578bSBoyan Karatotev #define DRTM_LAUNCH_FEAT_PCR_USAGE_SCHEMA_WIDTH U(2) 252f963578bSBoyan Karatotev #define DRTM_LAUNCH_FEAT_HASHING_TYPE_WIDTH U(1) 2538666bcfaSManish V Badarkhe 2548666bcfaSManish V Badarkhe #define DLME_IMG_AUTH U(0x1) 2558666bcfaSManish V Badarkhe #define REG_MEM_PROTECTION_TYPE U(0x1) 2568666bcfaSManish V Badarkhe #define DLME_AUTH_SCHEMA U(0x1) 2578666bcfaSManish V Badarkhe #define TPM_BASED_HASHING U(0x1) 2588666bcfaSManish V Badarkhe 259e62748e3SManish V Badarkhe /* Initialization routine for the DRTM service */ 260e62748e3SManish V Badarkhe int drtm_setup(void); 261e62748e3SManish V Badarkhe 262e62748e3SManish V Badarkhe /* Handler to be called to handle DRTM SMC calls */ 263e62748e3SManish V Badarkhe uint64_t drtm_smc_handler(uint32_t smc_fid, 264e62748e3SManish V Badarkhe uint64_t x1, 265e62748e3SManish V Badarkhe uint64_t x2, 266e62748e3SManish V Badarkhe uint64_t x3, 267e62748e3SManish V Badarkhe uint64_t x4, 268e62748e3SManish V Badarkhe void *cookie, 269e62748e3SManish V Badarkhe void *handle, 270e62748e3SManish V Badarkhe uint64_t flags); 271e62748e3SManish V Badarkhe 272e62748e3SManish V Badarkhe #endif /* ARM_DRTM_SVC_H */ 273