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