doc: dts: fix DT_PROP_LEN for reg / interrupts
The documentation was not updated following a change to the way DT_PROP_LEN works which was made in review. Fix it. Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
This commit is contained in:
parent
299bfd0553
commit
06f609cd56
1 changed files with 17 additions and 13 deletions
|
@ -203,9 +203,8 @@ elements.
|
||||||
size_t b_len = DT_PROP_LEN(FOO, b); /* 4 */
|
size_t b_len = DT_PROP_LEN(FOO, b); /* 4 */
|
||||||
size_t c_len = DT_PROP_LEN(FOO, c); /* 2 */
|
size_t c_len = DT_PROP_LEN(FOO, c); /* 2 */
|
||||||
|
|
||||||
``DT_PROP_LEN()`` takes devicetree semantics into account for special
|
``DT_PROP_LEN()`` cannot be used with the special ``reg`` or ``interrupts``
|
||||||
properties also. This means that it returns logical lengths when used with the
|
properties. These have alternative macros which are described next.
|
||||||
``reg`` and ``interrupts`` properties described next.
|
|
||||||
|
|
||||||
.. _reg-properties:
|
.. _reg-properties:
|
||||||
|
|
||||||
|
@ -214,20 +213,21 @@ reg properties
|
||||||
|
|
||||||
See :ref:`dt-important-props` for an introduction to ``reg``.
|
See :ref:`dt-important-props` for an introduction to ``reg``.
|
||||||
|
|
||||||
Given a node identifier ``node_id``, ``DT_PROP_LEN(node_id, reg)`` is the
|
Given a node identifier ``node_id``, ``DT_NUM_REGS(node_id)`` is the
|
||||||
total number of register blocks in the node's ``reg``. However, you **cannot**
|
total number of register blocks in the node's ``reg`` property.
|
||||||
read register block addresses and lengths with ``DT_PROP(node, reg)``.
|
|
||||||
|
|
||||||
Instead, if a node only has one register block, use :c:func:`DT_REG_ADDR` or
|
You **cannot** read register block addresses and lengths with ``DT_PROP(node,
|
||||||
:c:func:`DT_REG_SIZE`:
|
reg)``. Instead, if a node only has one register block, use
|
||||||
|
:c:func:`DT_REG_ADDR` or :c:func:`DT_REG_SIZE`:
|
||||||
|
|
||||||
- ``DT_REG_ADDR(node_id)``: the given node's register block address
|
- ``DT_REG_ADDR(node_id)``: the given node's register block address
|
||||||
- ``DT_REG_SIZE(node_id)``: its size
|
- ``DT_REG_SIZE(node_id)``: its size
|
||||||
|
|
||||||
Use :c:func:`DT_REG_ADDR_BY_IDX` or :c:func:`DT_REG_SIZE_BY_IDX` instead if the node
|
Use :c:func:`DT_REG_ADDR_BY_IDX` or :c:func:`DT_REG_SIZE_BY_IDX` instead if the
|
||||||
has multiple register blocks:
|
node has multiple register blocks:
|
||||||
|
|
||||||
- ``DT_REG_ADDR_BY_IDX(node_id, idx)``: address of register block at index ``idx``
|
- ``DT_REG_ADDR_BY_IDX(node_id, idx)``: address of register block at index
|
||||||
|
``idx``
|
||||||
- ``DT_REG_SIZE_BY_IDX(node_id, idx)``: size of block at index ``idx``
|
- ``DT_REG_SIZE_BY_IDX(node_id, idx)``: size of block at index ``idx``
|
||||||
|
|
||||||
The ``idx`` argument to these must be an integer literal or a macro that
|
The ``idx`` argument to these must be an integer literal or a macro that
|
||||||
|
@ -238,7 +238,7 @@ be a variable. This won't work:
|
||||||
|
|
||||||
/* This will cause a compiler error. */
|
/* This will cause a compiler error. */
|
||||||
|
|
||||||
for (size_t i = 0; i < DT_PROP_LEN(node_id, reg); i++) {
|
for (size_t i = 0; i < DT_NUM_REGS(node_id); i++) {
|
||||||
size_t addr = DT_REG_ADDR_BY_IDX(node_id, i);
|
size_t addr = DT_REG_ADDR_BY_IDX(node_id, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -249,7 +249,11 @@ interrupts properties
|
||||||
|
|
||||||
See :ref:`dt-important-props` for a brief introduction to ``interrupts``.
|
See :ref:`dt-important-props` for a brief introduction to ``interrupts``.
|
||||||
|
|
||||||
The most general purpose API macro for accessing these is :c:func:`DT_IRQ_BY_IDX`:
|
Given a node identifier ``node_id``, ``DT_NUM_IRQS(node_id)`` is the total
|
||||||
|
number of interrupt specifiers in the node's ``interrupts`` property.
|
||||||
|
|
||||||
|
The most general purpose API macro for accessing these is
|
||||||
|
:c:func:`DT_IRQ_BY_IDX`:
|
||||||
|
|
||||||
.. code-block:: c
|
.. code-block:: c
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue