doc: dts: add more explanations, with diagrams

Re-work the introductory sections of the devicetree documentation,
adding several figures and cross-references to other useful parts of
the documentation.

Signed-off-by: Marti Bolivar <marti.bolivar@nordicsemi.no>
This commit is contained in:
Marti Bolivar 2019-10-04 13:34:15 -07:00 committed by Carles Cufí
commit 85fa523cf0
9 changed files with 2297 additions and 168 deletions

View file

@ -1,177 +1,327 @@
.. _device-tree: .. _device-tree:
Device Tree Devicetree
########### ##########
.. contents:: Zephyr uses the *devicetree* data structure to describe the hardware available
:local: on a board, as well as its initial configuration in an application. Note that
:depth: 2 "devicetree" -- without spaces -- is preferred to "device tree". The
`Devicetree specification`_ fully defines this data structure and its source
and binary representations.
.. _device-tree-intro:
Introduction Introduction
************ ************
Device tree is a way of describing hardware and configuration information .. _Devicetree specification: https://www.devicetree.org/
for boards. Device tree was adopted for use in the Linux kernel for the
PowerPC architecture. However, it is now in use for ARM and other
architectures.
The device tree is a data structure for dynamically describing hardware This figure shows how devicetree fits into the Zephyr build system:
using a Device Tree Source (DTS) data structure language, instead of
hard coding every detail of a board's hardware into the operating system.
In Linux, DTS is compiled into a compact Device Tree Blob (DTB) using a Device .. figure:: zephyr_dt_build_flow.png
Tree Compiler (DTC), then the hardware-describing DTB is passed to the operating :figclass: align-center
system at boot time. This allows the same compiled Linux kernel to support
different hardware configurations within an architecture family (e.g., ARM,
x86, PowerPC) and moves a significant part of the hardware description out of
the kernel binary itself.
For larger systems, the flexibility this offers offsets the extra runtime memory Devicetree build flow
overhead incurred. But the primary targets for Zephyr
applications are small micro-controller systems with limited memory
resources. So instead of requiring the additional runtime memory
to store the DTB blob and the code to parse it, the DTS information
is used at compile time.
Device tree uses a specific format to describe the device nodes in a system. Zephyr's build system can use a devicetree to generate C language code. This
This format is described in the `Device Tree Specification`_. code generation uses rules in additional files called :ref:`devicetree bindings
<bindings>` to control how devicetree data is converted to C definitions. The
generated code can be included by Zephyr :ref:`device drivers <device_drivers>`
and other C sources. The C macros generated by this process all begin with
``DT_``.
.. _Device Tree Specification: https://github.com/devicetree-org/devicetree-specification/releases This differs significantly from how devicetree is used on Linux. The
Linux kernel would instead read the entire devicetree data structure in its
binary form, parsing it at runtime in order to load and initialize device
drivers. Zephyr does not work this way because the size of the devicetree
binary and associated handling code would be too large to fit comfortably on
the relatively constrained devices Zephyr supports.
More device tree information can be found at the `device tree repository`_. As the name indicates, a devicetree is a tree. The human-readable text format
for this tree is called DTS (for devicetree source), and is defined in the
Devicetree Specification. Here is an example DTS file:
.. _device tree repository: https://git.kernel.org/pub/scm/utils/dtc/dtc.git .. code-block:: none
/dts-v1/;
System build requirements / {
************************* a-node {
subnode_label: a-sub-node {
foo = <3>;
};
};
};
The Zephyr device tree feature requires a device tree compiler (DTC) and Python This example has three nodes:
YAML packages. Refer to the installation guide for your specific host OS:
* :ref:`installing_zephyr_win` #. A root node
* :ref:`installation_linux` #. A node named ``a-node``, which is a child of the root node
* :ref:`installing_zephyr_mac` #. A node named ``a-sub-node``, which is a child of ``a-node``
Nodes can be given *labels*, which are unique shorthands that can be used to
refer to the labeled node elsewhere in the devicetree. Above, ``a-sub-node``
has label ``subnode_label``.
Zephyr and Device Tree Devicetree nodes have *paths* identifying their locations in the tree. Like
Unix file system paths, devicetree paths are strings separated by slashes
(``/``), and the root node's path is a single slash: ``/``. Otherwise, each
node's path is formed by concatenating the node's ancestors' names with the
node's own name, separated by slashes. For example, the full path to
``a-sub-node`` is ``/a-node/a-sub-node``.
Devicetree nodes can also have *properties*. Properties are name/value
pairs. The values are simple byte arrays. Node ``a-sub-node`` has a property
named ``foo``, whose value is a 32-bit big-endian unsigned integer with value
3. The size and type of ``foo``\ 's value are implied by the enclosing angle
brackets (``<`` and ``>``) in the DTS. Refer to the Devicetree Specification
for a complete list of ways to write a property value in a DTS file.
In practice, devicetree nodes correspond to some hardware, and the node
hierarchy reflects the hardware's physical layout. For example, let's consider
a board with three I2C peripherals connected to an I2C bus master on an SoC,
like this:
.. figure:: zephyr_dt_i2c_high_level.png
:alt: representation of a board with three I2C peripherals
:figclass: align-center
Nodes corresponding to the I2C bus master and each I2C peripheral would be
present in this board's devicetree. Reflecting the hardware layout, the
devicetree's peripheral nodes would be children of the bus master node. Similar
conventions exist for representing other types of hardware in devicetree.
The corresponding DTS would look something like this:
.. code-block:: none
/ {
soc {
i2c-bus-master {
i2c-peripheral-1 {
};
i2c-peripheral-2 {
};
i2c-peripheral-3 {
};
};
};
};
Properties are used in practice to describe or configure the hardware the node
represents. For example, an I2C peripheral's node has a property whose value is
the peripheral's address on the bus.
Here's a tree representing the same example, but with real-world node
names and properties you might see when working with I2C devices.
.. figure:: zephyr_dt_i2c_example.png
:figclass: align-center
I2C devicetree example with real-world names and properties
Above, node names -- like ``i2c@40003000`` -- are at the top of each node, with
a gray background, except for the root node, which is shown using its path
``/``. Properties are shown as ``name=value`` pairs below the node names.
Some important properties are:
- **compatible**: this says what "kind" of device the node represents. Its
value is a null-terminated string in the format "vendor,device", like
``"avago,apds9960"``, or a sequence of these, like ``"ti,hdc",
"ti,hdc1010"``. The build system uses the compatible property to find the
right bindings for the node.
- **label**: the device's name according to Zephyr's :ref:`device_drivers`. The
value can be passed to :c:func:`device_get_binding()` to retrieve the
corresponding driver-level :ref:`struct device* <device_struct>`. This
pointer can then be passed to the correct driver API by application code to
interact with the device. For example, calling
``device_get_binding("I2C_0")`` would return a pointer to a device
structure which could be passed to :ref:`I2C API <i2c_api>` functions like
:c:func:`i2c_transfer()`. The generated C header will also contain a macro
which expands to this string.
- **reg**: information used to address the device. This could be a
memory-mapped I/O address range (as with ``i2c@40003000``\ 's reg property),
an I2C bus address (as with ``apds9960@39`` and its devicetree siblings), a
SPI chip select line, or some other value depending on the kind of device the
node represents.
This tree has the following DTS.
.. code-block:: none
/ {
soc {
i2c@40003000 {
compatible = "nordic,nrf-twim";
label = "I2C_0";
reg = <0x40003000 0x1000>;
apds9960@39 {
compatible = "avago,apds9960";
label = "APDS9960";
reg = <0x39>;
};
ti_hdc@43 {
compatible = "ti,hdc", "ti,hdc1010";
label = "HDC1010;
reg = <0x43>;
};
mma8652fc@1d {
compatible = "nxp,fxos8700", "nxp,mma8652fc";
label = "MMA8652FC";
reg = <0x1d>;
};
};
};
};
Input and output files
********************** **********************
Device Tree provides a unified description of a hardware system used in an The first figure in the :ref:`device-tree-intro` shows how devicetree fits into
application. It is used in Zephyr to describe hardware and provide a boot-time the Zephyr build system. This section describes the input and output files in
configuration of this hardware. more detail.
In Zephyr, the device tree is also used to describe Zephyr-specific .. figure:: zephyr_dt_inputs_outputs.png
configuration information. This Zephyr-specific information augments the device :figclass: align-center
tree descriptions and sits on top of it, rather than diverging from it. The
main reason for this is to leverage existing device tree files that a SoC vendor
may already have defined for a given platform.
The device tree files are compiled using the device tree compiler. The compiler Devicetree input (green) and output (yellow) files
runs the .dts file through the C preprocessor to resolve any macro or #defines
utilized in the file. The output of the compile is another dts formatted file.
After compilation, a Python script extracts information from the compiled DTS files usually have ``.dts`` or ``.dtsi`` (for Devicetree Source Include)
device tree file using rules specified in *bindings* (see the :ref:`bindings` extensions. Zephyr's build system looks for a file named :file:`BOARD.dts` in
section). The extracted information is placed in a header file that is used by the board definition directory; this file contains the board's base
the rest of the code as the project is compiled. devicetree. See :ref:`dt_k6x_example` for real-world examples.
Temporary fixup files are required for device tree support on most devices. The build system combines the board's DTS with additional input files called
These fixup files by default reside in the board and soc directories and are *overlays* to produce a final devicetree source file. Overlays are also written
named ``dts_fixup.h``. These fixup files map the generated include information to in the DTS format, but have a :file:`.overlay` extension to make it clear that
the current driver/source usage. they're overlays. You can specify the overlay files to use at build time using
the :makevar:`DTC_OVERLAY_FILE` CMake variable described in
:ref:`important-build-vars`. The build system also looks for devicetree
overlays in several locations by default; see :ref:`application_dt` for the
list.
The Python code that deals with device tree and bindings is in Overlays can be used to add or delete nodes from the tree, or to modify node
:zephyr_file:`scripts/dts/`. properties and their values. Along with Kconfig, devicetree overlays let you
reconfigure the kernel and device drivers without modifying their source code.
Before they are combined, the C preprocessor is run on :file:`BOARD.dts` and any
overlays. This allows these files to use C macros and include directives.
The combined devicetree is written to a DTS file named
:file:`BOARD.dts_compiled` in the application build directory. This file
contains the final devicetree.
This devicetree and the set of :ref:`bindings` are then used to generate C
definitions using scripts in :zephyr_file:`scripts/dts/`. These definitions can
be included via the ``generated_dts_board.h`` header file, which the build
system places on the C preprocessor include path. This file is not generated;
it is in :zephyr_file:`include/generated_dts_board.h`. (Its name was chosen
for backwards compatibility.)
**Do not include the generated C headers in the build directory directly**. Use
``generated_dts_board.h`` instead.
Zephyr device drivers typically use information from ``generated_dts_board.h``
to statically allocate and initialize :ref:`struct device <device_struct>`
instances. Property values from ``generated_dts_board.h`` are usually stored in
ROM in the value pointed to by a ``device->config->config_info`` field. For
example, a ``struct device`` corresponding to an I2C peripheral would store the
peripheral address in its ``reg`` property there.
Application source code with a pointer to the ``struct device`` can then pass
it to driver APIs in :zephyr_file:`include/drivers/`. These API functions
usually take a ``struct device*`` as their first argument. This allows the
driver API to use information from devicetree to interact with the device
hardware.
Temporary "fixup" files are currently required for devicetree support on most
devices. These fixup files by default reside in the board and soc directories
and are named ``dts_fixup.h``. These fixup files map the generated include
information to the current driver/source usage. They exist for historical
reasons; Zephyr is moving away from needing or using these files.
.. _dt_vs_kconfig: .. _dt_vs_kconfig:
Device Tree vs Kconfig Devicetree vs Kconfig
********************** *********************
As mentioned above there are several tools used to configure the build with Along with devicetree, Zephyr also uses the Kconfig language to configure the
Zephyr. source code. Whether to use devicetree or Kconfig for a particular purpose can
The two main ones, Device Tree and Kconfig, might seem to overlap in purpose, sometimes be confusing. This section should help you decide which one to use.
but in fact they do not. This section serves as a reference to help you decide
whether to place configuration items in Device Tree or Kconfig.
The scope of each configuration tool can be summarized as follows: In short:
* Device Tree is used to describe the **hardware** and its **boot-time * Use devicetree to describe **hardware** and its **boot-time configuration**.
configuration**. Examples include peripherals on a board, boot-time clock frequencies,
* Kconfig is used to describe which **software features** will be built into interrupt lines, etc.
the final image, and their **configuration**. * Use Kconfig to configure **software support** to build into the final
image. Examples include whether to add networking support, which drivers are
needed by the application, etc.
Hence Device Tree deals mostly with hardware and Kconfig with software. In other words, devicetree mainly deals with hardware, and Kconfig with
A couple of noteworthy exceptions are: software.
* Device Tree's ``chosen`` keyword, which allows the user to select a For example, consider a board containing a SoC with 2 UART, or serial port,
particular instance of a hardware device to be used for a concrete purpose instances.
by the software. An example of this is selecting a particular UART for use as
the system's console.
* Device Tree's ``status`` keyword, which allows the user to enable or disable
a particular instance of a hardware device in the Device Tree file itself.
This takes precedence over Kconfig.
To further clarify this separation, let's use a particular, well-known * The fact that the board has this UART **hardware** is described with two UART
example to illustrate this: serial ports a.k.a. UARTs. Let's consider a nodes in the devicetree. These provide the UART type (via the ``compatible``
board containing a SoC with 2 UART instances: property) and certain settings such as the address range of the hardware
peripheral registers in memory (via the ``reg`` property).
* Additionally, the UART **boot-time configuration** is also described with
devicetree. This could include configuration such as the RX IRQ line's
priority and the UART baud rate. These may be modifiable at runtime, but
their boot-time configuration is described in devicetree.
* Whether or not to include **software support** for UART in the build is
controlled via Kconfig. Applications which do not need to use the UARTs can
remove the driver source code from the build using Kconfig, even though the
board's devicetree still includes UART nodes.
* The fact that the target hardware **contains** 2 UARTs is described with Device As another example, consider a device with a 2.4GHz, multi-protocol radio
Tree. This includes the UART type, its driver compatibility and certain supporting both the Bluetooth Low Energy and 802.15.4 wireless technologies.
immutable (i.e. not software-configurable) settings such as the base address
of the hardware peripheral in memory or its interrupt line.
* Additionally, **hardware boot-time configuration** is also described with Device
Tree. This includes things such as the IRQ priority and boot-time UART
baudrate. These may also be modifiable at runtime later, but their boot-time
default configuration is described in Device Tree.
* The fact that the user intends to include **software support** for UART in the
build is described in Kconfig. Through the use of Kconfig, users can opt not
to include support for this particular hardware item if they don't require it.
Another example is a device with a 2.4GHz, multi-protocol radio supporting * Devicetree should be used to describe the presence of the radio **hardware**,
both the Bluetooth Low Energy and 802.15.4 wireless technologies. In this case: what driver or drivers it's compatible with, etc.
* **Boot-time configuration** for the radio, such as TX power in dBm, should
also be specified using devicetree.
* Kconfig should determine which **software features** should be built for the
radio, such as selecting a BLE or 802.15.4 protocol stack.
* Device Tree describes the presence of a radio peripheral compatible with a There are two noteworthy **exceptions** to these rules:
certain radio driver.
* Additional hardware boot-time configuration settings may also be present
in the Device Tree files. In this particular case it could be a
default TX power in dBm if the hardware does have a simple, cross-wireless
technology register for that.
* Kconfig will describe which **protocol stack** is to be used with that radio.
The user may decide to select BLE or 802.15.4, which will both depend on
the presence of a compatible radio in the Device Tree files.
Device tree file formats * Devicetree's ``chosen`` keyword, which allows the user to select a specific
************************ instance of a hardware device to be used for a particular purpose. An example
of this is selecting a particular UART for use as the system's console.
* Devicetree's ``status`` keyword, which allows the user to enable or disable a
particular instance of a hardware device. This takes precedence over related
Kconfig options which serve a similar purpose.
Hardware and software is described inside of device tree files in clear text format. .. _dt_k6x_example:
These files have the file suffix of .dtsi or .dts. The .dtsi files are meant to
be included by other files. Typically for a given board you have some number of
.dtsi include files that pull in common device descriptions that are used across
a given SoC family.
Example: FRDM K64F Board and Hexiwear K64 Example: FRDM-K64F and Hexiwear K64
========================================= ===================================
.. Give the filenames instead of the full paths below, as it's easier to read. .. Give the filenames instead of the full paths below, as it's easier to read.
The cramped 'foo.dts<path>' style avoids extra spaces before commas. The cramped 'foo.dts<path>' style avoids extra spaces before commas.
These boards are defined in :zephyr_file:`frdm_k64fs.dts The FRDM-K64F and Hexiwear K64 board devicetrees are defined in
<boards/arm/frdm_k64f/frdm_k64f.dts>` and :zephyr_file:`hexiwear_k64.dts :zephyr_file:`frdm_k64fs.dts <boards/arm/frdm_k64f/frdm_k64f.dts>` and
<boards/arm/hexiwear_k64/hexiwear_k64.dts>`. They are based on the same NXP :zephyr_file:`hexiwear_k64.dts <boards/arm/hexiwear_k64/hexiwear_k64.dts>`
Kinetis SoC family, the K6X. respectively. Both boards have NXP SoCs from the same Kinetis SoC family, the
K6X.
Common definitions for K6X are stored in :zephyr_file:`nxp_k6x.dtsi Common devicetree definitions for K6X are stored in :zephyr_file:`nxp_k6x.dtsi
<dts/arm/nxp/nxp_k6x.dtsi>`, which is included by both board :file:`.dts` <dts/arm/nxp/nxp_k6x.dtsi>`, which is included by both board :file:`.dts`
files. :zephyr_file:`nxp_k6x.dtsi<dts/arm/nxp/nxp_k6x.dtsi>` in turn includes files. :zephyr_file:`nxp_k6x.dtsi<dts/arm/nxp/nxp_k6x.dtsi>` in turn includes
:zephyr_file:`armv7-m.dtsi<dts/arm/armv7-m.dtsi>`, which has common :zephyr_file:`armv7-m.dtsi<dts/arm/armv7-m.dtsi>`, which has common definitions
definitions for ARMv7-M-based systems. for Arm v7-M cores.
Since :zephyr_file:`nxp_k6x.dtsi<dts/arm/nxp/nxp_k6x.dtsi>` is meant to be Since :zephyr_file:`nxp_k6x.dtsi<dts/arm/nxp/nxp_k6x.dtsi>` is meant to be
generic across K6X-based boards, it leaves many devices disabled by default. generic across K6X-based boards, it leaves many devices disabled by default
For example, there is a CAN controller defined as follows (with unimportant using ``status`` properties. For example, there is a CAN controller defined as
parts skipped): follows (with unimportant parts skipped):
.. code-block:: none .. code-block:: none
@ -181,12 +331,13 @@ parts skipped):
... ...
}; };
It is up to the board :file:`.dts` files to enable devices (by setting It is up to the board :file:`.dts` or application overlay files to enable these
``status = "okay"``). The board :file:`.dts` files are also responsible for any devices as desired, by setting ``status = "okay"``. The board :file:`.dts`
board-specific configuration of the device. files are also responsible for any board-specific configuration of the device,
such as adding nodes for on-board sensors, LEDs, buttons, etc.
For example, FRDM K64 (but not Hexiwear K64) enables the CAN controller, also For example, FRDM-K64 (but not Hexiwear K64) :file:`.dts` enables the CAN
setting the bus speed: controller and sets the bus speed:
.. code-block:: none .. code-block:: none
@ -196,61 +347,58 @@ setting the bus speed:
}; };
The ``&can0 { ... };`` syntax adds/overrides properties on the node with label The ``&can0 { ... };`` syntax adds/overrides properties on the node with label
``can0``, i.e. the ``can@4002400`` node. ``can0``, i.e. the ``can@4002400`` node defined in the :file:`.dtsi` file.
Other examples of board-specific customization is pointing properties in Other examples of board-specific customization is pointing properties in
``aliases`` and ``chosen`` to the right nodes (see :ref:`dt-alias-chosen`), and ``aliases`` and ``chosen`` to the right nodes (see :ref:`dt-alias-chosen`), and
making GPIO/PinMux assignments. making GPIO/pinmux assignments.
Currently supported boards Currently supported boards
************************** **************************
Device tree is currently supported on all embedded targets except posix Devicetree is currently supported on all embedded targets except posix
(boards/posix) and qemu_x86_64 (boards/x86_64). (boards/posix) and qemu_x86_64 (boards/x86_64).
Adding support for a board Adding support for a board
************************** **************************
Adding device tree support for a given board requires adding a number of files. Adding devicetree support for a given board requires adding a number of files.
These files will contain the DTS information that describes a platform, the These files will contain the DTS information that describes a platform, the
YAML descriptions that define the contents of a given Device Tree peripheral bindings in YAML format, and any fixup files required to support the platform.
node, and also any fixup files required to support the platform.
When writing Device Tree Source files, it is good to separate out common It is best practice to separate common peripheral information that could be
peripheral information that could be used across multiple SoC families or used across multiple cores, SoC families, or boards in :file:`.dtsi` files,
boards. DTS files are identified by their file suffix. A .dtsi suffix denotes reserving the :file:`.dts` suffix for the primary DTS file for a given board.
a DTS file that is used as an include in another DTS file. A .dts suffix
denotes the primary DTS file for a given board.
The primary DTS file will contain at a minimum a version line, optional Devicetree Source File Template
includes, and the root node definition. The root node will contain a model and ===============================
compatible that denotes the unique board described by the .dts file.
Device Tree Source File Template A board's :file:`.dts` file contains at least a version line, optional
================================ includes, and a root node definition with ``model`` and ``compatible``
properties. These property values denote the particular board.
.. code-block:: none .. code-block:: none
/dts-v1/; /dts-v1/;
/ { #include <vendor/soc.dtsi>
model = "Model name for your board";
compatible = "compatible for your board";
/* rest of file */
};
/ {
model = "Human readable board name";
compatible = "vendor,soc-on-your-board's-mcu";
/* rest of file */
};
One suggestion for starting from scratch on a platform/board is to examine other You can use other board :file:`.dts` files as a starting point.
boards and their device tree source files.
The following is a more precise list of required files: The following is a more precise list of required files:
* Base architecture support * Base architecture support
* Add architecture-specific DTS directory, if not already present. * Add architecture-specific DTS directory, if not already present.
Example: dts/arm for ARM. Example: dts/arm for Arm.
* Add target specific device tree files for base SoC. These should be * Add target specific devicetree files for base SoC. These should be
.dtsi files to be included in the board-specific device tree files. .dtsi files to be included in the board-specific devicetree files.
* Add target specific YAML binding files in the dts/bindings/ directory. * Add target specific YAML binding files in the dts/bindings/ directory.
Create the yaml directory if not present. Create the yaml directory if not present.
@ -284,7 +432,7 @@ The following is a more precise list of required files:
* Overlay Files (optional) * Overlay Files (optional)
* Overlay files contain tweaks or changes to the SoC and Board support files * Overlay files contain tweaks or changes to the SoC and Board support files
described above. They can be used to modify Device Tree configurations described above. They can be used to modify devicetree configurations
without having to change the SoC and Board files. See without having to change the SoC and Board files. See
:ref:`application_dt` for more information on overlay files and the Zephyr :ref:`application_dt` for more information on overlay files and the Zephyr
build system. build system.
@ -295,7 +443,7 @@ The following is a more precise list of required files:
================================ ================================
Using an alias with a common name for a particular node makes it easier for you Using an alias with a common name for a particular node makes it easier for you
to write board-independent source code. Device Tree ``aliases`` nodes are used to write board-independent source code. Devicetree ``aliases`` nodes are used
for this purpose, by mapping certain generic, commonly used names to specific for this purpose, by mapping certain generic, commonly used names to specific
hardware resources: hardware resources:
@ -311,7 +459,7 @@ hardware resources:
Certain software subsystems require a specific hardware resource to bind to in Certain software subsystems require a specific hardware resource to bind to in
order to function properly. Some of those subsystems are used with many order to function properly. Some of those subsystems are used with many
different boards, which makes using the Device Tree ``chosen`` nodes very different boards, which makes using the devicetree ``chosen`` nodes very
convenient. By doing, so the software subsystem can rely on having the specific convenient. By doing, so the software subsystem can rely on having the specific
hardware peripheral assigned to it. In the following example we bind the shell hardware peripheral assigned to it. In the following example we bind the shell
to ``uart1`` in this board: to ``uart1`` in this board:
@ -351,10 +499,10 @@ The full set of Zephyr-specific ``chosen`` nodes follows:
- ``DT_UART_MCUMGR_ON_DEV_NAME`` - ``DT_UART_MCUMGR_ON_DEV_NAME``
Adding support for device tree in drivers Adding support for devicetree in drivers
***************************************** ****************************************
As drivers and other source code is converted over to make use of device tree As drivers and other source code is converted over to make use of devicetree
generated information, these drivers may require changes to match the generated generated information, these drivers may require changes to match the generated
#define information. #define information.
@ -362,9 +510,9 @@ generated information, these drivers may require changes to match the generated
Source Tree Hierarchy Source Tree Hierarchy
********************* *********************
The device tree files are located in a couple of different directories. The The devicetree files are located in a couple of different directories. The
directory split is done based on architecture, and there is also a common directory split is done based on architecture, and there is also a common
directory where architecture agnostic device tree and YAML binding files are directory where architecture agnostic devicetree and YAML binding files are
located. located.
Assuming the current working directory is the ZEPHYR_BASE, the directory Assuming the current working directory is the ZEPHYR_BASE, the directory
@ -375,7 +523,7 @@ hierarchy looks like the following::
dts/bindings/ dts/bindings/
boards/<ARCH>/<BOARD>/ boards/<ARCH>/<BOARD>/
The common directory contains a ``skeleton.dtsi`` which provides device tree root The common directory contains a ``skeleton.dtsi`` which provides devicetree root
node definition. The bindings subdirectory contains YAML binding files used node definition. The bindings subdirectory contains YAML binding files used
to instruct how the python DTS parsing script should extract nodes information to instruct how the python DTS parsing script should extract nodes information
in a format that will be usable by the system. in a format that will be usable by the system.
@ -392,8 +540,8 @@ Example: Subset of DTS/YAML files for NXP FRDM K64F (Subject to Change)::
.. _bindings: .. _bindings:
Bindings Devicetree Bindings
******** *******************
``.dts`` files describe the available hardware devices, but don't tell the ``.dts`` files describe the available hardware devices, but don't tell the
system which pieces of information are useful, or what kind of configuration system which pieces of information are useful, or what kind of configuration
@ -530,7 +678,7 @@ Include files generation
************************ ************************
At build time, after a board's ``.dts`` file has been processed by the DTC At build time, after a board's ``.dts`` file has been processed by the DTC
(Device Tree Compiler), a corresponding ``.dts_compiled`` file is generated (Devicetree Compiler), a corresponding ``.dts_compiled`` file is generated
under the ``zephyr`` directory. under the ``zephyr`` directory.
This ``.dts_compiled`` file is processed by the python DTS parsing script This ``.dts_compiled`` file is processed by the python DTS parsing script
and generates an include file named and generates an include file named
@ -562,6 +710,6 @@ Additionally, a file named ``generated_dts_board_fixups.h`` is
generated in the same directory concatenating all board-related fixup files. generated in the same directory concatenating all board-related fixup files.
The include file ``include/generated_dts_board.h`` includes both these generated The include file ``include/generated_dts_board.h`` includes both these generated
files, giving Zephyr C source files access to the board's device tree information. files, giving Zephyr C source files access to the board's devicetree information.
.. include:: flash_partitions.inc .. include:: flash_partitions.inc

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View file

