19#include <devicetree_generated.h>
80#define DT_INVALID_NODE _
137#define DT_PATH(...) DT_PATH_INTERNAL(__VA_ARGS__)
193#define DT_NODELABEL(label) DT_CAT(DT_N_NODELABEL_, label)
233#define DT_ALIAS(alias) DT_CAT(DT_N_ALIAS_, alias)
329#define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))
354#define DT_PARENT(node_id) UTIL_CAT(node_id, _PARENT)
379#define DT_GPARENT(node_id) DT_PARENT(DT_PARENT(node_id))
416#define DT_CHILD(node_id, child) UTIL_CAT(node_id, DT_S_PREFIX(child))
459#define DT_COMPAT_GET_ANY_STATUS_OKAY(compat) \
460 COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(compat), \
461 (DT_INST(0, compat)), \
491#define DT_NODE_PATH(node_id) DT_CAT(node_id, _PATH)
517#define DT_NODE_FULL_NAME(node_id) DT_CAT(node_id, _FULL_NAME)
545#define DT_NODE_CHILD_IDX(node_id) DT_CAT(node_id, _CHILD_IDX)
567#define DT_SAME_NODE(node_id1, node_id2) \
568 (DT_DEP_ORD(node_id1) == (DT_DEP_ORD(node_id2)))
610#define DT_PROP(node_id, prop) DT_CAT3(node_id, _P_, prop)
644#define DT_PROP_LEN(node_id, prop) DT_CAT4(node_id, _P_, prop, _LEN)
660#define DT_PROP_LEN_OR(node_id, prop, default_value) \
661 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
662 (DT_PROP_LEN(node_id, prop)), (default_value))
684#define DT_PROP_HAS_IDX(node_id, prop, idx) \
685 IS_ENABLED(DT_CAT6(node_id, _P_, prop, _IDX_, idx, _EXISTS))
719#define DT_PROP_HAS_NAME(node_id, prop, name) \
720 IS_ENABLED(DT_CAT6(node_id, _P_, prop, _NAME_, name, _EXISTS))
756#define DT_PROP_BY_IDX(node_id, prop, idx) \
757 DT_CAT5(node_id, _P_, prop, _IDX_, idx)
772#define DT_PROP_OR(node_id, prop, default_value) \
773 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
774 (DT_PROP(node_id, prop)), (default_value))
785#define DT_LABEL(node_id) DT_PROP(node_id, label) __DEPRECATED_MACRO
827#define DT_ENUM_IDX(node_id, prop) DT_CAT4(node_id, _P_, prop, _ENUM_IDX)
843#define DT_ENUM_IDX_OR(node_id, prop, default_idx_value) \
844 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
845 (DT_ENUM_IDX(node_id, prop)), (default_idx_value))
855#define DT_ENUM_HAS_VALUE(node_id, prop, value) \
856 IS_ENABLED(DT_CAT6(node_id, _P_, prop, _ENUM_VAL_, value, _EXISTS))
917#define DT_STRING_TOKEN(node_id, prop) \
918 DT_CAT4(node_id, _P_, prop, _STRING_TOKEN)
933#define DT_STRING_TOKEN_OR(node_id, prop, default_value) \
934 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
935 (DT_STRING_TOKEN(node_id, prop)), (default_value))
994#define DT_STRING_UPPER_TOKEN(node_id, prop) \
995 DT_CAT4(node_id, _P_, prop, _STRING_UPPER_TOKEN)
1011#define DT_STRING_UPPER_TOKEN_OR(node_id, prop, default_value) \
1012 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
1013 (DT_STRING_UPPER_TOKEN(node_id, prop)), (default_value))
1055#define DT_STRING_UNQUOTED(node_id, prop) \
1056 DT_CAT4(node_id, _P_, prop, _STRING_UNQUOTED)
1072#define DT_STRING_UNQUOTED_OR(node_id, prop, default_value) \
1073 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
1074 (DT_STRING_UNQUOTED(node_id, prop)), (default_value))
1123#define DT_STRING_TOKEN_BY_IDX(node_id, prop, idx) \
1124 DT_CAT6(node_id, _P_, prop, _IDX_, idx, _STRING_TOKEN)
1173#define DT_STRING_UPPER_TOKEN_BY_IDX(node_id, prop, idx) \
1174 DT_CAT6(node_id, _P_, prop, _IDX_, idx, _STRING_UPPER_TOKEN)
1216#define DT_STRING_UNQUOTED_BY_IDX(node_id, prop, idx) \
1217 DT_CAT4(node_id, _P_, prop##_IDX_##idx, _STRING_UNQUOTED)
1272#define DT_PROP_BY_PHANDLE_IDX(node_id, phs, idx, prop) \
1273 DT_PROP(DT_PHANDLE_BY_IDX(node_id, phs, idx), prop)
1294#define DT_PROP_BY_PHANDLE_IDX_OR(node_id, phs, idx, prop, default_value) \
1295 DT_PROP_OR(DT_PHANDLE_BY_IDX(node_id, phs, idx), prop, default_value)
1308#define DT_PROP_BY_PHANDLE(node_id, ph, prop) \
1309 DT_PROP_BY_PHANDLE_IDX(node_id, ph, 0, prop)
1365#define DT_PHA_BY_IDX(node_id, pha, idx, cell) \
1366 DT_CAT7(node_id, _P_, pha, _IDX_, idx, _VAL_, cell)
1391#define DT_PHA_BY_IDX_OR(node_id, pha, idx, cell, default_value) \
1392 DT_PROP_OR(node_id, pha##_IDX_##idx##_VAL_##cell, default_value)
1401#define DT_PHA(node_id, pha, cell) DT_PHA_BY_IDX(node_id, pha, 0, cell)
1417#define DT_PHA_OR(node_id, pha, cell, default_value) \
1418 DT_PHA_BY_IDX_OR(node_id, pha, 0, cell, default_value)
1460#define DT_PHA_BY_NAME(node_id, pha, name, cell) \
1461 DT_CAT7(node_id, _P_, pha, _NAME_, name, _VAL_, cell)
1484#define DT_PHA_BY_NAME_OR(node_id, pha, name, cell, default_value) \
1485 DT_PROP_OR(node_id, pha##_NAME_##name##_VAL_##cell, default_value)
1534#define DT_PHANDLE_BY_NAME(node_id, pha, name) \
1535 DT_CAT6(node_id, _P_, pha, _NAME_, name, _PH)
1586#define DT_PHANDLE_BY_IDX(node_id, prop, idx) \
1587 DT_CAT6(node_id, _P_, prop, _IDX_, idx, _PH)
1600#define DT_PHANDLE(node_id, prop) DT_PHANDLE_BY_IDX(node_id, prop, 0)
1648#define DT_NUM_RANGES(node_id) DT_CAT(node_id, _RANGES_NUM)
1702#define DT_RANGES_HAS_IDX(node_id, idx) \
1703 IS_ENABLED(DT_CAT4(node_id, _RANGES_IDX_, idx, _EXISTS))
1757#define DT_RANGES_HAS_CHILD_BUS_FLAGS_AT_IDX(node_id, idx) \
1758 IS_ENABLED(DT_CAT4(node_id, _RANGES_IDX_, idx, _VAL_CHILD_BUS_FLAGS_EXISTS))
1797#define DT_RANGES_CHILD_BUS_FLAGS_BY_IDX(node_id, idx) \
1798 DT_CAT4(node_id, _RANGES_IDX_, idx, _VAL_CHILD_BUS_FLAGS)
1846#define DT_RANGES_CHILD_BUS_ADDRESS_BY_IDX(node_id, idx) \
1847 DT_CAT4(node_id, _RANGES_IDX_, idx, _VAL_CHILD_BUS_ADDRESS)
1895#define DT_RANGES_PARENT_BUS_ADDRESS_BY_IDX(node_id, idx) \
1896 DT_CAT4(node_id, _RANGES_IDX_, idx, _VAL_PARENT_BUS_ADDRESS)
1944#define DT_RANGES_LENGTH_BY_IDX(node_id, idx) \
1945 DT_CAT4(node_id, _RANGES_IDX_, idx, _VAL_LENGTH)
1986#define DT_FOREACH_RANGE(node_id, fn) \
1987 DT_CAT(node_id, _FOREACH_RANGE)(fn)
2034#define DT_NODE_VENDOR_BY_IDX(node_id, idx) \
2035 DT_CAT3(node_id, _COMPAT_VENDOR_IDX_, idx)
2049#define DT_NODE_VENDOR_HAS_IDX(node_id, idx) \
2050 IS_ENABLED(DT_CAT4(node_id, _COMPAT_VENDOR_IDX_, idx, _EXISTS))
2066#define DT_NODE_VENDOR_BY_IDX_OR(node_id, idx, default_value) \
2067 COND_CODE_1(DT_NODE_VENDOR_HAS_IDX(node_id, idx), \
2068 (DT_NODE_VENDOR_BY_IDX(node_id, idx)), (default_value))
2078#define DT_NODE_VENDOR_OR(node_id, default_value) \
2079 DT_NODE_VENDOR_BY_IDX_OR(node_id, 0, default_value)
2110#define DT_NODE_MODEL_BY_IDX(node_id, idx) \
2111 DT_CAT3(node_id, _COMPAT_MODEL_IDX_, idx)
2125#define DT_NODE_MODEL_HAS_IDX(node_id, idx) \
2126 IS_ENABLED(DT_CAT4(node_id, _COMPAT_MODEL_IDX_, idx, _EXISTS))
2142#define DT_NODE_MODEL_BY_IDX_OR(node_id, idx, default_value) \
2143 COND_CODE_1(DT_NODE_MODEL_HAS_IDX(node_id, idx), \
2144 (DT_NODE_MODEL_BY_IDX(node_id, idx)), (default_value))
2154#define DT_NODE_MODEL_OR(node_id, default_value) \
2155 DT_NODE_MODEL_BY_IDX_OR(node_id, 0, default_value)
2174#define DT_NUM_REGS(node_id) DT_CAT(node_id, _REG_NUM)
2187#define DT_REG_HAS_IDX(node_id, idx) \
2188 IS_ENABLED(DT_CAT4(node_id, _REG_IDX_, idx, _EXISTS))
2196#define DT_REG_ADDR_BY_IDX(node_id, idx) \
2197 DT_CAT4(node_id, _REG_IDX_, idx, _VAL_ADDRESS)
2210#define DT_REG_SIZE_BY_IDX(node_id, idx) \
2211 DT_CAT4(node_id, _REG_IDX_, idx, _VAL_SIZE)
2220#define DT_REG_ADDR(node_id) DT_REG_ADDR_BY_IDX(node_id, 0)
2229#define DT_REG_SIZE(node_id) DT_REG_SIZE_BY_IDX(node_id, 0)
2237#define DT_REG_ADDR_BY_NAME(node_id, name) \
2238 DT_CAT4(node_id, _REG_NAME_, name, _VAL_ADDRESS)
2246#define DT_REG_SIZE_BY_NAME(node_id, name) \
2247 DT_CAT4(node_id, _REG_NAME_, name, _VAL_SIZE)
2267#define DT_NUM_IRQS(node_id) DT_CAT(node_id, _IRQ_NUM)
2279#define DT_IRQ_HAS_IDX(node_id, idx) \
2280 IS_ENABLED(DT_CAT4(node_id, _IRQ_IDX_, idx, _EXISTS))
2292#define DT_IRQ_HAS_CELL_AT_IDX(node_id, idx, cell) \
2293 IS_ENABLED(DT_CAT6(node_id, _IRQ_IDX_, idx, _VAL_, cell, _EXISTS))
2302#define DT_IRQ_HAS_CELL(node_id, cell) DT_IRQ_HAS_CELL_AT_IDX(node_id, 0, cell)
2313#define DT_IRQ_HAS_NAME(node_id, name) \
2314 IS_ENABLED(DT_CAT4(node_id, _IRQ_NAME_, name, _VAL_irq_EXISTS))
2351#define DT_IRQ_BY_IDX(node_id, idx, cell) \
2352 DT_CAT5(node_id, _IRQ_IDX_, idx, _VAL_, cell)
2369#define DT_IRQ_BY_NAME(node_id, name, cell) \
2370 DT_CAT5(node_id, _IRQ_NAME_, name, _VAL_, cell)
2379#define DT_IRQ(node_id, cell) DT_IRQ_BY_IDX(node_id, 0, cell)
2391#define DT_IRQN(node_id) DT_IRQ(node_id, irq)
2411#define DT_CHOSEN(prop) DT_CAT(DT_CHOSEN_, prop)
2419#define DT_HAS_CHOSEN(prop) IS_ENABLED(DT_CAT3(DT_CHOSEN_, prop, _EXISTS))
2440#define DT_FOREACH_NODE(fn) DT_FOREACH_HELPER(fn)
2453#define DT_FOREACH_STATUS_OKAY_NODE(fn) DT_FOREACH_OKAY_HELPER(fn)
2498#define DT_FOREACH_CHILD(node_id, fn) \
2499 DT_CAT(node_id, _FOREACH_CHILD)(fn)
2541#define DT_FOREACH_CHILD_SEP(node_id, fn, sep) \
2542 DT_CAT(node_id, _FOREACH_CHILD_SEP)(fn, sep)
2559#define DT_FOREACH_CHILD_VARGS(node_id, fn, ...) \
2560 DT_CAT(node_id, _FOREACH_CHILD_VARGS)(fn, __VA_ARGS__)
2577#define DT_FOREACH_CHILD_SEP_VARGS(node_id, fn, sep, ...) \
2578 DT_CAT(node_id, _FOREACH_CHILD_SEP_VARGS)(fn, sep, __VA_ARGS__)
2595#define DT_FOREACH_CHILD_STATUS_OKAY(node_id, fn) \
2596 DT_CAT(node_id, _FOREACH_CHILD_STATUS_OKAY)(fn)
2614#define DT_FOREACH_CHILD_STATUS_OKAY_SEP(node_id, fn, sep) \
2615 DT_CAT(node_id, _FOREACH_CHILD_STATUS_OKAY_SEP)(fn, sep)
2636#define DT_FOREACH_CHILD_STATUS_OKAY_VARGS(node_id, fn, ...) \
2637 DT_CAT(node_id, _FOREACH_CHILD_STATUS_OKAY_VARGS)(fn, __VA_ARGS__)
2657#define DT_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(node_id, fn, sep, ...) \
2658 DT_CAT(node_id, _FOREACH_CHILD_STATUS_OKAY_SEP_VARGS)(fn, sep, __VA_ARGS__)
2710#define DT_FOREACH_PROP_ELEM(node_id, prop, fn) \
2711 DT_CAT4(node_id, _P_, prop, _FOREACH_PROP_ELEM)(fn)
2756#define DT_FOREACH_PROP_ELEM_SEP(node_id, prop, fn, sep) \
2757 DT_CAT4(node_id, _P_, prop, _FOREACH_PROP_ELEM_SEP)(fn, sep)
2779#define DT_FOREACH_PROP_ELEM_VARGS(node_id, prop, fn, ...) \
2780 DT_CAT4(node_id, _P_, prop, _FOREACH_PROP_ELEM_VARGS)(fn, __VA_ARGS__)
2798#define DT_FOREACH_PROP_ELEM_SEP_VARGS(node_id, prop, fn, sep, ...) \
2799 DT_CAT4(node_id, _P_, prop, _FOREACH_PROP_ELEM_SEP_VARGS)( \
2800 fn, sep, __VA_ARGS__)
2855#define DT_FOREACH_STATUS_OKAY(compat, fn) \
2856 COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(compat), \
2857 (UTIL_CAT(DT_FOREACH_OKAY_, compat)(fn)), \
2904#define DT_FOREACH_STATUS_OKAY_VARGS(compat, fn, ...) \
2905 COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(compat), \
2906 (UTIL_CAT(DT_FOREACH_OKAY_VARGS_, \
2907 compat)(fn, __VA_ARGS__)), \
2934#define DT_NODE_EXISTS(node_id) IS_ENABLED(DT_CAT(node_id, _EXISTS))
2957#define DT_NODE_HAS_STATUS(node_id, status) \
2958 DT_NODE_HAS_STATUS_INTERNAL(node_id, status)
2979#define DT_HAS_COMPAT_STATUS_OKAY(compat) \
2980 IS_ENABLED(DT_CAT(DT_COMPAT_HAS_OKAY_, compat))
2988#define DT_NUM_INST_STATUS_OKAY(compat) \
2989 UTIL_AND(DT_HAS_COMPAT_STATUS_OKAY(compat), \
2990 UTIL_CAT(DT_N_INST, DT_DASH(compat, NUM_OKAY)))
3019#define DT_NODE_HAS_COMPAT(node_id, compat) \
3020 IS_ENABLED(DT_CAT3(node_id, _COMPAT_MATCHES_, compat))
3036#define DT_NODE_HAS_COMPAT_STATUS(node_id, compat, status) \
3037 DT_NODE_HAS_COMPAT(node_id, compat) && DT_NODE_HAS_STATUS(node_id, status)
3052#define DT_NODE_HAS_PROP(node_id, prop) \
3053 IS_ENABLED(DT_CAT4(node_id, _P_, prop, _EXISTS))
3072#define DT_PHA_HAS_CELL_AT_IDX(node_id, pha, idx, cell) \
3073 IS_ENABLED(DT_CAT8(node_id, _P_, pha, \
3074 _IDX_, idx, _VAL_, cell, _EXISTS))
3085#define DT_PHA_HAS_CELL(node_id, pha, cell) \
3086 DT_PHA_HAS_CELL_AT_IDX(node_id, pha, 0, cell)
3129#define DT_BUS(node_id) DT_CAT(node_id, _BUS)
3139#define DT_BUS_LABEL(node_id) DT_PROP(DT_BUS(node_id), label) __DEPRECATED_MACRO
3169#define DT_ON_BUS(node_id, bus) IS_ENABLED(DT_CAT3(node_id, _BUS_, bus))
3187#define DT_DRV_INST(inst) DT_INST(inst, DT_DRV_COMPAT)
3196#define DT_INST_PARENT(inst) DT_PARENT(DT_DRV_INST(inst))
3205#define DT_INST_GPARENT(inst) DT_GPARENT(DT_DRV_INST(inst))
3216#define DT_INST_CHILD(inst, child) \
3217 DT_CHILD(DT_DRV_INST(inst), child)
3233#define DT_INST_FOREACH_CHILD(inst, fn) \
3234 DT_FOREACH_CHILD(DT_DRV_INST(inst), fn)
3249#define DT_INST_FOREACH_CHILD_SEP(inst, fn, sep) \
3250 DT_FOREACH_CHILD_SEP(DT_DRV_INST(inst), fn, sep)
3267#define DT_INST_FOREACH_CHILD_VARGS(inst, fn, ...) \
3268 DT_FOREACH_CHILD_VARGS(DT_DRV_INST(inst), fn, __VA_ARGS__)
3284#define DT_INST_FOREACH_CHILD_SEP_VARGS(inst, fn, sep, ...) \
3285 DT_FOREACH_CHILD_SEP_VARGS(DT_DRV_INST(inst), fn, sep, __VA_ARGS__)
3298#define DT_INST_FOREACH_CHILD_STATUS_OKAY(inst, fn) \
3299 DT_FOREACH_CHILD_STATUS_OKAY(DT_DRV_INST(inst), fn)
3315#define DT_INST_FOREACH_CHILD_STATUS_OKAY_SEP(inst, fn, sep) \
3316 DT_FOREACH_CHILD_STATUS_OKAY_SEP(DT_DRV_INST(inst), fn, sep)
3331#define DT_INST_FOREACH_CHILD_STATUS_OKAY_VARGS(inst, fn, ...) \
3332 DT_FOREACH_CHILD_STATUS_OKAY_VARGS(DT_DRV_INST(inst), fn, __VA_ARGS__)
3349#define DT_INST_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(inst, fn, sep, ...) \
3350 DT_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(DT_DRV_INST(inst), fn, sep, __VA_ARGS__)
3358#define DT_INST_ENUM_IDX(inst, prop) \
3359 DT_ENUM_IDX(DT_DRV_INST(inst), prop)
3369#define DT_INST_ENUM_IDX_OR(inst, prop, default_idx_value) \
3370 DT_ENUM_IDX_OR(DT_DRV_INST(inst), prop, default_idx_value)
3380#define DT_INST_ENUM_HAS_VALUE(inst, prop, value) \
3381 DT_ENUM_HAS_VALUE(DT_DRV_INST(inst), prop, value)
3389#define DT_INST_PROP(inst, prop) DT_PROP(DT_DRV_INST(inst), prop)
3397#define DT_INST_PROP_LEN(inst, prop) DT_PROP_LEN(DT_DRV_INST(inst), prop)
3408#define DT_INST_PROP_HAS_IDX(inst, prop, idx) \
3409 DT_PROP_HAS_IDX(DT_DRV_INST(inst), prop, idx)
3419#define DT_INST_PROP_HAS_NAME(inst, prop, name) \
3420 DT_PROP_HAS_NAME(DT_DRV_INST(inst), prop, name)
3429#define DT_INST_PROP_BY_IDX(inst, prop, idx) \
3430 DT_PROP_BY_IDX(DT_DRV_INST(inst), prop, idx)
3439#define DT_INST_PROP_OR(inst, prop, default_value) \
3440 DT_PROP_OR(DT_DRV_INST(inst), prop, default_value)
3449#define DT_INST_PROP_LEN_OR(inst, prop, default_value) \
3450 DT_PROP_LEN_OR(DT_DRV_INST(inst), prop, default_value)
3458#define DT_INST_LABEL(inst) DT_INST_PROP(inst, label) __DEPRECATED_MACRO
3469#define DT_INST_STRING_TOKEN(inst, prop) \
3470 DT_STRING_TOKEN(DT_DRV_INST(inst), prop)
3479#define DT_INST_STRING_UPPER_TOKEN(inst, prop) \
3480 DT_STRING_UPPER_TOKEN(DT_DRV_INST(inst), prop)
3490#define DT_INST_STRING_UNQUOTED(inst, prop) \
3491 DT_STRING_UNQUOTED(DT_DRV_INST(inst), prop)
3500#define DT_INST_STRING_TOKEN_BY_IDX(inst, prop, idx) \
3501 DT_STRING_TOKEN_BY_IDX(DT_DRV_INST(inst), prop, idx)
3510#define DT_INST_STRING_UPPER_TOKEN_BY_IDX(inst, prop, idx) \
3511 DT_STRING_UPPER_TOKEN_BY_IDX(DT_DRV_INST(inst), prop, idx)
3520#define DT_INST_STRING_UNQUOTED_BY_IDX(inst, prop, idx) \
3521 DT_STRING_UNQUOTED_BY_IDX(DT_DRV_INST(inst), prop, idx)
3531#define DT_INST_PROP_BY_PHANDLE(inst, ph, prop) \
3532 DT_INST_PROP_BY_PHANDLE_IDX(inst, ph, 0, prop)
3545#define DT_INST_PROP_BY_PHANDLE_IDX(inst, phs, idx, prop) \
3546 DT_PROP_BY_PHANDLE_IDX(DT_DRV_INST(inst), phs, idx, prop)
3556#define DT_INST_PHA_BY_IDX(inst, pha, idx, cell) \
3557 DT_PHA_BY_IDX(DT_DRV_INST(inst), pha, idx, cell)
3568#define DT_INST_PHA_BY_IDX_OR(inst, pha, idx, cell, default_value) \
3569 DT_PHA_BY_IDX_OR(DT_DRV_INST(inst), pha, idx, cell, default_value)
3579#define DT_INST_PHA(inst, pha, cell) DT_INST_PHA_BY_IDX(inst, pha, 0, cell)
3589#define DT_INST_PHA_OR(inst, pha, cell, default_value) \
3590 DT_INST_PHA_BY_IDX_OR(inst, pha, 0, cell, default_value)
3601#define DT_INST_PHA_BY_NAME(inst, pha, name, cell) \
3602 DT_PHA_BY_NAME(DT_DRV_INST(inst), pha, name, cell)
3613#define DT_INST_PHA_BY_NAME_OR(inst, pha, name, cell, default_value) \
3614 DT_PHA_BY_NAME_OR(DT_DRV_INST(inst), pha, name, cell, default_value)
3624#define DT_INST_PHANDLE_BY_NAME(inst, pha, name) \
3625 DT_PHANDLE_BY_NAME(DT_DRV_INST(inst), pha, name) \
3636#define DT_INST_PHANDLE_BY_IDX(inst, prop, idx) \
3637 DT_PHANDLE_BY_IDX(DT_DRV_INST(inst), prop, idx)
3647#define DT_INST_PHANDLE(inst, prop) DT_INST_PHANDLE_BY_IDX(inst, prop, 0)
3656#define DT_INST_REG_HAS_IDX(inst, idx) DT_REG_HAS_IDX(DT_DRV_INST(inst), idx)
3664#define DT_INST_REG_ADDR_BY_IDX(inst, idx) DT_REG_ADDR_BY_IDX(DT_DRV_INST(inst), idx)
3672#define DT_INST_REG_SIZE_BY_IDX(inst, idx) \
3673 DT_REG_SIZE_BY_IDX(DT_DRV_INST(inst), idx)
3681#define DT_INST_REG_ADDR_BY_NAME(inst, name) \
3682 DT_REG_ADDR_BY_NAME(DT_DRV_INST(inst), name)
3690#define DT_INST_REG_SIZE_BY_NAME(inst, name) \
3691 DT_REG_SIZE_BY_NAME(DT_DRV_INST(inst), name)
3698#define DT_INST_REG_ADDR(inst) DT_INST_REG_ADDR_BY_IDX(inst, 0)
3705#define DT_INST_REG_SIZE(inst) DT_INST_REG_SIZE_BY_IDX(inst, 0)
3714#define DT_INST_IRQ_BY_IDX(inst, idx, cell) \
3715 DT_IRQ_BY_IDX(DT_DRV_INST(inst), idx, cell)
3724#define DT_INST_IRQ_BY_NAME(inst, name, cell) \
3725 DT_IRQ_BY_NAME(DT_DRV_INST(inst), name, cell)
3733#define DT_INST_IRQ(inst, cell) DT_INST_IRQ_BY_IDX(inst, 0, cell)
3740#define DT_INST_IRQN(inst) DT_INST_IRQ(inst, irq)
3747#define DT_INST_BUS(inst) DT_BUS(DT_DRV_INST(inst))
3757#define DT_INST_BUS_LABEL(inst) DT_BUS_LABEL(DT_DRV_INST(inst)) __DEPRECATED_MACRO
3766#define DT_INST_ON_BUS(inst, bus) DT_ON_BUS(DT_DRV_INST(inst), bus)
3777#define DT_INST_STRING_TOKEN_OR(inst, name, default_value) \
3778 DT_STRING_TOKEN_OR(DT_DRV_INST(inst), name, default_value)
3788#define DT_INST_STRING_UPPER_TOKEN_OR(inst, name, default_value) \
3789 DT_STRING_UPPER_TOKEN_OR(DT_DRV_INST(inst), name, default_value)
3799#define DT_INST_STRING_UNQUOTED_OR(inst, name, default_value) \
3800 DT_STRING_UNQUOTED_OR(DT_DRV_INST(inst), name, default_value)
3834#define DT_ANY_INST_ON_BUS_STATUS_OKAY(bus) \
3835 DT_COMPAT_ON_BUS_INTERNAL(DT_DRV_COMPAT, bus)
3881#define DT_ANY_INST_HAS_PROP_STATUS_OKAY(prop) \
3882 (DT_INST_FOREACH_STATUS_OKAY_VARGS(DT_INST_NODE_HAS_PROP_AND_OR, prop) 0)
3949#define DT_INST_FOREACH_STATUS_OKAY(fn) \
3950 COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT), \
3951 (UTIL_CAT(DT_FOREACH_OKAY_INST_, \
3952 DT_DRV_COMPAT)(fn)), \
3966#define DT_INST_FOREACH_STATUS_OKAY_VARGS(fn, ...) \
3967 COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT), \
3968 (UTIL_CAT(DT_FOREACH_OKAY_INST_VARGS_, \
3969 DT_DRV_COMPAT)(fn, __VA_ARGS__)), \
3982#define DT_INST_FOREACH_PROP_ELEM(inst, prop, fn) \
3983 DT_FOREACH_PROP_ELEM(DT_DRV_INST(inst), prop, fn)
3997#define DT_INST_FOREACH_PROP_ELEM_SEP(inst, prop, fn, sep) \
3998 DT_FOREACH_PROP_ELEM_SEP(DT_DRV_INST(inst), prop, fn, sep)
4014#define DT_INST_FOREACH_PROP_ELEM_VARGS(inst, prop, fn, ...) \
4015 DT_FOREACH_PROP_ELEM_VARGS(DT_DRV_INST(inst), prop, fn, __VA_ARGS__)
4034#define DT_INST_FOREACH_PROP_ELEM_SEP_VARGS(inst, prop, fn, sep, ...) \
4035 DT_FOREACH_PROP_ELEM_SEP_VARGS(DT_DRV_INST(inst), prop, fn, sep, \
4044#define DT_INST_NODE_HAS_PROP(inst, prop) \
4045 DT_NODE_HAS_PROP(DT_DRV_INST(inst), prop)
4057#define DT_INST_PHA_HAS_CELL_AT_IDX(inst, pha, idx, cell) \
4058 DT_PHA_HAS_CELL_AT_IDX(DT_DRV_INST(inst), pha, idx, cell)
4069#define DT_INST_PHA_HAS_CELL(inst, pha, cell) \
4070 DT_INST_PHA_HAS_CELL_AT_IDX(inst, pha, 0, cell)
4079#define DT_INST_IRQ_HAS_IDX(inst, idx) DT_IRQ_HAS_IDX(DT_DRV_INST(inst), idx)
4089#define DT_INST_IRQ_HAS_CELL_AT_IDX(inst, idx, cell) \
4090 DT_IRQ_HAS_CELL_AT_IDX(DT_DRV_INST(inst), idx, cell)
4099#define DT_INST_IRQ_HAS_CELL(inst, cell) \
4100 DT_INST_IRQ_HAS_CELL_AT_IDX(inst, 0, cell)
4108#define DT_INST_IRQ_HAS_NAME(inst, name) \
4109 DT_IRQ_HAS_NAME(DT_DRV_INST(inst), name)
4117#define DT_PATH_INTERNAL(...) \
4118 UTIL_CAT(DT_ROOT, MACRO_MAP_CAT(DT_S_PREFIX, __VA_ARGS__))
4124#define DT_S_PREFIX(name) _S_##name
4140#define DT_CAT(a1, a2) a1 ## a2
4142#define DT_CAT3(a1, a2, a3) a1 ## a2 ## a3
4144#define DT_CAT4(a1, a2, a3, a4) a1 ## a2 ## a3 ## a4
4146#define DT_CAT5(a1, a2, a3, a4, a5) a1 ## a2 ## a3 ## a4 ## a5
4148#define DT_CAT6(a1, a2, a3, a4, a5, a6) a1 ## a2 ## a3 ## a4 ## a5 ## a6
4150#define DT_CAT7(a1, a2, a3, a4, a5, a6, a7) \
4151 a1 ## a2 ## a3 ## a4 ## a5 ## a6 ## a7
4153#define DT_CAT8(a1, a2, a3, a4, a5, a6, a7, a8) \
4154 a1 ## a2 ## a3 ## a4 ## a5 ## a6 ## a7 ## a8
4161#define DT_DASH(...) MACRO_MAP_CAT(DT_DASH_PREFIX, __VA_ARGS__)
4163#define DT_DASH_PREFIX(name) _##name
4165#define DT_NODE_HAS_STATUS_INTERNAL(node_id, status) \
4166 IS_ENABLED(DT_CAT3(node_id, _STATUS_, status))
4168#define DT_COMPAT_ON_BUS_INTERNAL(compat, bus) \
4169 IS_ENABLED(UTIL_CAT(DT_CAT(DT_COMPAT_, compat), _BUS_##bus))
4172#define DT_INST_NODE_HAS_PROP_AND_OR(inst, prop) \
4173 DT_INST_NODE_HAS_PROP(inst, prop) ||
Clocks Devicetree macro public API header file.
CAN devicetree macro public API header file.
DMA Devicetree macro public API header file.
GPIO Devicetree macro public API header file.
MBOX Devicetree macro public API header file.
Devicetree pin control helpers.
Reset Controller Devicetree macro public API header file.
SPI Devicetree macro public API header file.
Flash Devicetree macro public API header file.
IO channels devicetree macro public API header file.
Devicetree node dependency ordinals.
PWMs Devicetree macro public API header file.