xref: /rk3399_ARM-atf/docs/components/arm-sip-service.rst (revision 3ba55a3c5fa260c9218be1adff8f39fc2a568d68)
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