@ -0,0 +1,357 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
style="background-color: rgb(255, 255, 255);"
version="1.1"
width="481px"
height="171px"
viewBox="-0.5 -0.5 481 171"
content="&lt;mxfile host=&quot;www.draw.io&quot; modified=&quot;2019-10-03T21:13:02.112Z&quot; agent=&quot;Mozilla/5.0 (X11; Linux x86_64; rv:69.0) Gecko/20100101 Firefox/69.0&quot; etag=&quot;nJzlZGwzNDb1cRSQPZak&quot; version=&quot;12.0.2&quot; type=&quot;google&quot; pages=&quot;1&quot;&gt;&lt;diagram id=&quot;lJw3w9u4R4x5o196SwGf&quot; name=&quot;Page-1&quot;&gt;zVjbcpswEP0aPyZjwPjyWDtu2pl0JjOeaZq+ZBRYgxIhUSEM5OsrmcWAcWy3TUpebPZoJa3O3gQDZxHl15LE4TfhAxvYQz8fOFcD255Ylv41QIGAPS6BQFK/hKwaWNEXQHCIaEp9SFqKSgimaNwGPcE5eKqFESlF1lZbC9beNSYBdICVR1gXvaO+ChG1hsN64AvQIMStpy4ORKRSRiAJiS+yBuQsB85CCqHKpyhfADPcVbyU8z6/MrozTAJX50yIbpzV893F7Ov6VzB0L57Sl+/5Ba6yISzFA1/BhnqgJICxWaTSA7RfFRUpUqTcB7OuNXDmWUgVrGLimdFMR4HGQhUxHMYdQCrIXzXd2hGiAwlEpA0otApOqCgs2mLWcEiFhQ1fOIgRjIFgt3BNk35Apv6AtUmHEfB11KAopApFIDhhyxqd15wNtVTr3AgRI1NPoFSBKUBSJdo8Qk7Vj8bzvVnq0kXpKseVt0KBQmmnMe448ztPv35mG5OPyADUEb3xYU9KYETRTduON3eM3QnneUp1xuvzFYmCqPdItmbtUHbdnkPZOV4AHin3KQ+S3onbKwHTvkvAqMNbh6JESfG86xpWmxLdDWKjF+WB6ZuXayYyLyRSXRLOhdK5IviD5mNOGA24VmSw1meaM/II7FYk1ChoWJZnnceCcgVyudF8JrgH9kTyuLXI1AOfSg2UMzNI1BsF9ajtnFHXOe4B34zfyzfuad8A9z+Z24GWPEaShHqHIvZ04exycuLQFXZ2PcQdbo1/G5RP2pRP9rgsyzlOal4K9teZHV+nLPeddbZu2R367z1V3Q776aR197xvjBzupNrtsmhMMuJ9c6yetpXeoQOPz+zA03/swIcjZbRXgS3r/4bKuJPU18BBEgWmvS+2aUZ8kL13Kmf8wVr89HQ57JsjyzqTpIrMNydp9gFJ2qvxlt03SVXKN1j6CXFYSLMZN3lI4phRb3t7abw+6rdz3/ytKYP+r5LOdI9X5/141WL9hl+WwvozibP8DQ==&lt;/diagram&gt;&lt;/mxfile&gt;"
id="svg66"
sodipodi:docname="zephyr_dt_build_flow.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14"
inkscape:export-filename="/home/mbolivar/zp/zephyr/doc/guides/dts/zephyr_dt_build_flow.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
<metadata
id="metadata70">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2656"
inkscape:window-height="1657"
id="namedview68"
showgrid="false"
inkscape:zoom="1.4636175"
inkscape:cx="24.347153"
inkscape:cy="72.312542"
inkscape:window-x="879"
inkscape:window-y="211"
inkscape:window-maximized="0"
inkscape:current-layer="g64" />
<defs
id="defs2" />
<g
id="g64">
<rect
x="0"
y="0"
width="120"
height="30"
rx="4.5"
ry="4.5"
fill="#ffffff"
stroke="#000000"
pointer-events="none"
id="rect4" />
<g
transform="translate(12.5,8.5)"
id="g10">
<switch
id="switch8">
<foreignObject
style="overflow:visible;"
pointer-events="all"
width="95"
height="12"
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 96px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">Devicetree source</xhtml:div>
</xhtml:div>
</foreignObject>
<text
x="48"
y="12"
fill="#000000"
text-anchor="middle"
font-size="12px"
font-family="Helvetica"
id="text6">Devicetree source</text>
</switch>
</g>
<path
d="M 290 50 L 333.63 50"
fill="none"
stroke="#000000"
stroke-miterlimit="10"
pointer-events="none"
id="path12" />
<path
d="M 338.88 50 L 331.88 53.5 L 333.63 50 L 331.88 46.5 Z"
fill="#000000"
stroke="#000000"
stroke-miterlimit="10"
pointer-events="none"
id="path14" />
<rect
x="170"
y="35"
width="120"
height="30"
rx="4.5"
ry="4.5"
fill="#ffffff"
stroke="#000000"
pointer-events="none"
id="rect16" />
<g
transform="translate(196.5,43.5)"
id="g22">
<switch
id="switch20">
<foreignObject
style="overflow:visible;"
pointer-events="all"
width="67"
height="12"
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 68px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">Build system</xhtml:div>
</xhtml:div>
</foreignObject>
<text
x="34"
y="12"
fill="#000000"
text-anchor="middle"
font-size="12px"
font-family="Helvetica"
id="text18">Build system</text>
</switch>
</g>
<path
d="M 170 20 L 145 20 L 145 80 L 170 80"
fill="none"
stroke="#000000"
stroke-miterlimit="10"
transform="rotate(180,145,50)"
pointer-events="none"
id="path32" />
<path
d="M 120 50 L 145 50"
fill="none"
stroke="#000000"
stroke-miterlimit="10"
transform="rotate(180,145,50)"
pointer-events="none"
id="path34" />
<path
d="M 150 50 L 163.63 50"
fill="none"
stroke="#000000"
stroke-miterlimit="10"
pointer-events="none"
id="path36" />
<path
d="M 168.88 50 L 161.88 53.5 L 163.63 50 L 161.88 46.5 Z"
fill="#000000"
stroke="#000000"
stroke-miterlimit="10"
pointer-events="none"
id="path38" />
<path
d="M 400 65 L 400 88.63"
fill="none"
stroke="#000000"
stroke-miterlimit="10"
pointer-events="none"
id="path40" />
<path
d="M 400 93.88 L 396.5 86.88 L 400 88.63 L 403.5 86.88 Z"
fill="#000000"
stroke="#000000"
stroke-miterlimit="10"
pointer-events="none"
id="path42" />
<rect
x="340"
y="35"
width="120"
height="30"
rx="4.5"
ry="4.5"
fill="#ffffff"
stroke="#000000"
pointer-events="none"
id="rect44" />
<g
transform="translate(345.5,43.5)"
id="g50">
<switch
id="switch48">
<foreignObject
style="overflow:visible;"
pointer-events="all"
width="108"
height="12"
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 109px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">Generated C header</xhtml:div>
</xhtml:div>
</foreignObject>
<text
x="54"
y="12"
fill="#000000"
text-anchor="middle"
font-size="12px"
font-family="Helvetica"
id="text46">Generated C header</text>
</switch>
</g>
<rect
x="330.03046"
y="95"
width="129.96954"
height="55"
rx="8.9354067"
ry="8.25"
pointer-events="none"
id="rect52"
style="fill:#ffffff;stroke:#000000;stroke-width:1.04071105" />
<rect
x="340.01202"
y="105"
width="129.98798"
height="55"
rx="8.9366732"
ry="8.25"
pointer-events="none"
id="rect54"
style="fill:#ffffff;stroke:#000000;stroke-width:1.04078484" />
<rect
x="350.11337"
y="115"
width="129.88664"
height="55"
rx="8.9297066"
ry="8.25"
pointer-events="none"
id="rect56"
style="fill:#ffffff;stroke:#000000;stroke-width:1.04037905" />
<g
transform="translate(356.03409,113.30113)"
id="g62">
<switch
id="switch60"
transform="translate(0.68323861)">
<foreignObject
style="overflow:visible;"
pointer-events="all"
width="116"
height="41"
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 116px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">Zephyr and application source code files</xhtml:div>
</xhtml:div>
</foreignObject>
<text
x="58"
y="27"
font-size="12px"
id="text58"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:'Helvetica, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000">
<tspan
sodipodi:role="line"
id="tspan72"
x="58"
y="27">Zephyr and application</tspan>
<tspan
sodipodi:role="line"
id="tspan74"
x="58"
y="42">source code files</tspan>
</text>
</switch>
</g>
<rect
style="fill:#ffffff;stroke:#000000"
x="0"
y="50"
width="120"
height="30"
rx="4.5"
ry="4.5"
pointer-events="none"
id="rect24-9" />
<rect
style="fill:#ffffff;stroke:#000000"
x="6.4573889"
y="58.480114"
width="120"
height="30"
rx="4.5"
ry="4.5"
pointer-events="none"
id="rect24-1" />
<g
id="g101"
transform="translate(15.03125,6.8323869)">
<rect
id="rect24"
pointer-events="none"
ry="4.5"
rx="4.5"
height="30"
width="120"
y="60"
x="0"
style="fill:#ffffff;stroke:#000000" />
<g
id="g30"
transform="translate(8.5,68.5)">
<switch
id="switch28">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="12"
width="103"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 104px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">Devicetree bindings</xhtml:div>
</xhtml:div>
</foreignObject>
<text
id="text26"
font-size="12px"
y="12"
x="52"
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000">Devicetree bindings</text>
</switch>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

