Line data Source code
1 1 : /* 2 : * Copyright (c) 2020 Nordic Semiconductor ASA 3 : * SPDX-License-Identifier: Apache-2.0 4 : */ 5 : 6 : #ifndef ZEPHYR_INCLUDE_DEVICETREE_ORDINALS_H_ 7 : #define ZEPHYR_INCLUDE_DEVICETREE_ORDINALS_H_ 8 : 9 : /** 10 : * @file 11 : * @brief Devicetree node dependency ordinals 12 : */ 13 : 14 : /** 15 : * @defgroup devicetree-dep-ord Dependency tracking 16 : * @ingroup devicetree 17 : * @{ 18 : */ 19 : 20 : /** 21 : * @brief Get a node's dependency ordinal 22 : * @param node_id Node identifier 23 : * @return the node's dependency ordinal as an integer literal 24 : */ 25 1 : #define DT_DEP_ORD(node_id) DT_CAT(node_id, _ORD) 26 : 27 : /** 28 : * @brief Get a node's dependency ordinal in string sortable form 29 : * @param node_id Node identifier 30 : * @return the node's dependency ordinal as a zero-padded integer literal 31 : */ 32 1 : #define DT_DEP_ORD_STR_SORTABLE(node_id) DT_CAT(node_id, _ORD_STR_SORTABLE) 33 : 34 : /** 35 : * @brief Get a list of dependency ordinals of a node's direct dependencies 36 : * 37 : * There is a comma after each ordinal in the expansion, **including** 38 : * the last one: 39 : * 40 : * DT_REQUIRES_DEP_ORDS(my_node) // required_ord_1, ..., required_ord_n, 41 : * 42 : * The one case DT_REQUIRES_DEP_ORDS() expands to nothing is when 43 : * given the root node identifier @p DT_ROOT as argument. The root has 44 : * no direct dependencies; every other node at least depends on its 45 : * parent. 46 : * 47 : * @param node_id Node identifier 48 : * @return a list of dependency ordinals, with each ordinal followed 49 : * by a comma (<tt>,</tt>), or an empty expansion 50 : */ 51 1 : #define DT_REQUIRES_DEP_ORDS(node_id) DT_CAT(node_id, _REQUIRES_ORDS) 52 : 53 : /** 54 : * @brief Get a list of dependency ordinals of what depends directly on a node 55 : * 56 : * There is a comma after each ordinal in the expansion, **including** 57 : * the last one: 58 : * 59 : * DT_SUPPORTS_DEP_ORDS(my_node) // supported_ord_1, ..., supported_ord_n, 60 : * 61 : * DT_SUPPORTS_DEP_ORDS() may expand to nothing. This happens when @p node_id 62 : * refers to a leaf node that nothing else depends on. 63 : * 64 : * @param node_id Node identifier 65 : * @return a list of dependency ordinals, with each ordinal followed 66 : * by a comma (<tt>,</tt>), or an empty expansion 67 : */ 68 1 : #define DT_SUPPORTS_DEP_ORDS(node_id) DT_CAT(node_id, _SUPPORTS_ORDS) 69 : 70 : /** 71 : * @brief Get a DT_DRV_COMPAT instance's dependency ordinal 72 : * 73 : * Equivalent to DT_DEP_ORD(DT_DRV_INST(inst)). 74 : * 75 : * @param inst instance number 76 : * @return The instance's dependency ordinal 77 : */ 78 1 : #define DT_INST_DEP_ORD(inst) DT_DEP_ORD(DT_DRV_INST(inst)) 79 : 80 : /** 81 : * @brief Get a list of dependency ordinals of a DT_DRV_COMPAT instance's 82 : * direct dependencies 83 : * 84 : * Equivalent to DT_REQUIRES_DEP_ORDS(DT_DRV_INST(inst)). 85 : * 86 : * @param inst instance number 87 : * @return a list of dependency ordinals for the nodes the instance depends 88 : * on directly 89 : */ 90 1 : #define DT_INST_REQUIRES_DEP_ORDS(inst) DT_REQUIRES_DEP_ORDS(DT_DRV_INST(inst)) 91 : 92 : /** 93 : * @brief Get a list of dependency ordinals of what depends directly on a 94 : * DT_DRV_COMPAT instance 95 : * 96 : * Equivalent to DT_SUPPORTS_DEP_ORDS(DT_DRV_INST(inst)). 97 : * 98 : * @param inst instance number 99 : * @return a list of node identifiers for the nodes that depend directly 100 : * on the instance 101 : */ 102 1 : #define DT_INST_SUPPORTS_DEP_ORDS(inst) DT_SUPPORTS_DEP_ORDS(DT_DRV_INST(inst)) 103 : 104 : /** 105 : * @} 106 : */ 107 : 108 : #endif /* ZEPHYR_INCLUDE_DEVICETREE_ORDINALS_H_ */