| * Software Delegated Exception Interface (SDEI) |
| |
| Firmware implementing the SDEI functions described in ARM document number |
| ARM DEN 0054A ("Software Delegated Exception Interface") can be used by |
| Linux to receive notification of events such as those generated by |
| firmware-first error handling, or from an IRQ that has been promoted to |
| a firmware-assisted NMI. |
| |
| The interface provides a number of API functions for registering callbacks |
| and enabling/disabling events. Functions are invoked by trapping to the |
| privilege level of the SDEI firmware (specified as part of the binding |
| below) and passing arguments in a manner specified by the "SMC Calling |
| Convention (ARM DEN 0028B): |
| |
| r0 => 32-bit Function ID / return value |
| {r1 - r3} => Parameters |
| |
| Note that the immediate field of the trapping instruction must be set |
| to #0. |
| |
| The SDEI_EVENT_REGISTER function registers a callback in the kernel |
| text to handle the specified event number. |
| |
| The sdei node should be a child node of '/firmware' and have required |
| properties: |
| |
| - compatible : should contain: |
| * "arm,sdei-1.0" : For implementations complying to SDEI version 1.x. |
| |
| - method : The method of calling the SDEI firmware. Permitted |
| values are: |
| * "smc" : SMC #0, with the register assignments specified in this |
| binding. |
| * "hvc" : HVC #0, with the register assignments specified in this |
| binding. |
| Example: |
| firmware { |
| sdei { |
| compatible = "arm,sdei-1.0"; |
| method = "smc"; |
| }; |
| }; |