Zephyr Project API
4.1.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
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 <
stdint.h
>
18
19
#include <
zephyr/device.h
>
20
#include <
zephyr/devicetree.h
>
21
#include <
zephyr/sys/util.h
>
22
23
#ifdef __cplusplus
24
extern
"C"
{
25
#endif
26
36
#define I3C_DEVICE_ID_DT(node_id) \
37
{ \
38
.pid = ((uint64_t)DT_PROP_BY_IDX(node_id, reg, 1) << 32)\
39
| DT_PROP_BY_IDX(node_id, reg, 2), \
40
}
41
52
#define I3C_DEVICE_ID_DT_INST(inst) \
53
I3C_DEVICE_ID_DT(DT_DRV_INST(inst))
54
62
#define I3C_SUPPORTS_SETAASA BIT(0)
64
#define I3C_V1P0_SUPPORT BIT(1)
65
78
#define I3C_DEVICE_DESC_DT(node_id) \
79
{ \
80
.bus = DEVICE_DT_GET(DT_BUS(node_id)), \
81
.dev = DEVICE_DT_GET(node_id), \
82
.static_addr = DT_PROP_BY_IDX(node_id, reg, 0), \
83
.pid = ((uint64_t)DT_PROP_BY_IDX(node_id, reg, 1) << 32) | \
84
DT_PROP_BY_IDX(node_id, reg, 2), \
85
.init_dynamic_addr = DT_PROP_OR(node_id, assigned_address, 0), \
86
.flags = FIELD_PREP(I3C_SUPPORTS_SETAASA, DT_PROP(node_id, supports_setaasa)) | \
87
FIELD_PREP(I3C_V1P0_SUPPORT, DT_PROP(node_id, v1p0_support)), \
88
},
89
101
#define I3C_DEVICE_DESC_DT_INST(inst) \
102
I3C_DEVICE_DESC_DT(DT_DRV_INST(inst))
103
110
#define I3C_DEVICE_DESC_DT_FILTERED(node_id) \
111
COND_CODE_0(DT_PROP_BY_IDX(node_id, reg, 1), \
112
(), (I3C_DEVICE_DESC_DT(node_id)))
113
122
#define I3C_DEVICE_ARRAY_DT(node_id) \
123
{ \
124
DT_FOREACH_CHILD_STATUS_OKAY( \
125
node_id, \
126
I3C_DEVICE_DESC_DT_FILTERED) \
127
}
128
139
#define I3C_DEVICE_ARRAY_DT_INST(inst) \
140
I3C_DEVICE_ARRAY_DT(DT_DRV_INST(inst))
141
167
#define I3C_DEVICE_DT_DEFINE(node_id, init_fn, pm, data, config, level, \
168
prio, api, ...) \
169
DEVICE_DT_DEFINE(node_id, init_fn, pm, data, config, level, \
170
prio, api, __VA_ARGS__)
171
180
#define I3C_DEVICE_DT_INST_DEFINE(inst, ...) \
181
I3C_DEVICE_DT_DEFINE(DT_DRV_INST(inst), __VA_ARGS__)
182
192
#define I3C_I2C_DEVICE_DESC_DT(node_id) \
193
{ \
194
.bus = DEVICE_DT_GET(DT_BUS(node_id)), \
195
.addr = DT_PROP_BY_IDX(node_id, reg, 0), \
196
.lvr = DT_PROP_BY_IDX(node_id, reg, 2), \
197
},
198
209
#define I3C_I2C_DEVICE_DESC_DT_INST(inst) \
210
I3C_I2C_DEVICE_DESC_DT(DT_DRV_INST(inst))
211
212
219
#define I3C_I2C_DEVICE_DESC_DT_FILTERED(node_id) \
220
COND_CODE_0(DT_PROP_BY_IDX(node_id, reg, 1), \
221
(I3C_I2C_DEVICE_DESC_DT(node_id)), ())
222
231
#define I3C_I2C_DEVICE_ARRAY_DT(node_id) \
232
{ \
233
DT_FOREACH_CHILD_STATUS_OKAY( \
234
node_id, \
235
I3C_I2C_DEVICE_DESC_DT_FILTERED) \
236
}
237
248
#define I3C_I2C_DEVICE_ARRAY_DT_INST(inst) \
249
I3C_I2C_DEVICE_ARRAY_DT(DT_DRV_INST(inst))
250
251
#ifdef __cplusplus
252
}
253
#endif
254
259
#endif
/* ZEPHYR_INCLUDE_DRIVERS_I3C_DEVICETREE_H_ */
device.h
devicetree.h
Devicetree main header.
stdint.h
util.h
Misc utilities.
include
zephyr
drivers
i3c
devicetree.h
Generated on Sun May 4 2025 13:59:46 for Zephyr Project API by
1.9.8