View file

@ -0,0 +1,741 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
style="background-color: rgb(255, 255, 255);"
version="1.1"
width="945px"
height="708px"
viewBox="-0.5 -0.5 945 708"
content="&lt;mxfile host=&quot;www.draw.io&quot; modified=&quot;2019-10-03T19:55:39.802Z&quot; agent=&quot;Mozilla/5.0 (X11; Linux x86_64; rv:69.0) Gecko/20100101 Firefox/69.0&quot; etag=&quot;lCHvuS5EbzEef8XEtNpw&quot; version=&quot;12.0.2&quot; type=&quot;google&quot; pages=&quot;1&quot;&gt;&lt;diagram name=&quot;Page-1&quot; id=&quot;b520641d-4fe3-3701-9064-5fc419738815&quot;&gt;7Ztbc5s4FIB/jR+9wx37MSbXbtLpNp12sy8dGWTQBhAV8i2/fiUsGahkmp0aO90l8UzQkYSEzqdzDkfxyA6yzQ0BRfKAI5iOLCPajOzLkWWZhm2yP1yyFRLLne4kMUGRkNWCR/QCZVchXaIIlq2GFOOUoqItDHGew5C2ZIAQvG43W+C0PWoBYqgIHkOQqtIvKKKJkJqGUVfcQhQnYuiJKyrmIHyOCV7mYryRZS+qn111BuS9RPsyARFeN0T21cgOCMZ0d5VtApjyxZXLtut3faB2P28Cc/qaDu8ujLX/0fvj6fe7T48Odm5Xz3dj0xeTo1u5IDBi6yOKmNAExzgH6VUtnVUPDfltDVaq29xjXDChyYR/Q0q3QtlgSTETJTRLRS3cIPon7/6bK0pPjZrLjbhzVdjKQk7JttGJF5+adXW3qiT7qcskVq7ESxKKZ7ZMCKbe1PJcEBmmNxl7gkRAYii6vbzbrpYP8MvS/Gx+8t8vipf307Gza8fXrHFzoYAbiDPI5sIaEJgCilZt5oBAN963q9XHLoQG9do8NOMVSJdQAnmtKLdcoywFOWzrY4FzKlXO1yxMUBrdgy1e8mcvKSNdlmYJJuiFtQeyM6smVKja8vjdUJoGOMWkGtKGBv9t9XzkdxRjEViyvh+kfsy96B6UVM4HpykoSjSvZsibZEwxKJ9hSnEmGslHu24PL/akPQMpinMmC9lAkLQwrh5Dbs/dgBkKxXUK5jCd7Te7vHWOq1UsKcHPsDGeUf3sa6RNkct8DTKUcjY/QxKBHMjV362faYmy7oYHSV5BQuGmkz9R6ziTXRdprYVtWteWzxeipGHzPO/ngQXhy1PpT27oX3dPZWDNL1dBPDYVQE9qfay3an6kXpr2R2+/jXMZIK0+rV/Fm/SsFu9NacU+r1b8c6hF6639N+Ot5ZQb7hpZ4cgxHGbruckfPPfguZue2zaslufWuW7bs1TfbU78Pvi1FX7Zyhds13BNszcRLmIz9L4t+fvNLMckYnqxgpwsxpTpu65SSGcrQtuUt1Ul9NeEVaq0ACHK43u44A/v1JKPYj24aJ0gCh+ZnA+3Zm+13L4xRSzSCqIERRHMK8gooGC+31oFRjmt1tCdsQ97uIB7HJdNOWBlsy6zD29OGAs5mzpAldYh2xVrWFItD4cNxI8JkUR4rwPCOkIwp3V6KhJMySl/3git2GVM5Z7UAHJnBV+NJhS7nmwijc4DKsdBxbVOh4o6XUvhhMC4iQTI+EJX+jc2jvSHhrExqwtRPxBxRCL8yemI0IZmGio01iNMcfg8XhD4bQnzcHsAGmfnd78DZTAo/eFjGs4ZLYqrslNGYFyg/AAgfBaDFekBA/uVQWlvMcirrEgZpl1w+HrLMSe11RhsSY8QuecOZM2Joss3msbqNSvZdeDRTLUc1Pnp8yxdU256BxwqGh7yK79ufgWQUDZzu+j+Nwcl4m1WGiVNumXS00lJV+qyAXGWgYnnWgueNTSjgef/EM9HANiTwAqAHW/KXITiV11HZdg0jpAx1L/kqVnv7qzhpmDRyGKDy4lvtLJDgaZdvSGG3GKTnU578lPpRR09vWUIpgo7h3KJDw8XHITrYAChBxB0ycOTgjBRQOjKH3LXOLzr90KCLmnYFwldx+wNEij6mkTVOap66D1ERP/riMg2vFZE5OlOUHuLh7T8qkF9ZzhEEdv0HO+DgZBsYRqmMTi/Fi+dBuRNRkHaGavO71AUdHsZDBj0hMEpYyDtjNVguPMM1R5ioJ5IOHsMpHmnBkVUTqeewcIgezqEQUMY1AyDrO/yQr510ryQnmFTYbgzEAIrEGO2+fegDz7uh5btOP9QdlrTpp7mHgp2Lj5cPg4k9EXC2cMdzb+bdsU73OsN8U4/LPQY8LBi/XXIqq7xpVP76h8=&lt;/diagram&gt;&lt;/mxfile&gt;"
id="svg188"
sodipodi:docname="zephyr_dt_i2c_example.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14"
inkscape:export-filename="/home/mbolivar/zp/zephyr/doc/guides/dts/zephyr_dt_i2c_example.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
<metadata
id="metadata192">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2721"
inkscape:window-height="1683"
id="namedview190"
showgrid="false"
inkscape:zoom="1.3333333"
inkscape:cx="441.4645"
inkscape:cy="312.79664"
inkscape:window-x="222"
inkscape:window-y="73"
inkscape:window-maximized="0"
inkscape:current-layer="svg188" />
<defs
id="defs2" />
<path
style="fill:none;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path4"
pointer-events="none"
stroke-miterlimit="10"
d="m 378.25,73.5 v 27.63" />
<path
style="fill:#000000;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path6"
pointer-events="none"
stroke-miterlimit="10"
d="m 378.25,106.38 -3.5,-7 3.5,1.75 3.5,-1.75 z" />
<g
id="g326"
transform="translate(-84.75,7.5)">
<path
d="M 498,26 V 11.7 Q 498,0 486.3,0 H 439.7 Q 428,0 428,11.7 V 26"
stroke-miterlimit="10"
pointer-events="none"
id="path8"
inkscape:connector-curvature="0"
style="fill:#e0e0e0;stroke:#000000;stroke-miterlimit:10" />
<path
d="M 428,26 V 54.3 Q 428,66 439.7,66 h 46.6 Q 498,66 498,54.3 V 26"
stroke-miterlimit="10"
pointer-events="none"
id="path10"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke:#000000;stroke-miterlimit:10" />
<path
d="m 428,26 h 70"
stroke-miterlimit="10"
pointer-events="none"
id="path12"
inkscape:connector-curvature="0"
style="fill:none;stroke:#000000;stroke-miterlimit:10" />
<g
transform="translate(460.5,7.5)"
id="g18">
<switch
id="switch16">
<foreignObject
style="overflow:visible;"
pointer-events="all"
width="4"
height="12"
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;">/</xhtml:div>
</xhtml:div>
</foreignObject>
<text
x="2"
y="12"
font-size="12px"
id="text14"
style="font-size:12px;font-family:Verdana;text-anchor:middle;fill:#000000">/</text>
</switch>
</g>
</g>
<path
style="fill:none;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path20"
pointer-events="none"
stroke-miterlimit="10"
d="m 312.25,315.75 v 38 h -196 v 31.63" />
<path
style="fill:#000000;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path22"
pointer-events="none"
stroke-miterlimit="10"
d="m 116.25,385.63 -3.5,-7 3.5,1.75 3.5,-1.75 z" />
<path
style="fill:none;stroke:#000000;stroke-width:0.55926853;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path24"
pointer-events="none"
stroke-miterlimit="10"
d="m 376.75,315.75 v 64.63" />
<path
style="fill:#000000;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path26"
pointer-events="none"
stroke-miterlimit="10"
d="m 376.75,385.63 -3.5,-7 3.5,1.75 3.5,-1.75 z" />
<path
style="fill:none;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path28"
pointer-events="none"
stroke-miterlimit="10"
d="m 437.75,313.5 v 36 h 213 v 30.13" />
<path
style="fill:#000000;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path30"
pointer-events="none"
stroke-miterlimit="10"
d="m 650.75,385.63 -3.5,-7 3.5,1.75 3.5,-1.75 z" />
<path
style="fill:#e0e0e0;stroke:#000000;stroke-width:0.78149533;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path32"
pointer-events="none"
stroke-miterlimit="10"
d="m 487.63472,235.07937 v -14.38566 q 0,-11.77009 -7.10305,-11.77009 H 274.96819 q -7.10305,0 -7.10305,11.77009 v 14.38566" />
<path
style="fill:#ffffff;stroke:#000000;stroke-width:0.55442154;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path34"
pointer-events="none"
stroke-miterlimit="10"
d="m 268.15964,234.97771 v 75.79604 q 0,5.93981 7.08401,5.93981 h 205.01256 q 7.08401,0 7.08401,-5.93981 v -75.79604" />
<path
style="fill:none;stroke:#000000;stroke-width:0.7746858;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path36"
pointer-events="none"
stroke-miterlimit="10"
d="m 269.12493,235 h 217.25" />
<g
id="g42"
transform="translate(338.58293,216.5)">
<switch
id="switch40">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="12"
width="78"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;">i2c@40003000</xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-size:12px;font-family:Verdana;text-anchor:middle;fill:#000000"
id="text38"
font-size="12px"
y="12"
x="39">i2c@40003000</text>
</switch>
</g>
<g
id="g48"
transform="translate(272.92386,240.75)">
<switch
id="switch46">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="12"
width="160"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; overflow: hidden; max-height: 22px; max-width: 350px; width: 161px; white-space: normal; overflow-wrap: normal; text-align: left;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">compatible = &quot;nordic,nrf-twim&quot;</xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000"
id="text44"
font-size="12px"
y="12"
x="80">compatible = &quot;nordic,nrf-twim&quot;</text>
</switch>
</g>
<g
id="g54"
transform="translate(272.68201,266.75)">
<switch
id="switch52">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="12"
width="80"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; overflow: hidden; max-height: 22px; max-width: 350px; width: 81px; white-space: normal; overflow-wrap: normal; text-align: left;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">
<xhtml:div>label = &quot;I2C_0&quot;</xhtml:div>
</xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:'Helvetica, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000"
id="text50"
font-size="12px"
y="12"
x="40">
<tspan
y="12"
x="40"
sodipodi:role="line"
id="tspan289">label = &quot;I2C_0&quot;</tspan>
</text>
</switch>
</g>
<g
id="g60"
transform="translate(277.75,292.75)">
<switch
id="switch58">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="12"
width="144"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; overflow: hidden; max-height: 22px; max-width: 350px; width: 145px; white-space: normal; overflow-wrap: normal; text-align: left;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">reg = &lt;0x4003000 0x1000&gt;</xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000;-inkscape-font-specification:'Helvetica, Normal';font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal;text-align:center;writing-mode:lr;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;"
id="text56"
font-size="12px"
y="12"
x="72">
<tspan
sodipodi:role="line"
id="tspan4286">reg = &lt;0x40003000 0x1000&gt;</tspan>
</text>
</switch>
</g>
<path
style="fill:none;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path80"
pointer-events="none"
stroke-miterlimit="10"
d="m 378.25,173.5 v 27.63" />
<path
style="fill:#000000;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path82"
pointer-events="none"
stroke-miterlimit="10"
d="m 378.25,206.38 -3.5,-7 3.5,1.75 3.5,-1.75 z" />
<g
id="g334"
transform="translate(-84.75,7.5)">
<path
d="M 503,126 V 111.7 Q 503,100 491.3,100 H 434.7 Q 423,100 423,111.7 V 126"
stroke-miterlimit="10"
pointer-events="none"
id="path84"
inkscape:connector-curvature="0"
style="fill:#e0e0e0;stroke:#000000;stroke-miterlimit:10" />
<path
d="m 423,126 v 28.3 q 0,11.7 11.7,11.7 h 56.6 Q 503,166 503,154.3 V 126"
stroke-miterlimit="10"
pointer-events="none"
id="path86"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke:#000000;stroke-miterlimit:10" />
<path
d="m 423,126 h 80"
stroke-miterlimit="10"
pointer-events="none"
id="path88"
inkscape:connector-curvature="0"
style="fill:none;stroke:#000000;stroke-miterlimit:10" />
<g
transform="translate(453.5,107.5)"
id="g94">
<switch
id="switch92">
<foreignObject
style="overflow:visible;"
pointer-events="all"
width="19"
height="12"
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;">soc</xhtml:div>
</xhtml:div>
</foreignObject>
<text
x="10"
y="12"
font-size="12px"
id="text90"
style="font-size:12px;font-family:Verdana;text-anchor:middle;fill:#000000">soc</text>
</switch>
</g>
</g>
<g
id="g562"
transform="translate(-103.5,-60)">
<g
transform="translate(99.75,68.375)"
id="g494">
<path
style="fill:#e0e0e0;stroke:#000000;stroke-width:0.87646109;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path96"
pointer-events="none"
stroke-miterlimit="10"
d="m 790.31177,407.46825 v -14.31651 q 0,-11.71351 -8.97739,-11.71351 H 527.66562 q -8.97739,0 -8.97739,11.71351 v 14.31651" />
<path
style="fill:#ffffff;stroke:#000000;stroke-width:0.87646109;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path98"
pointer-events="none"
stroke-miterlimit="10"
d="m 518.68823,407.46825 v 69.38001 q 0,11.71351 8.97739,11.71351 h 253.66876 q 8.97739,0 8.97739,-11.71351 v -69.38001" />
<path
style="fill:none;stroke:#000000;stroke-width:0.87646109;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path100"
pointer-events="none"
stroke-miterlimit="10"
d="M 518.68823,407.46825 H 790.31177" />
<g
id="g106"
transform="translate(609.5,389.5)">
<switch
id="switch104">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="12"
width="90"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;">mma8652fc@1d</xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-size:12px;font-family:Verdana;text-anchor:middle;fill:#000000"
id="text102"
font-size="12px"
y="12"
x="45">mma8652fc@1d</text>
</switch>
</g>
<g
id="g112"
transform="translate(524.25,414.5)">
<switch
id="switch110">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="12"
width="250"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; overflow: hidden; max-height: 22px; max-width: 342px; width: 251px; white-space: normal; overflow-wrap: normal; text-align: left;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">compatible = &quot;nxp,fxos8700&quot;, &quot;nxp,mma8652fc&quot;</xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000"
id="text108"
font-size="12px"
y="12"
x="125">compatible = &quot;nxp,fxos8700&quot;, &quot;nxp,mma8652fc&quot;</text>
</switch>
</g>
<g
id="g118"
transform="translate(524.25,440.5)">
<switch
id="switch116">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="12"
width="118"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; overflow: hidden; max-height: 22px; max-width: 342px; width: 119px; white-space: normal; overflow-wrap: normal; text-align: left;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">label = &quot;MMA8652FC&quot;</xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000"
id="text114"
font-size="12px"
y="12"
x="59">label = &quot;MMA8652FC&quot;</text>
</switch>
</g>
<g
id="g124"
transform="translate(524.25,466.5)">
<switch
id="switch122">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="12"
width="70"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; overflow: hidden; max-height: 22px; max-width: 342px; width: 71px; white-space: normal; overflow-wrap: normal; text-align: left;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">reg = &lt;0x1d&gt;</xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000"
id="text120"
font-size="12px"
y="12"
x="35">reg = &lt;0x1d&gt;</text>
</switch>
</g>
</g>
<g
transform="translate(87.255861,-150.125)"
id="g511">
<path
style="fill:#e0e0e0;stroke:#000000;stroke-width:0.74922824;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path126"
pointer-events="none"
stroke-miterlimit="10"
d="m 488.42715,625.93555 v -14.33352 q 0,-11.72742 -6.55236,-11.72742 H 296.72873 q -6.55236,0 -6.55236,11.72742 v 14.33352" />
<path
style="fill:#ffffff;stroke:#000000;stroke-width:0.74922824;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path128"
pointer-events="none"
stroke-miterlimit="10"
d="m 290.17637,625.93555 v 69.46242 q 0,11.72742 6.55236,11.72742 h 185.14606 q 6.55236,0 6.55236,-11.72742 v -69.46242" />
<path
style="fill:none;stroke:#000000;stroke-width:0.74922824;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path130"
pointer-events="none"
stroke-miterlimit="10"
d="M 290.17637,625.93555 H 488.42715" />
<g
id="g136"
transform="translate(360.62109,607.5)">
<switch
id="switch134">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="12"
width="58"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;">ti_hdc@43</xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-size:12px;font-family:Verdana;text-anchor:middle;fill:#000000"
id="text132"
font-size="12px"
y="12"
x="29">ti_hdc@43</text>
</switch>
</g>
<g
id="g142"
transform="translate(299,632.5)">
<switch
id="switch140">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="12"
width="180"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; overflow: hidden; max-height: 22px; max-width: 342px; width: 181px; white-space: normal; overflow-wrap: normal; text-align: left;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">compatible = &quot;ti,hdc&quot;, &quot;ti,hdc1010&quot;</xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000"
id="text138"
font-size="12px"
y="12"
x="90">compatible = &quot;ti,hdc&quot;, &quot;ti,hdc1010&quot;</text>
</switch>
</g>
<g
id="g148"
transform="translate(299,658.5)">
<switch
id="switch146">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="12"
width="100"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; overflow: hidden; max-height: 22px; max-width: 342px; width: 101px; white-space: normal; overflow-wrap: normal; text-align: left;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">label = &quot;HDC1010&quot;</xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000"
id="text144"
font-size="12px"
y="12"
x="50">label = &quot;HDC1010&quot;</text>
</switch>
</g>
<g
id="g154"
transform="translate(299,684.5)">
<switch
id="switch152">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="12"
width="70"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; overflow: hidden; max-height: 22px; max-width: 342px; width: 71px; white-space: normal; overflow-wrap: normal; text-align: left;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">reg = &lt;0x43&gt;</xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000"
id="text150"
font-size="12px"
y="12"
x="35">reg = &lt;0x43&gt;</text>
</switch>
</g>
</g>
<g
transform="translate(117,-12.625001)"
id="g392">
<g
id="g374">
<path
d="m 217.7234,488.4444 v -14.32891 q 0,-11.72366 -7.17092,-11.72366 H 7.9279929 q -7.17092107,0 -7.17092107,11.72366 v 14.32891"
stroke-miterlimit="10"
pointer-events="none"
id="path156"
inkscape:connector-curvature="0"
style="fill:#e0e0e0;stroke:#000000;stroke-width:0.78366983;stroke-miterlimit:10" />
<path
d="m 0.75707183,488.4444 v 69.44011 q 0,11.72366 7.17092107,11.72366 H 210.55248 q 7.17092,0 7.17092,-11.72366 V 488.4444"
stroke-miterlimit="10"
pointer-events="none"
id="path158"
inkscape:connector-curvature="0"
style="fill:#ffffff;stroke:#000000;stroke-width:0.78366983;stroke-miterlimit:10" />
<path
d="M 0.75707183,488.4444 H 217.7234"
stroke-miterlimit="10"
pointer-events="none"
id="path160"
inkscape:connector-curvature="0"
style="fill:none;stroke:#000000;stroke-width:0.78366983;stroke-miterlimit:10" />
<g
transform="translate(71.301758,470.5)"
id="g166">
<switch
id="switch164">
<foreignObject
style="overflow:visible;"
pointer-events="all"
width="76"
height="12"
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Verdana; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;">apds9960@39</xhtml:div>
</xhtml:div>
</foreignObject>
<text
x="38"
y="12"
font-size="12px"
id="text162"
style="font-size:12px;font-family:Verdana;text-anchor:middle;fill:#000000">apds9960@39</text>
</switch>
</g>
</g>
<g
id="g172"
transform="translate(5.5,495.5)">
<switch
id="switch170">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="12"
width="167"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; overflow: hidden; max-height: 22px; max-width: 342px; width: 168px; white-space: normal; overflow-wrap: normal; text-align: left;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">compatible = &quot;avago,apds9960&quot;</xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000"
id="text168"
font-size="12px"
y="12"
x="84">compatible = &quot;avago,apds9960&quot;</text>
</switch>
</g>
<g
id="g178"
transform="translate(5.5,521.5)">
<switch
id="switch176">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="12"
width="106"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; overflow: hidden; max-height: 22px; max-width: 342px; width: 107px; white-space: normal; overflow-wrap: normal; text-align: left;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">label = &quot;APDS9960&quot;</xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000"
id="text174"
font-size="12px"
y="12"
x="53">label = &quot;APDS9960&quot;</text>
</switch>
</g>
<g
id="g184"
transform="translate(5.5,547.5)">
<switch
id="switch182">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="12"
width="70"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; overflow: hidden; max-height: 22px; max-width: 342px; width: 71px; white-space: normal; overflow-wrap: normal; text-align: left;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">reg = &lt;0x39&gt;</xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000"
id="text180"
font-size="12px"
y="12"
x="35">reg = &lt;0x39&gt;</text>
</switch>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

