19#include <devicetree_generated.h>
22#if !defined(_LINKER) && !defined(_ASMLANGUAGE)
87#define DT_INVALID_NODE _
144#define DT_PATH(...) DT_PATH_INTERNAL(__VA_ARGS__)
200#define DT_NODELABEL(label) DT_CAT(DT_N_NODELABEL_, label)
240#define DT_ALIAS(alias) DT_CAT(DT_N_ALIAS_, alias)
336#define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))
361#define DT_PARENT(node_id) DT_CAT(node_id, _PARENT)
386#define DT_GPARENT(node_id) DT_PARENT(DT_PARENT(node_id))
423#define DT_CHILD(node_id, child) UTIL_CAT(node_id, DT_S_PREFIX(child))
466#define DT_COMPAT_GET_ANY_STATUS_OKAY(compat) \
467 COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(compat), \
468 (DT_INST(0, compat)), \
498#define DT_NODE_PATH(node_id) DT_CAT(node_id, _PATH)
524#define DT_NODE_FULL_NAME(node_id) DT_CAT(node_id, _FULL_NAME)
552#define DT_NODE_CHILD_IDX(node_id) DT_CAT(node_id, _CHILD_IDX)
574#define DT_SAME_NODE(node_id1, node_id2) \
575 (DT_DEP_ORD(node_id1) == (DT_DEP_ORD(node_id2)))
617#define DT_PROP(node_id, prop) DT_CAT3(node_id, _P_, prop)
651#define DT_PROP_LEN(node_id, prop) DT_CAT4(node_id, _P_, prop, _LEN)
667#define DT_PROP_LEN_OR(node_id, prop, default_value) \
668 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
669 (DT_PROP_LEN(node_id, prop)), (default_value))
691#define DT_PROP_HAS_IDX(node_id, prop, idx) \
692 IS_ENABLED(DT_CAT6(node_id, _P_, prop, _IDX_, idx, _EXISTS))
726#define DT_PROP_HAS_NAME(node_id, prop, name) \
727 IS_ENABLED(DT_CAT6(node_id, _P_, prop, _NAME_, name, _EXISTS))
763#define DT_PROP_BY_IDX(node_id, prop, idx) \
764 DT_CAT5(node_id, _P_, prop, _IDX_, idx)
779#define DT_PROP_OR(node_id, prop, default_value) \
780 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
781 (DT_PROP(node_id, prop)), (default_value))
823#define DT_ENUM_IDX(node_id, prop) DT_CAT4(node_id, _P_, prop, _ENUM_IDX)
839#define DT_ENUM_IDX_OR(node_id, prop, default_idx_value) \
840 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
841 (DT_ENUM_IDX(node_id, prop)), (default_idx_value))
851#define DT_ENUM_HAS_VALUE(node_id, prop, value) \
852 IS_ENABLED(DT_CAT6(node_id, _P_, prop, _ENUM_VAL_, value, _EXISTS))
913#define DT_STRING_TOKEN(node_id, prop) \
914 DT_CAT4(node_id, _P_, prop, _STRING_TOKEN)
929#define DT_STRING_TOKEN_OR(node_id, prop, default_value) \
930 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
931 (DT_STRING_TOKEN(node_id, prop)), (default_value))
990#define DT_STRING_UPPER_TOKEN(node_id, prop) \
991 DT_CAT4(node_id, _P_, prop, _STRING_UPPER_TOKEN)
1007#define DT_STRING_UPPER_TOKEN_OR(node_id, prop, default_value) \
1008 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
1009 (DT_STRING_UPPER_TOKEN(node_id, prop)), (default_value))
1051#define DT_STRING_UNQUOTED(node_id, prop) \
1052 DT_CAT4(node_id, _P_, prop, _STRING_UNQUOTED)
1068#define DT_STRING_UNQUOTED_OR(node_id, prop, default_value) \
1069 COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
1070 (DT_STRING_UNQUOTED(node_id, prop)), (default_value))
1119#define DT_STRING_TOKEN_BY_IDX(node_id, prop, idx) \
1120 DT_CAT6(node_id, _P_, prop, _IDX_, idx, _STRING_TOKEN)
1169#define DT_STRING_UPPER_TOKEN_BY_IDX(node_id, prop, idx) \
1170 DT_CAT6(node_id, _P_, prop, _IDX_, idx, _STRING_UPPER_TOKEN)
1212#define DT_STRING_UNQUOTED_BY_IDX(node_id, prop, idx) \
1213 DT_CAT6(node_id, _P_, prop, _IDX_, idx, _STRING_UNQUOTED)
1268#define DT_PROP_BY_PHANDLE_IDX(node_id, phs, idx, prop) \
1269 DT_PROP(DT_PHANDLE_BY_IDX(node_id, phs, idx), prop)
1290#define DT_PROP_BY_PHANDLE_IDX_OR(node_id, phs, idx, prop, default_value) \
1291 DT_PROP_OR(DT_PHANDLE_BY_IDX(node_id, phs, idx), prop, default_value)
1304#define DT_PROP_BY_PHANDLE(node_id, ph, prop) \
1305 DT_PROP_BY_PHANDLE_IDX(node_id, ph, 0, prop)
1361#define DT_PHA_BY_IDX(node_id, pha, idx, cell) \
1362 DT_CAT7(node_id, _P_, pha, _IDX_, idx, _VAL_, cell)
1387#define DT_PHA_BY_IDX_OR(node_id, pha, idx, cell, default_value) \
1388 DT_PROP_OR(node_id, DT_CAT5(pha, _IDX_, idx, _VAL_, cell), default_value)
1397#define DT_PHA(node_id, pha, cell) DT_PHA_BY_IDX(node_id, pha, 0, cell)
1413#define DT_PHA_OR(node_id, pha, cell, default_value) \
1414 DT_PHA_BY_IDX_OR(node_id, pha, 0, cell, default_value)
1456#define DT_PHA_BY_NAME(node_id, pha, name, cell) \
1457 DT_CAT7(node_id, _P_, pha, _NAME_, name, _VAL_, cell)
1480#define DT_PHA_BY_NAME_OR(node_id, pha, name, cell, default_value) \
1481 DT_PROP_OR(node_id, DT_CAT5(pha, _NAME_, name, _VAL_, cell), default_value)
1530#define DT_PHANDLE_BY_NAME(node_id, pha, name) \
1531 DT_CAT6(node_id, _P_, pha, _NAME_, name, _PH)
1582#define DT_PHANDLE_BY_IDX(node_id, prop, idx) \
1583 DT_CAT6(node_id, _P_, prop, _IDX_, idx, _PH)
1596#define DT_PHANDLE(node_id, prop) DT_PHANDLE_BY_IDX(node_id, prop, 0)
1644#define DT_NUM_RANGES(node_id) DT_CAT(node_id, _RANGES_NUM)
1698#define DT_RANGES_HAS_IDX(node_id, idx) \
1699 IS_ENABLED(DT_CAT4(node_id, _RANGES_IDX_, idx, _EXISTS))
1753#define DT_RANGES_HAS_CHILD_BUS_FLAGS_AT_IDX(node_id, idx) \
1754 IS_ENABLED(DT_CAT4(node_id, _RANGES_IDX_, idx, _VAL_CHILD_BUS_FLAGS_EXISTS))
1793#define DT_RANGES_CHILD_BUS_FLAGS_BY_IDX(node_id, idx) \
1794 DT_CAT4(node_id, _RANGES_IDX_, idx, _VAL_CHILD_BUS_FLAGS)
1842#define DT_RANGES_CHILD_BUS_ADDRESS_BY_IDX(node_id, idx) \
1843 DT_CAT4(node_id, _RANGES_IDX_, idx, _VAL_CHILD_BUS_ADDRESS)
1891#define DT_RANGES_PARENT_BUS_ADDRESS_BY_IDX(node_id, idx) \
1892 DT_CAT4(node_id, _RANGES_IDX_, idx, _VAL_PARENT_BUS_ADDRESS)
1940#define DT_RANGES_LENGTH_BY_IDX(node_id, idx) \
1941 DT_CAT4(node_id, _RANGES_IDX_, idx, _VAL_LENGTH)
1982#define DT_FOREACH_RANGE(node_id, fn) \
1983 DT_CAT(node_id, _FOREACH_RANGE)(fn)
2030#define DT_NODE_VENDOR_BY_IDX(node_id, idx) \
2031 DT_CAT3(node_id, _COMPAT_VENDOR_IDX_, idx)
2045#define DT_NODE_VENDOR_HAS_IDX(node_id, idx) \
2046 IS_ENABLED(DT_CAT4(node_id, _COMPAT_VENDOR_IDX_, idx, _EXISTS))
2062#define DT_NODE_VENDOR_BY_IDX_OR(node_id, idx, default_value) \
2063 COND_CODE_1(DT_NODE_VENDOR_HAS_IDX(node_id, idx), \
2064 (DT_NODE_VENDOR_BY_IDX(node_id, idx)), (default_value))
2074#define DT_NODE_VENDOR_OR(node_id, default_value) \
2075 DT_NODE_VENDOR_BY_IDX_OR(node_id, 0, default_value)
2106#define DT_NODE_MODEL_BY_IDX(node_id, idx) \
2107 DT_CAT3(node_id, _COMPAT_MODEL_IDX_, idx)
2121#define DT_NODE_MODEL_HAS_IDX(node_id, idx) \
2122 IS_ENABLED(DT_CAT4(node_id, _COMPAT_MODEL_IDX_, idx, _EXISTS))
2138#define DT_NODE_MODEL_BY_IDX_OR(node_id, idx, default_value) \
2139 COND_CODE_1(DT_NODE_MODEL_HAS_IDX(node_id, idx), \
2140 (DT_NODE_MODEL_BY_IDX(node_id, idx)), (default_value))
2150#define DT_NODE_MODEL_OR(node_id, default_value) \
2151 DT_NODE_MODEL_BY_IDX_OR(node_id, 0, default_value)
2170#define DT_NUM_REGS(node_id) DT_CAT(node_id, _REG_NUM)
2183#define DT_REG_HAS_IDX(node_id, idx) \
2184 IS_ENABLED(DT_CAT4(node_id, _REG_IDX_, idx, _EXISTS))
2192#define DT_REG_ADDR_BY_IDX(node_id, idx) \
2193 DT_CAT4(node_id, _REG_IDX_, idx, _VAL_ADDRESS)
2206#define DT_REG_SIZE_BY_IDX(node_id, idx) \
2207 DT_CAT4(node_id, _REG_IDX_, idx, _VAL_SIZE)
2216#define DT_REG_ADDR(node_id) DT_REG_ADDR_BY_IDX(node_id, 0)
2228#define DT_REG_ADDR_U64(node_id) DT_U64_C(DT_REG_ADDR(node_id))
2237#define DT_REG_SIZE(node_id) DT_REG_SIZE_BY_IDX(node_id, 0)
2245#define DT_REG_ADDR_BY_NAME(node_id, name) \
2246 DT_CAT4(node_id, _REG_NAME_, name, _VAL_ADDRESS)
2260#define DT_REG_ADDR_BY_NAME_U64(node_id, name) \
2261 DT_U64_C(DT_REG_ADDR_BY_NAME(node_id, name))
2269#define DT_REG_SIZE_BY_NAME(node_id, name) \
2270 DT_CAT4(node_id, _REG_NAME_, name, _VAL_SIZE)
2290#define DT_NUM_IRQS(node_id) DT_CAT(node_id, _IRQ_NUM)
2298#define DT_IRQ_LEVEL(node_id) DT_CAT(node_id, _IRQ_LEVEL)
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)
2454#define DT_IRQ_INTC_BY_IDX(node_id, idx) \
2455 DT_CAT4(node_id, _IRQ_IDX_, idx, _CONTROLLER)
2501#define DT_IRQ_INTC_BY_NAME(node_id, name) \
2502 DT_CAT4(node_id, _IRQ_NAME_, name, _CONTROLLER)
2543#define DT_IRQ_INTC(node_id) \
2544 DT_IRQ_INTC_BY_IDX(node_id, 0)
2551#define DT_IRQN_L1_INTERNAL(node_id, idx) DT_IRQ_BY_IDX(node_id, idx, irq)
2553#define DT_IRQN_L2_INTERNAL(node_id, idx) \
2554 (IRQ_TO_L2(DT_IRQN_L1_INTERNAL(node_id, idx)) | \
2555 DT_IRQ(DT_IRQ_INTC_BY_IDX(node_id, idx), irq))
2557#define DT_IRQN_L3_INTERNAL(node_id, idx) \
2558 (IRQ_TO_L3(DT_IRQN_L1_INTERNAL(node_id, idx)) | \
2559 IRQ_TO_L2(DT_IRQ(DT_IRQ_INTC_BY_IDX(node_id, idx), irq)) | \
2560 DT_IRQ(DT_IRQ_INTC(DT_IRQ_INTC_BY_IDX(node_id, idx)), irq))
2562#define DT_IRQN_LVL_INTERNAL(node_id, idx, level) DT_CAT3(DT_IRQN_L, level, _INTERNAL)(node_id, idx)
2568#define DT_MULTI_LEVEL_IRQN_INTERNAL(node_id, idx) \
2569 DT_IRQN_LVL_INTERNAL(node_id, idx, DT_IRQ_LEVEL(node_id))
2583#define DT_IRQN_BY_IDX(node_id, idx) \
2584 COND_CODE_1(IS_ENABLED(CONFIG_MULTI_LEVEL_INTERRUPTS), \
2585 (DT_MULTI_LEVEL_IRQN_INTERNAL(node_id, idx)), \
2586 (DT_IRQ_BY_IDX(node_id, idx, irq)))
2598#define DT_IRQN(node_id) DT_IRQN_BY_IDX(node_id, 0)
2618#define DT_CHOSEN(prop) DT_CAT(DT_CHOSEN_, prop)
2626#define DT_HAS_CHOSEN(prop) IS_ENABLED(DT_CAT3(DT_CHOSEN_, prop, _EXISTS))
2647#define DT_FOREACH_NODE(fn) DT_FOREACH_HELPER(fn)
2661#define DT_FOREACH_NODE_VARGS(fn, ...) DT_FOREACH_VARGS_HELPER(fn, __VA_ARGS__)
2674#define DT_FOREACH_STATUS_OKAY_NODE(fn) DT_FOREACH_OKAY_HELPER(fn)
2690#define DT_FOREACH_STATUS_OKAY_NODE_VARGS(fn, ...) DT_FOREACH_OKAY_VARGS_HELPER(fn, __VA_ARGS__)
2735#define DT_FOREACH_CHILD(node_id, fn) \
2736 DT_CAT(node_id, _FOREACH_CHILD)(fn)
2778#define DT_FOREACH_CHILD_SEP(node_id, fn, sep) \
2779 DT_CAT(node_id, _FOREACH_CHILD_SEP)(fn, sep)
2796#define DT_FOREACH_CHILD_VARGS(node_id, fn, ...) \
2797 DT_CAT(node_id, _FOREACH_CHILD_VARGS)(fn, __VA_ARGS__)
2814#define DT_FOREACH_CHILD_SEP_VARGS(node_id, fn, sep, ...) \
2815 DT_CAT(node_id, _FOREACH_CHILD_SEP_VARGS)(fn, sep, __VA_ARGS__)
2832#define DT_FOREACH_CHILD_STATUS_OKAY(node_id, fn) \
2833 DT_CAT(node_id, _FOREACH_CHILD_STATUS_OKAY)(fn)
2851#define DT_FOREACH_CHILD_STATUS_OKAY_SEP(node_id, fn, sep) \
2852 DT_CAT(node_id, _FOREACH_CHILD_STATUS_OKAY_SEP)(fn, sep)
2873#define DT_FOREACH_CHILD_STATUS_OKAY_VARGS(node_id, fn, ...) \
2874 DT_CAT(node_id, _FOREACH_CHILD_STATUS_OKAY_VARGS)(fn, __VA_ARGS__)
2894#define DT_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(node_id, fn, sep, ...) \
2895 DT_CAT(node_id, _FOREACH_CHILD_STATUS_OKAY_SEP_VARGS)(fn, sep, __VA_ARGS__)
2947#define DT_FOREACH_PROP_ELEM(node_id, prop, fn) \
2948 DT_CAT4(node_id, _P_, prop, _FOREACH_PROP_ELEM)(fn)
2992#define DT_FOREACH_PROP_ELEM_SEP(node_id, prop, fn, sep) \
2993 DT_CAT4(node_id, _P_, prop, _FOREACH_PROP_ELEM_SEP)(fn, sep)
3015#define DT_FOREACH_PROP_ELEM_VARGS(node_id, prop, fn, ...) \
3016 DT_CAT4(node_id, _P_, prop, _FOREACH_PROP_ELEM_VARGS)(fn, __VA_ARGS__)
3034#define DT_FOREACH_PROP_ELEM_SEP_VARGS(node_id, prop, fn, sep, ...) \
3035 DT_CAT4(node_id, _P_, prop, _FOREACH_PROP_ELEM_SEP_VARGS)( \
3036 fn, sep, __VA_ARGS__)
3091#define DT_FOREACH_STATUS_OKAY(compat, fn) \
3092 COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(compat), \
3093 (DT_CAT(DT_FOREACH_OKAY_, compat)(fn)), \
3140#define DT_FOREACH_STATUS_OKAY_VARGS(compat, fn, ...) \
3141 COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(compat), \
3142 (DT_CAT(DT_FOREACH_OKAY_VARGS_, \
3143 compat)(fn, __VA_ARGS__)), \
3170#define DT_NODE_EXISTS(node_id) IS_ENABLED(DT_CAT(node_id, _EXISTS))
3193#define DT_NODE_HAS_STATUS(node_id, status) \
3194 DT_NODE_HAS_STATUS_INTERNAL(node_id, status)
3215#define DT_HAS_COMPAT_STATUS_OKAY(compat) \
3216 IS_ENABLED(DT_CAT(DT_COMPAT_HAS_OKAY_, compat))
3224#define DT_NUM_INST_STATUS_OKAY(compat) \
3225 UTIL_AND(DT_HAS_COMPAT_STATUS_OKAY(compat), \
3226 UTIL_CAT(DT_N_INST, DT_DASH(compat, NUM_OKAY)))
3255#define DT_NODE_HAS_COMPAT(node_id, compat) \
3256 IS_ENABLED(DT_CAT3(node_id, _COMPAT_MATCHES_, compat))
3272#define DT_NODE_HAS_COMPAT_STATUS(node_id, compat, status) \
3273 DT_NODE_HAS_COMPAT(node_id, compat) && DT_NODE_HAS_STATUS(node_id, status)
3288#define DT_NODE_HAS_PROP(node_id, prop) \
3289 IS_ENABLED(DT_CAT4(node_id, _P_, prop, _EXISTS))
3308#define DT_PHA_HAS_CELL_AT_IDX(node_id, pha, idx, cell) \
3309 IS_ENABLED(DT_CAT8(node_id, _P_, pha, \
3310 _IDX_, idx, _VAL_, cell, _EXISTS))
3321#define DT_PHA_HAS_CELL(node_id, pha, cell) \
3322 DT_PHA_HAS_CELL_AT_IDX(node_id, pha, 0, cell)
3365#define DT_BUS(node_id) DT_CAT(node_id, _BUS)
3395#define DT_ON_BUS(node_id, bus) IS_ENABLED(DT_CAT3(node_id, _BUS_, bus))
3413#define DT_DRV_INST(inst) DT_INST(inst, DT_DRV_COMPAT)
3422#define DT_INST_PARENT(inst) DT_PARENT(DT_DRV_INST(inst))
3431#define DT_INST_GPARENT(inst) DT_GPARENT(DT_DRV_INST(inst))
3442#define DT_INST_CHILD(inst, child) \
3443 DT_CHILD(DT_DRV_INST(inst), child)
3459#define DT_INST_FOREACH_CHILD(inst, fn) \
3460 DT_FOREACH_CHILD(DT_DRV_INST(inst), fn)
3475#define DT_INST_FOREACH_CHILD_SEP(inst, fn, sep) \
3476 DT_FOREACH_CHILD_SEP(DT_DRV_INST(inst), fn, sep)
3493#define DT_INST_FOREACH_CHILD_VARGS(inst, fn, ...) \
3494 DT_FOREACH_CHILD_VARGS(DT_DRV_INST(inst), fn, __VA_ARGS__)
3510#define DT_INST_FOREACH_CHILD_SEP_VARGS(inst, fn, sep, ...) \
3511 DT_FOREACH_CHILD_SEP_VARGS(DT_DRV_INST(inst), fn, sep, __VA_ARGS__)
3524#define DT_INST_FOREACH_CHILD_STATUS_OKAY(inst, fn) \
3525 DT_FOREACH_CHILD_STATUS_OKAY(DT_DRV_INST(inst), fn)
3541#define DT_INST_FOREACH_CHILD_STATUS_OKAY_SEP(inst, fn, sep) \
3542 DT_FOREACH_CHILD_STATUS_OKAY_SEP(DT_DRV_INST(inst), fn, sep)
3557#define DT_INST_FOREACH_CHILD_STATUS_OKAY_VARGS(inst, fn, ...) \
3558 DT_FOREACH_CHILD_STATUS_OKAY_VARGS(DT_DRV_INST(inst), fn, __VA_ARGS__)
3575#define DT_INST_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(inst, fn, sep, ...) \
3576 DT_FOREACH_CHILD_STATUS_OKAY_SEP_VARGS(DT_DRV_INST(inst), fn, sep, __VA_ARGS__)
3584#define DT_INST_ENUM_IDX(inst, prop) \
3585 DT_ENUM_IDX(DT_DRV_INST(inst), prop)
3595#define DT_INST_ENUM_IDX_OR(inst, prop, default_idx_value) \
3596 DT_ENUM_IDX_OR(DT_DRV_INST(inst), prop, default_idx_value)
3606#define DT_INST_ENUM_HAS_VALUE(inst, prop, value) \
3607 DT_ENUM_HAS_VALUE(DT_DRV_INST(inst), prop, value)
3615#define DT_INST_PROP(inst, prop) DT_PROP(DT_DRV_INST(inst), prop)
3623#define DT_INST_PROP_LEN(inst, prop) DT_PROP_LEN(DT_DRV_INST(inst), prop)
3634#define DT_INST_PROP_HAS_IDX(inst, prop, idx) \
3635 DT_PROP_HAS_IDX(DT_DRV_INST(inst), prop, idx)
3645#define DT_INST_PROP_HAS_NAME(inst, prop, name) \
3646 DT_PROP_HAS_NAME(DT_DRV_INST(inst), prop, name)
3655#define DT_INST_PROP_BY_IDX(inst, prop, idx) \
3656 DT_PROP_BY_IDX(DT_DRV_INST(inst), prop, idx)
3665#define DT_INST_PROP_OR(inst, prop, default_value) \
3666 DT_PROP_OR(DT_DRV_INST(inst), prop, default_value)
3675#define DT_INST_PROP_LEN_OR(inst, prop, default_value) \
3676 DT_PROP_LEN_OR(DT_DRV_INST(inst), prop, default_value)
3687#define DT_INST_STRING_TOKEN(inst, prop) \
3688 DT_STRING_TOKEN(DT_DRV_INST(inst), prop)
3697#define DT_INST_STRING_UPPER_TOKEN(inst, prop) \
3698 DT_STRING_UPPER_TOKEN(DT_DRV_INST(inst), prop)
3708#define DT_INST_STRING_UNQUOTED(inst, prop) \
3709 DT_STRING_UNQUOTED(DT_DRV_INST(inst), prop)
3718#define DT_INST_STRING_TOKEN_BY_IDX(inst, prop, idx) \
3719 DT_STRING_TOKEN_BY_IDX(DT_DRV_INST(inst), prop, idx)
3728#define DT_INST_STRING_UPPER_TOKEN_BY_IDX(inst, prop, idx) \
3729 DT_STRING_UPPER_TOKEN_BY_IDX(DT_DRV_INST(inst), prop, idx)
3738#define DT_INST_STRING_UNQUOTED_BY_IDX(inst, prop, idx) \
3739 DT_STRING_UNQUOTED_BY_IDX(DT_DRV_INST(inst), prop, idx)
3749#define DT_INST_PROP_BY_PHANDLE(inst, ph, prop) \
3750 DT_INST_PROP_BY_PHANDLE_IDX(inst, ph, 0, prop)
3763#define DT_INST_PROP_BY_PHANDLE_IDX(inst, phs, idx, prop) \
3764 DT_PROP_BY_PHANDLE_IDX(DT_DRV_INST(inst), phs, idx, prop)
3774#define DT_INST_PHA_BY_IDX(inst, pha, idx, cell) \
3775 DT_PHA_BY_IDX(DT_DRV_INST(inst), pha, idx, cell)
3786#define DT_INST_PHA_BY_IDX_OR(inst, pha, idx, cell, default_value) \
3787 DT_PHA_BY_IDX_OR(DT_DRV_INST(inst), pha, idx, cell, default_value)
3797#define DT_INST_PHA(inst, pha, cell) DT_INST_PHA_BY_IDX(inst, pha, 0, cell)
3807#define DT_INST_PHA_OR(inst, pha, cell, default_value) \
3808 DT_INST_PHA_BY_IDX_OR(inst, pha, 0, cell, default_value)
3819#define DT_INST_PHA_BY_NAME(inst, pha, name, cell) \
3820 DT_PHA_BY_NAME(DT_DRV_INST(inst), pha, name, cell)
3831#define DT_INST_PHA_BY_NAME_OR(inst, pha, name, cell, default_value) \
3832 DT_PHA_BY_NAME_OR(DT_DRV_INST(inst), pha, name, cell, default_value)
3842#define DT_INST_PHANDLE_BY_NAME(inst, pha, name) \
3843 DT_PHANDLE_BY_NAME(DT_DRV_INST(inst), pha, name) \
3854#define DT_INST_PHANDLE_BY_IDX(inst, prop, idx) \
3855 DT_PHANDLE_BY_IDX(DT_DRV_INST(inst), prop, idx)
3865#define DT_INST_PHANDLE(inst, prop) DT_INST_PHANDLE_BY_IDX(inst, prop, 0)
3874#define DT_INST_REG_HAS_IDX(inst, idx) DT_REG_HAS_IDX(DT_DRV_INST(inst), idx)
3882#define DT_INST_REG_ADDR_BY_IDX(inst, idx) DT_REG_ADDR_BY_IDX(DT_DRV_INST(inst), idx)
3890#define DT_INST_REG_SIZE_BY_IDX(inst, idx) \
3891 DT_REG_SIZE_BY_IDX(DT_DRV_INST(inst), idx)
3899#define DT_INST_REG_ADDR_BY_NAME(inst, name) \
3900 DT_REG_ADDR_BY_NAME(DT_DRV_INST(inst), name)
3914#define DT_INST_REG_ADDR_BY_NAME_U64(inst, name) \
3915 DT_U64_C(DT_INST_REG_ADDR_BY_NAME(inst, name))
3923#define DT_INST_REG_SIZE_BY_NAME(inst, name) \
3924 DT_REG_SIZE_BY_NAME(DT_DRV_INST(inst), name)
3931#define DT_INST_REG_ADDR(inst) DT_INST_REG_ADDR_BY_IDX(inst, 0)
3944#define DT_INST_REG_ADDR_U64(inst) DT_U64_C(DT_INST_REG_ADDR(inst))
3951#define DT_INST_REG_SIZE(inst) DT_INST_REG_SIZE_BY_IDX(inst, 0)
3959#define DT_INST_IRQ_LEVEL(inst) DT_IRQ_LEVEL(DT_DRV_INST(inst))
3968#define DT_INST_IRQ_BY_IDX(inst, idx, cell) \
3969 DT_IRQ_BY_IDX(DT_DRV_INST(inst), idx, cell)
3977#define DT_INST_IRQ_INTC_BY_IDX(inst, idx) \
3978 DT_IRQ_INTC_BY_IDX(DT_DRV_INST(inst), idx)
3986#define DT_INST_IRQ_INTC_BY_NAME(inst, name) \
3987 DT_IRQ_INTC_BY_NAME(DT_DRV_INST(inst), name)
3996#define DT_INST_IRQ_INTC(inst) \
3997 DT_INST_IRQ_INTC_BY_IDX(inst, 0)
4006#define DT_INST_IRQ_BY_NAME(inst, name, cell) \
4007 DT_IRQ_BY_NAME(DT_DRV_INST(inst), name, cell)
4015#define DT_INST_IRQ(inst, cell) DT_INST_IRQ_BY_IDX(inst, 0, cell)
4022#define DT_INST_IRQN(inst) DT_IRQN(DT_DRV_INST(inst))
4030#define DT_INST_IRQN_BY_IDX(inst, idx) DT_IRQN_BY_IDX(DT_DRV_INST(inst), idx)
4037#define DT_INST_BUS(inst) DT_BUS(DT_DRV_INST(inst))
4046#define DT_INST_ON_BUS(inst, bus) DT_ON_BUS(DT_DRV_INST(inst), bus)
4057#define DT_INST_STRING_TOKEN_OR(inst, name, default_value) \
4058 DT_STRING_TOKEN_OR(DT_DRV_INST(inst), name, default_value)
4068#define DT_INST_STRING_UPPER_TOKEN_OR(inst, name, default_value) \
4069 DT_STRING_UPPER_TOKEN_OR(DT_DRV_INST(inst), name, default_value)
4079#define DT_INST_STRING_UNQUOTED_OR(inst, name, default_value) \
4080 DT_STRING_UNQUOTED_OR(DT_DRV_INST(inst), name, default_value)
4112#define DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(compat, bus) \
4113 IS_ENABLED(DT_CAT4(DT_COMPAT_, compat, _BUS_, bus))
4147#define DT_ANY_INST_ON_BUS_STATUS_OKAY(bus) \
4148 DT_HAS_COMPAT_ON_BUS_STATUS_OKAY(DT_DRV_COMPAT, bus)
4194#define DT_ANY_INST_HAS_PROP_STATUS_OKAY(prop) \
4195 COND_CODE_1(IS_EMPTY(DT_ANY_INST_HAS_PROP_STATUS_OKAY_(prop)), (0), (1))
4262#define DT_INST_FOREACH_STATUS_OKAY(fn) \
4263 COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT), \
4264 (UTIL_CAT(DT_FOREACH_OKAY_INST_, \
4265 DT_DRV_COMPAT)(fn)), \
4279#define DT_INST_FOREACH_STATUS_OKAY_VARGS(fn, ...) \
4280 COND_CODE_1(DT_HAS_COMPAT_STATUS_OKAY(DT_DRV_COMPAT), \
4281 (UTIL_CAT(DT_FOREACH_OKAY_INST_VARGS_, \
4282 DT_DRV_COMPAT)(fn, __VA_ARGS__)), \
4295#define DT_INST_FOREACH_PROP_ELEM(inst, prop, fn) \
4296 DT_FOREACH_PROP_ELEM(DT_DRV_INST(inst), prop, fn)
4310#define DT_INST_FOREACH_PROP_ELEM_SEP(inst, prop, fn, sep) \
4311 DT_FOREACH_PROP_ELEM_SEP(DT_DRV_INST(inst), prop, fn, sep)
4327#define DT_INST_FOREACH_PROP_ELEM_VARGS(inst, prop, fn, ...) \
4328 DT_FOREACH_PROP_ELEM_VARGS(DT_DRV_INST(inst), prop, fn, __VA_ARGS__)
4347#define DT_INST_FOREACH_PROP_ELEM_SEP_VARGS(inst, prop, fn, sep, ...) \
4348 DT_FOREACH_PROP_ELEM_SEP_VARGS(DT_DRV_INST(inst), prop, fn, sep, \
4357#define DT_INST_NODE_HAS_PROP(inst, prop) \
4358 DT_NODE_HAS_PROP(DT_DRV_INST(inst), prop)
4370#define DT_INST_PHA_HAS_CELL_AT_IDX(inst, pha, idx, cell) \
4371 DT_PHA_HAS_CELL_AT_IDX(DT_DRV_INST(inst), pha, idx, cell)
4382#define DT_INST_PHA_HAS_CELL(inst, pha, cell) \
4383 DT_INST_PHA_HAS_CELL_AT_IDX(inst, pha, 0, cell)
4392#define DT_INST_IRQ_HAS_IDX(inst, idx) DT_IRQ_HAS_IDX(DT_DRV_INST(inst), idx)
4402#define DT_INST_IRQ_HAS_CELL_AT_IDX(inst, idx, cell) \
4403 DT_IRQ_HAS_CELL_AT_IDX(DT_DRV_INST(inst), idx, cell)
4412#define DT_INST_IRQ_HAS_CELL(inst, cell) \
4413 DT_INST_IRQ_HAS_CELL_AT_IDX(inst, 0, cell)
4421#define DT_INST_IRQ_HAS_NAME(inst, name) \
4422 DT_IRQ_HAS_NAME(DT_DRV_INST(inst), name)
4441#define DT_ANY_INST_HAS_PROP_STATUS_OKAY__(idx, prop) \
4442 COND_CODE_1(DT_INST_NODE_HAS_PROP(idx, prop), (1,), ())
4455#define DT_ANY_INST_HAS_PROP_STATUS_OKAY_(prop) \
4456 DT_INST_FOREACH_STATUS_OKAY_VARGS(DT_ANY_INST_HAS_PROP_STATUS_OKAY__, prop)
4458#define DT_PATH_INTERNAL(...) \
4459 UTIL_CAT(DT_ROOT, MACRO_MAP_CAT(DT_S_PREFIX, __VA_ARGS__))
4465#define DT_S_PREFIX(name) _S_##name
4481#define DT_CAT(a1, a2) a1 ## a2
4483#define DT_CAT3(a1, a2, a3) a1 ## a2 ## a3
4485#define DT_CAT4(a1, a2, a3, a4) a1 ## a2 ## a3 ## a4
4487#define DT_CAT5(a1, a2, a3, a4, a5) a1 ## a2 ## a3 ## a4 ## a5
4489#define DT_CAT6(a1, a2, a3, a4, a5, a6) a1 ## a2 ## a3 ## a4 ## a5 ## a6
4491#define DT_CAT7(a1, a2, a3, a4, a5, a6, a7) \
4492 a1 ## a2 ## a3 ## a4 ## a5 ## a6 ## a7
4494#define DT_CAT8(a1, a2, a3, a4, a5, a6, a7, a8) \
4495 a1 ## a2 ## a3 ## a4 ## a5 ## a6 ## a7 ## a8
4502#define DT_DASH(...) MACRO_MAP_CAT(DT_DASH_PREFIX, __VA_ARGS__)
4504#define DT_DASH_PREFIX(name) _##name
4506#define DT_NODE_HAS_STATUS_INTERNAL(node_id, status) \
4507 IS_ENABLED(DT_CAT3(node_id, _STATUS_, status))
4510#define DT_INST_NODE_HAS_PROP_AND_OR(inst, prop) \
4511 DT_INST_NODE_HAS_PROP(inst, prop) ||
4517#if defined(_LINKER) || defined(_ASMLANGUAGE)
4518#define DT_U64_C(_v) (_v)
4520#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.