18aa05055SPaul BeesleyArm SiP Services 28aa05055SPaul Beesley================ 340d553cfSPaul Beesley 440d553cfSPaul BeesleyThis document enumerates and describes the Arm SiP (Silicon Provider) services. 540d553cfSPaul Beesley 640d553cfSPaul BeesleySiP services are non-standard, platform-specific services offered by the silicon 740d553cfSPaul Beesleyimplementer or platform provider. They are accessed via ``SMC`` ("SMC calls") 840d553cfSPaul Beesleyinstruction executed from Exception Levels below EL3. SMC calls for SiP 940d553cfSPaul Beesleyservices: 1040d553cfSPaul Beesley 1140d553cfSPaul Beesley- Follow `SMC Calling Convention`_; 1240d553cfSPaul Beesley- Use SMC function IDs that fall in the SiP range, which are ``0xc2000000`` - 1340d553cfSPaul Beesley ``0xc200ffff`` for 64-bit calls, and ``0x82000000`` - ``0x8200ffff`` for 32-bit 1440d553cfSPaul Beesley calls. 1540d553cfSPaul Beesley 1640d553cfSPaul BeesleyThe Arm SiP implementation offers the following services: 1740d553cfSPaul Beesley 1840d553cfSPaul Beesley- Performance Measurement Framework (PMF) 1940d553cfSPaul Beesley- Execution State Switching service 20992f091bSAmbroise Vincent- DebugFS interface 2140d553cfSPaul Beesley 2240d553cfSPaul BeesleySource definitions for Arm SiP service are located in the ``arm_sip_svc.h`` header 2340d553cfSPaul Beesleyfile. 2440d553cfSPaul Beesley 2540d553cfSPaul BeesleyPerformance Measurement Framework (PMF) 2640d553cfSPaul Beesley--------------------------------------- 2740d553cfSPaul Beesley 2834760951SPaul BeesleyThe :ref:`Performance Measurement Framework <firmware_design_pmf>` 2940d553cfSPaul Beesleyallows callers to retrieve timestamps captured at various paths in TF-A 3034760951SPaul Beesleyexecution. 3140d553cfSPaul Beesley 3240d553cfSPaul BeesleyExecution State Switching service 3340d553cfSPaul Beesley--------------------------------- 3440d553cfSPaul Beesley 3540d553cfSPaul BeesleyExecution State Switching service provides a mechanism for a non-secure lower 3640d553cfSPaul BeesleyException Level (either EL2, or NS EL1 if EL2 isn't implemented) to request to 3740d553cfSPaul Beesleyswitch its execution state (a.k.a. Register Width), either from AArch64 to 3840d553cfSPaul BeesleyAArch32, or from AArch32 to AArch64, for the calling CPU. This service is only 3940d553cfSPaul Beesleyavailable when Trusted Firmware-A (TF-A) is built for AArch64 (i.e. when build 4040d553cfSPaul Beesleyoption ``ARCH`` is set to ``aarch64``). 4140d553cfSPaul Beesley 4240d553cfSPaul Beesley``ARM_SIP_SVC_EXE_STATE_SWITCH`` 4340d553cfSPaul Beesley~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4440d553cfSPaul Beesley 4540d553cfSPaul Beesley:: 4640d553cfSPaul Beesley 4740d553cfSPaul Beesley Arguments: 4840d553cfSPaul Beesley uint32_t Function ID 4940d553cfSPaul Beesley uint32_t PC hi 5040d553cfSPaul Beesley uint32_t PC lo 5140d553cfSPaul Beesley uint32_t Cookie hi 5240d553cfSPaul Beesley uint32_t Cookie lo 5340d553cfSPaul Beesley 5440d553cfSPaul Beesley Return: 5540d553cfSPaul Beesley uint32_t 5640d553cfSPaul Beesley 5740d553cfSPaul BeesleyThe function ID parameter must be ``0x82000020``. It uniquely identifies the 5840d553cfSPaul BeesleyExecution State Switching service being requested. 5940d553cfSPaul Beesley 6040d553cfSPaul BeesleyThe parameters *PC hi* and *PC lo* defines upper and lower words, respectively, 6140d553cfSPaul Beesleyof the entry point (physical address) at which execution should start, after 6240d553cfSPaul BeesleyExecution State has been switched. When calling from AArch64, *PC hi* must be 0. 6340d553cfSPaul Beesley 6440d553cfSPaul BeesleyWhen execution starts at the supplied entry point after Execution State has been 6540d553cfSPaul Beesleyswitched, the parameters *Cookie hi* and *Cookie lo* are passed in CPU registers 6640d553cfSPaul Beesley0 and 1, respectively. When calling from AArch64, *Cookie hi* must be 0. 6740d553cfSPaul Beesley 6840d553cfSPaul BeesleyThis call can only be made on the primary CPU, before any secondaries were 6940d553cfSPaul Beesleybrought up with ``CPU_ON`` PSCI call. Otherwise, the call will always fail. 7040d553cfSPaul Beesley 7140d553cfSPaul BeesleyThe effect of switching execution state is as if the Exception Level were 7240d553cfSPaul Beesleyentered for the first time, following power on. This means CPU registers that 7340d553cfSPaul Beesleyhave a defined reset value by the Architecture will assume that value. Other 7440d553cfSPaul Beesleyregisters should not be expected to hold their values before the call was made. 7540d553cfSPaul BeesleyCPU endianness, however, is preserved from the previous execution state. Note 7640d553cfSPaul Beesleythat this switches the execution state of the calling CPU only. This is not a 7740d553cfSPaul Beesleysubstitute for PSCI ``SYSTEM_RESET``. 7840d553cfSPaul Beesley 7940d553cfSPaul BeesleyThe service may return the following error codes: 8040d553cfSPaul Beesley 8140d553cfSPaul Beesley- ``STATE_SW_E_PARAM``: If any of the parameters were deemed invalid for 8240d553cfSPaul Beesley a specific request. 8340d553cfSPaul Beesley- ``STATE_SW_E_DENIED``: If the call is not successful, or when TF-A is 8440d553cfSPaul Beesley built for AArch32. 8540d553cfSPaul Beesley 8640d553cfSPaul BeesleyIf the call is successful, the caller wouldn't observe the SMC returning. 8740d553cfSPaul BeesleyInstead, execution starts at the supplied entry point, with the CPU registers 0 8840d553cfSPaul Beesleyand 1 populated with the supplied *Cookie hi* and *Cookie lo* values, 8940d553cfSPaul Beesleyrespectively. 9040d553cfSPaul Beesley 91992f091bSAmbroise VincentDebugFS interface 92992f091bSAmbroise Vincent----------------- 93992f091bSAmbroise Vincent 94992f091bSAmbroise VincentThe optional DebugFS interface is accessed through an SMC SiP service. Refer 95992f091bSAmbroise Vincentto the component documentation for details. 96992f091bSAmbroise Vincent 97992f091bSAmbroise VincentString parameters are passed through a shared buffer using a specific union: 98992f091bSAmbroise Vincent 99992f091bSAmbroise Vincent.. code:: c 100992f091bSAmbroise Vincent 101992f091bSAmbroise Vincent union debugfs_parms { 102992f091bSAmbroise Vincent struct { 103992f091bSAmbroise Vincent char fname[MAX_PATH_LEN]; 104992f091bSAmbroise Vincent } open; 105992f091bSAmbroise Vincent 106992f091bSAmbroise Vincent struct mount { 107992f091bSAmbroise Vincent char srv[MAX_PATH_LEN]; 108992f091bSAmbroise Vincent char where[MAX_PATH_LEN]; 109992f091bSAmbroise Vincent char spec[MAX_PATH_LEN]; 110992f091bSAmbroise Vincent } mount; 111992f091bSAmbroise Vincent 112992f091bSAmbroise Vincent struct { 113992f091bSAmbroise Vincent char path[MAX_PATH_LEN]; 114992f091bSAmbroise Vincent dir_t dir; 115992f091bSAmbroise Vincent } stat; 116992f091bSAmbroise Vincent 117992f091bSAmbroise Vincent struct { 118992f091bSAmbroise Vincent char oldpath[MAX_PATH_LEN]; 119992f091bSAmbroise Vincent char newpath[MAX_PATH_LEN]; 120992f091bSAmbroise Vincent } bind; 121992f091bSAmbroise Vincent }; 122992f091bSAmbroise Vincent 123992f091bSAmbroise VincentFormat of the dir_t structure as such: 124992f091bSAmbroise Vincent 125992f091bSAmbroise Vincent.. code:: c 126992f091bSAmbroise Vincent 127992f091bSAmbroise Vincent typedef struct { 128992f091bSAmbroise Vincent char name[NAMELEN]; 129992f091bSAmbroise Vincent long length; 130992f091bSAmbroise Vincent unsigned char mode; 131992f091bSAmbroise Vincent unsigned char index; 132992f091bSAmbroise Vincent unsigned char dev; 133992f091bSAmbroise Vincent qid_t qid; 134992f091bSAmbroise Vincent } dir_t; 135992f091bSAmbroise Vincent 136992f091bSAmbroise Vincent 137992f091bSAmbroise Vincent* Identifiers 138992f091bSAmbroise Vincent 139992f091bSAmbroise Vincent======================== ============================================= 140992f091bSAmbroise VincentSMC_OK 0 141992f091bSAmbroise VincentSMC_UNK -1 142992f091bSAmbroise VincentDEBUGFS_E_INVALID_PARAMS -2 143992f091bSAmbroise Vincent======================== ============================================= 144992f091bSAmbroise Vincent 145992f091bSAmbroise Vincent======================== ============================================= 146992f091bSAmbroise VincentMOUNT 0 147992f091bSAmbroise VincentCREATE 1 148992f091bSAmbroise VincentOPEN 2 149992f091bSAmbroise VincentCLOSE 3 150992f091bSAmbroise VincentREAD 4 151992f091bSAmbroise VincentWRITE 5 152992f091bSAmbroise VincentSEEK 6 153992f091bSAmbroise VincentBIND 7 154992f091bSAmbroise VincentSTAT 8 155992f091bSAmbroise VincentINIT 10 156992f091bSAmbroise VincentVERSION 11 157992f091bSAmbroise Vincent======================== ============================================= 158992f091bSAmbroise Vincent 159992f091bSAmbroise VincentMOUNT 160992f091bSAmbroise Vincent~~~~~ 161992f091bSAmbroise Vincent 162992f091bSAmbroise VincentDescription 163992f091bSAmbroise Vincent^^^^^^^^^^^ 164992f091bSAmbroise VincentThis operation mounts a blob of data pointed to by path stored in `src`, at 165992f091bSAmbroise Vincentfilesystem location pointed to by path stored in `where`, using driver pointed 166992f091bSAmbroise Vincentto by path in `spec`. 167992f091bSAmbroise Vincent 168992f091bSAmbroise VincentParameters 169992f091bSAmbroise Vincent^^^^^^^^^^ 170992f091bSAmbroise Vincent======== ============================================================ 171992f091bSAmbroise Vincentuint32_t FunctionID (0x82000030 / 0xC2000030) 172992f091bSAmbroise Vincentuint32_t ``MOUNT`` 173992f091bSAmbroise Vincent======== ============================================================ 174992f091bSAmbroise Vincent 175992f091bSAmbroise VincentReturn values 176992f091bSAmbroise Vincent^^^^^^^^^^^^^ 177992f091bSAmbroise Vincent 178992f091bSAmbroise Vincent=============== ========================================================== 179992f091bSAmbroise Vincentint32_t w0 == SMC_OK on success 180992f091bSAmbroise Vincent 181992f091bSAmbroise Vincent w0 == DEBUGFS_E_INVALID_PARAMS if mount operation failed 182992f091bSAmbroise Vincent=============== ========================================================== 183992f091bSAmbroise Vincent 184992f091bSAmbroise VincentOPEN 185992f091bSAmbroise Vincent~~~~ 186992f091bSAmbroise Vincent 187992f091bSAmbroise VincentDescription 188992f091bSAmbroise Vincent^^^^^^^^^^^ 189992f091bSAmbroise VincentThis operation opens the file path pointed to by `fname`. 190992f091bSAmbroise Vincent 191992f091bSAmbroise VincentParameters 192992f091bSAmbroise Vincent^^^^^^^^^^ 193992f091bSAmbroise Vincent 194992f091bSAmbroise Vincent======== ============================================================ 195992f091bSAmbroise Vincentuint32_t FunctionID (0x82000030 / 0xC2000030) 196992f091bSAmbroise Vincentuint32_t ``OPEN`` 197992f091bSAmbroise Vincentuint32_t mode 198992f091bSAmbroise Vincent======== ============================================================ 199992f091bSAmbroise Vincent 200992f091bSAmbroise Vincentmode can be one of: 201992f091bSAmbroise Vincent 202992f091bSAmbroise Vincent.. code:: c 203992f091bSAmbroise Vincent 204992f091bSAmbroise Vincent enum mode { 205992f091bSAmbroise Vincent O_READ = 1 << 0, 206992f091bSAmbroise Vincent O_WRITE = 1 << 1, 207992f091bSAmbroise Vincent O_RDWR = 1 << 2, 208992f091bSAmbroise Vincent O_BIND = 1 << 3, 209992f091bSAmbroise Vincent O_DIR = 1 << 4, 210992f091bSAmbroise Vincent O_STAT = 1 << 5 211992f091bSAmbroise Vincent }; 212992f091bSAmbroise Vincent 213992f091bSAmbroise VincentReturn values 214992f091bSAmbroise Vincent^^^^^^^^^^^^^ 215992f091bSAmbroise Vincent 216992f091bSAmbroise Vincent=============== ========================================================== 217992f091bSAmbroise Vincentint32_t w0 == SMC_OK on success 218992f091bSAmbroise Vincent 219992f091bSAmbroise Vincent w0 == DEBUGFS_E_INVALID_PARAMS if open operation failed 220992f091bSAmbroise Vincent 221992f091bSAmbroise Vincentuint32_t w1: file descriptor id on success. 222992f091bSAmbroise Vincent=============== ========================================================== 223992f091bSAmbroise Vincent 224992f091bSAmbroise VincentCLOSE 225992f091bSAmbroise Vincent~~~~~ 226992f091bSAmbroise Vincent 227992f091bSAmbroise VincentDescription 228992f091bSAmbroise Vincent^^^^^^^^^^^ 229992f091bSAmbroise Vincent 230992f091bSAmbroise VincentThis operation closes a file described by a file descriptor obtained by a 231992f091bSAmbroise Vincentprevious call to OPEN. 232992f091bSAmbroise Vincent 233992f091bSAmbroise VincentParameters 234992f091bSAmbroise Vincent^^^^^^^^^^ 235992f091bSAmbroise Vincent 236992f091bSAmbroise Vincent======== ============================================================ 237992f091bSAmbroise Vincentuint32_t FunctionID (0x82000030 / 0xC2000030) 238992f091bSAmbroise Vincentuint32_t ``CLOSE`` 239992f091bSAmbroise Vincentuint32_t File descriptor id returned by OPEN 240992f091bSAmbroise Vincent======== ============================================================ 241992f091bSAmbroise Vincent 242992f091bSAmbroise VincentReturn values 243992f091bSAmbroise Vincent^^^^^^^^^^^^^ 244992f091bSAmbroise Vincent=============== ========================================================== 245992f091bSAmbroise Vincentint32_t w0 == SMC_OK on success 246992f091bSAmbroise Vincent 247992f091bSAmbroise Vincent w0 == DEBUGFS_E_INVALID_PARAMS if close operation failed 248992f091bSAmbroise Vincent=============== ========================================================== 249992f091bSAmbroise Vincent 250992f091bSAmbroise VincentREAD 251992f091bSAmbroise Vincent~~~~ 252992f091bSAmbroise Vincent 253992f091bSAmbroise VincentDescription 254992f091bSAmbroise Vincent^^^^^^^^^^^ 255992f091bSAmbroise Vincent 256992f091bSAmbroise VincentThis operation reads a number of bytes from a file descriptor obtained by 257992f091bSAmbroise Vincenta previous call to OPEN. 258992f091bSAmbroise Vincent 259992f091bSAmbroise VincentParameters 260992f091bSAmbroise Vincent^^^^^^^^^^ 261992f091bSAmbroise Vincent 262992f091bSAmbroise Vincent======== ============================================================ 263992f091bSAmbroise Vincentuint32_t FunctionID (0x82000030 / 0xC2000030) 264992f091bSAmbroise Vincentuint32_t ``READ`` 265992f091bSAmbroise Vincentuint32_t File descriptor id returned by OPEN 266992f091bSAmbroise Vincentuint32_t Number of bytes to read 267992f091bSAmbroise Vincent======== ============================================================ 268992f091bSAmbroise Vincent 269992f091bSAmbroise VincentReturn values 270992f091bSAmbroise Vincent^^^^^^^^^^^^^ 271992f091bSAmbroise Vincent 272992f091bSAmbroise VincentOn success, the read data is retrieved from the shared buffer after the 273992f091bSAmbroise Vincentoperation. 274992f091bSAmbroise Vincent 275992f091bSAmbroise Vincent=============== ========================================================== 276992f091bSAmbroise Vincentint32_t w0 == SMC_OK on success 277992f091bSAmbroise Vincent 278992f091bSAmbroise Vincent w0 == DEBUGFS_E_INVALID_PARAMS if read operation failed 279992f091bSAmbroise Vincent 280992f091bSAmbroise Vincentuint32_t w1: number of bytes read on success. 281992f091bSAmbroise Vincent=============== ========================================================== 282992f091bSAmbroise Vincent 283992f091bSAmbroise VincentSEEK 284992f091bSAmbroise Vincent~~~~ 285992f091bSAmbroise Vincent 286992f091bSAmbroise VincentDescription 287992f091bSAmbroise Vincent^^^^^^^^^^^ 288992f091bSAmbroise Vincent 289992f091bSAmbroise VincentMove file pointer for file described by given `file descriptor` of given 290992f091bSAmbroise Vincent`offset` related to `whence`. 291992f091bSAmbroise Vincent 292992f091bSAmbroise VincentParameters 293992f091bSAmbroise Vincent^^^^^^^^^^ 294992f091bSAmbroise Vincent 295992f091bSAmbroise Vincent======== ============================================================ 296992f091bSAmbroise Vincentuint32_t FunctionID (0x82000030 / 0xC2000030) 297992f091bSAmbroise Vincentuint32_t ``SEEK`` 298992f091bSAmbroise Vincentuint32_t File descriptor id returned by OPEN 299992f091bSAmbroise Vincentsint32_t offset in the file relative to whence 300992f091bSAmbroise Vincentuint32_t whence 301992f091bSAmbroise Vincent======== ============================================================ 302992f091bSAmbroise Vincent 303992f091bSAmbroise Vincentwhence can be one of: 304992f091bSAmbroise Vincent 305992f091bSAmbroise Vincent========= ============================================================ 306992f091bSAmbroise VincentKSEEK_SET 0 307992f091bSAmbroise VincentKSEEK_CUR 1 308992f091bSAmbroise VincentKSEEK_END 2 309992f091bSAmbroise Vincent========= ============================================================ 310992f091bSAmbroise Vincent 311992f091bSAmbroise VincentReturn values 312992f091bSAmbroise Vincent^^^^^^^^^^^^^ 313992f091bSAmbroise Vincent 314992f091bSAmbroise Vincent=============== ========================================================== 315992f091bSAmbroise Vincentint32_t w0 == SMC_OK on success 316992f091bSAmbroise Vincent 317992f091bSAmbroise Vincent w0 == DEBUGFS_E_INVALID_PARAMS if seek operation failed 318992f091bSAmbroise Vincent=============== ========================================================== 319992f091bSAmbroise Vincent 320992f091bSAmbroise VincentBIND 321992f091bSAmbroise Vincent~~~~ 322992f091bSAmbroise Vincent 323992f091bSAmbroise VincentDescription 324992f091bSAmbroise Vincent^^^^^^^^^^^ 325992f091bSAmbroise Vincent 326992f091bSAmbroise VincentCreate a link from `oldpath` to `newpath`. 327992f091bSAmbroise Vincent 328992f091bSAmbroise VincentParameters 329992f091bSAmbroise Vincent^^^^^^^^^^ 330992f091bSAmbroise Vincent 331992f091bSAmbroise Vincent======== ============================================================ 332992f091bSAmbroise Vincentuint32_t FunctionID (0x82000030 / 0xC2000030) 333992f091bSAmbroise Vincentuint32_t ``BIND`` 334992f091bSAmbroise Vincent======== ============================================================ 335992f091bSAmbroise Vincent 336992f091bSAmbroise VincentReturn values 337992f091bSAmbroise Vincent^^^^^^^^^^^^^ 338992f091bSAmbroise Vincent 339992f091bSAmbroise Vincent=============== ========================================================== 340992f091bSAmbroise Vincentint32_t w0 == SMC_OK on success 341992f091bSAmbroise Vincent 342992f091bSAmbroise Vincent w0 == DEBUGFS_E_INVALID_PARAMS if bind operation failed 343992f091bSAmbroise Vincent=============== ========================================================== 344992f091bSAmbroise Vincent 345992f091bSAmbroise VincentSTAT 346992f091bSAmbroise Vincent~~~~ 347992f091bSAmbroise Vincent 348992f091bSAmbroise VincentDescription 349992f091bSAmbroise Vincent^^^^^^^^^^^ 350992f091bSAmbroise Vincent 351992f091bSAmbroise VincentPerform a stat operation on provided file `name` and returns the directory 352992f091bSAmbroise Vincententry statistics into `dir`. 353992f091bSAmbroise Vincent 354992f091bSAmbroise VincentParameters 355992f091bSAmbroise Vincent^^^^^^^^^^ 356992f091bSAmbroise Vincent 357992f091bSAmbroise Vincent======== ============================================================ 358992f091bSAmbroise Vincentuint32_t FunctionID (0x82000030 / 0xC2000030) 359992f091bSAmbroise Vincentuint32_t ``STAT`` 360992f091bSAmbroise Vincent======== ============================================================ 361992f091bSAmbroise Vincent 362992f091bSAmbroise VincentReturn values 363992f091bSAmbroise Vincent^^^^^^^^^^^^^ 364992f091bSAmbroise Vincent 365992f091bSAmbroise Vincent=============== ========================================================== 366992f091bSAmbroise Vincentint32_t w0 == SMC_OK on success 367992f091bSAmbroise Vincent 368992f091bSAmbroise Vincent w0 == DEBUGFS_E_INVALID_PARAMS if stat operation failed 369992f091bSAmbroise Vincent=============== ========================================================== 370992f091bSAmbroise Vincent 371992f091bSAmbroise VincentINIT 372992f091bSAmbroise Vincent~~~~ 373992f091bSAmbroise Vincent 374992f091bSAmbroise VincentDescription 375992f091bSAmbroise Vincent^^^^^^^^^^^ 376992f091bSAmbroise VincentInitial call to setup the shared exchange buffer. Notice if successful once, 377992f091bSAmbroise Vincentsubsequent calls fail after a first initialization. The caller maps the same 378992f091bSAmbroise Vincentpage frame in its virtual space and uses this buffer to exchange string 379992f091bSAmbroise Vincentparameters with filesystem primitives. 380992f091bSAmbroise Vincent 381992f091bSAmbroise VincentParameters 382992f091bSAmbroise Vincent^^^^^^^^^^ 383992f091bSAmbroise Vincent 384992f091bSAmbroise Vincent======== ============================================================ 385992f091bSAmbroise Vincentuint32_t FunctionID (0x82000030 / 0xC2000030) 386992f091bSAmbroise Vincentuint32_t ``INIT`` 387992f091bSAmbroise Vincentuint64_t Physical address of the shared buffer. 388992f091bSAmbroise Vincent======== ============================================================ 389992f091bSAmbroise Vincent 390992f091bSAmbroise VincentReturn values 391992f091bSAmbroise Vincent^^^^^^^^^^^^^ 392992f091bSAmbroise Vincent 393992f091bSAmbroise Vincent=============== ====================================================== 394992f091bSAmbroise Vincentint32_t w0 == SMC_OK on success 395992f091bSAmbroise Vincent 396992f091bSAmbroise Vincent w0 == DEBUGFS_E_INVALID_PARAMS if already initialized, 397992f091bSAmbroise Vincent or internal error occurred. 398992f091bSAmbroise Vincent=============== ====================================================== 399992f091bSAmbroise Vincent 400992f091bSAmbroise VincentVERSION 401992f091bSAmbroise Vincent~~~~~~~ 402992f091bSAmbroise Vincent 403992f091bSAmbroise VincentDescription 404992f091bSAmbroise Vincent^^^^^^^^^^^ 405992f091bSAmbroise VincentReturns the debugfs interface version if implemented in TF-A. 406992f091bSAmbroise Vincent 407992f091bSAmbroise VincentParameters 408992f091bSAmbroise Vincent^^^^^^^^^^ 409992f091bSAmbroise Vincent 410992f091bSAmbroise Vincent======== ============================================================ 411992f091bSAmbroise Vincentuint32_t FunctionID (0x82000030 / 0xC2000030) 412992f091bSAmbroise Vincentuint32_t ``VERSION`` 413992f091bSAmbroise Vincent======== ============================================================ 414992f091bSAmbroise Vincent 415992f091bSAmbroise VincentReturn values 416992f091bSAmbroise Vincent^^^^^^^^^^^^^ 417992f091bSAmbroise Vincent 418992f091bSAmbroise Vincent=============== ====================================================== 419992f091bSAmbroise Vincentint32_t w0 == SMC_OK on success 420992f091bSAmbroise Vincent 421992f091bSAmbroise Vincent w0 == SMC_UNK if interface is not implemented 422992f091bSAmbroise Vincent 423992f091bSAmbroise Vincentuint32_t w1: On success, debugfs interface version, 32 bits 424992f091bSAmbroise Vincent value with major version number in upper 16 bits and 425992f091bSAmbroise Vincent minor version in lower 16 bits. 426992f091bSAmbroise Vincent=============== ====================================================== 427992f091bSAmbroise Vincent 428992f091bSAmbroise Vincent* CREATE(1) and WRITE (5) command identifiers are unimplemented and 429992f091bSAmbroise Vincent return `SMC_UNK`. 430992f091bSAmbroise Vincent 43140d553cfSPaul Beesley-------------- 43240d553cfSPaul Beesley 433*3ba55a3cSlaurenw-arm*Copyright (c) 2017-2020, Arm Limited and Contributors. All rights reserved.* 43440d553cfSPaul Beesley 435*3ba55a3cSlaurenw-arm.. _SMC Calling Convention: https://developer.arm.com/docs/den0028/latest 436