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 Device Driver Model
to provide that hardware’s initial configuration
This page links to a high level guide on devicetree as well as reference material.
Devicetree Guide
The pages in this section are a high-level guide to using devicetree for Zephyr development.
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 API
- Generic APIs
- Instance-based APIs
DT_DRV_INSTDT_INST_PARENTDT_INST_GPARENTDT_INST_CHILDDT_INST_CHILD_NUMDT_INST_CHILD_NUM_STATUS_OKAYDT_INST_NODELABEL_STRING_ARRAYDT_INST_NUM_NODELABELSDT_INST_FOREACH_CHILDDT_INST_FOREACH_CHILD_SEPDT_INST_FOREACH_CHILD_VARGSDT_INST_FOREACH_CHILD_SEP_VARGSDT_INST_FOREACH_CHILD_STATUS_OKAYDT_INST_FOREACH_CHILD_STATUS_OKAY_SEPDT_INST_FOREACH_CHILD_STATUS_OKAY_VARGSDT_INST_FOREACH_CHILD_STATUS_OKAY_SEP_VARGSDT_INST_ENUM_IDXDT_INST_ENUM_IDX_ORDT_INST_ENUM_HAS_VALUEDT_INST_PROPDT_INST_PROP_LENDT_INST_PROP_HAS_IDXDT_INST_PROP_HAS_NAMEDT_INST_PROP_BY_IDXDT_INST_PROP_ORDT_INST_PROP_LEN_ORDT_INST_STRING_TOKENDT_INST_STRING_UPPER_TOKENDT_INST_STRING_UNQUOTEDDT_INST_STRING_TOKEN_BY_IDXDT_INST_STRING_UPPER_TOKEN_BY_IDXDT_INST_STRING_UNQUOTED_BY_IDXDT_INST_PROP_BY_PHANDLEDT_INST_PROP_BY_PHANDLE_IDXDT_INST_PHA_BY_IDXDT_INST_PHA_BY_IDX_ORDT_INST_PHADT_INST_PHA_ORDT_INST_PHA_BY_NAMEDT_INST_PHA_BY_NAME_ORDT_INST_PHANDLE_BY_NAMEDT_INST_PHANDLE_BY_IDXDT_INST_PHANDLEDT_INST_REG_HAS_IDXDT_INST_REG_HAS_NAMEDT_INST_REG_ADDR_BY_IDXDT_INST_REG_SIZE_BY_IDXDT_INST_REG_ADDR_BY_NAMEDT_INST_REG_ADDR_BY_NAME_ORDT_INST_REG_ADDR_BY_NAME_U64DT_INST_REG_SIZE_BY_NAMEDT_INST_REG_SIZE_BY_NAME_ORDT_INST_REG_ADDRDT_INST_REG_ADDR_U64DT_INST_REG_SIZEDT_INST_NUM_IRQSDT_INST_IRQ_LEVELDT_INST_IRQ_BY_IDXDT_INST_IRQ_INTC_BY_IDXDT_INST_IRQ_INTC_BY_NAMEDT_INST_IRQ_INTCDT_INST_IRQ_BY_NAMEDT_INST_IRQDT_INST_IRQNDT_INST_IRQN_BY_IDXDT_INST_BUSDT_INST_ON_BUSDT_INST_STRING_TOKEN_ORDT_INST_STRING_UPPER_TOKEN_ORDT_INST_STRING_UNQUOTED_ORDT_HAS_COMPAT_ON_BUS_STATUS_OKAYDT_ANY_INST_ON_BUS_STATUS_OKAYDT_ANY_INST_HAS_PROP_STATUS_OKAYDT_INST_FOREACH_STATUS_OKAYDT_INST_FOREACH_STATUS_OKAY_VARGSDT_INST_FOREACH_NODELABELDT_INST_FOREACH_NODELABEL_VARGSDT_INST_FOREACH_PROP_ELEMDT_INST_FOREACH_PROP_ELEM_SEPDT_INST_FOREACH_PROP_ELEM_VARGSDT_INST_FOREACH_PROP_ELEM_SEP_VARGSDT_INST_NODE_HAS_PROPDT_INST_NODE_HAS_COMPATDT_INST_PHA_HAS_CELL_AT_IDXDT_INST_PHA_HAS_CELLDT_INST_IRQ_HAS_IDXDT_INST_IRQ_HAS_CELL_AT_IDXDT_INST_IRQ_HAS_CELLDT_INST_IRQ_HAS_NAME
- Hardware specific APIs
- Chosen nodes
- Zephyr-specific chosen nodes