Zephyr API Documentation 4.3.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
map.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2025 TOKITA Hiroshi
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef ZEPHYR_INCLUDE_DEVICETREE_MAP_H_
8#define ZEPHYR_INCLUDE_DEVICETREE_MAP_H_
9
66
72
82#define DT_NODE_HAS_MAP(node_id, prop) DT_NODE_HAS_PROP(node_id, prop)
83
93#define DT_MAP_LEN(node_id, prop) DT_PROP_LEN(node_id, prop)
94
104#define DT_MAP_HAS_ENTRY_BY_IDX(node_id, prop, entry_idx) \
105 IS_ENABLED(DT_CAT6(node_id, _P_, prop, _MAP_ENTRY_, entry_idx, _EXISTS))
106
118#define DT_MAP_HAS_ENTRY(node_id, prop) DT_MAP_HAS_ENTRY_BY_IDX(node_id, prop, 0)
119
128#define DT_MAP_ENTRY_CHILD_ADDRESS_LEN(node_id, prop, entry_idx) \
129 DT_CAT6(node_id, _P_, prop, _MAP_ENTRY_, entry_idx, _CHILD_ADDRESS_LEN)
130
140#define DT_MAP_ENTRY_HAS_CHILD_ADDRESS_BY_IDX(node_id, prop, entry_idx, param_idx) \
141 IS_ENABLED(DT_CAT8(node_id, _P_, prop, _MAP_ENTRY_, entry_idx, _CHILD_ADDRESS_IDX_, \
142 param_idx, _EXISTS))
143
155#define DT_MAP_ENTRY_HAS_CHILD_ADDRESS(node_id, prop, entry_idx) \
156 DT_MAP_ENTRY_HAS_CHILD_ADDRESS_BY_IDX(node_id, prop, entry_idx, 0)
157
167#define DT_MAP_ENTRY_CHILD_ADDRESS_BY_IDX(node_id, prop, entry_idx, param_idx) \
168 DT_CAT7(node_id, _P_, prop, _MAP_ENTRY_, entry_idx, _CHILD_ADDRESS_IDX_, param_idx)
169
181#define DT_MAP_ENTRY_CHILD_ADDRESS(node_id, prop, entry_idx) \
182 DT_MAP_ENTRY_CHILD_ADDRESS_BY_IDX(node_id, prop, entry_idx, 0)
183
192#define DT_MAP_ENTRY_CHILD_SPECIFIER_LEN(node_id, prop, entry_idx) \
193 DT_CAT6(node_id, _P_, prop, _MAP_ENTRY_, entry_idx, _CHILD_SPECIFIER_LEN)
194
204#define DT_MAP_ENTRY_HAS_CHILD_SPECIFIER_BY_IDX(node_id, prop, entry_idx, param_idx) \
205 IS_ENABLED(DT_CAT8(node_id, _P_, prop, _MAP_ENTRY_, entry_idx, _CHILD_SPECIFIER_IDX_, \
206 param_idx, _EXISTS))
207
219#define DT_MAP_ENTRY_HAS_CHILD_SPECIFIER(node_id, prop, entry_idx) \
220 DT_MAP_ENTRY_HAS_CHILD_SPECIFIER_BY_IDX(node_id, prop, entry_idx, 0)
221
231#define DT_MAP_ENTRY_CHILD_SPECIFIER_BY_IDX(node_id, prop, entry_idx, param_idx) \
232 DT_CAT7(node_id, _P_, prop, _MAP_ENTRY_, entry_idx, _CHILD_SPECIFIER_IDX_, param_idx)
233
245#define DT_MAP_ENTRY_CHILD_SPECIFIER(node_id, prop, entry_idx) \
246 DT_MAP_ENTRY_CHILD_SPECIFIER_BY_IDX(node_id, prop, entry_idx, 0)
247
256#define DT_MAP_ENTRY_PARENT_BY_IDX(node_id, prop, entry_idx) \
257 DT_CAT6(node_id, _P_, prop, _MAP_ENTRY_, entry_idx, _PARENT)
258
269#define DT_MAP_ENTRY_PARENT(node_id, prop) \
270 DT_MAP_ENTRY_PARENT_BY_IDX(node_id, prop, 0)
271
280#define DT_MAP_ENTRY_PARENT_ADDRESS_LEN(node_id, prop, entry_idx) \
281 DT_CAT6(node_id, _P_, prop, _MAP_ENTRY_, entry_idx, _PARENT_ADDRESS_LEN)
282
292#define DT_MAP_ENTRY_HAS_PARENT_ADDRESS_BY_IDX(node_id, prop, entry_idx, param_idx) \
293 IS_ENABLED(DT_CAT8(node_id, _P_, prop, _MAP_ENTRY_, entry_idx, _PARENT_ADDRESS_IDX_, \
294 param_idx, _EXISTS))
295
307#define DT_MAP_ENTRY_HAS_PARENT_ADDRESS(node_id, prop, entry_idx) \
308 DT_MAP_ENTRY_HAS_PARENT_ADDRESS_BY_IDX(node_id, prop, entry_idx, 0)
309
319#define DT_MAP_ENTRY_PARENT_ADDRESS_BY_IDX(node_id, prop, entry_idx, param_idx) \
320 DT_CAT7(node_id, _P_, prop, _MAP_ENTRY_, entry_idx, _PARENT_ADDRESS_IDX_, param_idx)
321
333#define DT_MAP_ENTRY_PARENT_ADDRESS(node_id, prop, entry_idx) \
334 DT_MAP_ENTRY_PARENT_ADDRESS_BY_IDX(node_id, prop, entry_idx, 0)
335
344#define DT_MAP_ENTRY_PARENT_SPECIFIER_LEN(node_id, prop, entry_idx) \
345 DT_CAT6(node_id, _P_, prop, _MAP_ENTRY_, entry_idx, _PARENT_SPECIFIER_LEN)
346
356#define DT_MAP_ENTRY_HAS_PARENT_SPECIFIER_BY_IDX(node_id, prop, entry_idx, param_idx) \
357 IS_ENABLED(DT_CAT8(node_id, _P_, prop, _MAP_ENTRY_, entry_idx, _PARENT_SPECIFIER_IDX_, \
358 param_idx, _EXISTS))
359
371#define DT_MAP_ENTRY_HAS_PARENT_SPECIFIER(node_id, prop, entry_idx) \
372 DT_MAP_ENTRY_HAS_PARENT_SPECIFIER_BY_IDX(node_id, prop, entry_idx, 0)
373
383#define DT_MAP_ENTRY_PARENT_SPECIFIER_BY_IDX(node_id, prop, entry_idx, param_idx) \
384 DT_CAT7(node_id, _P_, prop, _MAP_ENTRY_, entry_idx, _PARENT_SPECIFIER_IDX_, param_idx)
385
397#define DT_MAP_ENTRY_PARENT_SPECIFIER(node_id, prop, entry_idx) \
398 DT_MAP_ENTRY_PARENT_SPECIFIER_BY_IDX(node_id, prop, entry_idx, 0)
399
409#define DT_FOREACH_MAP_ENTRY(node_id, prop, fn) DT_CAT4(node_id, _P_, prop, _FOREACH_MAP_ENTRY)(fn)
410
422#define DT_FOREACH_MAP_ENTRY_SEP(node_id, prop, fn, sep) \
423 DT_CAT4(node_id, _P_, prop, _FOREACH_MAP_ENTRY_SEP)(fn, sep)
424
435#define DT_FOREACH_MAP_ENTRY_VARGS(node_id, prop, fn, ...) \
436 DT_CAT4(node_id, _P_, prop, _FOREACH_MAP_ENTRY_VARGS)(fn, __VA_ARGS__)
437
450#define DT_FOREACH_MAP_ENTRY_SEP_VARGS(node_id, prop, fn, sep, ...) \
451 DT_CAT4(node_id, _P_, prop, _FOREACH_MAP_ENTRY_SEP_VARGS)(fn, sep, __VA_ARGS__)
452
456
457#endif /* ZEPHYR_INCLUDE_DEVICETREE_MAP_H_ */