| /* |
| * Copyright (c) 2020 Nordic Semiconductor ASA |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #ifndef ZEPHYR_INCLUDE_DEVICETREE_ORDINALS_H_ |
| #define ZEPHYR_INCLUDE_DEVICETREE_ORDINALS_H_ |
| |
| /** |
| * @file |
| * @brief Devicetree node dependency ordinals |
| */ |
| |
| /** |
| * @defgroup devicetree-dep-ord Dependency tracking |
| * @ingroup devicetree |
| * @{ |
| */ |
| |
| /** |
| * @brief Get a node's dependency ordinal |
| * @param node_id Node identifier |
| * @return the node's dependency ordinal as an integer literal |
| */ |
| #define DT_DEP_ORD(node_id) DT_CAT(node_id, _ORD) |
| |
| /** |
| * @brief Get a list of dependency ordinals of a node's direct dependencies |
| * |
| * There is a comma after each ordinal in the expansion, **including** |
| * the last one: |
| * |
| * DT_REQUIRES_DEP_ORDS(my_node) // required_ord_1, ..., required_ord_n, |
| * |
| * The one case DT_REQUIRES_DEP_ORDS() expands to nothing is when |
| * given the root node identifier @p DT_ROOT as argument. The root has |
| * no direct dependencies; every other node at least depends on its |
| * parent. |
| * |
| * @param node_id Node identifier |
| * @return a list of dependency ordinals, with each ordinal followed |
| * by a comma (<tt>,</tt>), or an empty expansion |
| */ |
| #define DT_REQUIRES_DEP_ORDS(node_id) DT_CAT(node_id, _REQUIRES_ORDS) |
| |
| /** |
| * @brief Get a list of dependency ordinals of what depends directly on a node |
| * |
| * There is a comma after each ordinal in the expansion, **including** |
| * the last one: |
| * |
| * DT_SUPPORTS_DEP_ORDS(my_node) // supported_ord_1, ..., supported_ord_n, |
| * |
| * DT_SUPPORTS_DEP_ORDS() may expand to nothing. This happens when @p node_id |
| * refers to a leaf node that nothing else depends on. |
| * |
| * @param node_id Node identifier |
| * @return a list of dependency ordinals, with each ordinal followed |
| * by a comma (<tt>,</tt>), or an empty expansion |
| */ |
| #define DT_SUPPORTS_DEP_ORDS(node_id) DT_CAT(node_id, _SUPPORTS_ORDS) |
| |
| /** |
| * @brief Get a DT_DRV_COMPAT instance's dependency ordinal |
| * |
| * Equivalent to DT_DEP_ORD(DT_DRV_INST(inst)). |
| * |
| * @param inst instance number |
| * @return The instance's dependency ordinal |
| */ |
| #define DT_INST_DEP_ORD(inst) DT_DEP_ORD(DT_DRV_INST(inst)) |
| |
| /** |
| * @brief Get a list of dependency ordinals of a DT_DRV_COMPAT instance's |
| * direct dependencies |
| * |
| * Equivalent to DT_REQUIRES_DEP_ORDS(DT_DRV_INST(inst)). |
| * |
| * @param inst instance number |
| * @return a list of dependency ordinals for the nodes the instance depends |
| * on directly |
| */ |
| #define DT_INST_REQUIRES_DEP_ORDS(inst) DT_REQUIRES_DEP_ORDS(DT_DRV_INST(inst)) |
| |
| /** |
| * @brief Get a list of dependency ordinals of what depends directly on a |
| * DT_DRV_COMPAT instance |
| * |
| * Equivalent to DT_SUPPORTS_DEP_ORDS(DT_DRV_INST(inst)). |
| * |
| * @param inst instance number |
| * @return a list of node identifiers for the nodes that depend directly |
| * on the instance |
| */ |
| #define DT_INST_SUPPORTS_DEP_ORDS(inst) DT_SUPPORTS_DEP_ORDS(DT_DRV_INST(inst)) |
| |
| /** |
| * @} |
| */ |
| |
| #endif /* ZEPHYR_INCLUDE_DEVICETREE_ORDINALS_H_ */ |