1*91f16700Schasinglulu /* 2*91f16700Schasinglulu * Copyright (c) 2016-2021, STMicroelectronics - All Rights Reserved 3*91f16700Schasinglulu * 4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu */ 6*91f16700Schasinglulu 7*91f16700Schasinglulu #ifndef STM32MP1_SMC_H 8*91f16700Schasinglulu #define STM32MP1_SMC_H 9*91f16700Schasinglulu 10*91f16700Schasinglulu /* 11*91f16700Schasinglulu * SMC function IDs for STM32 Service queries 12*91f16700Schasinglulu * STM32 SMC services use the space between 0x82000000 and 0x8200FFFF 13*91f16700Schasinglulu * like this is defined in SMC calling Convention by ARM 14*91f16700Schasinglulu * for SiP (silicon Partner) 15*91f16700Schasinglulu * https://developer.arm.com/docs/den0028/latest 16*91f16700Schasinglulu */ 17*91f16700Schasinglulu 18*91f16700Schasinglulu /* Secure Service access from Non-secure */ 19*91f16700Schasinglulu 20*91f16700Schasinglulu /* 21*91f16700Schasinglulu * STM32_SMC_BSEC call API 22*91f16700Schasinglulu * 23*91f16700Schasinglulu * Argument a0: (input) SMCC ID 24*91f16700Schasinglulu * (output) status return code 25*91f16700Schasinglulu * Argument a1: (input) Service ID (STM32_SMC_BSEC_xxx) 26*91f16700Schasinglulu * Argument a2: (input) OTP index 27*91f16700Schasinglulu * (output) OTP read value, if applicable 28*91f16700Schasinglulu * Argument a3: (input) OTP value if applicable 29*91f16700Schasinglulu */ 30*91f16700Schasinglulu #define STM32_SMC_BSEC 0x82001003 31*91f16700Schasinglulu 32*91f16700Schasinglulu /* 33*91f16700Schasinglulu * STM32_SIP_SMC_SCMI_AGENT0 34*91f16700Schasinglulu * STM32_SIP_SMC_SCMI_AGENT1 35*91f16700Schasinglulu * Process SCMI message pending in SCMI shared memory buffer. 36*91f16700Schasinglulu * 37*91f16700Schasinglulu * Argument a0: (input) SMCC ID 38*91f16700Schasinglulu */ 39*91f16700Schasinglulu #define STM32_SIP_SMC_SCMI_AGENT0 0x82002000 40*91f16700Schasinglulu #define STM32_SIP_SMC_SCMI_AGENT1 0x82002001 41*91f16700Schasinglulu 42*91f16700Schasinglulu /* SMC function IDs for SiP Service queries */ 43*91f16700Schasinglulu #define STM32_SIP_SVC_CALL_COUNT 0x8200ff00 44*91f16700Schasinglulu #define STM32_SIP_SVC_UID 0x8200ff01 45*91f16700Schasinglulu /* 0x8200ff02 is reserved */ 46*91f16700Schasinglulu #define STM32_SIP_SVC_VERSION 0x8200ff03 47*91f16700Schasinglulu 48*91f16700Schasinglulu /* STM32 SiP Service Calls version numbers */ 49*91f16700Schasinglulu #define STM32_SIP_SVC_VERSION_MAJOR 0x0 50*91f16700Schasinglulu #define STM32_SIP_SVC_VERSION_MINOR 0x1 51*91f16700Schasinglulu 52*91f16700Schasinglulu /* Number of STM32 SiP Calls implemented */ 53*91f16700Schasinglulu #define STM32_COMMON_SIP_NUM_CALLS 3 54*91f16700Schasinglulu 55*91f16700Schasinglulu /* Service for BSEC */ 56*91f16700Schasinglulu #define STM32_SMC_READ_SHADOW 0x01 57*91f16700Schasinglulu #define STM32_SMC_PROG_OTP 0x02 58*91f16700Schasinglulu #define STM32_SMC_WRITE_SHADOW 0x03 59*91f16700Schasinglulu #define STM32_SMC_READ_OTP 0x04 60*91f16700Schasinglulu 61*91f16700Schasinglulu /* SMC error codes */ 62*91f16700Schasinglulu #define STM32_SMC_OK 0x00000000U 63*91f16700Schasinglulu #define STM32_SMC_NOT_SUPPORTED 0xFFFFFFFFU 64*91f16700Schasinglulu #define STM32_SMC_FAILED 0xFFFFFFFEU 65*91f16700Schasinglulu #define STM32_SMC_INVALID_PARAMS 0xFFFFFFFDU 66*91f16700Schasinglulu 67*91f16700Schasinglulu #endif /* STM32MP1_SMC_H */ 68