123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- * ARM Secure world bindings
- ARM CPUs with TrustZone support have two distinct address spaces,
- "Normal" and "Secure". Most devicetree consumers (including the Linux
- kernel) are not TrustZone aware and run entirely in either the Normal
- world or the Secure world. However some devicetree consumers are
- TrustZone aware and need to be able to determine whether devices are
- visible only in the Secure address space, only in the Normal address
- space, or visible in both. (One example of that situation would be a
- virtual machine which boots Secure firmware and wants to tell the
- firmware about the layout of the machine via devicetree.)
- The general principle of the naming scheme for Secure world bindings
- is that any property that needs a different value in the Secure world
- can be supported by prefixing the property name with "secure-". So for
- instance "secure-foo" would override "foo". For property names with
- a vendor prefix, the Secure variant of "vendor,foo" would be
- "vendor,secure-foo". If there is no "secure-" property then the Secure
- world value is the same as specified for the Normal world by the
- non-prefixed property. However, only the properties listed below may
- validly have "secure-" versions; this list will be enlarged on a
- case-by-case basis.
- Defining the bindings in this way means that a device tree which has
- been annotated to indicate the presence of Secure-only devices can
- still be processed unmodified by existing Non-secure software (and in
- particular by the kernel).
- Note that it is still valid for bindings intended for purely Secure
- world consumers (like kernels that run entirely in Secure) to simply
- describe the view of Secure world using the standard bindings. These
- secure- bindings only need to be used where both the Secure and Normal
- world views need to be described in a single device tree.
- Valid Secure world properties:
- - secure-status : specifies whether the device is present and usable
- in the secure world. The combination of this with "status" allows
- the various possible combinations of device visibility to be
- specified. If "secure-status" is not specified it defaults to the
- same value as "status"; if "status" is not specified either then
- both default to "okay". This means the following combinations are
- possible:
- /* Neither specified: default to visible in both S and NS */
- secure-status = "okay"; /* visible in both */
- status = "okay"; /* visible in both */
- status = "okay"; secure-status = "okay"; /* visible in both */
- secure-status = "disabled"; /* NS-only */
- status = "okay"; secure-status = "disabled"; /* NS-only */
- status = "disabled"; secure-status = "okay"; /* S-only */
- status = "disabled"; /* disabled in both */
- status = "disabled"; secure-status = "disabled"; /* disabled in both */
|