View file

@ -0,0 +1,880 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
style="background-color: rgb(255, 255, 255);"
version="1.1"
width="721px"
height="621px"
viewBox="-0.5 -0.5 721 621"
content="&lt;mxfile host=&quot;www.draw.io&quot; modified=&quot;2019-10-04T20:14:06.232Z&quot; agent=&quot;Mozilla/5.0 (X11; Linux x86_64; rv:69.0) Gecko/20100101 Firefox/69.0&quot; etag=&quot;f1KdDVQKCpK18vfmvEm6&quot; version=&quot;12.0.2&quot; type=&quot;google&quot; pages=&quot;1&quot;&gt;&lt;diagram id=&quot;u5Qc6Gt7wLgsKawjMbJk&quot; name=&quot;Page-1&quot;&gt;7VpZc6M4EP41fgzF4SuPiY/ZVGXHqSS1M5kXlwwyaEcgRgjbzK9fCcRp7MjxkaR28hKp0dGiv+7+WrhjjfzNFwpC72/iQNwxdWfTscYd0zT1nsH/CUmSSQyzd51JXIocKSsFT+g3lEJdSmPkwKg2kBGCGQrrQpsEAbRZTQYoJev6sCXB9V1D4MItwZMN8Lb0G3KYl0mHPb2U/wWR6+U7G7p84oN8sBREHnDIuiKyJh1rRAlhWcvfjCAWby9/L9m86Y6nhWIUBkxlQnfy7WHmJ1e/nr0flgvN9WJErgZSN5bkB4YOP7/sEso84pIA4EkpvaUkDhwoVtV5rxxzT0jIhQYX/gsZS6QxQcwIF3nMx/Ip3CD2vdJ+EUtpPdkbb+TKaSepdB4gRT5kkOaygNHkezlZdF/ydUWnXCrt5WtlZxYH3fkqpSgiMbXhnvdnSkgC6kK2Z1y/MDh3FUj4KWjC51GIAUOruh5AQtYtxpVW5Q1p2AOMLJVcARzLnTpmH3N1bx204k1XNKd39xNDIytIMUjy53y7ypCWWZqmKY8VO8yD5hYL2pzSXKgB0IhR8rNwRqMOLe5koRjnb1wRkLQlJmvbA5RpfsyDxpVD7NhPrXy79hCDTyFI7bvmo7PpmY8KmACM3IC3MVyK8UuE8YhgQlM1LKcHh05XzEn1qTzR079CdX5cBjf7kbaNjDKCZlPy+NmV0WRdBiMjjzBeJRAN9TOByVIB0xN3BlNfiIOMn0fz2T+Tx/ubl7lAgDpeZiFDIq6kizylwZvyqCoaCPOcoLoON7Tt8VkCeDzHQN68nd08jjWHRZdGIQgCwoA419ysQIxmhrvFYAHxA4mQGFFCLyQo4GFvsuKoieQeMuGBRaqR3gTvCbBnDF7H3kWh11OB3l3QEUrpCwKoI5gHovw1EZrsAN6zB9MJ/V8xSZEAIlj2xAJwhWyuP4Ra63Y2jgVDMXWBJ5SjU/uDLHVkWWrA6p8LWEW6//A06ITUpa9IXQzrPblLf8vnHWZ3Ck5dMRjGvCaAOxJ75bWDKMwKhSXaCPPV0b3tfSfAu9Wt4324jffhJQOpYX4WvO+i+CWpPzvFN/Ky80Nz/FzLiqNUSE4zxcgs8gobrthukRn/flFJRPuc5kOQ5Za00sqVz5dXhp/Gz/aX113jEOdLe83VTuiRpmrVbfbe0yVzNffz1du7r+O7r1/mhpYAbsJzFN75FkFti89aeI97k+H44rHE7PfUgsnZkrapVHmn5c9vGHoJFeYUwX+6QIGDAjdSR8xkw2AQIVEBiBMzL6vB54+z2bP6KiMSMICEQjROC3ZRwRfVPA9bpj5SXswmaeXuwgDStMxJwQnDP4XWAYVWG4ovCuKcCL9PRiyz4EvlyWmZ59mT37E5TU59EICslCgDvYaU3qABgSzZylkNFBRqHBHdlC538sCWhRDFyBHZFIVHXPWdrbLMQ4cNgxQqJyk1zbodresWEqy3uHwhPH3iun5Xn6+x4MHFrleOvjbZ5ae9dvteyE8NJRZSlJ5zm/ghwtyQb87SZ69V04zNIeZAmpPJgASweALsn24Kx8bTBi+d8r9+/zRe3LWaebvFi7uXLGWNYYvdz0qoJHFq8qmcZ72BUGWfArJl1jBip7FVb/i6rS5662BcKxcKixhh7prTLK+qM3v5PQ6J+oArqXMv50VGTsvJslP7xKaDwOlk398wSA4oQ+6EhX3oIMAE9ycxC2P2dsLPbcwaoKyVkC1+LUUNTAq8IBvgGyn2kePgXQShnslOzfD7RgN9LXfLrXWqeTaKP1CB3xRlX3Yzmx7yuUwFybyBsg9zvCVLRuioA+8obeS+orblbxzwtCJ8YIXAIdsDX2AnfVDoPxcJNf2uqXnFkAP1/f/VwGYjlxaVzbvVwErxuc3q/GUt04CriKNijToaL35lcuorwIJqnfcKsP86cIw8+R+JHN4tfwmYcfXyB5XW5D8=&lt;/diagram&gt;&lt;/mxfile&gt;"
id="svg148"
sodipodi:docname="zephyr_dt_inputs_outputs.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14"
inkscape:export-filename="/home/mbolivar/zp/zephyr/doc/guides/dts/zephyr_dt_inputs_outputs.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
<metadata
id="metadata152">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2001"
inkscape:window-height="1610"
id="namedview150"
showgrid="false"
inkscape:zoom="1.5201288"
inkscape:cx="329.5894"
inkscape:cy="363.03523"
inkscape:window-x="68"
inkscape:window-y="27"
inkscape:window-maximized="0"
inkscape:current-layer="svg148" />
<defs
id="defs2" />
<path
style="fill:none;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path4"
pointer-events="none"
stroke-miterlimit="10"
d="m 310,150 h 60 v -13.63" />
<path
style="fill:#000000;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path6"
pointer-events="none"
stroke-miterlimit="10"
d="m 370,131.12 3.5,7 -3.5,-1.75 -3.5,1.75 z" />
<path
style="fill:#d5e8d4;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path8"
pointer-events="none"
stroke-miterlimit="10"
d="m 203.64,116.64 c 0,-1.76 0.71,-3.45 1.99,-4.7 1.28,-1.24 3.02,-1.94 4.82,-1.94 h 92.73 c 1.81,0 3.54,0.7 4.82,1.94 1.28,1.25 2,2.94 2,4.7 v 53.08 c -17,-7 -36.19,-7 -53.18,0 -17,7.01 -36.19,7.01 -53.18,0 z" />
<path
style="fill:#d5e8d4;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path10"
pointer-events="none"
stroke-miterlimit="10"
d="m 196.82,123.27 c 0,-3.66 3.05,-6.63 6.82,-6.63 h 92.72 c 3.77,0 6.82,2.97 6.82,6.63 v 53.09 c -16.99,-7.01 -36.18,-7.01 -53.18,0 -17,7 -36.19,7 -53.18,0 z" />
<path
style="fill:#d5e8d4;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path12"
pointer-events="none"
stroke-miterlimit="10"
d="m 190,129.91 c 0,-1.76 0.72,-3.45 2,-4.7 1.28,-1.24 3.01,-1.94 4.82,-1.94 h 92.73 c 1.8,0 3.54,0.7 4.82,1.94 1.28,1.25 1.99,2.94 1.99,4.7 v 53.08 c -16.99,-7 -36.18,-7 -53.18,0 C 226.19,190 207,190 190,182.99 Z" />
<g
id="g18"
transform="translate(201.05191,111.73835)">
<switch
id="switch16">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="41"
width="80"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 81px; white-space: nowrap; overflow-wrap: normal; text-align: left;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">
<xhtml:div>FILE1.overlay</xhtml:div>
<xhtml:div>...</xhtml:div>
<xhtml:div>FILE_n.overlay<xhtml:br />
</xhtml:div>
</xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:'Helvetica, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000"
id="text14"
font-size="12px"
y="27"
x="40">
<tspan
y="27"
x="40"
id="tspan276"
sodipodi:role="line">FILE_1.overlay</tspan>
<tspan
y="42"
x="40"
id="tspan278"
sodipodi:role="line">...</tspan>
<tspan
y="57"
x="40"
id="tspan280"
sodipodi:role="line">FILE_n.overlay</tspan>
</text>
</switch>
</g>
<path
style="fill:none;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path20"
pointer-events="none"
stroke-miterlimit="10"
d="m 180,110 h -10 v 80 h 10" />
<path
style="fill:none;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path22"
pointer-events="none"
stroke-miterlimit="10"
d="m 160,150 h 10" />
<g
id="g28"
transform="translate(-0.5,129.5)">
<switch
id="switch26">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="41"
width="157"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: right;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;">
<xhtml:div>Set by DTC_OVERLAY_FILE.</xhtml:div>
<xhtml:div>Optional DTS format files</xhtml:div>
<xhtml:div>which override BOARD.dts<xhtml:br />
</xhtml:div>
</xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000"
id="text24"
font-size="12px"
y="6.6069913"
x="82.947037">
<tspan
y="6.6069913"
x="82.947037"
id="tspan162"
sodipodi:role="line">Set by DTC_OVERLAY_FILE.</tspan>
<tspan
y="21.606991"
x="82.947037"
id="tspan164"
sodipodi:role="line">Optional DTS format files</tspan>
<tspan
y="36.606991"
x="82.947037"
id="tspan166"
sodipodi:role="line">which override BOARD.dts.</tspan>
<tspan
y="51.606991"
x="82.947037"
id="tspan168"
sodipodi:role="line"></tspan>
</text>
</switch>
</g>
<path
style="fill:none;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path30"
pointer-events="none"
stroke-miterlimit="10"
d="m 180,0 h -10 v 60 h 10" />
<path
style="fill:none;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path32"
pointer-events="none"
stroke-miterlimit="10"
d="m 160,30 h 10" />
<g
id="g38"
transform="translate(38.5,9.5)">
<switch
id="switch36">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="41"
width="118"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: right;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;"><xhtml:div>In board directory.</xhtml:div>
The &quot;base&quot; devicetree.<xhtml:div>Includes .dtsi files.<xhtml:br />
</xhtml:div>
</xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:'Helvetica, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000"
id="text34"
font-size="12px"
y="3.9756355"
x="57.026482">
<tspan
y="3.9756355"
x="57.026482"
id="tspan154"
sodipodi:role="line">In board directory.</tspan>
<tspan
y="18.975636"
x="57.026482"
id="tspan156"
sodipodi:role="line">The &quot;base&quot; devicetree.</tspan>
<tspan
y="33.975636"
x="57.026482"
id="tspan158"
sodipodi:role="line">Includes .dtsi files.</tspan>
</text>
</switch>
</g>
<path
style="fill:none;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path40"
pointer-events="none"
stroke-miterlimit="10"
d="m 410,90 h 80 v 133.63" />
<path
style="fill:#000000;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path42"
pointer-events="none"
stroke-miterlimit="10"
d="m 490,228.88 -3.5,-7 3.5,1.75 3.5,-1.75 z" />
<circle
style="fill:#ffffff;stroke:#000000"
r="40"
id="ellipse44"
pointer-events="none"
cy="90"
cx="370" />
<g
id="g50"
transform="translate(362.5,75.605932)">
<switch
id="switch48">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="12"
width="15"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 16px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">dtc </xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:'Helvetica, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000"
id="text46"
font-size="12px"
y="12"
x="8">
<tspan
y="12"
x="8"
id="tspan170"
sodipodi:role="line">Apply</tspan>
<tspan
y="27"
x="8"
id="tspan172"
sodipodi:role="line">overlays</tspan>
</text>
</switch>
</g>
<path
style="fill:none;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path52"
pointer-events="none"
stroke-miterlimit="10"
d="m 310,30 h 60 v 13.63" />
<path
style="fill:#000000;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path54"
pointer-events="none"
stroke-miterlimit="10"
d="m 370,48.88 -3.5,-7 3.5,1.75 3.5,-1.75 z" />
<path
style="fill:#d5e8d4;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path56"
pointer-events="none"
stroke-miterlimit="10"
d="m 190,0 h 120 v 51 q -30,-16.2 -60,0 -30,16.2 -60,0 V 9 Z" />
<g
id="g62"
transform="translate(219.5,15.5)">
<switch
id="switch60">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="12"
width="61"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 62px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">BOARD.dts</xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-size:12px;font-family:Helvetica;text-anchor:middle;fill:#000000"
id="text58"
font-size="12px"
y="12"
x="31">BOARD.dts</text>
</switch>
</g>
<path
style="fill:none;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path64"
pointer-events="none"
stroke-miterlimit="10"
d="m 310,275 h 36 v 78.63" />
<path
style="fill:#000000;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path66"
pointer-events="none"
stroke-miterlimit="10"
d="m 346,358.88 -3.5,-7 3.5,1.75 3.5,-1.75 z" />
<path
style="fill:#d5e8d4;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path68"
pointer-events="none"
stroke-miterlimit="10"
d="m 203.64,241.64 c 0,-1.76 0.71,-3.45 1.99,-4.7 1.28,-1.24 3.02,-1.94 4.82,-1.94 h 92.73 c 1.81,0 3.54,0.7 4.82,1.94 1.28,1.25 2,2.94 2,4.7 v 53.08 c -17,-7 -36.19,-7 -53.18,0 -17,7.01 -36.19,7.01 -53.18,0 z" />
<path
style="fill:#d5e8d4;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path70"
pointer-events="none"
stroke-miterlimit="10"
d="m 196.82,248.27 c 0,-3.66 3.05,-6.63 6.82,-6.63 h 92.72 c 3.77,0 6.82,2.97 6.82,6.63 v 53.09 c -16.99,-7.01 -36.18,-7.01 -53.18,0 -17,7 -36.19,7 -53.18,0 z" />
<path
style="fill:#d5e8d4;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path72"
pointer-events="none"
stroke-miterlimit="10"
d="m 190,254.91 c 0,-1.76 0.72,-3.45 2,-4.7 1.28,-1.24 3.01,-1.94 4.82,-1.94 h 92.73 c 1.8,0 3.54,0.7 4.82,1.94 1.28,1.25 1.99,2.94 1.99,4.7 v 53.08 c -16.99,-7 -36.18,-7 -53.18,0 C 226.19,315 207,315 190,307.99 Z" />
<g
id="g78"
transform="translate(197.10487,236.73835)">
<switch
id="switch76">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="41"
width="92"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 93px; white-space: nowrap; overflow-wrap: normal; text-align: left;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">
<xhtml:div>BINDING_1.yaml</xhtml:div>
<xhtml:div>...</xhtml:div>
<xhtml:div>BINDING_n.yaml<xhtml:br />
</xhtml:div>
</xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:'Helvetica, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000"
id="text74"
font-size="12px"
y="27"
x="46">
<tspan
y="27"
x="46"
id="tspan188"
sodipodi:role="line">BINDING_1.yaml</tspan>
<tspan
y="42"
x="46"
id="tspan190"
sodipodi:role="line">...</tspan>
<tspan
y="57"
x="46"
id="tspan192"
sodipodi:role="line">BINDING_n.yaml</tspan>
</text>
</switch>
</g>
<path
style="fill:none;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path80"
pointer-events="none"
stroke-miterlimit="10"
d="m 180,235 h -10 v 80 h 10" />
<path
style="fill:none;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path82"
pointer-events="none"
stroke-miterlimit="10"
d="m 160,275 h 10" />
<g
id="g88"
transform="translate(7.842161,216.89725)">
<switch
id="switch86">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="56"
width="148"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: right;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;">
<xhtml:div>In zephyr/dts/bindings.</xhtml:div>
<xhtml:div>Extensible with DTS_ROOT.</xhtml:div>
<xhtml:div>Contain rules for DTS to C</xhtml:div>
<xhtml:div>code generation step.<xhtml:br />
</xhtml:div>
</xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:'Helvetica, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000"
id="text84"
font-size="12px"
y="34"
x="74">
<tspan
y="34"
x="74"
id="tspan180"
sodipodi:role="line">In zephyr/dts/bindings/.</tspan>
<tspan
y="49"
x="74"
id="tspan182"
sodipodi:role="line">Extensible with DTS_ROOT.</tspan>
<tspan
y="64"
x="74"
id="tspan184"
sodipodi:role="line">Contain rules for DTS to C</tspan>
<tspan
y="79"
x="74"
id="tspan186"
sodipodi:role="line">code generation step.</tspan>
</text>
</switch>
</g>
<path
style="fill:none;stroke:#000000;stroke-width:0.79604656;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path90"
pointer-events="none"
stroke-miterlimit="10"
d="m 355,460 v 46.6586" />
<path
style="fill:#000000;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path92"
pointer-events="none"
stroke-miterlimit="10"
d="m 355,511.9086 -3.5,-7 3.5,1.75 3.5,-1.75 z" />
<circle
style="fill:#ffffff;stroke:#000000"
r="50"
id="ellipse94"
pointer-events="none"
cy="410"
cx="355" />
<g
id="g100"
transform="translate(325.47352,385.97458)">
<switch
id="switch98">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="27"
width="62"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 63px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">
<xhtml:div>zephyr DTS</xhtml:div>
<xhtml:div>scripts<xhtml:br />
</xhtml:div>
</xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:'Helvetica, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000"
id="text96"
font-size="12px"
y="20"
x="31">
<tspan
y="20"
x="31"
id="tspan210"
sodipodi:role="line">Apply bindings,</tspan>
<tspan
y="35"
x="31"
id="tspan212"
sodipodi:role="line">generate code</tspan>
</text>
</switch>
</g>
<path
style="fill:none;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path102"
pointer-events="none"
stroke-miterlimit="10"
d="m 420,275 h -60 v 78.63" />
<path
style="fill:#000000;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path104"
pointer-events="none"
stroke-miterlimit="10"
d="m 360,358.88 -3.5,-7 3.5,1.75 3.5,-1.75 z" />
<path
style="fill:#ffff66;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path106"
pointer-events="none"
stroke-miterlimit="10"
d="m 420,230 h 140 v 51 q -35,-16.2 -70,0 -35,16.2 -70,0 v -42 z" />
<g
id="g112"
transform="translate(432.5,245.5)">
<switch
id="switch110">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="12"
width="115"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 116px; white-space: nowrap; overflow-wrap: normal; text-align: center;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">
<xhtml:div>BOARD.dts_compiled<xhtml:br />
</xhtml:div>
</xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:'Helvetica, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000"
id="text108"
font-size="12px"
y="12"
x="58">
<tspan
y="12"
x="58"
id="tspan200"
sodipodi:role="line">BOARD.dts_compiled</tspan>
</text>
</switch>
</g>
<path
style="fill:none;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path114"
pointer-events="none"
stroke-miterlimit="10"
d="m 570,290 10,0 v -60 h -10" />
<path
style="fill:none;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
id="path116"
pointer-events="none"
stroke-miterlimit="10"
d="M 590,260 H 580" />
<g
id="g122"
transform="translate(595.57944,201.47563)">
<switch
id="switch120">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="70"
width="118"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 118px; white-space: nowrap; overflow-wrap: normal; text-align: left;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">
<xhtml:div>In build/zephyr.</xhtml:div>
<xhtml:div>DTS file, combination of BOARD.dts and overlays.</xhtml:div>
<xhtml:div>Intermediate output.<xhtml:br />
</xhtml:div>
</xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:'Helvetica, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;direction:rtl;text-anchor:middle;fill:#000000"
id="text118"
font-size="12px"
y="41"
x="59">
<tspan
y="51.248001"
x="59"
id="tspan232"
sodipodi:role="line"></tspan>
</text>
</switch>
</g>
<path
id="path124"
pointer-events="none"
stroke-miterlimit="10"
d="m 240.61834,519.01945 h -9.92476 v 98.27889 h 9.92476"
inkscape:connector-curvature="0"
style="fill:none;stroke:#000000;stroke-width:1.10419369;stroke-miterlimit:10" />
<path
id="path126"
pointer-events="none"
stroke-miterlimit="10"
d="m 220.65784,568.1589 h 10"
inkscape:connector-curvature="0"
style="fill:none;stroke:#000000;stroke-miterlimit:10" />
<g
id="g132"
transform="translate(42.447034,520.15995)"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96">
<switch
id="switch130">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="70"
width="178"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: right;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;">
<xhtml:div>Final outputs.<xhtml:br />
</xhtml:div>
<xhtml:div>In build/zephyr/include/generated.</xhtml:div>
<xhtml:div>
<xhtml:br />
</xhtml:div>
<xhtml:div>Include C headers via</xhtml:div>
<xhtml:div>&lt;generated_dts_board.h&gt;<xhtml:br />
</xhtml:div>
</xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:'Helvetica, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000"
id="text128"
font-size="12px"
y="41"
x="89">
<tspan
y="41"
x="89"
id="tspan214"
sodipodi:role="line">Final outputs, in</tspan>
<tspan
y="56"
x="89"
id="tspan222"
sodipodi:role="line">build/zephyr/include/generated/.</tspan>
</text>
</switch>
</g>
<g
transform="matrix(1.3085305,0,0,1.2589775,-77.132624,-160.11221)"
id="g293">
<path
style="fill:#ffff66;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
d="m 271.02,546.64 c 0,-3.67 4.71,-6.64 10.51,-6.64 h 142.96 c 5.8,0 10.51,2.97 10.51,6.64 v 53.08 c -26.2,-7 -55.79,-7 -81.99,0 -26.2,7.01 -55.78,7.01 -81.99,0 z"
stroke-miterlimit="10"
pointer-events="none"
id="path134" />
<path
style="fill:#ffff66;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
d="m 260.51,553.27 c 0,-1.76 1.11,-3.45 3.08,-4.69 1.97,-1.25 4.64,-1.94 7.43,-1.94 h 142.96 c 2.79,0 5.46,0.69 7.43,1.94 1.97,1.24 3.08,2.93 3.08,4.69 v 53.09 c -26.2,-7.01 -55.79,-7.01 -81.99,0 -26.2,7 -55.79,7 -81.99,0 z"
stroke-miterlimit="10"
pointer-events="none"
id="path136" />
<path
style="fill:#ffff66;stroke:#000000;stroke-miterlimit:10"
inkscape:connector-curvature="0"
d="m 250,559.91 c 0,-3.67 4.71,-6.64 10.51,-6.64 h 142.96 c 5.8,0 10.51,2.97 10.51,6.64 v 53.08 c -26.21,-7 -55.79,-7 -81.99,0 -26.2,7.01 -55.79,7.01 -81.99,0 z"
stroke-miterlimit="10"
pointer-events="none"
id="path138" />
</g>
<g
id="g144"
transform="translate(285.39195,531.63454)">
<switch
id="switch142">
<foreignObject
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"
height="27"
width="140"
pointer-events="all"
style="overflow:visible;">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 141px; white-space: nowrap; overflow-wrap: normal; text-align: left;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">
<xhtml:div>generated_dts_board.conf,</xhtml:div>
<xhtml:div>generated C headers.<xhtml:br />
</xhtml:div>
</xhtml:div>
</xhtml:div>
</foreignObject>
<text
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:'Helvetica, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000"
id="text140"
font-size="12px"
y="20"
x="70">
<tspan
y="20"
x="70"
id="tspan4298"
sodipodi:role="line">Generated C code</tspan>
<tspan
y="35"
x="70"
id="tspan4300"
sodipodi:role="line">(generated_dts_board_&lt;foo&gt;.h)</tspan>
<tspan
y="50"
x="70"
id="tspan4302"
sodipodi:role="line">Include via &lt;generated_dts_board.h&gt;</tspan>
<tspan
y="65"
x="70"
id="tspan4304"
sodipodi:role="line">only, as _&lt;foo&gt; names may change.</tspan>
</text>
</switch>
</g>
<text
id="text244"
y="270.52966"
x="664.5752"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
xml:space="preserve"><tspan
y="305.92029"
x="664.5752"
id="tspan242"
sodipodi:role="line" /></text>
<g
transform="translate(576.21504,203.74048)"
id="g258">
<switch
id="switch256">
<foreignObject
style="overflow:visible;"
pointer-events="all"
width="148"
height="56"
requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<xhtml:div
style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: right;">
<xhtml:div
style="display:inline-block;text-align:inherit;text-decoration:inherit;">
<xhtml:div>In zephyr/dts/bindings.</xhtml:div>
<xhtml:div>Extensible with DTS_ROOT.</xhtml:div>
<xhtml:div>Contain rules for DTS to C</xhtml:div>
<xhtml:div>code generation step.<xhtml:br />
</xhtml:div>
</xhtml:div>
</xhtml:div>
</foreignObject>
<text
x="74"
y="34"
font-size="12px"
id="text254"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;font-family:Helvetica;-inkscape-font-specification:'Helvetica, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle;fill:#000000">
<tspan
y="34"
x="74"
id="tspan266"
sodipodi:role="line">DTS file in build/zephyr/.</tspan>
<tspan
y="49"
x="74"
id="tspan268"
sodipodi:role="line">Intermediate output,</tspan>
<tspan
y="64"
x="74"
id="tspan270"
sodipodi:role="line">combination of base</tspan>
<tspan
y="79"
x="74"
id="tspan272"
sodipodi:role="line">devicetree and any</tspan>
<tspan
y="94"
x="74"
id="tspan274"
sodipodi:role="line">overlays.</tspan>
</text>
</switch>
</g>
</svg>

After

Width:  |  Height:  |  Size: 35 KiB