xref: /rk3399_ARM-atf/plat/intel/soc/common/include/socfpga_sip_svc.h (revision f3083e2e6c508d58f9bce1b2fce5eeb0903a4c6d)
1d25041bfSHadi Asyrafi /*
2fffcb25cSJit Loon Lim  * Copyright (c) 2019-2023, Intel Corporation. All rights reserved.
3d1c58d86SGirisha Dengi  * Copyright (c) 2024-2025, Altera Corporation. All rights reserved.
4d25041bfSHadi Asyrafi  *
5d25041bfSHadi Asyrafi  * SPDX-License-Identifier: BSD-3-Clause
6d25041bfSHadi Asyrafi  */
7d25041bfSHadi Asyrafi 
8d25041bfSHadi Asyrafi #ifndef SOCFPGA_SIP_SVC_H
9d25041bfSHadi Asyrafi #define SOCFPGA_SIP_SVC_H
10d25041bfSHadi Asyrafi 
11d25041bfSHadi Asyrafi 
12d25041bfSHadi Asyrafi /* SiP status response */
13d25041bfSHadi Asyrafi #define INTEL_SIP_SMC_STATUS_OK						0
14d25041bfSHadi Asyrafi #define INTEL_SIP_SMC_STATUS_BUSY					0x1
15d25041bfSHadi Asyrafi #define INTEL_SIP_SMC_STATUS_REJECTED					0x2
164837a640SSieu Mun Tang #define INTEL_SIP_SMC_STATUS_NO_RESPONSE				0x3
17960896ebSAbdul Halim, Muhammad Hadi Asyrafi #define INTEL_SIP_SMC_STATUS_ERROR					0x4
18960896ebSAbdul Halim, Muhammad Hadi Asyrafi #define INTEL_SIP_SMC_RSU_ERROR						0x7
1991239f2cSJit Loon Lim #define INTEL_SIP_SMC_SEU_ERR_READ_ERROR				0x8
20960896ebSAbdul Halim, Muhammad Hadi Asyrafi 
21286b96f4SSieu Mun Tang /* SiP mailbox error code */
22286b96f4SSieu Mun Tang #define GENERIC_RESPONSE_ERROR						0x3FF
23d25041bfSHadi Asyrafi 
24ad47f142SSieu Mun Tang /* SiP V2 command code range */
25ad47f142SSieu Mun Tang #define INTEL_SIP_SMC_CMD_MASK						0xFFFF
26ad47f142SSieu Mun Tang #define INTEL_SIP_SMC_CMD_V2_RANGE_BEGIN				0x400
27ad47f142SSieu Mun Tang #define INTEL_SIP_SMC_CMD_V2_RANGE_END					0x4FF
28ad47f142SSieu Mun Tang 
29204d5e67SSieu Mun Tang /* SiP V3 command code range */
30204d5e67SSieu Mun Tang #define INTEL_SIP_SMC_CMD_V3_RANGE_BEGIN				0x00C8
31204d5e67SSieu Mun Tang #define INTEL_SIP_SMC_CMD_V3_RANGE_END					0x01F4
32204d5e67SSieu Mun Tang 
33c436707bSSieu Mun Tang /* SiP V2 protocol header */
34c436707bSSieu Mun Tang #define INTEL_SIP_SMC_HEADER_JOB_ID_MASK				0xF
35c436707bSSieu Mun Tang #define INTEL_SIP_SMC_HEADER_JOB_ID_OFFSET				0U
36c436707bSSieu Mun Tang #define INTEL_SIP_SMC_HEADER_CID_MASK					0xF
37c436707bSSieu Mun Tang #define INTEL_SIP_SMC_HEADER_CID_OFFSET					4U
38c436707bSSieu Mun Tang #define INTEL_SIP_SMC_HEADER_VERSION_MASK				0xF
39c436707bSSieu Mun Tang #define INTEL_SIP_SMC_HEADER_VERSION_OFFSET				60U
40c436707bSSieu Mun Tang 
41ad47f142SSieu Mun Tang /* SMC SiP service function identifier for version 1 */
42516f3221SAbdul Halim, Muhammad Hadi Asyrafi 
43516f3221SAbdul Halim, Muhammad Hadi Asyrafi /* FPGA Reconfig */
44d25041bfSHadi Asyrafi #define INTEL_SIP_SMC_FPGA_CONFIG_START					0xC2000001
45d25041bfSHadi Asyrafi #define INTEL_SIP_SMC_FPGA_CONFIG_WRITE					0x42000002
46d25041bfSHadi Asyrafi #define INTEL_SIP_SMC_FPGA_CONFIG_COMPLETED_WRITE			0xC2000003
47d25041bfSHadi Asyrafi #define INTEL_SIP_SMC_FPGA_CONFIG_ISDONE				0xC2000004
48d25041bfSHadi Asyrafi #define INTEL_SIP_SMC_FPGA_CONFIG_GET_MEM				0xC2000005
49516f3221SAbdul Halim, Muhammad Hadi Asyrafi 
50276a4366SSieu Mun Tang /* FPGA Bitstream Flag */
51276a4366SSieu Mun Tang #define FLAG_PARTIAL_CONFIG						BIT(0)
52276a4366SSieu Mun Tang #define FLAG_AUTHENTICATION						BIT(1)
53276a4366SSieu Mun Tang #define CONFIG_TEST_FLAG(_flag, _type)					(((flag) & FLAG_##_type) \
54276a4366SSieu Mun Tang 									== FLAG_##_type)
55276a4366SSieu Mun Tang 
56516f3221SAbdul Halim, Muhammad Hadi Asyrafi /* Secure Register Access */
57d25041bfSHadi Asyrafi #define INTEL_SIP_SMC_REG_READ						0xC2000007
58d25041bfSHadi Asyrafi #define INTEL_SIP_SMC_REG_WRITE						0xC2000008
59d25041bfSHadi Asyrafi #define INTEL_SIP_SMC_REG_UPDATE					0xC2000009
60516f3221SAbdul Halim, Muhammad Hadi Asyrafi 
61516f3221SAbdul Halim, Muhammad Hadi Asyrafi /* Remote System Update */
62d25041bfSHadi Asyrafi #define INTEL_SIP_SMC_RSU_STATUS					0xC200000B
63d25041bfSHadi Asyrafi #define INTEL_SIP_SMC_RSU_UPDATE					0xC200000C
64d25041bfSHadi Asyrafi #define INTEL_SIP_SMC_RSU_NOTIFY					0xC200000E
65d25041bfSHadi Asyrafi #define INTEL_SIP_SMC_RSU_RETRY_COUNTER					0xC200000F
66286b96f4SSieu Mun Tang #define INTEL_SIP_SMC_RSU_DCMF_VERSION					0xC2000010
67286b96f4SSieu Mun Tang #define INTEL_SIP_SMC_RSU_COPY_DCMF_VERSION				0xC2000011
684c26957bSChee Hong Ang #define INTEL_SIP_SMC_RSU_MAX_RETRY					0xC2000012
694c26957bSChee Hong Ang #define INTEL_SIP_SMC_RSU_COPY_MAX_RETRY				0xC2000013
70984e236eSSieu Mun Tang #define INTEL_SIP_SMC_RSU_DCMF_STATUS					0xC2000014
71984e236eSSieu Mun Tang #define INTEL_SIP_SMC_RSU_COPY_DCMF_STATUS				0xC2000015
728fb1b484SKah Jing Lee #define INTEL_SIP_SMC_RSU_GET_DEVICE_INFO				0xC2000016
73516f3221SAbdul Halim, Muhammad Hadi Asyrafi 
7452cf9c2cSKris Chaplin /* Hardware monitor */
7552cf9c2cSKris Chaplin #define INTEL_SIP_SMC_HWMON_READTEMP					0xC2000020
7652cf9c2cSKris Chaplin #define INTEL_SIP_SMC_HWMON_READVOLT					0xC2000021
7752cf9c2cSKris Chaplin #define TEMP_CHANNEL_MAX						(1 << 15)
7852cf9c2cSKris Chaplin #define VOLT_CHANNEL_MAX						(1 << 15)
79c703d752SSieu Mun Tang 
80c703d752SSieu Mun Tang /* ECC */
81c703d752SSieu Mun Tang #define INTEL_SIP_SMC_ECC_DBE						0xC200000D
82c703d752SSieu Mun Tang 
8377902fcaSSieu Mun Tang /* Generic Command */
84b703facaSSieu Mun Tang #define INTEL_SIP_SMC_SERVICE_COMPLETED					0xC200001E
85c34b2a7aSAbdul Halim, Muhammad Hadi Asyrafi #define INTEL_SIP_SMC_FIRMWARE_VERSION					0xC200001F
86b7f3044eSAbdul Halim, Muhammad Hadi Asyrafi #define INTEL_SIP_SMC_HPS_SET_BRIDGES					0xC2000032
8758305060SSieu Mun Tang #define INTEL_SIP_SMC_GET_ROM_PATCH_SHA384				0xC2000040
88d25041bfSHadi Asyrafi 
894837a640SSieu Mun Tang #define SERVICE_COMPLETED_MODE_ASYNC					0x00004F4E
904837a640SSieu Mun Tang 
9193a5b97eSSieu Mun Tang /* Mailbox Command */
92b703facaSSieu Mun Tang #define INTEL_SIP_SMC_MBOX_SEND_CMD					0xC200003C
9393a5b97eSSieu Mun Tang #define INTEL_SIP_SMC_GET_USERCODE					0xC200003D
94516f3221SAbdul Halim, Muhammad Hadi Asyrafi 
9502d3ef33SSieu Mun Tang /* FPGA Crypto Services */
964837a640SSieu Mun Tang #define INTEL_SIP_SMC_FCS_RANDOM_NUMBER					0xC200005A
9724f9dc8aSSieu Mun Tang #define INTEL_SIP_SMC_FCS_RANDOM_NUMBER_EXT				0x4200008F
9802d3ef33SSieu Mun Tang #define INTEL_SIP_SMC_FCS_CRYPTION					0x4200005B
99537ff052SSieu Mun Tang #define INTEL_SIP_SMC_FCS_CRYPTION_EXT					0xC2000090
1007e25eb87SSieu Mun Tang #define INTEL_SIP_SMC_FCS_SERVICE_REQUEST				0x4200005C
1014837a640SSieu Mun Tang #define INTEL_SIP_SMC_FCS_SEND_CERTIFICATE				0x4200005D
102b703facaSSieu Mun Tang #define INTEL_SIP_SMC_FCS_GET_PROVISION_DATA				0x4200005E
1037facacecSSieu Mun Tang #define INTEL_SIP_SMC_FCS_CNTR_SET_PREAUTH				0xC200005F
104d1740831SSieu Mun Tang #define INTEL_SIP_SMC_FCS_PSGSIGMA_TEARDOWN				0xC2000064
105d1740831SSieu Mun Tang #define INTEL_SIP_SMC_FCS_CHIP_ID					0xC2000065
106d1740831SSieu Mun Tang #define INTEL_SIP_SMC_FCS_ATTESTATION_SUBKEY				0xC2000066
107d1740831SSieu Mun Tang #define INTEL_SIP_SMC_FCS_ATTESTATION_MEASUREMENTS			0xC2000067
108581182c1SSieu Mun Tang #define INTEL_SIP_SMC_FCS_GET_ATTESTATION_CERT				0xC2000068
109581182c1SSieu Mun Tang #define INTEL_SIP_SMC_FCS_CREATE_CERT_ON_RELOAD				0xC2000069
1106dc00c24SSieu Mun Tang #define INTEL_SIP_SMC_FCS_OPEN_CS_SESSION				0xC200006E
1116dc00c24SSieu Mun Tang #define INTEL_SIP_SMC_FCS_CLOSE_CS_SESSION				0xC200006F
112342a0618SSieu Mun Tang #define INTEL_SIP_SMC_FCS_IMPORT_CS_KEY					0x42000070
113342a0618SSieu Mun Tang #define INTEL_SIP_SMC_FCS_EXPORT_CS_KEY					0xC2000071
114342a0618SSieu Mun Tang #define INTEL_SIP_SMC_FCS_REMOVE_CS_KEY					0xC2000072
115342a0618SSieu Mun Tang #define INTEL_SIP_SMC_FCS_GET_CS_KEY_INFO				0xC2000073
1166726390eSSieu Mun Tang #define INTEL_SIP_SMC_FCS_AES_CRYPT_INIT				0xC2000074
117dcb144f1SSieu Mun Tang #define INTEL_SIP_SMC_FCS_AES_CRYPT_UPDATE				0x42000075
1186726390eSSieu Mun Tang #define INTEL_SIP_SMC_FCS_AES_CRYPT_FINALIZE				0x42000076
1197e8249a2SSieu Mun Tang #define INTEL_SIP_SMC_FCS_GET_DIGEST_INIT				0xC2000077
12070a7e6afSSieu Mun Tang #define INTEL_SIP_SMC_FCS_GET_DIGEST_UPDATE				0xC2000078
1217e8249a2SSieu Mun Tang #define INTEL_SIP_SMC_FCS_GET_DIGEST_FINALIZE				0xC2000079
1224687021dSSieu Mun Tang #define INTEL_SIP_SMC_FCS_GET_DIGEST_SMMU_UPDATE			0x42000091
1234687021dSSieu Mun Tang #define INTEL_SIP_SMC_FCS_GET_DIGEST_SMMU_FINALIZE			0x42000092
124c05ea296SSieu Mun Tang #define INTEL_SIP_SMC_FCS_MAC_VERIFY_INIT				0xC200007A
12570a7e6afSSieu Mun Tang #define INTEL_SIP_SMC_FCS_MAC_VERIFY_UPDATE				0xC200007B
126c05ea296SSieu Mun Tang #define INTEL_SIP_SMC_FCS_MAC_VERIFY_FINALIZE				0xC200007C
1274687021dSSieu Mun Tang #define INTEL_SIP_SMC_FCS_MAC_VERIFY_SMMU_UPDATE			0x42000093
1284687021dSSieu Mun Tang #define INTEL_SIP_SMC_FCS_MAC_VERIFY_SMMU_FINALIZE			0x42000094
12969254105SSieu Mun Tang #define INTEL_SIP_SMC_FCS_ECDSA_HASH_SIGN_INIT				0xC200007D
13069254105SSieu Mun Tang #define INTEL_SIP_SMC_FCS_ECDSA_HASH_SIGN_FINALIZE			0xC200007F
13107912da1SSieu Mun Tang #define INTEL_SIP_SMC_FCS_ECDSA_SHA2_DATA_SIGN_INIT			0xC2000080
1321d97dd74SSieu Mun Tang #define INTEL_SIP_SMC_FCS_ECDSA_SHA2_DATA_SIGN_UPDATE			0xC2000081
13307912da1SSieu Mun Tang #define INTEL_SIP_SMC_FCS_ECDSA_SHA2_DATA_SIGN_FINALIZE			0xC2000082
1344687021dSSieu Mun Tang #define INTEL_SIP_SMC_FCS_ECDSA_SHA2_DATA_SIGN_SMMU_UPDATE		0x42000095
1354687021dSSieu Mun Tang #define INTEL_SIP_SMC_FCS_ECDSA_SHA2_DATA_SIGN_SMMU_FINALIZE		0x42000096
1367e25eb87SSieu Mun Tang #define INTEL_SIP_SMC_FCS_ECDSA_HASH_SIG_VERIFY_INIT			0xC2000083
1377e25eb87SSieu Mun Tang #define INTEL_SIP_SMC_FCS_ECDSA_HASH_SIG_VERIFY_FINALIZE		0xC2000085
13858305060SSieu Mun Tang #define INTEL_SIP_SMC_FCS_ECDSA_SHA2_DATA_SIG_VERIFY_INIT		0xC2000086
1391d97dd74SSieu Mun Tang #define INTEL_SIP_SMC_FCS_ECDSA_SHA2_DATA_SIG_VERIFY_UPDATE		0xC2000087
14058305060SSieu Mun Tang #define INTEL_SIP_SMC_FCS_ECDSA_SHA2_DATA_SIG_VERIFY_FINALIZE		0xC2000088
1414687021dSSieu Mun Tang #define INTEL_SIP_SMC_FCS_ECDSA_SHA2_DATA_SIG_VERIFY_SMMU_UPDATE	0x42000097
1424687021dSSieu Mun Tang #define INTEL_SIP_SMC_FCS_ECDSA_SHA2_DATA_SIG_VERIFY_SMMU_FINALIZE	0x42000098
143d2fee94aSSieu Mun Tang #define INTEL_SIP_SMC_FCS_ECDSA_GET_PUBKEY_INIT				0xC2000089
144d2fee94aSSieu Mun Tang #define INTEL_SIP_SMC_FCS_ECDSA_GET_PUBKEY_FINALIZE			0xC200008B
14549446866SSieu Mun Tang #define INTEL_SIP_SMC_FCS_ECDH_REQUEST_INIT				0xC200008C
14649446866SSieu Mun Tang #define INTEL_SIP_SMC_FCS_ECDH_REQUEST_FINALIZE				0xC200008E
147ea906b9bSSieu Mun Tang #define INTEL_SIP_SMC_FCS_SDM_REMAPPER_CONFIG				0xC2000201
148516f3221SAbdul Halim, Muhammad Hadi Asyrafi 
14991239f2cSJit Loon Lim /* SEU ERR */
15091239f2cSJit Loon Lim #define INTEL_SIP_SMC_SEU_ERR_STATUS					0xC2000099
151fffcb25cSJit Loon Lim #define INTEL_SIP_SMC_SAFE_INJECT_SEU_ERR				0xC200009A
15291239f2cSJit Loon Lim 
153d1c58d86SGirisha Dengi /* ATF build version */
154d1c58d86SGirisha Dengi #define INTEL_SIP_SMC_ATF_BUILD_VER					0xC200009B
155d1c58d86SGirisha Dengi 
156bdcd41ddSRabara, Niravkumar L /* IO96B ECC Error Injection */
157bdcd41ddSRabara, Niravkumar L #define INTEL_SIP_SMC_INJECT_IO96B_ECC_ERR				0xC200009C
158bdcd41ddSRabara, Niravkumar L 
1597e8249a2SSieu Mun Tang #define INTEL_SIP_SMC_FCS_SHA_MODE_MASK					0xF
1607e8249a2SSieu Mun Tang #define INTEL_SIP_SMC_FCS_DIGEST_SIZE_MASK				0xF
1617e8249a2SSieu Mun Tang #define INTEL_SIP_SMC_FCS_DIGEST_SIZE_OFFSET				4U
162d2fee94aSSieu Mun Tang #define INTEL_SIP_SMC_FCS_ECC_ALGO_MASK					0xF
16358305060SSieu Mun Tang 
164c703d752SSieu Mun Tang /* ECC DBE */
165c703d752SSieu Mun Tang #define WARM_RESET_WFI_FLAG						BIT(31)
166c703d752SSieu Mun Tang #define SYSMGR_ECC_DBE_COLD_RST_MASK					(SYSMGR_ECC_OCRAM_MASK |\
167c703d752SSieu Mun Tang 									SYSMGR_ECC_DDR0_MASK |\
168c703d752SSieu Mun Tang 									SYSMGR_ECC_DDR1_MASK)
169bdcd41ddSRabara, Niravkumar L #define IOSSM_ECC_ERR_INJ_DELAY_USECS					(40U)
170bdcd41ddSRabara, Niravkumar L #define IOSSM_CMD_STATUS_RESP_READY					BIT(0)
171c703d752SSieu Mun Tang 
172f0c40b89SSieu Mun Tang /* Non-mailbox SMC Call */
173f0c40b89SSieu Mun Tang #define INTEL_SIP_SMC_SVC_VERSION					0xC2000200
174f0c40b89SSieu Mun Tang 
175ad47f142SSieu Mun Tang /**
176ad47f142SSieu Mun Tang  * SMC SiP service function identifier for version 2
177ad47f142SSieu Mun Tang  * Command code from 0x400 ~ 0x4FF
178ad47f142SSieu Mun Tang  */
179ad47f142SSieu Mun Tang 
180ad47f142SSieu Mun Tang /* V2: Non-mailbox function identifier */
181ad47f142SSieu Mun Tang #define INTEL_SIP_SMC_V2_GET_SVC_VERSION				0xC2000400
182ad47f142SSieu Mun Tang #define INTEL_SIP_SMC_V2_REG_READ					0xC2000401
183ad47f142SSieu Mun Tang #define INTEL_SIP_SMC_V2_REG_WRITE					0xC2000402
184ad47f142SSieu Mun Tang #define INTEL_SIP_SMC_V2_REG_UPDATE					0xC2000403
185ad47f142SSieu Mun Tang #define INTEL_SIP_SMC_V2_HPS_SET_BRIDGES				0xC2000404
186e3c3a48cSMahesh Rao #define INTEL_SIP_SMC_V2_RSU_UPDATE_ADDR				0xC2000405
187ad47f142SSieu Mun Tang 
188c436707bSSieu Mun Tang /* V2: Mailbox function identifier */
189c436707bSSieu Mun Tang #define INTEL_SIP_SMC_V2_MAILBOX_SEND_COMMAND				0xC2000420
190c436707bSSieu Mun Tang #define INTEL_SIP_SMC_V2_MAILBOX_POLL_RESPONSE				0xC2000421
191c436707bSSieu Mun Tang 
192d25041bfSHadi Asyrafi /* SMC function IDs for SiP Service queries */
193d25041bfSHadi Asyrafi #define SIP_SVC_CALL_COUNT						0x8200ff00
194d25041bfSHadi Asyrafi #define SIP_SVC_UID							0x8200ff01
195d25041bfSHadi Asyrafi #define SIP_SVC_VERSION							0x8200ff03
196d25041bfSHadi Asyrafi 
197d25041bfSHadi Asyrafi /* SiP Service Calls version numbers */
1984687021dSSieu Mun Tang /*
1994687021dSSieu Mun Tang  * Increase if there is any backward compatibility impact
2004687021dSSieu Mun Tang  */
201204d5e67SSieu Mun Tang #define SIP_SVC_VERSION_MAJOR						3
2024687021dSSieu Mun Tang /*
2034687021dSSieu Mun Tang  * Increase if there is new SMC function ID being added
2044687021dSSieu Mun Tang  */
205597fff5fSGirisha Dengi #define SIP_SVC_VERSION_MINOR						1
206d25041bfSHadi Asyrafi 
207aad868b4SAbdul Halim, Muhammad Hadi Asyrafi 
208aad868b4SAbdul Halim, Muhammad Hadi Asyrafi /* Structure Definitions */
209aad868b4SAbdul Halim, Muhammad Hadi Asyrafi struct fpga_config_info {
210aad868b4SAbdul Halim, Muhammad Hadi Asyrafi 	uint32_t addr;
211aad868b4SAbdul Halim, Muhammad Hadi Asyrafi 	int size;
212aad868b4SAbdul Halim, Muhammad Hadi Asyrafi 	int size_written;
213aad868b4SAbdul Halim, Muhammad Hadi Asyrafi 	uint32_t write_requested;
214aad868b4SAbdul Halim, Muhammad Hadi Asyrafi 	int subblocks_sent;
215aad868b4SAbdul Halim, Muhammad Hadi Asyrafi 	int block_number;
216aad868b4SAbdul Halim, Muhammad Hadi Asyrafi };
217aad868b4SAbdul Halim, Muhammad Hadi Asyrafi 
218673afd6fSSieu Mun Tang typedef enum {
219673afd6fSSieu Mun Tang 	NO_REQUEST = 0,
220673afd6fSSieu Mun Tang 	RECONFIGURATION,
221673afd6fSSieu Mun Tang 	BITSTREAM_AUTH
222673afd6fSSieu Mun Tang } config_type;
223673afd6fSSieu Mun Tang 
224aad868b4SAbdul Halim, Muhammad Hadi Asyrafi /* Function Definitions */
225aad868b4SAbdul Halim, Muhammad Hadi Asyrafi bool is_address_in_ddr_range(uint64_t addr, uint64_t size);
226aad868b4SAbdul Halim, Muhammad Hadi Asyrafi 
227c703d752SSieu Mun Tang /* ECC DBE */
228c703d752SSieu Mun Tang bool cold_reset_for_ecc_dbe(void);
229c703d752SSieu Mun Tang uint32_t intel_ecc_dbe_notification(uint64_t dbe_value);
230c703d752SSieu Mun Tang 
231ad47f142SSieu Mun Tang /* Secure register access */
232ad47f142SSieu Mun Tang uint32_t intel_secure_reg_read(uint64_t reg_addr, uint32_t *retval);
233ad47f142SSieu Mun Tang uint32_t intel_secure_reg_write(uint64_t reg_addr, uint32_t val,
234ad47f142SSieu Mun Tang 				uint32_t *retval);
235ad47f142SSieu Mun Tang uint32_t intel_secure_reg_update(uint64_t reg_addr, uint32_t mask,
236ad47f142SSieu Mun Tang 				 uint32_t val, uint32_t *retval);
237ad47f142SSieu Mun Tang 
238e3c3a48cSMahesh Rao /* Set RSU update address*/
239e3c3a48cSMahesh Rao uint32_t intel_rsu_update(uint64_t update_address);
240e3c3a48cSMahesh Rao 
24111f4f030SSieu Mun Tang /* Miscellaneous HPS services */
24211f4f030SSieu Mun Tang uint32_t intel_hps_set_bridges(uint64_t enable, uint64_t mask);
24311f4f030SSieu Mun Tang 
244ad47f142SSieu Mun Tang /* SiP Service handler for version 2 */
245ad47f142SSieu Mun Tang uintptr_t sip_smc_handler_v2(uint32_t smc_fid,
246ad47f142SSieu Mun Tang 			 u_register_t x1,
247ad47f142SSieu Mun Tang 			 u_register_t x2,
248ad47f142SSieu Mun Tang 			 u_register_t x3,
249ad47f142SSieu Mun Tang 			 u_register_t x4,
250ad47f142SSieu Mun Tang 			 void *cookie,
251ad47f142SSieu Mun Tang 			 void *handle,
252ad47f142SSieu Mun Tang 			 u_register_t flags);
253ad47f142SSieu Mun Tang 
254204d5e67SSieu Mun Tang 
255204d5e67SSieu Mun Tang #if SIP_SVC_V3
256204d5e67SSieu Mun Tang #define SMC_RET_ARGS_ONE							(1)
257204d5e67SSieu Mun Tang #define SMC_RET_ARGS_TWO							(2)
258204d5e67SSieu Mun Tang #define SMC_RET_ARGS_THREE							(3)
259204d5e67SSieu Mun Tang #define SMC_RET_ARGS_FOUR							(4)
260204d5e67SSieu Mun Tang #define SMC_RET_ARGS_FIVE							(5)
261204d5e67SSieu Mun Tang #define SMC_RET_ARGS_SIX							(6)
262cdab4018SGirisha Dengi #define SMC_RET_ARGS_SEVEN							(7)
263cdab4018SGirisha Dengi #define SMC_RET_ARGS_EIGHT							(8)
264cdab4018SGirisha Dengi #define SMC_RET_ARGS_NINE							(9)
265cdab4018SGirisha Dengi #define SMC_RET_ARGS_TEN							(10)
266204d5e67SSieu Mun Tang 
267cbb62e01SGirisha Dengi #define MBOX_GEN_CMD_MAX_WORDS							(0x1000)
268cbb62e01SGirisha Dengi 
269204d5e67SSieu Mun Tang /*
270204d5e67SSieu Mun Tang  * SiP SVC Version3 SMC Functions IDs
271204d5e67SSieu Mun Tang  */
272204d5e67SSieu Mun Tang 
273204d5e67SSieu Mun Tang /* Generic response POLL commands */
274204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_RESP_POLL						(0x420000C8)
275204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_RESP_POLL_ON_INTR					(0x420000C9)
276204d5e67SSieu Mun Tang 
277597fff5fSGirisha Dengi /* QSPI related commands */
278597fff5fSGirisha Dengi #define ALTERA_SIP_SMC_ASYNC_QSPI_OPEN						(0x420000CC)
279597fff5fSGirisha Dengi #define ALTERA_SIP_SMC_ASYNC_QSPI_CLOSE						(0x420000CD)
280597fff5fSGirisha Dengi #define ALTERA_SIP_SMC_ASYNC_QSPI_SET_CS					(0x420000CE)
281597fff5fSGirisha Dengi #define ALTERA_SIP_SMC_ASYNC_QSPI_ERASE						(0x420000CF)
282597fff5fSGirisha Dengi #define ALTERA_SIP_SMC_ASYNC_QSPI_WRITE						(0x420000D0)
283597fff5fSGirisha Dengi #define ALTERA_SIP_SMC_ASYNC_QSPI_READ						(0x420000D1)
284597fff5fSGirisha Dengi #define ALTERA_SIP_SMC_ASYNC_GET_DEVICE_IDENTITY				(0x420000D2)
285597fff5fSGirisha Dengi #define ALTERA_SIP_SMC_ASYNC_GET_IDCODE						(0x420000D3)
286597fff5fSGirisha Dengi #define ALTERA_SIP_SMC_ASYNC_QSPI_GET_DEV_INFO					(0x420000D4)
287597fff5fSGirisha Dengi 
288204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_HWMON_READTEMP					(0x420000E8)
289204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_HWMON_READVOLT					(0x420000E9)
290204d5e67SSieu Mun Tang 
291*b85b49e4SGirisha Dengi /* RSU related commands */
292*b85b49e4SGirisha Dengi #define ALTERA_SIP_SMC_ASYNC_RSU_GET_SPT					(0x420000EA)
293*b85b49e4SGirisha Dengi #define ALTERA_SIP_SMC_ASYNC_RSU_GET_STATUS					(0x420000EB)
294*b85b49e4SGirisha Dengi #define ALTERA_SIP_SMC_ASYNC_RSU_NOTIFY						(0x420000EC)
295*b85b49e4SGirisha Dengi 
296cbb62e01SGirisha Dengi /* V3 Generic mailbox command. */
297cbb62e01SGirisha Dengi #define ALTERA_SIP_SMC_ASYNC_GEN_MBOX_CMD					(0x420000EE)
298cbb62e01SGirisha Dengi 
299204d5e67SSieu Mun Tang /* FCS crypto service VAB/SDOS commands */
300204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_RANDOM_NUMBER					(0x4200012C)
301204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_RANDOM_NUMBER_EXT				(0x4200012D)
302204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_CRYPTION					(0x4200012E)
303204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_CRYPTION_EXT					(0x4200012F)
304204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_SERVICE_REQUEST				(0x42000130)
305204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_SEND_CERTIFICATE				(0x42000131)
306204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_GET_PROVISION_DATA				(0x42000132)
307204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_CNTR_SET_PREAUTH				(0x42000133)
308204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_PSGSIGMA_TEARDOWN				(0x42000134)
309204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_CHIP_ID					(0x42000135)
310204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_ATTESTATION_SUBKEY				(0x42000136)
311204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_ATTESTATION_MEASUREMENTS			(0x42000137)
312204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_GET_ATTESTATION_CERT				(0x42000138)
313204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_CREATE_CERT_ON_RELOAD				(0x42000139)
314204d5e67SSieu Mun Tang 
315204d5e67SSieu Mun Tang /* FCS crypto service session management commands */
316204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_OPEN_CS_SESSION				(0x4200013A)
317204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_CLOSE_CS_SESSION				(0x4200013B)
318204d5e67SSieu Mun Tang 
319204d5e67SSieu Mun Tang /* FCS crypto service key management commands */
320204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_IMPORT_CS_KEY					(0x4200013C)
321204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_EXPORT_CS_KEY					(0x4200013D)
322204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_REMOVE_CS_KEY					(0x4200013E)
323204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_GET_CS_KEY_INFO				(0x4200013F)
324204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_CREATE_CS_KEY					(0x42000167)
325204d5e67SSieu Mun Tang 
326204d5e67SSieu Mun Tang /* FCS crypto service primitive commands */
327204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_AES_CRYPT_INIT					(0x42000140)
328204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_AES_CRYPT_UPDATE				(0x42000141)
329204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_AES_CRYPT_FINALIZE				(0x42000142)
330204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_GET_DIGEST_INIT				(0x42000143)
331204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_GET_DIGEST_UPDATE				(0x42000144)
332204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_GET_DIGEST_FINALIZE				(0x42000145)
333204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_GET_DIGEST_SMMU_UPDATE				(0x42000146)
334204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_GET_DIGEST_SMMU_FINALIZE			(0x42000147)
335204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_MAC_VERIFY_INIT				(0x42000148)
336204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_MAC_VERIFY_UPDATE				(0x42000149)
337204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_MAC_VERIFY_FINALIZE				(0x4200014A)
338204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_MAC_VERIFY_SMMU_UPDATE				(0x4200014B)
339204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_MAC_VERIFY_SMMU_FINALIZE			(0x4200014C)
340204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_ECDSA_HASH_SIGN_INIT				(0x4200014D)
341204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_ECDSA_HASH_SIGN_FINALIZE			(0x4200014E)
342204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_ECDSA_SHA2_DATA_SIGN_INIT			(0x4200014F)
343204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_ECDSA_SHA2_DATA_SIGN_UPDATE			(0x42000150)
344204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_ECDSA_SHA2_DATA_SIGN_FINALIZE			(0x42000151)
345204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_ECDSA_SHA2_DATA_SIGN_SMMU_UPDATE		(0x42000152)
346204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_ECDSA_SHA2_DATA_SIGN_SMMU_FINALIZE		(0x42000153)
347204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_ECDSA_HASH_SIG_VERIFY_INIT			(0x42000154)
348204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_ECDSA_HASH_SIG_VERIFY_FINALIZE			(0x42000155)
349204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_ECDSA_SHA2_DATA_SIG_VERIFY_INIT		(0x42000156)
350204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_ECDSA_SHA2_DATA_SIG_VERIFY_UPDATE		(0x42000157)
351204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_ECDSA_SHA2_DATA_SIG_VERIFY_FINALIZE		(0x42000158)
352204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_ECDSA_SHA2_DATA_SIG_VERIFY_SMMU_UPDATE		(0x42000159)
353204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_ECDSA_SHA2_DATA_SIG_VERIFY_SMMU_FINALIZE	(0x4200015A)
354204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_ECDSA_GET_PUBKEY_INIT				(0x42000160)
355204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_ECDSA_GET_PUBKEY_FINALIZE			(0x42000161)
356204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_ECDH_REQUEST_INIT				(0x42000162)
357204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_ECDH_REQUEST_FINALIZE				(0x42000163)
358204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_SDM_REMAPPER_CONFIG				(0x42000164)
359597fff5fSGirisha Dengi #define ALTERA_SIP_SMC_ASYNC_MCTP_MSG						(0x42000165)
360204d5e67SSieu Mun Tang #define ALTERA_SIP_SMC_ASYNC_FCS_HKDF_REQUEST					(0x42000166)
361597fff5fSGirisha Dengi #define ALTERA_SIP_SMC_ASYNC_FCS_CREATE_CS_KEY					(0x42000167)
362204d5e67SSieu Mun Tang 
363204d5e67SSieu Mun Tang #define GET_CLIENT_ID(x)							(((x) & 0xF0) >> 4)
364204d5e67SSieu Mun Tang #define GET_JOB_ID(x)								((x) & 0x0F)
365*b85b49e4SGirisha Dengi #define GET_ADDR64(high, low)							(((uint64_t)(high) \
366*b85b49e4SGirisha Dengi 										   << 32) | (low))
367204d5e67SSieu Mun Tang #endif	/* SIP_SVC_V3 */
368204d5e67SSieu Mun Tang 
369d25041bfSHadi Asyrafi #endif /* SOCFPGA_SIP_SVC_H */
370