19#include <devicetree_generated.h>
21#if !defined(_LINKER) && !defined(_ASMLANGUAGE)
84#define DT_INVALID_NODE _
141#define DT_PATH(...) DT_PATH_INTERNAL(__VA_ARGS__)
197#define DT_NODELABEL(label) DT_CAT(DT_N_NODELABEL_, label)
237#define DT_ALIAS(alias) DT_CAT(DT_N_ALIAS_, alias)
333#define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))
358#define DT_PARENT(node_id) UTIL_CAT(node_id, _PARENT)
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)
648#define DT_PROP_LEN(node_id, prop) DT_CAT4(node_id, _P_, prop, _LEN)
664#define DT_PROP_LEN_OR(node_id, prop, default_value) \
665 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
666 (DT_PROP_LEN(node_id, prop)), (default_value))
688#define DT_PROP_HAS_IDX(node_id, prop, idx) \
689 IS_ENABLED(DT_CAT6(node_id, _P_, prop, _IDX_, idx, _EXISTS))
723#define DT_PROP_HAS_NAME(node_id, prop, name) \
724 IS_ENABLED(DT_CAT6(node_id, _P_, prop, _NAME_, name, _EXISTS))
760#define DT_PROP_BY_IDX(node_id, prop, idx) \
761 DT_CAT5(node_id, _P_, prop, _IDX_, idx)
776#define DT_PROP_OR(node_id, prop, default_value) \
777 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
778 (DT_PROP(node_id, prop)), (default_value))
789#define DT_LABEL(node_id) DT_PROP(node_id, label) __DEPRECATED_MACRO
831#define DT_ENUM_IDX(node_id, prop) DT_CAT4(node_id, _P_, prop, _ENUM_IDX)
847#define DT_ENUM_IDX_OR(node_id, prop, default_idx_value) \
848 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
849 (DT_ENUM_IDX(node_id, prop)), (default_idx_value))
859#define DT_ENUM_HAS_VALUE(node_id, prop, value) \
860 IS_ENABLED(DT_CAT6(node_id, _P_, prop, _ENUM_VAL_, value, _EXISTS))
921#define DT_STRING_TOKEN(node_id, prop) \
922 DT_CAT4(node_id, _P_, prop, _STRING_TOKEN)
937#define DT_STRING_TOKEN_OR(node_id, prop, default_value) \
938 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
939 (DT_STRING_TOKEN(node_id, prop)), (default_value))
998#define DT_STRING_UPPER_TOKEN(node_id, prop) \
999 DT_CAT4(node_id, _P_, prop, _STRING_UPPER_TOKEN)
1015#define DT_STRING_UPPER_TOKEN_OR(node_id, prop, default_value) \
1016 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
1017 (DT_STRING_UPPER_TOKEN(node_id, prop)), (default_value))
1059#define DT_STRING_UNQUOTED(node_id, prop) \
1060 DT_CAT4(node_id, _P_, prop, _STRING_UNQUOTED)
1076#define DT_STRING_UNQUOTED_OR(node_id, prop, default_value) \
1077 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
1078 (DT_STRING_UNQUOTED(node_id, prop)), (default_value))
1127#define DT_STRING_TOKEN_BY_IDX(node_id, prop, idx) \
1128 DT_CAT6(node_id, _P_, prop, _IDX_, idx, _STRING_TOKEN)
1177#define DT_STRING_UPPER_TOKEN_BY_IDX(node_id, prop, idx) \
1178 DT_CAT6(node_id, _P_, prop, _IDX_, idx, _STRING_UPPER_TOKEN)
1220#define DT_STRING_UNQUOTED_BY_IDX(node_id, prop, idx) \
1221 DT_CAT4(node_id, _P_, prop##_IDX_##idx, _STRING_UNQUOTED)
1276#define DT_PROP_BY_PHANDLE_IDX(node_id, phs, idx, prop) \
1277 DT_PROP(DT_PHANDLE_BY_IDX(node_id, phs, idx), prop)
1298#define DT_PROP_BY_PHANDLE_IDX_OR(node_id, phs, idx, prop, default_value) \
1299 DT_PROP_OR(DT_PHANDLE_BY_IDX(node_id, phs, idx), prop, default_value)
1312#define DT_PROP_BY_PHANDLE(node_id, ph, prop) \
1313 DT_PROP_BY_PHANDLE_IDX(node_id, ph, 0, prop)
1369#define DT_PHA_BY_IDX(node_id, pha, idx, cell) \
1370 DT_CAT7(node_id, _P_, pha, _IDX_, idx, _VAL_, cell)
1395#define DT_PHA_BY_IDX_OR(node_id, pha, idx, cell, default_value) \
1396 DT_PROP_OR(node_id, pha##_IDX_##idx##_VAL_##cell, default_value)
1405#define DT_PHA(node_id, pha, cell) DT_PHA_BY_IDX(node_id, pha, 0, cell)
1421#define DT_PHA_OR(node_id, pha, cell, default_value) \
1422 DT_PHA_BY_IDX_OR(node_id, pha, 0, cell, default_value)
1464#define DT_PHA_BY_NAME(node_id, pha, name, cell) \
1465 DT_CAT7(node_id, _P_, pha, _NAME_, name, _VAL_, cell)
1488#define DT_PHA_BY_NAME_OR(node_id, pha, name, cell, default_value) \
1489 DT_PROP_OR(node_id, pha##_NAME_##name##_VAL_##cell, default_value)
1538#define DT_PHANDLE_BY_NAME(node_id, pha, name) \
1539 DT_CAT6(node_id, _P_, pha, _NAME_, name, _PH)
1590#define DT_PHANDLE_BY_IDX(node_id, prop, idx) \
1591 DT_CAT6(node_id, _P_, prop, _IDX_, idx, _PH)
1604#define DT_PHANDLE(node_id, prop) DT_PHANDLE_BY_IDX(node_id, prop, 0)
1652#define DT_NUM_RANGES(node_id) DT_CAT(node_id, _RANGES_NUM)
1706#define DT_RANGES_HAS_IDX(node_id, idx) \
1707 IS_ENABLED(DT_CAT4(node_id, _RANGES_IDX_, idx, _EXISTS))
1761#define DT_RANGES_HAS_CHILD_BUS_FLAGS_AT_IDX(node_id, idx) \
1762 IS_ENABLED(DT_CAT4(node_id, _RANGES_IDX_, idx, _VAL_CHILD_BUS_FLAGS_EXISTS))
1801#define DT_RANGES_CHILD_BUS_FLAGS_BY_IDX(node_id, idx) \
1802 DT_CAT4(node_id, _RANGES_IDX_, idx, _VAL_CHILD_BUS_FLAGS)
1850#define DT_RANGES_CHILD_BUS_ADDRESS_BY_IDX(node_id, idx) \
1851 DT_CAT4(node_id, _RANGES_IDX_, idx, _VAL_CHILD_BUS_ADDRESS)
1899#define DT_RANGES_PARENT_BUS_ADDRESS_BY_IDX(node_id, idx) \
1900 DT_CAT4(node_id, _RANGES_IDX_, idx, _VAL_PARENT_BUS_ADDRESS)
1948#define DT_RANGES_LENGTH_BY_IDX(node_id, idx) \
1949 DT_CAT4(node_id, _RANGES_IDX_, idx, _VAL_LENGTH)
1990#define DT_FOREACH_RANGE(node_id, fn) \
1991 DT_CAT(node_id, _FOREACH_RANGE)(fn)
2038#define DT_NODE_VENDOR_BY_IDX(node_id, idx) \
2039 DT_CAT3(node_id, _COMPAT_VENDOR_IDX_, idx)
2053#define DT_NODE_VENDOR_HAS_IDX(node_id, idx) \
2054 IS_ENABLED(DT_CAT4(node_id, _COMPAT_VENDOR_IDX_, idx, _EXISTS))
2070#define DT_NODE_VENDOR_BY_IDX_OR(node_id, idx, default_value) \
2071 COND_CODE_1(DT_NODE_VENDOR_HAS_IDX(node_id, idx), \
2072 (DT_NODE_VENDOR_BY_IDX(node_id, idx)), (default_value))
2082#define DT_NODE_VENDOR_OR(node_id, default_value) \
2083 DT_NODE_VENDOR_BY_IDX_OR(node_id, 0, default_value)
2114#define DT_NODE_MODEL_BY_IDX(node_id, idx) \
2115 DT_CAT3(node_id, _COMPAT_MODEL_IDX_, idx)
2129#define DT_NODE_MODEL_HAS_IDX(node_id, idx) \
2130 IS_ENABLED(DT_CAT4(node_id, _COMPAT_MODEL_IDX_, idx, _EXISTS))
2146#define DT_NODE_MODEL_BY_IDX_OR(node_id, idx, default_value) \
2147 COND_CODE_1(DT_NODE_MODEL_HAS_IDX(node_id, idx), \
2148 (DT_NODE_MODEL_BY_IDX(node_id, idx)), (default_value))
2158#define DT_NODE_MODEL_OR(node_id, default_value) \
2159 DT_NODE_MODEL_BY_IDX_OR(node_id, 0, default_value)
2178#define DT_NUM_REGS(node_id) DT_CAT(node_id, _REG_NUM)
2191#define DT_REG_HAS_IDX(node_id, idx) \
2192 IS_ENABLED(DT_CAT4(node_id, _REG_IDX_, idx, _EXISTS))
2200#define DT_REG_ADDR_BY_IDX(node_id, idx) \
2201 DT_CAT4(node_id, _REG_IDX_, idx, _VAL_ADDRESS)
2214#define DT_REG_SIZE_BY_IDX(node_id, idx) \
2215 DT_CAT4(node_id, _REG_IDX_, idx, _VAL_SIZE)
2224#define DT_REG_ADDR(node_id) DT_REG_ADDR_BY_IDX(node_id, 0)
2236#define DT_REG_ADDR_U64(node_id) DT_U64_C(DT_REG_ADDR(node_id))
2245#define DT_REG_SIZE(node_id) DT_REG_SIZE_BY_IDX(node_id, 0)
2253#define DT_REG_ADDR_BY_NAME(node_id, name) \
2254 DT_CAT4(node_id, _REG_NAME_, name, _VAL_ADDRESS)
2268#define DT_REG_ADDR_BY_NAME_U64(node_id, name) \
2269 DT_U64_C(DT_REG_ADDR_BY_NAME(node_id, name))
2277#define DT_REG_SIZE_BY_NAME(node_id, name) \
2278 DT_CAT4(node_id, _REG_NAME_, name, _VAL_SIZE)
2298#define DT_NUM_IRQS(node_id) DT_CAT(node_id, _IRQ_NUM)
2310#define DT_IRQ_HAS_IDX(node_id, idx) \
2311 IS_ENABLED(DT_CAT4(node_id, _IRQ_IDX_, idx, _EXISTS))
2323#define DT_IRQ_HAS_CELL_AT_IDX(node_id, idx, cell) \
2324 IS_ENABLED(DT_CAT6(node_id, _IRQ_IDX_, idx, _VAL_, cell, _EXISTS))
2333#define DT_IRQ_HAS_CELL(node_id, cell) DT_IRQ_HAS_CELL_AT_IDX(node_id, 0, cell)
2344#define DT_IRQ_HAS_NAME(node_id, name) \
2345 IS_ENABLED(DT_CAT4(node_id, _IRQ_NAME_, name, _VAL_irq_EXISTS))
2382#define DT_IRQ_BY_IDX(node_id, idx, cell) \
2383 DT_CAT5(node_id, _IRQ_IDX_, idx, _VAL_, cell)
2400#define DT_IRQ_BY_NAME(node_id, name, cell) \
2401 DT_CAT5(node_id, _IRQ_NAME_, name, _VAL_, cell)
2410#define DT_IRQ(node_id, cell) DT_IRQ_BY_IDX(node_id, 0, cell)
2422#define DT_IRQN(node_id) DT_IRQ(node_id, irq)
2442#define DT_CHOSEN(prop) DT_CAT(DT_CHOSEN_, prop)
2450#define DT_HAS_CHOSEN(prop) IS_ENABLED(DT_CAT3(DT_CHOSEN_, prop, _EXISTS))
2471#define DT_FOREACH_NODE(fn) DT_FOREACH_HELPER(fn)
2485#define DT_FOREACH_NODE_VARGS(fn, ...) DT_FOREACH_VARGS_HELPER(fn, __VA_ARGS__)
2498#define DT_FOREACH_STATUS_OKAY_NODE(fn) DT_FOREACH_OKAY_HELPER(fn)
2514#define DT_FOREACH_STATUS_OKAY_NODE_VARGS(fn, ...) DT_FOREACH_OKAY_VARGS_HELPER(fn, __VA_ARGS__)
2559#define DT_FOREACH_CHILD(node_id, fn) \
2560 DT_CAT(node_id, _FOREACH_CHILD)(fn)
2602#define DT_FOREACH_CHILD_SEP(node_id, fn, sep) \
2603 DT_CAT(node_id, _FOREACH_CHILD_SEP)(fn, sep)
2620#define DT_FOREACH_CHILD_VARGS(node_id, fn, ...) \
2621 DT_CAT(node_id, _FOREACH_CHILD_VARGS)(fn, __VA_ARGS__)
2638#define DT_FOREACH_CHILD_SEP_VARGS(node_id, fn, sep, ...) \
2639 DT_CAT(node_id, _FOREACH_CHILD_SEP_VARGS)(fn, sep, __VA_ARGS__)
2656#define DT_FOREACH_CHILD_STATUS_OKAY(node_id, fn) \
2657 DT_CAT(node_id, _FOREACH_CHILD_STATUS_OKAY)(fn)
2675#define DT_FOREACH_CHILD_STATUS_OKAY_SEP(node_id, fn, sep) \
2676 DT_CAT(node_id, _FOREACH_CHILD_STATUS_OKAY_SEP)(fn, sep)
2697#define DT_FOREACH_CHILD_STATUS_OKAY_VARGS(node_id, fn, ...) \
2698 DT_CAT(node_id, _FOREACH_CHILD_STATUS_OKAY_VARGS)(fn, __VA_ARGS__)
2718#define DT_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(node_id, fn, sep, ...) \
2719 DT_CAT(node_id, _FOREACH_CHILD_STATUS_OKAY_SEP_VARGS)(fn, sep, __VA_ARGS__)
2771#define DT_FOREACH_PROP_ELEM(node_id, prop, fn) \
2772 DT_CAT4(node_id, _P_, prop, _FOREACH_PROP_ELEM)(fn)
2816#define DT_FOREACH_PROP_ELEM_SEP(node_id, prop, fn, sep) \
2817 DT_CAT4(node_id, _P_, prop, _FOREACH_PROP_ELEM_SEP)(fn, sep)
2839#define DT_FOREACH_PROP_ELEM_VARGS(node_id, prop, fn, ...) \
2840 DT_CAT4(node_id, _P_, prop, _FOREACH_PROP_ELEM_VARGS)(fn, __VA_ARGS__)
2858#define DT_FOREACH_PROP_ELEM_SEP_VARGS(node_id, prop, fn, sep, ...) \
2859 DT_CAT4(node_id, _P_, prop, _FOREACH_PROP_ELEM_SEP_VARGS)( \
2860 fn, sep, __VA_ARGS__)
2915#define DT_FOREACH_STATUS_OKAY(compat, fn) \
2916 COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(compat), \
2917 (UTIL_CAT(DT_FOREACH_OKAY_, compat)(fn)), \
2964#define DT_FOREACH_STATUS_OKAY_VARGS(compat, fn, ...) \
2965 COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(compat), \
2966 (UTIL_CAT(DT_FOREACH_OKAY_VARGS_, \
2967 compat)(fn, __VA_ARGS__)), \
2994#define DT_NODE_EXISTS(node_id) IS_ENABLED(DT_CAT(node_id, _EXISTS))
3017#define DT_NODE_HAS_STATUS(node_id, status) \
3018 DT_NODE_HAS_STATUS_INTERNAL(node_id, status)
3039#define DT_HAS_COMPAT_STATUS_OKAY(compat) \
3040 IS_ENABLED(DT_CAT(DT_COMPAT_HAS_OKAY_, compat))
3048#define DT_NUM_INST_STATUS_OKAY(compat) \
3049 UTIL_AND(DT_HAS_COMPAT_STATUS_OKAY(compat), \
3050 UTIL_CAT(DT_N_INST, DT_DASH(compat, NUM_OKAY)))
3079#define DT_NODE_HAS_COMPAT(node_id, compat) \
3080 IS_ENABLED(DT_CAT3(node_id, _COMPAT_MATCHES_, compat))
3096#define DT_NODE_HAS_COMPAT_STATUS(node_id, compat, status) \
3097 DT_NODE_HAS_COMPAT(node_id, compat) && DT_NODE_HAS_STATUS(node_id, status)
3112#define DT_NODE_HAS_PROP(node_id, prop) \
3113 IS_ENABLED(DT_CAT4(node_id, _P_, prop, _EXISTS))
3132#define DT_PHA_HAS_CELL_AT_IDX(node_id, pha, idx, cell) \
3133 IS_ENABLED(DT_CAT8(node_id, _P_, pha, \
3134 _IDX_, idx, _VAL_, cell, _EXISTS))
3145#define DT_PHA_HAS_CELL(node_id, pha, cell) \
3146 DT_PHA_HAS_CELL_AT_IDX(node_id, pha, 0, cell)
3189#define DT_BUS(node_id) DT_CAT(node_id, _BUS)
3199#define DT_BUS_LABEL(node_id) DT_PROP(DT_BUS(node_id), label) __DEPRECATED_MACRO
3229#define DT_ON_BUS(node_id, bus) IS_ENABLED(DT_CAT3(node_id, _BUS_, bus))
3247#define DT_DRV_INST(inst) DT_INST(inst, DT_DRV_COMPAT)
3256#define DT_INST_PARENT(inst) DT_PARENT(DT_DRV_INST(inst))
3265#define DT_INST_GPARENT(inst) DT_GPARENT(DT_DRV_INST(inst))
3276#define DT_INST_CHILD(inst, child) \
3277 DT_CHILD(DT_DRV_INST(inst), child)
3293#define DT_INST_FOREACH_CHILD(inst, fn) \
3294 DT_FOREACH_CHILD(DT_DRV_INST(inst), fn)
3309#define DT_INST_FOREACH_CHILD_SEP(inst, fn, sep) \
3310 DT_FOREACH_CHILD_SEP(DT_DRV_INST(inst), fn, sep)
3327#define DT_INST_FOREACH_CHILD_VARGS(inst, fn, ...) \
3328 DT_FOREACH_CHILD_VARGS(DT_DRV_INST(inst), fn, __VA_ARGS__)
3344#define DT_INST_FOREACH_CHILD_SEP_VARGS(inst, fn, sep, ...) \
3345 DT_FOREACH_CHILD_SEP_VARGS(DT_DRV_INST(inst), fn, sep, __VA_ARGS__)
3358#define DT_INST_FOREACH_CHILD_STATUS_OKAY(inst, fn) \
3359 DT_FOREACH_CHILD_STATUS_OKAY(DT_DRV_INST(inst), fn)
3375#define DT_INST_FOREACH_CHILD_STATUS_OKAY_SEP(inst, fn, sep) \
3376 DT_FOREACH_CHILD_STATUS_OKAY_SEP(DT_DRV_INST(inst), fn, sep)
3391#define DT_INST_FOREACH_CHILD_STATUS_OKAY_VARGS(inst, fn, ...) \
3392 DT_FOREACH_CHILD_STATUS_OKAY_VARGS(DT_DRV_INST(inst), fn, __VA_ARGS__)
3409#define DT_INST_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(inst, fn, sep, ...) \
3410 DT_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(DT_DRV_INST(inst), fn, sep, __VA_ARGS__)
3418#define DT_INST_ENUM_IDX(inst, prop) \
3419 DT_ENUM_IDX(DT_DRV_INST(inst), prop)
3429#define DT_INST_ENUM_IDX_OR(inst, prop, default_idx_value) \
3430 DT_ENUM_IDX_OR(DT_DRV_INST(inst), prop, default_idx_value)
3440#define DT_INST_ENUM_HAS_VALUE(inst, prop, value) \
3441 DT_ENUM_HAS_VALUE(DT_DRV_INST(inst), prop, value)
3449#define DT_INST_PROP(inst, prop) DT_PROP(DT_DRV_INST(inst), prop)
3457#define DT_INST_PROP_LEN(inst, prop) DT_PROP_LEN(DT_DRV_INST(inst), prop)
3468#define DT_INST_PROP_HAS_IDX(inst, prop, idx) \
3469 DT_PROP_HAS_IDX(DT_DRV_INST(inst), prop, idx)
3479#define DT_INST_PROP_HAS_NAME(inst, prop, name) \
3480 DT_PROP_HAS_NAME(DT_DRV_INST(inst), prop, name)
3489#define DT_INST_PROP_BY_IDX(inst, prop, idx) \
3490 DT_PROP_BY_IDX(DT_DRV_INST(inst), prop, idx)
3499#define DT_INST_PROP_OR(inst, prop, default_value) \
3500 DT_PROP_OR(DT_DRV_INST(inst), prop, default_value)
3509#define DT_INST_PROP_LEN_OR(inst, prop, default_value) \
3510 DT_PROP_LEN_OR(DT_DRV_INST(inst), prop, default_value)
3518#define DT_INST_LABEL(inst) DT_INST_PROP(inst, label) __DEPRECATED_MACRO
3529#define DT_INST_STRING_TOKEN(inst, prop) \
3530 DT_STRING_TOKEN(DT_DRV_INST(inst), prop)
3539#define DT_INST_STRING_UPPER_TOKEN(inst, prop) \
3540 DT_STRING_UPPER_TOKEN(DT_DRV_INST(inst), prop)
3550#define DT_INST_STRING_UNQUOTED(inst, prop) \
3551 DT_STRING_UNQUOTED(DT_DRV_INST(inst), prop)
3560#define DT_INST_STRING_TOKEN_BY_IDX(inst, prop, idx) \
3561 DT_STRING_TOKEN_BY_IDX(DT_DRV_INST(inst), prop, idx)
3570#define DT_INST_STRING_UPPER_TOKEN_BY_IDX(inst, prop, idx) \
3571 DT_STRING_UPPER_TOKEN_BY_IDX(DT_DRV_INST(inst), prop, idx)
3580#define DT_INST_STRING_UNQUOTED_BY_IDX(inst, prop, idx) \
3581 DT_STRING_UNQUOTED_BY_IDX(DT_DRV_INST(inst), prop, idx)
3591#define DT_INST_PROP_BY_PHANDLE(inst, ph, prop) \
3592 DT_INST_PROP_BY_PHANDLE_IDX(inst, ph, 0, prop)
3605#define DT_INST_PROP_BY_PHANDLE_IDX(inst, phs, idx, prop) \
3606 DT_PROP_BY_PHANDLE_IDX(DT_DRV_INST(inst), phs, idx, prop)
3616#define DT_INST_PHA_BY_IDX(inst, pha, idx, cell) \
3617 DT_PHA_BY_IDX(DT_DRV_INST(inst), pha, idx, cell)
3628#define DT_INST_PHA_BY_IDX_OR(inst, pha, idx, cell, default_value) \
3629 DT_PHA_BY_IDX_OR(DT_DRV_INST(inst), pha, idx, cell, default_value)
3639#define DT_INST_PHA(inst, pha, cell) DT_INST_PHA_BY_IDX(inst, pha, 0, cell)
3649#define DT_INST_PHA_OR(inst, pha, cell, default_value) \
3650 DT_INST_PHA_BY_IDX_OR(inst, pha, 0, cell, default_value)
3661#define DT_INST_PHA_BY_NAME(inst, pha, name, cell) \
3662 DT_PHA_BY_NAME(DT_DRV_INST(inst), pha, name, cell)
3673#define DT_INST_PHA_BY_NAME_OR(inst, pha, name, cell, default_value) \
3674 DT_PHA_BY_NAME_OR(DT_DRV_INST(inst), pha, name, cell, default_value)
3684#define DT_INST_PHANDLE_BY_NAME(inst, pha, name) \
3685 DT_PHANDLE_BY_NAME(DT_DRV_INST(inst), pha, name) \
3696#define DT_INST_PHANDLE_BY_IDX(inst, prop, idx) \
3697 DT_PHANDLE_BY_IDX(DT_DRV_INST(inst), prop, idx)
3707#define DT_INST_PHANDLE(inst, prop) DT_INST_PHANDLE_BY_IDX(inst, prop, 0)
3716#define DT_INST_REG_HAS_IDX(inst, idx) DT_REG_HAS_IDX(DT_DRV_INST(inst), idx)
3724#define DT_INST_REG_ADDR_BY_IDX(inst, idx) DT_REG_ADDR_BY_IDX(DT_DRV_INST(inst), idx)
3732#define DT_INST_REG_SIZE_BY_IDX(inst, idx) \
3733 DT_REG_SIZE_BY_IDX(DT_DRV_INST(inst), idx)
3741#define DT_INST_REG_ADDR_BY_NAME(inst, name) \
3742 DT_REG_ADDR_BY_NAME(DT_DRV_INST(inst), name)
3756#define DT_INST_REG_ADDR_BY_NAME_U64(inst, name) \
3757 DT_U64_C(DT_INST_REG_ADDR_BY_NAME(inst, name))
3765#define DT_INST_REG_SIZE_BY_NAME(inst, name) \
3766 DT_REG_SIZE_BY_NAME(DT_DRV_INST(inst), name)
3773#define DT_INST_REG_ADDR(inst) DT_INST_REG_ADDR_BY_IDX(inst, 0)
3786#define DT_INST_REG_ADDR_U64(inst) DT_U64_C(DT_INST_REG_ADDR(inst))
3793#define DT_INST_REG_SIZE(inst) DT_INST_REG_SIZE_BY_IDX(inst, 0)
3802#define DT_INST_IRQ_BY_IDX(inst, idx, cell) \
3803 DT_IRQ_BY_IDX(DT_DRV_INST(inst), idx, cell)
3812#define DT_INST_IRQ_BY_NAME(inst, name, cell) \
3813 DT_IRQ_BY_NAME(DT_DRV_INST(inst), name, cell)
3821#define DT_INST_IRQ(inst, cell) DT_INST_IRQ_BY_IDX(inst, 0, cell)
3828#define DT_INST_IRQN(inst) DT_INST_IRQ(inst, irq)
3835#define DT_INST_BUS(inst) DT_BUS(DT_DRV_INST(inst))
3845#define DT_INST_BUS_LABEL(inst) DT_BUS_LABEL(DT_DRV_INST(inst)) __DEPRECATED_MACRO
3854#define DT_INST_ON_BUS(inst, bus) DT_ON_BUS(DT_DRV_INST(inst), bus)
3865#define DT_INST_STRING_TOKEN_OR(inst, name, default_value) \
3866 DT_STRING_TOKEN_OR(DT_DRV_INST(inst), name, default_value)
3876#define DT_INST_STRING_UPPER_TOKEN_OR(inst, name, default_value) \
3877 DT_STRING_UPPER_TOKEN_OR(DT_DRV_INST(inst), name, default_value)
3887#define DT_INST_STRING_UNQUOTED_OR(inst, name, default_value) \
3888 DT_STRING_UNQUOTED_OR(DT_DRV_INST(inst), name, default_value)
3920#define DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(compat, bus) \
3921 IS_ENABLED(UTIL_CAT(DT_CAT(DT_COMPAT_, compat), _BUS_##bus))
3955#define DT_ANY_INST_ON_BUS_STATUS_OKAY(bus) \
3956 DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(DT_DRV_COMPAT, bus)
4002#define DT_ANY_INST_HAS_PROP_STATUS_OKAY(prop) \
4003 (DT_INST_FOREACH_STATUS_OKAY_VARGS(DT_INST_NODE_HAS_PROP_AND_OR, prop) 0)
4070#define DT_INST_FOREACH_STATUS_OKAY(fn) \
4071 COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT), \
4072 (UTIL_CAT(DT_FOREACH_OKAY_INST_, \
4073 DT_DRV_COMPAT)(fn)), \
4087#define DT_INST_FOREACH_STATUS_OKAY_VARGS(fn, ...) \
4088 COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT), \
4089 (UTIL_CAT(DT_FOREACH_OKAY_INST_VARGS_, \
4090 DT_DRV_COMPAT)(fn, __VA_ARGS__)), \
4103#define DT_INST_FOREACH_PROP_ELEM(inst, prop, fn) \
4104 DT_FOREACH_PROP_ELEM(DT_DRV_INST(inst), prop, fn)
4118#define DT_INST_FOREACH_PROP_ELEM_SEP(inst, prop, fn, sep) \
4119 DT_FOREACH_PROP_ELEM_SEP(DT_DRV_INST(inst), prop, fn, sep)
4135#define DT_INST_FOREACH_PROP_ELEM_VARGS(inst, prop, fn, ...) \
4136 DT_FOREACH_PROP_ELEM_VARGS(DT_DRV_INST(inst), prop, fn, __VA_ARGS__)
4155#define DT_INST_FOREACH_PROP_ELEM_SEP_VARGS(inst, prop, fn, sep, ...) \
4156 DT_FOREACH_PROP_ELEM_SEP_VARGS(DT_DRV_INST(inst), prop, fn, sep, \
4165#define DT_INST_NODE_HAS_PROP(inst, prop) \
4166 DT_NODE_HAS_PROP(DT_DRV_INST(inst), prop)
4178#define DT_INST_PHA_HAS_CELL_AT_IDX(inst, pha, idx, cell) \
4179 DT_PHA_HAS_CELL_AT_IDX(DT_DRV_INST(inst), pha, idx, cell)
4190#define DT_INST_PHA_HAS_CELL(inst, pha, cell) \
4191 DT_INST_PHA_HAS_CELL_AT_IDX(inst, pha, 0, cell)
4200#define DT_INST_IRQ_HAS_IDX(inst, idx) DT_IRQ_HAS_IDX(DT_DRV_INST(inst), idx)
4210#define DT_INST_IRQ_HAS_CELL_AT_IDX(inst, idx, cell) \
4211 DT_IRQ_HAS_CELL_AT_IDX(DT_DRV_INST(inst), idx, cell)
4220#define DT_INST_IRQ_HAS_CELL(inst, cell) \
4221 DT_INST_IRQ_HAS_CELL_AT_IDX(inst, 0, cell)
4229#define DT_INST_IRQ_HAS_NAME(inst, name) \
4230 DT_IRQ_HAS_NAME(DT_DRV_INST(inst), name)
4238#define DT_PATH_INTERNAL(...) \
4239 UTIL_CAT(DT_ROOT, MACRO_MAP_CAT(DT_S_PREFIX, __VA_ARGS__))
4245#define DT_S_PREFIX(name) _S_##name
4261#define DT_CAT(a1, a2) a1 ## a2
4263#define DT_CAT3(a1, a2, a3) a1 ## a2 ## a3
4265#define DT_CAT4(a1, a2, a3, a4) a1 ## a2 ## a3 ## a4
4267#define DT_CAT5(a1, a2, a3, a4, a5) a1 ## a2 ## a3 ## a4 ## a5
4269#define DT_CAT6(a1, a2, a3, a4, a5, a6) a1 ## a2 ## a3 ## a4 ## a5 ## a6
4271#define DT_CAT7(a1, a2, a3, a4, a5, a6, a7) \
4272 a1 ## a2 ## a3 ## a4 ## a5 ## a6 ## a7
4274#define DT_CAT8(a1, a2, a3, a4, a5, a6, a7, a8) \
4275 a1 ## a2 ## a3 ## a4 ## a5 ## a6 ## a7 ## a8
4282#define DT_DASH(...) MACRO_MAP_CAT(DT_DASH_PREFIX, __VA_ARGS__)
4284#define DT_DASH_PREFIX(name) _##name
4286#define DT_NODE_HAS_STATUS_INTERNAL(node_id, status) \
4287 IS_ENABLED(DT_CAT3(node_id, _STATUS_, status))
4290#define DT_INST_NODE_HAS_PROP_AND_OR(inst, prop) \
4291 DT_INST_NODE_HAS_PROP(inst, prop) ||
4297#if defined(_LINKER) || defined(_ASMLANGUAGE)
4298#define DT_U64_C(_v) (_v)
4300#define DT_U64_C(_v) UINT64_C(_v)
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.