.. _devicetree:

Devicetree
##########

A *devicetree* is a hierarchical data structure primarily used to describe
hardware. Zephyr uses devicetree in two main ways:

- to describe hardware to the :ref:`device_model_api`
- to provide that hardware's initial configuration

This page links to a high level guide on devicetree as well as reference
material.

.. _dt-guide:

Devicetree Guide
****************

The pages in this section are a high-level guide to using devicetree for Zephyr
development.

.. toctree::
   :maxdepth: 2

   intro.rst
   design.rst
   bindings.rst
   api-usage.rst
   phandles.rst
   zephyr-user-node.rst
   howtos.rst
   troubleshooting.rst
   dt-vs-kconfig.rst

.. _dt-reference:

Devicetree Reference
********************

These pages contain reference material for Zephyr's devicetree APIs and
built-in bindings.

For the platform-independent details, see the `Devicetree specification`_.

.. _Devicetree specification: https://www.devicetree.org/

.. We use ":glob:" with "*" here to add the generated bindings page.

.. toctree::
   :maxdepth: 3
   :glob:

   api/*
