xref: /rk3399_ARM-atf/include/services/drtm_svc.h (revision 08eb4aa0011b12dcb0bb0bf1068aa6d4a35af7b4)
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