/* SPDX-License-Identifier: GPL-2.0 */ /* * Copyright (C) 2019 MediaTek Inc. */ #ifndef __MTK_SIP_SVC_H #define __MTK_SIP_SVC_H /* Error Code */ #define SIP_SVC_E_SUCCESS 0 #define SIP_SVC_E_NOT_SUPPORTED -1 #define SIP_SVC_E_INVALID_PARAMS -2 #define SIP_SVC_E_INVALID_RANGE -3 #define SIP_SVC_E_PERMISSION_DENIED -4 #ifdef CONFIG_ARM64 #define MTK_SIP_SMC_CONVENTION ARM_SMCCC_SMC_64 #else #define MTK_SIP_SMC_CONVENTION ARM_SMCCC_SMC_32 #endif #ifdef CONFIG_ARM64 #define MTK_SIP_SMC_AARCH_BIT 0x40000000 #else #define MTK_SIP_SMC_AARCH_BIT 0x00000000 #endif #define MTK_SIP_SMC_CMD(fn_id) \ ARM_SMCCC_CALL_VAL(ARM_SMCCC_FAST_CALL, MTK_SIP_SMC_CONVENTION, \ ARM_SMCCC_OWNER_SIP, fn_id) /* 0x82000200 - 0x820003FF & 0xC2000300 - 0xC20003FF */ /* Debug feature and ATF related */ #define MTK_SIP_KERNEL_WDT \ MTK_SIP_SMC_CMD(0x200) #define MTK_SIP_KERNEL_GIC_DUMP \ MTK_SIP_SMC_CMD(0x201) #define MTK_SIP_KERNEL_TIME_SYNC \ MTK_SIP_SMC_CMD(0x202) #define MTK_SIP_KERNEL_ATF_DEBUG \ MTK_SIP_SMC_CMD(0x204) #define MTK_SIP_KERNEL_DFD \ MTK_SIP_SMC_CMD(0x205) /* CCCI debug feature */ #define MTK_SIP_KERNEL_CCCI_GET_INFO \ MTK_SIP_SMC_CMD(0x206) /* SPM related SMC call */ #define MTK_SIP_KERNEL_SPM_SUSPEND_ARGS \ MTK_SIP_SMC_CMD(0x220) #define MTK_SIP_KERNEL_SPM_FIRMWARE_STATUS \ MTK_SIP_SMC_CMD(0x221) #define MTK_SIP_KERNEL_SPM_IRQ0_HANDLER \ MTK_SIP_SMC_CMD(0x222) #define MTK_SIP_KERNEL_SPM_AP_MDSRC_REQ \ MTK_SIP_SMC_CMD(0x223) #define MTK_SIP_KERNEL_SPM_PWR_CTRL_ARGS \ MTK_SIP_SMC_CMD(0x224) #define MTK_SIP_KERNEL_SPM_LEGACY_SLEEP \ MTK_SIP_SMC_CMD(0x225) #define MTK_SIP_KERNEL_SPM_VCOREFS_ARGS \ MTK_SIP_SMC_CMD(0x226) /* SPM deepidle related SMC call */ #define MTK_SIP_KERNEL_SPM_DPIDLE_ARGS \ MTK_SIP_SMC_CMD(0x227) /* SPM SODI related SMC call */ #define MTK_SIP_KERNEL_SPM_SODI_ARGS \ MTK_SIP_SMC_CMD(0x228) /* SPM sleep deepidle related SMC call */ #define MTK_SIP_KERNEL_SPM_SLEEP_DPIDLE_ARGS \ MTK_SIP_SMC_CMD(0x229) /* SPM ARGS */ #define MTK_SIP_KERNEL_SPM_ARGS \ MTK_SIP_SMC_CMD(0x22A) /* SPM get pwr_ctrl args */ #define MTK_SIP_KERNEL_SPM_GET_PWR_CTRL_ARGS \ MTK_SIP_SMC_CMD(0x22B) /* SPM Check security CG (for deepidle/SODI) */ #define MTK_SIP_KERNEL_CHECK_SECURE_CG \ MTK_SIP_SMC_CMD(0x22D) /* SCP DVFS */ #define MTK_SIP_KERNEL_SCP_DVFS_CTRL \ MTK_SIP_SMC_CMD(0x232) /* AMMS related SMC call */ #define MTK_SIP_KERNEL_AMMS_GET_FREE_ADDR \ MTK_SIP_SMC_CMD(0x250) #define MTK_SIP_KERNEL_AMMS_GET_FREE_LENGTH \ MTK_SIP_SMC_CMD(0x251) #define MTK_SIP_KERNEL_AMMS_GET_PENDING \ MTK_SIP_SMC_CMD(0x252) #define MTK_SIP_KERNEL_AMMS_ACK_PENDING \ MTK_SIP_SMC_CMD(0x253) #define MTK_SIP_KERNEL_AMMS_MD_POS_ADDR \ MTK_SIP_SMC_CMD(0x254) #define MTK_SIP_KERNEL_AMMS_MD_POS_LENGTH \ MTK_SIP_SMC_CMD(0x255) #define MTK_SIP_KERNEL_AMMS_GET_MD_POS_ADDR \ MTK_SIP_SMC_CMD(0x256) #define MTK_SIP_KERNEL_AMMS_GET_MD_POS_LENGTH \ MTK_SIP_SMC_CMD(0x257) #define MTK_SIP_KERNEL_AMMS_GET_SEQ_ID \ MTK_SIP_SMC_CMD(0x258) /* Security related SMC call */ /* DEVMPU */ #define MTK_SIP_KERNEL_DEVMPU_VIO_GET \ MTK_SIP_SMC_CMD(0x264) #define MTK_SIP_KERNEL_DEVMPU_PERM_GET \ MTK_SIP_SMC_CMD(0x265) #define MTK_SIP_KERNEL_DEVMPU_VIO_CLR \ MTK_SIP_SMC_CMD(0x268) /* TRNG */ #define MTK_SIP_KERNEL_GET_RND \ MTK_SIP_SMC_CMD(0x26A) /* DEVAPC */ #define MTK_SIP_KERNEL_DAPC_PERM_GET \ MTK_SIP_SMC_CMD(0x26B) #define MTK_SIP_KERNEL_CLR_SRAMROM_VIO \ MTK_SIP_SMC_CMD(0x26C) #define MTK_SIP_KERNEL_DAPC_DUMP \ MTK_SIP_SMC_CMD(0x26D) /* eMMC related SMC call */ #define MTK_SIP_KERNEL_HW_FDE_KEY \ MTK_SIP_SMC_CMD(0x272) #define MTK_SIP_KERNEL_HW_FDE_MSDC_CTL \ MTK_SIP_SMC_CMD(0x273) /* UFS related SMC call */ #define MTK_SIP_UFS_CONTROL \ MTK_SIP_SMC_CMD(0x276) /* I2C related SMC call */ #define MTK_SIP_I2C_CONTROL \ MTK_SIP_SMC_CMD(0x2A0) /* M4U related SMC call */ #define MTK_M4U_DEBUG_DUMP \ MTK_SIP_SMC_CMD(0x2B0) /* Debug related SMC call */ #define MTK_SIP_KERNEL_CCCI_CONTROL \ MTK_SIP_SMC_CMD(0x505) /* VCOREFS */ #define MTK_SIP_VCOREFS_CONTROL \ MTK_SIP_SMC_CMD(0x506) /* MTK LPM */ #define MTK_SIP_MTK_LPM_CONTROL \ MTK_SIP_SMC_CMD(0x507) /* EMIMPU */ #define MTK_SIP_EMIMPU_CONTROL \ MTK_SIP_SMC_CMD(0x50B) #define MTK_SIP_KERNEL_EMIMPU_WRITE \ MTK_SIP_SMC_CMD(0x260) #define MTK_SIP_KERNEL_EMIMPU_READ \ MTK_SIP_SMC_CMD(0x261) #define MTK_SIP_KERNEL_EMIMPU_SET \ MTK_SIP_SMC_CMD(0x262) #define MTK_SIP_KERNEL_EMIMPU_CLEAR \ MTK_SIP_SMC_CMD(0x263) /* TEEs related SMC call */ #define MTK_SIP_KERNEL_TEE_CONTROL \ MTK_SIP_SMC_CMD(0x516) /* AUDIO related SMC call */ #define MTK_SIP_AUDIO_CONTROL \ MTK_SIP_SMC_CMD(0x517) /* VPU */ #define MTK_SIP_APUSYS_CONTROL \ MTK_SIP_SMC_CMD(0x51E) /* TMEM */ #define MTK_SIP_KERNEL_TMEM_CONTROL \ MTK_SIP_SMC_CMD(0x524) /* APU VCORE CG control related SMC call */ #define MTK_SIP_KERNEL_APU_VCORE_CG_CTL \ MTK_SIP_SMC_CMD(0x2B1) /* USB related SMC call */ #define MTK_SIP_KERNEL_USB_CONTROL \ MTK_SIP_SMC_CMD(0x527) /* SDA */ #define MTK_SIP_SDA_CONTROL \ (0x82000525 | MTK_SIP_SMC_AARCH_BIT) /* Clock Buffer */ #define MTK_SIP_CLKBUF_CONTROL \ (0x82000520 | MTK_SIP_SMC_AARCH_BIT) #endif