19#include <devicetree_generated.h>
77#define DT_INVALID_NODE _
134#define DT_PATH(...) DT_PATH_INTERNAL(__VA_ARGS__)
190#define DT_NODELABEL(label) DT_CAT(DT_N_NODELABEL_, label)
230#define DT_ALIAS(alias) DT_CAT(DT_N_ALIAS_, alias)
326#define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))
351#define DT_PARENT(node_id) UTIL_CAT(node_id, _PARENT)
358#define DT_INST_PARENT(inst) DT_PARENT(DT_DRV_INST(inst))
383#define DT_GPARENT(node_id) DT_PARENT(DT_PARENT(node_id))
420#define DT_CHILD(node_id, child) UTIL_CAT(node_id, DT_S_PREFIX(child))
463#define DT_COMPAT_GET_ANY_STATUS_OKAY(compat) \
464 COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(compat), \
465 (DT_INST(0, compat)), \
495#define DT_NODE_PATH(node_id) DT_CAT(node_id, _PATH)
521#define DT_NODE_FULL_NAME(node_id) DT_CAT(node_id, _FULL_NAME)
549#define DT_NODE_CHILD_IDX(node_id) DT_CAT(node_id, _CHILD_IDX)
571#define DT_SAME_NODE(node_id1, node_id2) \
572 (DT_DEP_ORD(node_id1) == (DT_DEP_ORD(node_id2)))
614#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))
744#define DT_PROP_BY_IDX(node_id, prop, idx) \
745 DT_CAT5(node_id, _P_, prop, _IDX_, idx)
760#define DT_PROP_OR(node_id, prop, default_value) \
761 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
762 (DT_PROP(node_id, prop)), (default_value))
773#define DT_LABEL(node_id) DT_PROP(node_id, label) __DEPRECATED_MACRO
815#define DT_ENUM_IDX(node_id, prop) DT_CAT4(node_id, _P_, prop, _ENUM_IDX)
831#define DT_ENUM_IDX_OR(node_id, prop, default_idx_value) \
832 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
833 (DT_ENUM_IDX(node_id, prop)), (default_idx_value))
894#define DT_STRING_TOKEN(node_id, prop) \
895 DT_CAT4(node_id, _P_, prop, _STRING_TOKEN)
910#define DT_STRING_TOKEN_OR(node_id, prop, default_value) \
911 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
912 (DT_STRING_TOKEN(node_id, prop)), (default_value))
971#define DT_STRING_UPPER_TOKEN(node_id, prop) \
972 DT_CAT4(node_id, _P_, prop, _STRING_UPPER_TOKEN)
988#define DT_STRING_UPPER_TOKEN_OR(node_id, prop, default_value) \
989 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
990 (DT_STRING_UPPER_TOKEN(node_id, prop)), (default_value))
1039#define DT_STRING_TOKEN_BY_IDX(node_id, prop, idx) \
1040 DT_CAT6(node_id, _P_, prop, _IDX_, idx, _STRING_TOKEN)
1089#define DT_STRING_UPPER_TOKEN_BY_IDX(node_id, prop, idx) \
1090 DT_CAT6(node_id, _P_, prop, _IDX_, idx, _STRING_UPPER_TOKEN)
1145#define DT_PROP_BY_PHANDLE_IDX(node_id, phs, idx, prop) \
1146 DT_PROP(DT_PHANDLE_BY_IDX(node_id, phs, idx), prop)
1167#define DT_PROP_BY_PHANDLE_IDX_OR(node_id, phs, idx, prop, default_value) \
1168 DT_PROP_OR(DT_PHANDLE_BY_IDX(node_id, phs, idx), prop, default_value)
1181#define DT_PROP_BY_PHANDLE(node_id, ph, prop) \
1182 DT_PROP_BY_PHANDLE_IDX(node_id, ph, 0, prop)
1238#define DT_PHA_BY_IDX(node_id, pha, idx, cell) \
1239 DT_CAT7(node_id, _P_, pha, _IDX_, idx, _VAL_, cell)
1264#define DT_PHA_BY_IDX_OR(node_id, pha, idx, cell, default_value) \
1265 DT_PROP_OR(node_id, pha##_IDX_##idx##_VAL_##cell, default_value)
1274#define DT_PHA(node_id, pha, cell) DT_PHA_BY_IDX(node_id, pha, 0, cell)
1290#define DT_PHA_OR(node_id, pha, cell, default_value) \
1291 DT_PHA_BY_IDX_OR(node_id, pha, 0, cell, default_value)
1333#define DT_PHA_BY_NAME(node_id, pha, name, cell) \
1334 DT_CAT7(node_id, _P_, pha, _NAME_, name, _VAL_, cell)
1357#define DT_PHA_BY_NAME_OR(node_id, pha, name, cell, default_value) \
1358 DT_PROP_OR(node_id, pha##_NAME_##name##_VAL_##cell, default_value)
1407#define DT_PHANDLE_BY_NAME(node_id, pha, name) \
1408 DT_CAT6(node_id, _P_, pha, _NAME_, name, _PH)
1459#define DT_PHANDLE_BY_IDX(node_id, prop, idx) \
1460 DT_CAT6(node_id, _P_, prop, _IDX_, idx, _PH)
1473#define DT_PHANDLE(node_id, prop) DT_PHANDLE_BY_IDX(node_id, prop, 0)
1521#define DT_NUM_RANGES(node_id) DT_CAT(node_id, _RANGES_NUM)
1575#define DT_RANGES_HAS_IDX(node_id, idx) \
1576 IS_ENABLED(DT_CAT4(node_id, _RANGES_IDX_, idx, _EXISTS))
1630#define DT_RANGES_HAS_CHILD_BUS_FLAGS_AT_IDX(node_id, idx) \
1631 IS_ENABLED(DT_CAT4(node_id, _RANGES_IDX_, idx, _VAL_CHILD_BUS_FLAGS_EXISTS))
1670#define DT_RANGES_CHILD_BUS_FLAGS_BY_IDX(node_id, idx) \
1671 DT_CAT4(node_id, _RANGES_IDX_, idx, _VAL_CHILD_BUS_FLAGS)
1719#define DT_RANGES_CHILD_BUS_ADDRESS_BY_IDX(node_id, idx) \
1720 DT_CAT4(node_id, _RANGES_IDX_, idx, _VAL_CHILD_BUS_ADDRESS)
1768#define DT_RANGES_PARENT_BUS_ADDRESS_BY_IDX(node_id, idx) \
1769 DT_CAT4(node_id, _RANGES_IDX_, idx, _VAL_PARENT_BUS_ADDRESS)
1817#define DT_RANGES_LENGTH_BY_IDX(node_id, idx) \
1818 DT_CAT4(node_id, _RANGES_IDX_, idx, _VAL_LENGTH)
1859#define DT_FOREACH_RANGE(node_id, fn) \
1860 DT_CAT(node_id, _FOREACH_RANGE)(fn)
1907#define DT_NODE_VENDOR_BY_IDX(node_id, idx) \
1908 DT_CAT3(node_id, _COMPAT_VENDOR_IDX_, idx)
1922#define DT_NODE_VENDOR_HAS_IDX(node_id, idx) \
1923 IS_ENABLED(DT_CAT4(node_id, _COMPAT_VENDOR_IDX_, idx, _EXISTS))
1939#define DT_NODE_VENDOR_BY_IDX_OR(node_id, idx, default_value) \
1940 COND_CODE_1(DT_NODE_VENDOR_HAS_IDX(node_id, idx), \
1941 (DT_NODE_VENDOR_BY_IDX(node_id, idx)), (default_value))
1951#define DT_NODE_VENDOR_OR(node_id, default_value) \
1952 DT_NODE_VENDOR_BY_IDX_OR(node_id, 0, default_value)
1971#define DT_NUM_REGS(node_id) DT_CAT(node_id, _REG_NUM)
1984#define DT_REG_HAS_IDX(node_id, idx) \
1985 IS_ENABLED(DT_CAT4(node_id, _REG_IDX_, idx, _EXISTS))
1993#define DT_REG_ADDR_BY_IDX(node_id, idx) \
1994 DT_CAT4(node_id, _REG_IDX_, idx, _VAL_ADDRESS)
2007#define DT_REG_SIZE_BY_IDX(node_id, idx) \
2008 DT_CAT4(node_id, _REG_IDX_, idx, _VAL_SIZE)
2017#define DT_REG_ADDR(node_id) DT_REG_ADDR_BY_IDX(node_id, 0)
2026#define DT_REG_SIZE(node_id) DT_REG_SIZE_BY_IDX(node_id, 0)
2034#define DT_REG_ADDR_BY_NAME(node_id, name) \
2035 DT_CAT4(node_id, _REG_NAME_, name, _VAL_ADDRESS)
2043#define DT_REG_SIZE_BY_NAME(node_id, name) \
2044 DT_CAT4(node_id, _REG_NAME_, name, _VAL_SIZE)
2064#define DT_NUM_IRQS(node_id) DT_CAT(node_id, _IRQ_NUM)
2076#define DT_IRQ_HAS_IDX(node_id, idx) \
2077 IS_ENABLED(DT_CAT4(node_id, _IRQ_IDX_, idx, _EXISTS))
2089#define DT_IRQ_HAS_CELL_AT_IDX(node_id, idx, cell) \
2090 IS_ENABLED(DT_CAT6(node_id, _IRQ_IDX_, idx, _VAL_, cell, _EXISTS))
2099#define DT_IRQ_HAS_CELL(node_id, cell) DT_IRQ_HAS_CELL_AT_IDX(node_id, 0, cell)
2110#define DT_IRQ_HAS_NAME(node_id, name) \
2111 IS_ENABLED(DT_CAT4(node_id, _IRQ_NAME_, name, _VAL_irq_EXISTS))
2148#define DT_IRQ_BY_IDX(node_id, idx, cell) \
2149 DT_CAT5(node_id, _IRQ_IDX_, idx, _VAL_, cell)
2166#define DT_IRQ_BY_NAME(node_id, name, cell) \
2167 DT_CAT5(node_id, _IRQ_NAME_, name, _VAL_, cell)
2176#define DT_IRQ(node_id, cell) DT_IRQ_BY_IDX(node_id, 0, cell)
2188#define DT_IRQN(node_id) DT_IRQ(node_id, irq)
2208#define DT_CHOSEN(prop) DT_CAT(DT_CHOSEN_, prop)
2216#define DT_HAS_CHOSEN(prop) IS_ENABLED(DT_CAT3(DT_CHOSEN_, prop, _EXISTS))
2237#define DT_FOREACH_NODE(fn) DT_FOREACH_HELPER(fn)
2250#define DT_FOREACH_STATUS_OKAY_NODE(fn) DT_FOREACH_OKAY_HELPER(fn)
2295#define DT_FOREACH_CHILD(node_id, fn) \
2296 DT_CAT(node_id, _FOREACH_CHILD)(fn)
2338#define DT_FOREACH_CHILD_SEP(node_id, fn, sep) \
2339 DT_CAT(node_id, _FOREACH_CHILD_SEP)(fn, sep)
2356#define DT_FOREACH_CHILD_VARGS(node_id, fn, ...) \
2357 DT_CAT(node_id, _FOREACH_CHILD_VARGS)(fn, __VA_ARGS__)
2374#define DT_FOREACH_CHILD_SEP_VARGS(node_id, fn, sep, ...) \
2375 DT_CAT(node_id, _FOREACH_CHILD_SEP_VARGS)(fn, sep, __VA_ARGS__)
2392#define DT_FOREACH_CHILD_STATUS_OKAY(node_id, fn) \
2393 DT_CAT(node_id, _FOREACH_CHILD_STATUS_OKAY)(fn)
2411#define DT_FOREACH_CHILD_STATUS_OKAY_SEP(node_id, fn, sep) \
2412 DT_CAT(node_id, _FOREACH_CHILD_STATUS_OKAY_SEP)(fn, sep)
2433#define DT_FOREACH_CHILD_STATUS_OKAY_VARGS(node_id, fn, ...) \
2434 DT_CAT(node_id, _FOREACH_CHILD_STATUS_OKAY_VARGS)(fn, __VA_ARGS__)
2454#define DT_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(node_id, fn, sep, ...) \
2455 DT_CAT(node_id, _FOREACH_CHILD_STATUS_OKAY_SEP_VARGS)(fn, sep, __VA_ARGS__)
2507#define DT_FOREACH_PROP_ELEM(node_id, prop, fn) \
2508 DT_CAT4(node_id, _P_, prop, _FOREACH_PROP_ELEM)(fn)
2527#define DT_FOREACH_PROP_ELEM_VARGS(node_id, prop, fn, ...) \
2528 DT_CAT4(node_id, _P_, prop, _FOREACH_PROP_ELEM_VARGS)(fn, __VA_ARGS__)
2583#define DT_FOREACH_STATUS_OKAY(compat, fn) \
2584 COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(compat), \
2585 (UTIL_CAT(DT_FOREACH_OKAY_, compat)(fn)), \
2632#define DT_FOREACH_STATUS_OKAY_VARGS(compat, fn, ...) \
2633 COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(compat), \
2634 (UTIL_CAT(DT_FOREACH_OKAY_VARGS_, \
2635 compat)(fn, __VA_ARGS__)), \
2662#define DT_NODE_EXISTS(node_id) IS_ENABLED(DT_CAT(node_id, _EXISTS))
2685#define DT_NODE_HAS_STATUS(node_id, status) \
2686 DT_NODE_HAS_STATUS_INTERNAL(node_id, status)
2707#define DT_HAS_COMPAT_STATUS_OKAY(compat) \
2708 IS_ENABLED(DT_CAT(DT_COMPAT_HAS_OKAY_, compat))
2716#define DT_NUM_INST_STATUS_OKAY(compat) \
2717 UTIL_AND(DT_HAS_COMPAT_STATUS_OKAY(compat), \
2718 UTIL_CAT(DT_N_INST, DT_DASH(compat, NUM_OKAY)))
2747#define DT_NODE_HAS_COMPAT(node_id, compat) \
2748 IS_ENABLED(DT_CAT3(node_id, _COMPAT_MATCHES_, compat))
2764#define DT_NODE_HAS_COMPAT_STATUS(node_id, compat, status) \
2765 DT_NODE_HAS_COMPAT(node_id, compat) && DT_NODE_HAS_STATUS(node_id, status)
2780#define DT_NODE_HAS_PROP(node_id, prop) \
2781 IS_ENABLED(DT_CAT4(node_id, _P_, prop, _EXISTS))
2800#define DT_PHA_HAS_CELL_AT_IDX(node_id, pha, idx, cell) \
2801 IS_ENABLED(DT_CAT8(node_id, _P_, pha, \
2802 _IDX_, idx, _VAL_, cell, _EXISTS))
2813#define DT_PHA_HAS_CELL(node_id, pha, cell) \
2814 DT_PHA_HAS_CELL_AT_IDX(node_id, pha, 0, cell)
2857#define DT_BUS(node_id) DT_CAT(node_id, _BUS)
2867#define DT_BUS_LABEL(node_id) DT_PROP(DT_BUS(node_id), label) __DEPRECATED_MACRO
2897#define DT_ON_BUS(node_id, bus) IS_ENABLED(DT_CAT3(node_id, _BUS_, bus))
2915#define DT_DRV_INST(inst) DT_INST(inst, DT_DRV_COMPAT)
2926#define DT_INST_CHILD(inst, child) \
2927 DT_CHILD(DT_DRV_INST(inst), child)
2943#define DT_INST_FOREACH_CHILD(inst, fn) \
2944 DT_FOREACH_CHILD(DT_DRV_INST(inst), fn)
2959#define DT_INST_FOREACH_CHILD_SEP(inst, fn, sep) \
2960 DT_FOREACH_CHILD_SEP(DT_DRV_INST(inst), fn, sep)
2977#define DT_INST_FOREACH_CHILD_VARGS(inst, fn, ...) \
2978 DT_FOREACH_CHILD_VARGS(DT_DRV_INST(inst), fn, __VA_ARGS__)
2994#define DT_INST_FOREACH_CHILD_SEP_VARGS(inst, fn, sep, ...) \
2995 DT_FOREACH_CHILD_SEP_VARGS(DT_DRV_INST(inst), fn, sep, __VA_ARGS__)
3008#define DT_INST_FOREACH_CHILD_STATUS_OKAY(inst, fn) \
3009 DT_FOREACH_CHILD_STATUS_OKAY(DT_DRV_INST(inst), fn)
3025#define DT_INST_FOREACH_CHILD_STATUS_OKAY_SEP(inst, fn, sep) \
3026 DT_FOREACH_CHILD_STATUS_OKAY_SEP(DT_DRV_INST(inst), fn, sep)
3041#define DT_INST_FOREACH_CHILD_STATUS_OKAY_VARGS(inst, fn, ...) \
3042 DT_FOREACH_CHILD_STATUS_OKAY_VARGS(DT_DRV_INST(inst), fn, __VA_ARGS__)
3059#define DT_INST_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(inst, fn, sep, ...) \
3060 DT_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(DT_DRV_INST(inst), fn, sep, __VA_ARGS__)
3068#define DT_INST_ENUM_IDX(inst, prop) \
3069 DT_ENUM_IDX(DT_DRV_INST(inst), prop)
3079#define DT_INST_ENUM_IDX_OR(inst, prop, default_idx_value) \
3080 DT_ENUM_IDX_OR(DT_DRV_INST(inst), prop, default_idx_value)
3088#define DT_INST_PROP(inst, prop) DT_PROP(DT_DRV_INST(inst), prop)
3096#define DT_INST_PROP_LEN(inst, prop) DT_PROP_LEN(DT_DRV_INST(inst), prop)
3107#define DT_INST_PROP_HAS_IDX(inst, prop, idx) \
3108 DT_PROP_HAS_IDX(DT_DRV_INST(inst), prop, idx)
3118#define DT_INST_PROP_HAS_NAME(inst, prop, name) \
3119 DT_PROP_HAS_NAME(DT_DRV_INST(inst), prop, name)
3128#define DT_INST_PROP_BY_IDX(inst, prop, idx) \
3129 DT_PROP_BY_IDX(DT_DRV_INST(inst), prop, idx)
3138#define DT_INST_PROP_OR(inst, prop, default_value) \
3139 DT_PROP_OR(DT_DRV_INST(inst), prop, default_value)
3147#define DT_INST_LABEL(inst) DT_INST_PROP(inst, label) __DEPRECATED_MACRO
3158#define DT_INST_STRING_TOKEN(inst, prop) \
3159 DT_STRING_TOKEN(DT_DRV_INST(inst), prop)
3168#define DT_INST_STRING_UPPER_TOKEN(inst, prop) \
3169 DT_STRING_UPPER_TOKEN(DT_DRV_INST(inst), prop)
3178#define DT_INST_STRING_TOKEN_BY_IDX(inst, prop, idx) \
3179 DT_STRING_TOKEN_BY_IDX(DT_DRV_INST(inst), prop, idx)
3188#define DT_INST_STRING_UPPER_TOKEN_BY_IDX(inst, prop, idx) \
3189 DT_STRING_UPPER_TOKEN_BY_IDX(DT_DRV_INST(inst), prop, idx)
3199#define DT_INST_PROP_BY_PHANDLE(inst, ph, prop) \
3200 DT_INST_PROP_BY_PHANDLE_IDX(inst, ph, 0, prop)
3213#define DT_INST_PROP_BY_PHANDLE_IDX(inst, phs, idx, prop) \
3214 DT_PROP_BY_PHANDLE_IDX(DT_DRV_INST(inst), phs, idx, prop)
3224#define DT_INST_PHA_BY_IDX(inst, pha, idx, cell) \
3225 DT_PHA_BY_IDX(DT_DRV_INST(inst), pha, idx, cell)
3236#define DT_INST_PHA_BY_IDX_OR(inst, pha, idx, cell, default_value) \
3237 DT_PHA_BY_IDX_OR(DT_DRV_INST(inst), pha, idx, cell, default_value)
3247#define DT_INST_PHA(inst, pha, cell) DT_INST_PHA_BY_IDX(inst, pha, 0, cell)
3257#define DT_INST_PHA_OR(inst, pha, cell, default_value) \
3258 DT_INST_PHA_BY_IDX_OR(inst, pha, 0, cell, default_value)
3269#define DT_INST_PHA_BY_NAME(inst, pha, name, cell) \
3270 DT_PHA_BY_NAME(DT_DRV_INST(inst), pha, name, cell)
3281#define DT_INST_PHA_BY_NAME_OR(inst, pha, name, cell, default_value) \
3282 DT_PHA_BY_NAME_OR(DT_DRV_INST(inst), pha, name, cell, default_value)
3292#define DT_INST_PHANDLE_BY_NAME(inst, pha, name) \
3293 DT_PHANDLE_BY_NAME(DT_DRV_INST(inst), pha, name) \
3304#define DT_INST_PHANDLE_BY_IDX(inst, prop, idx) \
3305 DT_PHANDLE_BY_IDX(DT_DRV_INST(inst), prop, idx)
3315#define DT_INST_PHANDLE(inst, prop) DT_INST_PHANDLE_BY_IDX(inst, prop, 0)
3324#define DT_INST_REG_HAS_IDX(inst, idx) DT_REG_HAS_IDX(DT_DRV_INST(inst), idx)
3332#define DT_INST_REG_ADDR_BY_IDX(inst, idx) DT_REG_ADDR_BY_IDX(DT_DRV_INST(inst), idx)
3340#define DT_INST_REG_SIZE_BY_IDX(inst, idx) \
3341 DT_REG_SIZE_BY_IDX(DT_DRV_INST(inst), idx)
3349#define DT_INST_REG_ADDR_BY_NAME(inst, name) \
3350 DT_REG_ADDR_BY_NAME(DT_DRV_INST(inst), name)
3358#define DT_INST_REG_SIZE_BY_NAME(inst, name) \
3359 DT_REG_SIZE_BY_NAME(DT_DRV_INST(inst), name)
3366#define DT_INST_REG_ADDR(inst) DT_INST_REG_ADDR_BY_IDX(inst, 0)
3373#define DT_INST_REG_SIZE(inst) DT_INST_REG_SIZE_BY_IDX(inst, 0)
3382#define DT_INST_IRQ_BY_IDX(inst, idx, cell) \
3383 DT_IRQ_BY_IDX(DT_DRV_INST(inst), idx, cell)
3392#define DT_INST_IRQ_BY_NAME(inst, name, cell) \
3393 DT_IRQ_BY_NAME(DT_DRV_INST(inst), name, cell)
3401#define DT_INST_IRQ(inst, cell) DT_INST_IRQ_BY_IDX(inst, 0, cell)
3408#define DT_INST_IRQN(inst) DT_INST_IRQ(inst, irq)
3415#define DT_INST_BUS(inst) DT_BUS(DT_DRV_INST(inst))
3425#define DT_INST_BUS_LABEL(inst) DT_BUS_LABEL(DT_DRV_INST(inst)) __DEPRECATED_MACRO
3434#define DT_INST_ON_BUS(inst, bus) DT_ON_BUS(DT_DRV_INST(inst), bus)
3445#define DT_INST_STRING_TOKEN_OR(inst, name, default_value) \
3446 DT_STRING_TOKEN_OR(DT_DRV_INST(inst), name, default_value)
3456#define DT_INST_STRING_UPPER_TOKEN_OR(inst, name, default_value) \
3457 DT_STRING_UPPER_TOKEN_OR(DT_DRV_INST(inst), name, default_value)
3491#define DT_ANY_INST_ON_BUS_STATUS_OKAY(bus) \
3492 DT_COMPAT_ON_BUS_INTERNAL(DT_DRV_COMPAT, bus)
3559#define DT_INST_FOREACH_STATUS_OKAY(fn) \
3560 COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT), \
3561 (UTIL_CAT(DT_FOREACH_OKAY_INST_, \
3562 DT_DRV_COMPAT)(fn)), \
3576#define DT_INST_FOREACH_STATUS_OKAY_VARGS(fn, ...) \
3577 COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT), \
3578 (UTIL_CAT(DT_FOREACH_OKAY_INST_VARGS_, \
3579 DT_DRV_COMPAT)(fn, __VA_ARGS__)), \
3592#define DT_INST_FOREACH_PROP_ELEM(inst, prop, fn) \
3593 DT_FOREACH_PROP_ELEM(DT_DRV_INST(inst), prop, fn)
3609#define DT_INST_FOREACH_PROP_ELEM_VARGS(inst, prop, fn, ...) \
3610 DT_FOREACH_PROP_ELEM_VARGS(DT_DRV_INST(inst), prop, fn, __VA_ARGS__)
3618#define DT_INST_NODE_HAS_PROP(inst, prop) \
3619 DT_NODE_HAS_PROP(DT_DRV_INST(inst), prop)
3631#define DT_INST_PHA_HAS_CELL_AT_IDX(inst, pha, idx, cell) \
3632 DT_PHA_HAS_CELL_AT_IDX(DT_DRV_INST(inst), pha, idx, cell)
3643#define DT_INST_PHA_HAS_CELL(inst, pha, cell) \
3644 DT_INST_PHA_HAS_CELL_AT_IDX(inst, pha, 0, cell)
3653#define DT_INST_IRQ_HAS_IDX(inst, idx) DT_IRQ_HAS_IDX(DT_DRV_INST(inst), idx)
3663#define DT_INST_IRQ_HAS_CELL_AT_IDX(inst, idx, cell) \
3664 DT_IRQ_HAS_CELL_AT_IDX(DT_DRV_INST(inst), idx, cell)
3673#define DT_INST_IRQ_HAS_CELL(inst, cell) \
3674 DT_INST_IRQ_HAS_CELL_AT_IDX(inst, 0, cell)
3682#define DT_INST_IRQ_HAS_NAME(inst, name) \
3683 DT_IRQ_HAS_NAME(DT_DRV_INST(inst), name)
3691#define DT_PATH_INTERNAL(...) \
3692 UTIL_CAT(DT_ROOT, MACRO_MAP_CAT(DT_S_PREFIX, __VA_ARGS__))
3698#define DT_S_PREFIX(name) _S_##name
3714#define DT_CAT(a1, a2) a1 ## a2
3716#define DT_CAT3(a1, a2, a3) a1 ## a2 ## a3
3718#define DT_CAT4(a1, a2, a3, a4) a1 ## a2 ## a3 ## a4
3720#define DT_CAT5(a1, a2, a3, a4, a5) a1 ## a2 ## a3 ## a4 ## a5
3722#define DT_CAT6(a1, a2, a3, a4, a5, a6) a1 ## a2 ## a3 ## a4 ## a5 ## a6
3724#define DT_CAT7(a1, a2, a3, a4, a5, a6, a7) \
3725 a1 ## a2 ## a3 ## a4 ## a5 ## a6 ## a7
3727#define DT_CAT8(a1, a2, a3, a4, a5, a6, a7, a8) \
3728 a1 ## a2 ## a3 ## a4 ## a5 ## a6 ## a7 ## a8
3735#define DT_DASH(...) MACRO_MAP_CAT(DT_DASH_PREFIX, __VA_ARGS__)
3737#define DT_DASH_PREFIX(name) _##name
3739#define DT_NODE_HAS_STATUS_INTERNAL(node_id, status) \
3740 IS_ENABLED(DT_CAT3(node_id, _STATUS_, status))
3742#define DT_COMPAT_ON_BUS_INTERNAL(compat, bus) \
3743 IS_ENABLED(UTIL_CAT(DT_CAT(DT_COMPAT_, compat), _BUS_##bus))
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.
Zephyr-specific devicetree /chosen properties.
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.