LCOV - code coverage report
Current view: top level - zephyr/devicetree - ordinals.h Hit Total Coverage
Test: new.info Lines: 8 8 100.0 %
Date: 2024-12-22 00:14:23

          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_ */

Generated by: LCOV version 1.14