mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-27 11:55:06 +00:00
52baf267be
including the include directive. Fix minor build issue corrected by converting yypush_buffer_state and yypop_buffer_state to yy_set_buffer_state and a hard-coded 100-deep stack. It was easier to fix it here than to import that support into our flex. The new tools and test hardness remain unsupported at the moment.
123 lines
4.2 KiB
Plaintext
123 lines
4.2 KiB
Plaintext
Device Tree Source Format (version 1)
|
|
=====================================
|
|
|
|
The Device Tree Source (DTS) format is a textual representation of a
|
|
device tree in a form that can be processed by dtc into a binary
|
|
device tree in the form expected by the kernel. The description below
|
|
is not a formal syntax definition of DTS, but describes the basic
|
|
constructs used to represent device trees.
|
|
|
|
Node and property definitions
|
|
-----------------------------
|
|
|
|
Device tree nodes are defined with a node name and unit address with
|
|
braces marking the start and end of the node definition. They may be
|
|
preceded by a label.
|
|
|
|
[label:] node-name[@unit-address] {
|
|
[properties definitions]
|
|
[child nodes]
|
|
}
|
|
|
|
Nodes may contain property definitions and/or child node
|
|
definitions. If both are present, properties must come before child
|
|
nodes.
|
|
|
|
Property definitions are name value pairs in the form:
|
|
[label:] property-name = value;
|
|
except for properties with empty (zero length) value which have the
|
|
form:
|
|
[label:] property-name;
|
|
|
|
Property values may be defined as an array of 8, 16, 32, or 64-bit integer
|
|
elements, as NUL-terminated strings, as bytestrings or a combination of these.
|
|
|
|
* Arrays are represented by angle brackets surrounding a space separated list
|
|
of C-style integers or character literals. Array elements default to 32-bits
|
|
in size. An array of 32-bit elements is also known as a cell list or a list
|
|
of cells. A cell being an unsigned 32-bit integer.
|
|
|
|
e.g. interrupts = <17 0xc>;
|
|
|
|
* A 64-bit value can be represented with two 32-bit elements.
|
|
|
|
e.g. clock-frequency = <0x00000001 0x00000000>;
|
|
|
|
* The storage size of an element can be changed using the /bits/ prefix. The
|
|
/bits/ prefix allows for the creation of 8, 16, 32, and 64-bit elements.
|
|
The resulting array will not be padded to a multiple of the default 32-bit
|
|
element size.
|
|
|
|
e.g. interrupts = /bits/ 8 <17 0xc>;
|
|
e.g. clock-frequency = /bits/ 64 <0x0000000100000000>;
|
|
|
|
* A NUL-terminated string value is represented using double quotes
|
|
(the property value is considered to include the terminating NUL
|
|
character).
|
|
|
|
e.g. compatible = "simple-bus";
|
|
|
|
* A bytestring is enclosed in square brackets [] with each byte
|
|
represented by two hexadecimal digits. Spaces between each byte are
|
|
optional.
|
|
|
|
e.g. local-mac-address = [00 00 12 34 56 78]; or equivalently
|
|
local-mac-address = [000012345678];
|
|
|
|
* Values may have several comma-separated components, which are
|
|
concatenated together.
|
|
e.g. compatible = "ns16550", "ns8250";
|
|
example = <0xf00f0000 19>, "a strange property format";
|
|
|
|
* In an array a reference to another node will be expanded to that node's
|
|
phandle. References may by '&' followed by a node's label:
|
|
e.g. interrupt-parent = < &mpic >;
|
|
or they may be '&' followed by a node's full path in braces:
|
|
e.g. interrupt-parent = < &{/soc/interrupt-controller@40000} >;
|
|
References are only permitted in arrays that have an element size of
|
|
32-bits.
|
|
|
|
* Outside an array, a reference to another node will be expanded to that
|
|
node's full path.
|
|
e.g. ethernet0 = &EMAC0;
|
|
|
|
* Labels may also appear before or after any component of a property
|
|
value, or between elements of an array, or between bytes of a bytestring.
|
|
e.g. reg = reglabel: <0 sizelabel: 0x1000000>;
|
|
e.g. prop = [ab cd ef byte4: 00 ff fe];
|
|
e.g. str = start: "string value" end: ;
|
|
|
|
|
|
File layout
|
|
-----------
|
|
|
|
Version 1 DTS files have the overall layout:
|
|
/dts-v1/;
|
|
|
|
[memory reservations]
|
|
|
|
/ {
|
|
[property definitions]
|
|
[child nodes]
|
|
};
|
|
|
|
* The "/dts-v1/;" must be present to identify the file as a version 1
|
|
DTS (dts files without this tag will be treated by dtc as being in
|
|
the obsolete "version 0", which uses a different format for integers
|
|
amongst other small but incompatible changes).
|
|
|
|
* Memory reservations define an entry for the device tree blob's
|
|
memory reservation table. They have the form:
|
|
e.g. /memreserve/ <address> <length>;
|
|
Where <address> and <length> are 64-bit C-style integers.
|
|
|
|
* The / { ... }; section defines the root node of the device tree.
|
|
|
|
* C style (/* ... */) and C++ style (// ...) comments are supported.
|
|
|
|
|
|
|
|
-- David Gibson <david@gibson.dropbear.id.au>
|
|
-- Yoder Stuart <stuart.yoder@freescale.com>
|
|
-- Anton Staaf <robotboy@chromium.org>
|