* 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 */
