Merge branch 'for-4.16' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata
[sfrench/cifs-2.6.git] / Documentation / devicetree / bindings / arm / firmware / sdei.txt
1 * Software Delegated Exception Interface (SDEI)
2
3 Firmware implementing the SDEI functions described in ARM document number
4 ARM DEN 0054A ("Software Delegated Exception Interface") can be used by
5 Linux to receive notification of events such as those generated by
6 firmware-first error handling, or from an IRQ that has been promoted to
7 a firmware-assisted NMI.
8
9 The interface provides a number of API functions for registering callbacks
10 and enabling/disabling events. Functions are invoked by trapping to the
11 privilege level of the SDEI firmware (specified as part of the binding
12 below) and passing arguments in a manner specified by the "SMC Calling
13 Convention (ARM DEN 0028B):
14
15          r0             => 32-bit Function ID / return value
16         {r1 - r3}       => Parameters
17
18 Note that the immediate field of the trapping instruction must be set
19 to #0.
20
21 The SDEI_EVENT_REGISTER function registers a callback in the kernel
22 text to handle the specified event number.
23
24 The sdei node should be a child node of '/firmware' and have required
25 properties:
26
27  - compatible    : should contain:
28         * "arm,sdei-1.0" : For implementations complying to SDEI version 1.x.
29
30  - method        : The method of calling the SDEI firmware. Permitted
31                    values are:
32         * "smc" : SMC #0, with the register assignments specified in this
33                   binding.
34         * "hvc" : HVC #0, with the register assignments specified in this
35                   binding.
36 Example:
37         firmware {
38                 sdei {
39                         compatible      = "arm,sdei-1.0";
40                         method          = "smc";
41                 };
42         };