19#include <devicetree_generated.h>
22#if !defined(_LINKER) && !defined(_ASMLANGUAGE)
85#define DT_INVALID_NODE _
142#define DT_PATH(...) DT_PATH_INTERNAL(__VA_ARGS__)
198#define DT_NODELABEL(label) DT_CAT(DT_N_NODELABEL_, label)
238#define DT_ALIAS(alias) DT_CAT(DT_N_ALIAS_, alias)
334#define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))
359#define DT_PARENT(node_id) DT_CAT(node_id, _PARENT)
384#define DT_GPARENT(node_id) DT_PARENT(DT_PARENT(node_id))
421#define DT_CHILD(node_id, child) UTIL_CAT(node_id, DT_S_PREFIX(child))
464#define DT_COMPAT_GET_ANY_STATUS_OKAY(compat) \
465 COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(compat), \
466 (DT_INST(0, compat)), \
496#define DT_NODE_PATH(node_id) DT_CAT(node_id, _PATH)
522#define DT_NODE_FULL_NAME(node_id) DT_CAT(node_id, _FULL_NAME)
550#define DT_NODE_CHILD_IDX(node_id) DT_CAT(node_id, _CHILD_IDX)
572#define DT_SAME_NODE(node_id1, node_id2) \
573 (DT_DEP_ORD(node_id1) == (DT_DEP_ORD(node_id2)))
615#define DT_PROP(node_id, prop) DT_CAT3(node_id, _P_, prop)
649#define DT_PROP_LEN(node_id, prop) DT_CAT4(node_id, _P_, prop, _LEN)
665#define DT_PROP_LEN_OR(node_id, prop, default_value) \
666 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
667 (DT_PROP_LEN(node_id, prop)), (default_value))
689#define DT_PROP_HAS_IDX(node_id, prop, idx) \
690 IS_ENABLED(DT_CAT6(node_id, _P_, prop, _IDX_, idx, _EXISTS))
724#define DT_PROP_HAS_NAME(node_id, prop, name) \
725 IS_ENABLED(DT_CAT6(node_id, _P_, prop, _NAME_, name, _EXISTS))
761#define DT_PROP_BY_IDX(node_id, prop, idx) \
762 DT_CAT5(node_id, _P_, prop, _IDX_, idx)
777#define DT_PROP_OR(node_id, prop, default_value) \
778 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
779 (DT_PROP(node_id, prop)), (default_value))
821#define DT_ENUM_IDX(node_id, prop) DT_CAT4(node_id, _P_, prop, _ENUM_IDX)
837#define DT_ENUM_IDX_OR(node_id, prop, default_idx_value) \
838 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
839 (DT_ENUM_IDX(node_id, prop)), (default_idx_value))
849#define DT_ENUM_HAS_VALUE(node_id, prop, value) \
850 IS_ENABLED(DT_CAT6(node_id, _P_, prop, _ENUM_VAL_, value, _EXISTS))
911#define DT_STRING_TOKEN(node_id, prop) \
912 DT_CAT4(node_id, _P_, prop, _STRING_TOKEN)
927#define DT_STRING_TOKEN_OR(node_id, prop, default_value) \
928 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
929 (DT_STRING_TOKEN(node_id, prop)), (default_value))
988#define DT_STRING_UPPER_TOKEN(node_id, prop) \
989 DT_CAT4(node_id, _P_, prop, _STRING_UPPER_TOKEN)
1005#define DT_STRING_UPPER_TOKEN_OR(node_id, prop, default_value) \
1006 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
1007 (DT_STRING_UPPER_TOKEN(node_id, prop)), (default_value))
1049#define DT_STRING_UNQUOTED(node_id, prop) \
1050 DT_CAT4(node_id, _P_, prop, _STRING_UNQUOTED)
1066#define DT_STRING_UNQUOTED_OR(node_id, prop, default_value) \
1067 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
1068 (DT_STRING_UNQUOTED(node_id, prop)), (default_value))
1117#define DT_STRING_TOKEN_BY_IDX(node_id, prop, idx) \
1118 DT_CAT6(node_id, _P_, prop, _IDX_, idx, _STRING_TOKEN)
1167#define DT_STRING_UPPER_TOKEN_BY_IDX(node_id, prop, idx) \
1168 DT_CAT6(node_id, _P_, prop, _IDX_, idx, _STRING_UPPER_TOKEN)
1210#define DT_STRING_UNQUOTED_BY_IDX(node_id, prop, idx) \
1211 DT_CAT6(node_id, _P_, prop, _IDX_, idx, _STRING_UNQUOTED)
1266#define DT_PROP_BY_PHANDLE_IDX(node_id, phs, idx, prop) \
1267 DT_PROP(DT_PHANDLE_BY_IDX(node_id, phs, idx), prop)
1288#define DT_PROP_BY_PHANDLE_IDX_OR(node_id, phs, idx, prop, default_value) \
1289 DT_PROP_OR(DT_PHANDLE_BY_IDX(node_id, phs, idx), prop, default_value)
1302#define DT_PROP_BY_PHANDLE(node_id, ph, prop) \
1303 DT_PROP_BY_PHANDLE_IDX(node_id, ph, 0, prop)
1359#define DT_PHA_BY_IDX(node_id, pha, idx, cell) \
1360 DT_CAT7(node_id, _P_, pha, _IDX_, idx, _VAL_, cell)
1385#define DT_PHA_BY_IDX_OR(node_id, pha, idx, cell, default_value) \
1386 DT_PROP_OR(node_id, DT_CAT5(pha, _IDX_, idx, _VAL_, cell), default_value)
1395#define DT_PHA(node_id, pha, cell) DT_PHA_BY_IDX(node_id, pha, 0, cell)
1411#define DT_PHA_OR(node_id, pha, cell, default_value) \
1412 DT_PHA_BY_IDX_OR(node_id, pha, 0, cell, default_value)
1454#define DT_PHA_BY_NAME(node_id, pha, name, cell) \
1455 DT_CAT7(node_id, _P_, pha, _NAME_, name, _VAL_, cell)
1478#define DT_PHA_BY_NAME_OR(node_id, pha, name, cell, default_value) \
1479 DT_PROP_OR(node_id, DT_CAT5(pha, _NAME_, name, _VAL_, cell), default_value)
1528#define DT_PHANDLE_BY_NAME(node_id, pha, name) \
1529 DT_CAT6(node_id, _P_, pha, _NAME_, name, _PH)
1580#define DT_PHANDLE_BY_IDX(node_id, prop, idx) \
1581 DT_CAT6(node_id, _P_, prop, _IDX_, idx, _PH)
1594#define DT_PHANDLE(node_id, prop) DT_PHANDLE_BY_IDX(node_id, prop, 0)
1642#define DT_NUM_RANGES(node_id) DT_CAT(node_id, _RANGES_NUM)
1696#define DT_RANGES_HAS_IDX(node_id, idx) \
1697 IS_ENABLED(DT_CAT4(node_id, _RANGES_IDX_, idx, _EXISTS))
1751#define DT_RANGES_HAS_CHILD_BUS_FLAGS_AT_IDX(node_id, idx) \
1752 IS_ENABLED(DT_CAT4(node_id, _RANGES_IDX_, idx, _VAL_CHILD_BUS_FLAGS_EXISTS))
1791#define DT_RANGES_CHILD_BUS_FLAGS_BY_IDX(node_id, idx) \
1792 DT_CAT4(node_id, _RANGES_IDX_, idx, _VAL_CHILD_BUS_FLAGS)
1840#define DT_RANGES_CHILD_BUS_ADDRESS_BY_IDX(node_id, idx) \
1841 DT_CAT4(node_id, _RANGES_IDX_, idx, _VAL_CHILD_BUS_ADDRESS)
1889#define DT_RANGES_PARENT_BUS_ADDRESS_BY_IDX(node_id, idx) \
1890 DT_CAT4(node_id, _RANGES_IDX_, idx, _VAL_PARENT_BUS_ADDRESS)
1938#define DT_RANGES_LENGTH_BY_IDX(node_id, idx) \
1939 DT_CAT4(node_id, _RANGES_IDX_, idx, _VAL_LENGTH)
1980#define DT_FOREACH_RANGE(node_id, fn) \
1981 DT_CAT(node_id, _FOREACH_RANGE)(fn)
2028#define DT_NODE_VENDOR_BY_IDX(node_id, idx) \
2029 DT_CAT3(node_id, _COMPAT_VENDOR_IDX_, idx)
2043#define DT_NODE_VENDOR_HAS_IDX(node_id, idx) \
2044 IS_ENABLED(DT_CAT4(node_id, _COMPAT_VENDOR_IDX_, idx, _EXISTS))
2060#define DT_NODE_VENDOR_BY_IDX_OR(node_id, idx, default_value) \
2061 COND_CODE_1(DT_NODE_VENDOR_HAS_IDX(node_id, idx), \
2062 (DT_NODE_VENDOR_BY_IDX(node_id, idx)), (default_value))
2072#define DT_NODE_VENDOR_OR(node_id, default_value) \
2073 DT_NODE_VENDOR_BY_IDX_OR(node_id, 0, default_value)
2104#define DT_NODE_MODEL_BY_IDX(node_id, idx) \
2105 DT_CAT3(node_id, _COMPAT_MODEL_IDX_, idx)
2119#define DT_NODE_MODEL_HAS_IDX(node_id, idx) \
2120 IS_ENABLED(DT_CAT4(node_id, _COMPAT_MODEL_IDX_, idx, _EXISTS))
2136#define DT_NODE_MODEL_BY_IDX_OR(node_id, idx, default_value) \
2137 COND_CODE_1(DT_NODE_MODEL_HAS_IDX(node_id, idx), \
2138 (DT_NODE_MODEL_BY_IDX(node_id, idx)), (default_value))
2148#define DT_NODE_MODEL_OR(node_id, default_value) \
2149 DT_NODE_MODEL_BY_IDX_OR(node_id, 0, default_value)
2168#define DT_NUM_REGS(node_id) DT_CAT(node_id, _REG_NUM)
2181#define DT_REG_HAS_IDX(node_id, idx) \
2182 IS_ENABLED(DT_CAT4(node_id, _REG_IDX_, idx, _EXISTS))
2190#define DT_REG_ADDR_BY_IDX(node_id, idx) \
2191 DT_CAT4(node_id, _REG_IDX_, idx, _VAL_ADDRESS)
2204#define DT_REG_SIZE_BY_IDX(node_id, idx) \
2205 DT_CAT4(node_id, _REG_IDX_, idx, _VAL_SIZE)
2214#define DT_REG_ADDR(node_id) DT_REG_ADDR_BY_IDX(node_id, 0)
2226#define DT_REG_ADDR_U64(node_id) DT_U64_C(DT_REG_ADDR(node_id))
2235#define DT_REG_SIZE(node_id) DT_REG_SIZE_BY_IDX(node_id, 0)
2243#define DT_REG_ADDR_BY_NAME(node_id, name) \
2244 DT_CAT4(node_id, _REG_NAME_, name, _VAL_ADDRESS)
2258#define DT_REG_ADDR_BY_NAME_U64(node_id, name) \
2259 DT_U64_C(DT_REG_ADDR_BY_NAME(node_id, name))
2267#define DT_REG_SIZE_BY_NAME(node_id, name) \
2268 DT_CAT4(node_id, _REG_NAME_, name, _VAL_SIZE)
2288#define DT_NUM_IRQS(node_id) DT_CAT(node_id, _IRQ_NUM)
2296#define DT_IRQ_LEVEL(node_id) DT_CAT(node_id, _IRQ_LEVEL)
2308#define DT_IRQ_HAS_IDX(node_id, idx) \
2309 IS_ENABLED(DT_CAT4(node_id, _IRQ_IDX_, idx, _EXISTS))
2321#define DT_IRQ_HAS_CELL_AT_IDX(node_id, idx, cell) \
2322 IS_ENABLED(DT_CAT6(node_id, _IRQ_IDX_, idx, _VAL_, cell, _EXISTS))
2331#define DT_IRQ_HAS_CELL(node_id, cell) DT_IRQ_HAS_CELL_AT_IDX(node_id, 0, cell)
2342#define DT_IRQ_HAS_NAME(node_id, name) \
2343 IS_ENABLED(DT_CAT4(node_id, _IRQ_NAME_, name, _VAL_irq_EXISTS))
2380#define DT_IRQ_BY_IDX(node_id, idx, cell) \
2381 DT_CAT5(node_id, _IRQ_IDX_, idx, _VAL_, cell)
2398#define DT_IRQ_BY_NAME(node_id, name, cell) \
2399 DT_CAT5(node_id, _IRQ_NAME_, name, _VAL_, cell)
2408#define DT_IRQ(node_id, cell) DT_IRQ_BY_IDX(node_id, 0, cell)
2452#define DT_IRQ_INTC_BY_IDX(node_id, idx) \
2453 DT_CAT4(node_id, _IRQ_IDX_, idx, _CONTROLLER)
2499#define DT_IRQ_INTC_BY_NAME(node_id, name) \
2500 DT_CAT4(node_id, _IRQ_NAME_, name, _CONTROLLER)
2541#define DT_IRQ_INTC(node_id) \
2542 DT_IRQ_INTC_BY_IDX(node_id, 0)
2549#define DT_IRQN_L1_INTERNAL(node_id, idx) DT_IRQ_BY_IDX(node_id, idx, irq)
2551#define DT_IRQN_L2_INTERNAL(node_id, idx) \
2552 (IRQ_TO_L2(DT_IRQN_L1_INTERNAL(node_id, idx)) | \
2553 DT_IRQ(DT_IRQ_INTC_BY_IDX(node_id, idx), irq))
2555#define DT_IRQN_L3_INTERNAL(node_id, idx) \
2556 (IRQ_TO_L3(DT_IRQN_L1_INTERNAL(node_id, idx)) | \
2557 IRQ_TO_L2(DT_IRQ(DT_IRQ_INTC_BY_IDX(node_id, idx), irq)) | \
2558 DT_IRQ(DT_IRQ_INTC(DT_IRQ_INTC_BY_IDX(node_id, idx)), irq))
2560#define DT_IRQN_LVL_INTERNAL(node_id, idx, level) DT_CAT3(DT_IRQN_L, level, _INTERNAL)(node_id, idx)
2566#define DT_MULTI_LEVEL_IRQN_INTERNAL(node_id, idx) \
2567 DT_IRQN_LVL_INTERNAL(node_id, idx, DT_IRQ_LEVEL(node_id))
2581#define DT_IRQN_BY_IDX(node_id, idx) \
2582 COND_CODE_1(IS_ENABLED(CONFIG_MULTI_LEVEL_INTERRUPTS), \
2583 (DT_MULTI_LEVEL_IRQN_INTERNAL(node_id, idx)), \
2584 (DT_IRQ_BY_IDX(node_id, idx, irq)))
2596#define DT_IRQN(node_id) DT_IRQN_BY_IDX(node_id, 0)
2616#define DT_CHOSEN(prop) DT_CAT(DT_CHOSEN_, prop)
2624#define DT_HAS_CHOSEN(prop) IS_ENABLED(DT_CAT3(DT_CHOSEN_, prop, _EXISTS))
2645#define DT_FOREACH_NODE(fn) DT_FOREACH_HELPER(fn)
2659#define DT_FOREACH_NODE_VARGS(fn, ...) DT_FOREACH_VARGS_HELPER(fn, __VA_ARGS__)
2672#define DT_FOREACH_STATUS_OKAY_NODE(fn) DT_FOREACH_OKAY_HELPER(fn)
2688#define DT_FOREACH_STATUS_OKAY_NODE_VARGS(fn, ...) DT_FOREACH_OKAY_VARGS_HELPER(fn, __VA_ARGS__)
2733#define DT_FOREACH_CHILD(node_id, fn) \
2734 DT_CAT(node_id, _FOREACH_CHILD)(fn)
2776#define DT_FOREACH_CHILD_SEP(node_id, fn, sep) \
2777 DT_CAT(node_id, _FOREACH_CHILD_SEP)(fn, sep)
2794#define DT_FOREACH_CHILD_VARGS(node_id, fn, ...) \
2795 DT_CAT(node_id, _FOREACH_CHILD_VARGS)(fn, __VA_ARGS__)
2812#define DT_FOREACH_CHILD_SEP_VARGS(node_id, fn, sep, ...) \
2813 DT_CAT(node_id, _FOREACH_CHILD_SEP_VARGS)(fn, sep, __VA_ARGS__)
2830#define DT_FOREACH_CHILD_STATUS_OKAY(node_id, fn) \
2831 DT_CAT(node_id, _FOREACH_CHILD_STATUS_OKAY)(fn)
2849#define DT_FOREACH_CHILD_STATUS_OKAY_SEP(node_id, fn, sep) \
2850 DT_CAT(node_id, _FOREACH_CHILD_STATUS_OKAY_SEP)(fn, sep)
2871#define DT_FOREACH_CHILD_STATUS_OKAY_VARGS(node_id, fn, ...) \
2872 DT_CAT(node_id, _FOREACH_CHILD_STATUS_OKAY_VARGS)(fn, __VA_ARGS__)
2892#define DT_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(node_id, fn, sep, ...) \
2893 DT_CAT(node_id, _FOREACH_CHILD_STATUS_OKAY_SEP_VARGS)(fn, sep, __VA_ARGS__)
2945#define DT_FOREACH_PROP_ELEM(node_id, prop, fn) \
2946 DT_CAT4(node_id, _P_, prop, _FOREACH_PROP_ELEM)(fn)
2990#define DT_FOREACH_PROP_ELEM_SEP(node_id, prop, fn, sep) \
2991 DT_CAT4(node_id, _P_, prop, _FOREACH_PROP_ELEM_SEP)(fn, sep)
3013#define DT_FOREACH_PROP_ELEM_VARGS(node_id, prop, fn, ...) \
3014 DT_CAT4(node_id, _P_, prop, _FOREACH_PROP_ELEM_VARGS)(fn, __VA_ARGS__)
3032#define DT_FOREACH_PROP_ELEM_SEP_VARGS(node_id, prop, fn, sep, ...) \
3033 DT_CAT4(node_id, _P_, prop, _FOREACH_PROP_ELEM_SEP_VARGS)( \
3034 fn, sep, __VA_ARGS__)
3089#define DT_FOREACH_STATUS_OKAY(compat, fn) \
3090 COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(compat), \
3091 (DT_CAT(DT_FOREACH_OKAY_, compat)(fn)), \
3138#define DT_FOREACH_STATUS_OKAY_VARGS(compat, fn, ...) \
3139 COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(compat), \
3140 (DT_CAT(DT_FOREACH_OKAY_VARGS_, \
3141 compat)(fn, __VA_ARGS__)), \
3168#define DT_NODE_EXISTS(node_id) IS_ENABLED(DT_CAT(node_id, _EXISTS))
3191#define DT_NODE_HAS_STATUS(node_id, status) \
3192 DT_NODE_HAS_STATUS_INTERNAL(node_id, status)
3213#define DT_HAS_COMPAT_STATUS_OKAY(compat) \
3214 IS_ENABLED(DT_CAT(DT_COMPAT_HAS_OKAY_, compat))
3222#define DT_NUM_INST_STATUS_OKAY(compat) \
3223 UTIL_AND(DT_HAS_COMPAT_STATUS_OKAY(compat), \
3224 UTIL_CAT(DT_N_INST, DT_DASH(compat, NUM_OKAY)))
3253#define DT_NODE_HAS_COMPAT(node_id, compat) \
3254 IS_ENABLED(DT_CAT3(node_id, _COMPAT_MATCHES_, compat))
3270#define DT_NODE_HAS_COMPAT_STATUS(node_id, compat, status) \
3271 DT_NODE_HAS_COMPAT(node_id, compat) && DT_NODE_HAS_STATUS(node_id, status)
3286#define DT_NODE_HAS_PROP(node_id, prop) \
3287 IS_ENABLED(DT_CAT4(node_id, _P_, prop, _EXISTS))
3306#define DT_PHA_HAS_CELL_AT_IDX(node_id, pha, idx, cell) \
3307 IS_ENABLED(DT_CAT8(node_id, _P_, pha, \
3308 _IDX_, idx, _VAL_, cell, _EXISTS))
3319#define DT_PHA_HAS_CELL(node_id, pha, cell) \
3320 DT_PHA_HAS_CELL_AT_IDX(node_id, pha, 0, cell)
3363#define DT_BUS(node_id) DT_CAT(node_id, _BUS)
3393#define DT_ON_BUS(node_id, bus) IS_ENABLED(DT_CAT3(node_id, _BUS_, bus))
3411#define DT_DRV_INST(inst) DT_INST(inst, DT_DRV_COMPAT)
3420#define DT_INST_PARENT(inst) DT_PARENT(DT_DRV_INST(inst))
3429#define DT_INST_GPARENT(inst) DT_GPARENT(DT_DRV_INST(inst))
3440#define DT_INST_CHILD(inst, child) \
3441 DT_CHILD(DT_DRV_INST(inst), child)
3457#define DT_INST_FOREACH_CHILD(inst, fn) \
3458 DT_FOREACH_CHILD(DT_DRV_INST(inst), fn)
3473#define DT_INST_FOREACH_CHILD_SEP(inst, fn, sep) \
3474 DT_FOREACH_CHILD_SEP(DT_DRV_INST(inst), fn, sep)
3491#define DT_INST_FOREACH_CHILD_VARGS(inst, fn, ...) \
3492 DT_FOREACH_CHILD_VARGS(DT_DRV_INST(inst), fn, __VA_ARGS__)
3508#define DT_INST_FOREACH_CHILD_SEP_VARGS(inst, fn, sep, ...) \
3509 DT_FOREACH_CHILD_SEP_VARGS(DT_DRV_INST(inst), fn, sep, __VA_ARGS__)
3522#define DT_INST_FOREACH_CHILD_STATUS_OKAY(inst, fn) \
3523 DT_FOREACH_CHILD_STATUS_OKAY(DT_DRV_INST(inst), fn)
3539#define DT_INST_FOREACH_CHILD_STATUS_OKAY_SEP(inst, fn, sep) \
3540 DT_FOREACH_CHILD_STATUS_OKAY_SEP(DT_DRV_INST(inst), fn, sep)
3555#define DT_INST_FOREACH_CHILD_STATUS_OKAY_VARGS(inst, fn, ...) \
3556 DT_FOREACH_CHILD_STATUS_OKAY_VARGS(DT_DRV_INST(inst), fn, __VA_ARGS__)
3573#define DT_INST_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(inst, fn, sep, ...) \
3574 DT_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(DT_DRV_INST(inst), fn, sep, __VA_ARGS__)
3582#define DT_INST_ENUM_IDX(inst, prop) \
3583 DT_ENUM_IDX(DT_DRV_INST(inst), prop)
3593#define DT_INST_ENUM_IDX_OR(inst, prop, default_idx_value) \
3594 DT_ENUM_IDX_OR(DT_DRV_INST(inst), prop, default_idx_value)
3604#define DT_INST_ENUM_HAS_VALUE(inst, prop, value) \
3605 DT_ENUM_HAS_VALUE(DT_DRV_INST(inst), prop, value)
3613#define DT_INST_PROP(inst, prop) DT_PROP(DT_DRV_INST(inst), prop)
3621#define DT_INST_PROP_LEN(inst, prop) DT_PROP_LEN(DT_DRV_INST(inst), prop)
3632#define DT_INST_PROP_HAS_IDX(inst, prop, idx) \
3633 DT_PROP_HAS_IDX(DT_DRV_INST(inst), prop, idx)
3643#define DT_INST_PROP_HAS_NAME(inst, prop, name) \
3644 DT_PROP_HAS_NAME(DT_DRV_INST(inst), prop, name)
3653#define DT_INST_PROP_BY_IDX(inst, prop, idx) \
3654 DT_PROP_BY_IDX(DT_DRV_INST(inst), prop, idx)
3663#define DT_INST_PROP_OR(inst, prop, default_value) \
3664 DT_PROP_OR(DT_DRV_INST(inst), prop, default_value)
3673#define DT_INST_PROP_LEN_OR(inst, prop, default_value) \
3674 DT_PROP_LEN_OR(DT_DRV_INST(inst), prop, default_value)
3685#define DT_INST_STRING_TOKEN(inst, prop) \
3686 DT_STRING_TOKEN(DT_DRV_INST(inst), prop)
3695#define DT_INST_STRING_UPPER_TOKEN(inst, prop) \
3696 DT_STRING_UPPER_TOKEN(DT_DRV_INST(inst), prop)
3706#define DT_INST_STRING_UNQUOTED(inst, prop) \
3707 DT_STRING_UNQUOTED(DT_DRV_INST(inst), prop)
3716#define DT_INST_STRING_TOKEN_BY_IDX(inst, prop, idx) \
3717 DT_STRING_TOKEN_BY_IDX(DT_DRV_INST(inst), prop, idx)
3726#define DT_INST_STRING_UPPER_TOKEN_BY_IDX(inst, prop, idx) \
3727 DT_STRING_UPPER_TOKEN_BY_IDX(DT_DRV_INST(inst), prop, idx)
3736#define DT_INST_STRING_UNQUOTED_BY_IDX(inst, prop, idx) \
3737 DT_STRING_UNQUOTED_BY_IDX(DT_DRV_INST(inst), prop, idx)
3747#define DT_INST_PROP_BY_PHANDLE(inst, ph, prop) \
3748 DT_INST_PROP_BY_PHANDLE_IDX(inst, ph, 0, prop)
3761#define DT_INST_PROP_BY_PHANDLE_IDX(inst, phs, idx, prop) \
3762 DT_PROP_BY_PHANDLE_IDX(DT_DRV_INST(inst), phs, idx, prop)
3772#define DT_INST_PHA_BY_IDX(inst, pha, idx, cell) \
3773 DT_PHA_BY_IDX(DT_DRV_INST(inst), pha, idx, cell)
3784#define DT_INST_PHA_BY_IDX_OR(inst, pha, idx, cell, default_value) \
3785 DT_PHA_BY_IDX_OR(DT_DRV_INST(inst), pha, idx, cell, default_value)
3795#define DT_INST_PHA(inst, pha, cell) DT_INST_PHA_BY_IDX(inst, pha, 0, cell)
3805#define DT_INST_PHA_OR(inst, pha, cell, default_value) \
3806 DT_INST_PHA_BY_IDX_OR(inst, pha, 0, cell, default_value)
3817#define DT_INST_PHA_BY_NAME(inst, pha, name, cell) \
3818 DT_PHA_BY_NAME(DT_DRV_INST(inst), pha, name, cell)
3829#define DT_INST_PHA_BY_NAME_OR(inst, pha, name, cell, default_value) \
3830 DT_PHA_BY_NAME_OR(DT_DRV_INST(inst), pha, name, cell, default_value)
3840#define DT_INST_PHANDLE_BY_NAME(inst, pha, name) \
3841 DT_PHANDLE_BY_NAME(DT_DRV_INST(inst), pha, name) \
3852#define DT_INST_PHANDLE_BY_IDX(inst, prop, idx) \
3853 DT_PHANDLE_BY_IDX(DT_DRV_INST(inst), prop, idx)
3863#define DT_INST_PHANDLE(inst, prop) DT_INST_PHANDLE_BY_IDX(inst, prop, 0)
3872#define DT_INST_REG_HAS_IDX(inst, idx) DT_REG_HAS_IDX(DT_DRV_INST(inst), idx)
3880#define DT_INST_REG_ADDR_BY_IDX(inst, idx) DT_REG_ADDR_BY_IDX(DT_DRV_INST(inst), idx)
3888#define DT_INST_REG_SIZE_BY_IDX(inst, idx) \
3889 DT_REG_SIZE_BY_IDX(DT_DRV_INST(inst), idx)
3897#define DT_INST_REG_ADDR_BY_NAME(inst, name) \
3898 DT_REG_ADDR_BY_NAME(DT_DRV_INST(inst), name)
3912#define DT_INST_REG_ADDR_BY_NAME_U64(inst, name) \
3913 DT_U64_C(DT_INST_REG_ADDR_BY_NAME(inst, name))
3921#define DT_INST_REG_SIZE_BY_NAME(inst, name) \
3922 DT_REG_SIZE_BY_NAME(DT_DRV_INST(inst), name)
3929#define DT_INST_REG_ADDR(inst) DT_INST_REG_ADDR_BY_IDX(inst, 0)
3942#define DT_INST_REG_ADDR_U64(inst) DT_U64_C(DT_INST_REG_ADDR(inst))
3949#define DT_INST_REG_SIZE(inst) DT_INST_REG_SIZE_BY_IDX(inst, 0)
3957#define DT_INST_IRQ_LEVEL(inst) DT_IRQ_LEVEL(DT_DRV_INST(inst))
3966#define DT_INST_IRQ_BY_IDX(inst, idx, cell) \
3967 DT_IRQ_BY_IDX(DT_DRV_INST(inst), idx, cell)
3975#define DT_INST_IRQ_INTC_BY_IDX(inst, idx) \
3976 DT_IRQ_INTC_BY_IDX(DT_DRV_INST(inst), idx)
3984#define DT_INST_IRQ_INTC_BY_NAME(inst, name) \
3985 DT_IRQ_INTC_BY_NAME(DT_DRV_INST(inst), name)
3994#define DT_INST_IRQ_INTC(inst) \
3995 DT_INST_IRQ_INTC_BY_IDX(inst, 0)
4004#define DT_INST_IRQ_BY_NAME(inst, name, cell) \
4005 DT_IRQ_BY_NAME(DT_DRV_INST(inst), name, cell)
4013#define DT_INST_IRQ(inst, cell) DT_INST_IRQ_BY_IDX(inst, 0, cell)
4020#define DT_INST_IRQN(inst) DT_IRQN(DT_DRV_INST(inst))
4028#define DT_INST_IRQN_BY_IDX(inst, idx) DT_IRQN_BY_IDX(DT_DRV_INST(inst), idx)
4035#define DT_INST_BUS(inst) DT_BUS(DT_DRV_INST(inst))
4044#define DT_INST_ON_BUS(inst, bus) DT_ON_BUS(DT_DRV_INST(inst), bus)
4055#define DT_INST_STRING_TOKEN_OR(inst, name, default_value) \
4056 DT_STRING_TOKEN_OR(DT_DRV_INST(inst), name, default_value)
4066#define DT_INST_STRING_UPPER_TOKEN_OR(inst, name, default_value) \
4067 DT_STRING_UPPER_TOKEN_OR(DT_DRV_INST(inst), name, default_value)
4077#define DT_INST_STRING_UNQUOTED_OR(inst, name, default_value) \
4078 DT_STRING_UNQUOTED_OR(DT_DRV_INST(inst), name, default_value)
4110#define DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(compat, bus) \
4111 IS_ENABLED(DT_CAT4(DT_COMPAT_, compat, _BUS_, bus))
4145#define DT_ANY_INST_ON_BUS_STATUS_OKAY(bus) \
4146 DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(DT_DRV_COMPAT, bus)
4192#define DT_ANY_INST_HAS_PROP_STATUS_OKAY(prop) \
4193 (DT_INST_FOREACH_STATUS_OKAY_VARGS(DT_INST_NODE_HAS_PROP_AND_OR, prop) 0)
4260#define DT_INST_FOREACH_STATUS_OKAY(fn) \
4261 COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT), \
4262 (UTIL_CAT(DT_FOREACH_OKAY_INST_, \
4263 DT_DRV_COMPAT)(fn)), \
4277#define DT_INST_FOREACH_STATUS_OKAY_VARGS(fn, ...) \
4278 COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT), \
4279 (UTIL_CAT(DT_FOREACH_OKAY_INST_VARGS_, \
4280 DT_DRV_COMPAT)(fn, __VA_ARGS__)), \
4293#define DT_INST_FOREACH_PROP_ELEM(inst, prop, fn) \
4294 DT_FOREACH_PROP_ELEM(DT_DRV_INST(inst), prop, fn)
4308#define DT_INST_FOREACH_PROP_ELEM_SEP(inst, prop, fn, sep) \
4309 DT_FOREACH_PROP_ELEM_SEP(DT_DRV_INST(inst), prop, fn, sep)
4325#define DT_INST_FOREACH_PROP_ELEM_VARGS(inst, prop, fn, ...) \
4326 DT_FOREACH_PROP_ELEM_VARGS(DT_DRV_INST(inst), prop, fn, __VA_ARGS__)
4345#define DT_INST_FOREACH_PROP_ELEM_SEP_VARGS(inst, prop, fn, sep, ...) \
4346 DT_FOREACH_PROP_ELEM_SEP_VARGS(DT_DRV_INST(inst), prop, fn, sep, \
4355#define DT_INST_NODE_HAS_PROP(inst, prop) \
4356 DT_NODE_HAS_PROP(DT_DRV_INST(inst), prop)
4368#define DT_INST_PHA_HAS_CELL_AT_IDX(inst, pha, idx, cell) \
4369 DT_PHA_HAS_CELL_AT_IDX(DT_DRV_INST(inst), pha, idx, cell)
4380#define DT_INST_PHA_HAS_CELL(inst, pha, cell) \
4381 DT_INST_PHA_HAS_CELL_AT_IDX(inst, pha, 0, cell)
4390#define DT_INST_IRQ_HAS_IDX(inst, idx) DT_IRQ_HAS_IDX(DT_DRV_INST(inst), idx)
4400#define DT_INST_IRQ_HAS_CELL_AT_IDX(inst, idx, cell) \
4401 DT_IRQ_HAS_CELL_AT_IDX(DT_DRV_INST(inst), idx, cell)
4410#define DT_INST_IRQ_HAS_CELL(inst, cell) \
4411 DT_INST_IRQ_HAS_CELL_AT_IDX(inst, 0, cell)
4419#define DT_INST_IRQ_HAS_NAME(inst, name) \
4420 DT_IRQ_HAS_NAME(DT_DRV_INST(inst), name)
4428#define DT_PATH_INTERNAL(...) \
4429 UTIL_CAT(DT_ROOT, MACRO_MAP_CAT(DT_S_PREFIX, __VA_ARGS__))
4435#define DT_S_PREFIX(name) _S_##name
4451#define DT_CAT(a1, a2) a1 ## a2
4453#define DT_CAT3(a1, a2, a3) a1 ## a2 ## a3
4455#define DT_CAT4(a1, a2, a3, a4) a1 ## a2 ## a3 ## a4
4457#define DT_CAT5(a1, a2, a3, a4, a5) a1 ## a2 ## a3 ## a4 ## a5
4459#define DT_CAT6(a1, a2, a3, a4, a5, a6) a1 ## a2 ## a3 ## a4 ## a5 ## a6
4461#define DT_CAT7(a1, a2, a3, a4, a5, a6, a7) \
4462 a1 ## a2 ## a3 ## a4 ## a5 ## a6 ## a7
4464#define DT_CAT8(a1, a2, a3, a4, a5, a6, a7, a8) \
4465 a1 ## a2 ## a3 ## a4 ## a5 ## a6 ## a7 ## a8
4472#define DT_DASH(...) MACRO_MAP_CAT(DT_DASH_PREFIX, __VA_ARGS__)
4474#define DT_DASH_PREFIX(name) _##name
4476#define DT_NODE_HAS_STATUS_INTERNAL(node_id, status) \
4477 IS_ENABLED(DT_CAT3(node_id, _STATUS_, status))
4480#define DT_INST_NODE_HAS_PROP_AND_OR(inst, prop) \
4481 DT_INST_NODE_HAS_PROP(inst, prop) ||
4487#if defined(_LINKER) || defined(_ASMLANGUAGE)
4488#define DT_U64_C(_v) (_v)
4490#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.
Public interface for multi-level interrupts.
Devicetree node dependency ordinals.
PWMs Devicetree macro public API header file.