Zephyr Project API  3.2.0
A Scalable Open Source RTOS
devicetree.h
Go to the documentation of this file.
1/*
2 * Copyright 2022 Intel Corporation
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef ZEPHYR_INCLUDE_DRIVERS_I3C_DEVICETREE_H_
8#define ZEPHYR_INCLUDE_DRIVERS_I3C_DEVICETREE_H_
9
17#include <zephyr/device.h>
18#include <zephyr/kernel.h>
19#include <zephyr/types.h>
20#include <zephyr/sys/util.h>
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
35#define I3C_DEVICE_ID_DT(node_id) \
36 { \
37 .pid = ((uint64_t)DT_PROP_BY_IDX(node_id, reg, 1) << 32)\
38 | DT_PROP_BY_IDX(node_id, reg, 2), \
39 }
40
49#define I3C_DEVICE_ID_DT_INST(inst) \
50 I3C_DEVICE_ID_DT(DT_DRV_INST(inst))
51
62#define I3C_DEVICE_DESC_DT(node_id) \
63 { \
64 .bus = DEVICE_DT_GET(DT_BUS(node_id)), \
65 .dev = DEVICE_DT_GET(node_id), \
66 .static_addr = DT_PROP_BY_IDX(node_id, reg, 0), \
67 .pid = ((uint64_t)DT_PROP_BY_IDX(node_id, reg, 1) << 32)\
68 | DT_PROP_BY_IDX(node_id, reg, 2), \
69 .init_dynamic_addr = \
70 DT_PROP_OR(node_id, assigned_address, 0), \
71 }
72
81#define I3C_DEVICE_DESC_DT_INST(inst) \
82 I3C_DEVICE_DESC_DT(DT_DRV_INST(inst))
83
90#define I3C_DEVICE_DESC_DT_FILTERED(node_id) \
91 COND_CODE_0(DT_PROP_BY_IDX(node_id, reg, 1), \
92 (), (I3C_DEVICE_DESC_DT(node_id)))
93
102#define I3C_DEVICE_ARRAY_DT(node_id) \
103 { \
104 DT_FOREACH_CHILD_STATUS_OKAY( \
105 node_id, \
106 I3C_DEVICE_DESC_DT_FILTERED) \
107 }
108
117#define I3C_DEVICE_ARRAY_DT_INST(inst) \
118 I3C_DEVICE_ARRAY_DT(DT_DRV_INST(inst))
119
145#define I3C_DEVICE_DT_DEFINE(node_id, init_fn, pm_device, \
146 data_ptr, cfg_ptr, level, prio, \
147 api_ptr, ...) \
148 DEVICE_DT_DEFINE(node_id, init_fn, pm_device, \
149 data_ptr, cfg_ptr, level, prio, \
150 api_ptr, __VA_ARGS__)
151
160#define I3C_DEVICE_DT_INST_DEFINE(inst, ...) \
161 I3C_DEVICE_DT_DEFINE(DT_DRV_INST(inst), __VA_ARGS__)
162
173#define I3C_I2C_DEVICE_DESC_DT(node_id) \
174 { \
175 .bus = DEVICE_DT_GET(DT_BUS(node_id)), \
176 .addr = DT_PROP_BY_IDX(node_id, reg, 0), \
177 .lvr = DT_PROP_BY_IDX(node_id, reg, 2), \
178 }
179
188#define I3C_I2C_DEVICE_DESC_DT_INST(inst) \
189 I3C_I2C_DEVICE_DESC_DT(DT_DRV_INST(inst))
190
191
198#define I3C_I2C_DEVICE_DESC_DT_FILTERED(node_id) \
199 COND_CODE_0(DT_PROP_BY_IDX(node_id, reg, 1), \
200 (I3C_I2C_DEVICE_DESC_DT(node_id)), ())
201
210#define I3C_I2C_DEVICE_ARRAY_DT(node_id) \
211 { \
212 DT_FOREACH_CHILD_STATUS_OKAY( \
213 node_id, \
214 I3C_I2C_DEVICE_DESC_DT_FILTERED) \
215 }
216
225#define I3C_I2C_DEVICE_ARRAY_DT_INST(inst) \
226 I3C_I2C_DEVICE_ARRAY_DT(DT_DRV_INST(inst))
227
228#ifdef __cplusplus
229}
230#endif
231
236#endif /* ZEPHYR_INCLUDE_DRIVERS_I3C_DEVICETREE_H_ */
Public kernel APIs.
Misc utilities.