Zephyr API Documentation
4.4.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
devicetree.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2024, Ambiq Micro Inc. <www.ambiq.com>
3
*
4
* SPDX-License-Identifier: Apache-2.0
5
*/
6
12
13
#ifndef ZEPHYR_INCLUDE_DRIVERS_MSPI_DEVICETREE_H_
14
#define ZEPHYR_INCLUDE_DRIVERS_MSPI_DEVICETREE_H_
15
22
23
#include <
zephyr/drivers/gpio.h
>
24
25
#ifdef __cplusplus
26
extern
"C"
{
27
#endif
28
38
#define MSPI_DEVICE_CONFIG_DT(mspi_dev) \
39
{ \
40
.ce_num = DT_PROP_OR(mspi_dev, mspi_hardware_ce_num, 0), \
41
.freq = DT_PROP(mspi_dev, mspi_max_frequency), \
42
.io_mode = DT_ENUM_IDX_OR(mspi_dev, mspi_io_mode, \
43
MSPI_IO_MODE_SINGLE), \
44
.data_rate = DT_ENUM_IDX_OR(mspi_dev, mspi_data_rate, \
45
MSPI_DATA_RATE_SINGLE), \
46
.cpp = DT_ENUM_IDX_OR(mspi_dev, mspi_cpp_mode, MSPI_CPP_MODE_0), \
47
.endian = DT_ENUM_IDX_OR(mspi_dev, mspi_endian, \
48
MSPI_XFER_LITTLE_ENDIAN), \
49
.ce_polarity = DT_ENUM_IDX_OR(mspi_dev, mspi_ce_polarity, \
50
MSPI_CE_ACTIVE_LOW), \
51
.dqs_enable = DT_PROP(mspi_dev, mspi_dqs_enable), \
52
.rx_dummy = DT_PROP_OR(mspi_dev, rx_dummy, 0), \
53
.tx_dummy = DT_PROP_OR(mspi_dev, tx_dummy, 0), \
54
.read_cmd = DT_PROP_OR(mspi_dev, read_command, 0), \
55
.write_cmd = DT_PROP_OR(mspi_dev, write_command, 0), \
56
.cmd_length = DT_ENUM_IDX_OR(mspi_dev, command_length, 0), \
57
.addr_length = DT_ENUM_IDX_OR(mspi_dev, address_length, 0), \
58
.mem_boundary = COND_CODE_1(DT_NODE_HAS_PROP(mspi_dev, ce_break_config), \
59
(DT_PROP_BY_IDX(mspi_dev, ce_break_config, 0)), \
60
(0)), \
61
.time_to_break = COND_CODE_1(DT_NODE_HAS_PROP(mspi_dev, ce_break_config), \
62
(DT_PROP_BY_IDX(mspi_dev, ce_break_config, 1)), \
63
(0)), \
64
}
65
74
#define MSPI_DEVICE_CONFIG_DT_INST(inst) MSPI_DEVICE_CONFIG_DT(DT_DRV_INST(inst))
75
85
#define MSPI_XIP_CONFIG_DT_NO_CHECK(mspi_dev) \
86
{ \
87
.enable = DT_PROP_BY_IDX(mspi_dev, xip_config, 0), \
88
.address_offset = DT_PROP_BY_IDX(mspi_dev, xip_config, 1), \
89
.size = DT_PROP_BY_IDX(mspi_dev, xip_config, 2), \
90
.permission = DT_PROP_BY_IDX(mspi_dev, xip_config, 3), \
91
}
92
102
#define MSPI_XIP_CONFIG_DT(mspi_dev) \
103
COND_CODE_1(DT_NODE_HAS_PROP(mspi_dev, xip_config), \
104
(MSPI_XIP_CONFIG_DT_NO_CHECK(mspi_dev)), \
105
({}))
106
115
#define MSPI_XIP_CONFIG_DT_INST(inst) MSPI_XIP_CONFIG_DT(DT_DRV_INST(inst))
116
126
#define MSPI_SCRAMBLE_CONFIG_DT_NO_CHECK(mspi_dev) \
127
{ \
128
.enable = DT_PROP_BY_IDX(mspi_dev, scramble_config, 0), \
129
.address_offset = DT_PROP_BY_IDX(mspi_dev, scramble_config, 1), \
130
.size = DT_PROP_BY_IDX(mspi_dev, scramble_config, 2), \
131
}
132
142
#define MSPI_SCRAMBLE_CONFIG_DT(mspi_dev) \
143
COND_CODE_1(DT_NODE_HAS_PROP(mspi_dev, scramble_config), \
144
(MSPI_SCRAMBLE_CONFIG_DT_NO_CHECK(mspi_dev)), \
145
({}))
146
155
#define MSPI_SCRAMBLE_CONFIG_DT_INST(inst) MSPI_SCRAMBLE_CONFIG_DT(DT_DRV_INST(inst))
156
166
#define MSPI_DEVICE_ID_DT(mspi_dev) \
167
{ \
168
.ce = MSPI_DEV_CE_GPIOS_DT_SPEC_GET(mspi_dev), \
169
.dev_idx = DT_REG_ADDR(mspi_dev), \
170
}
171
180
#define MSPI_DEVICE_ID_DT_INST(inst) MSPI_DEVICE_ID_DT(DT_DRV_INST(inst))
181
182
220
#define MSPI_DEV_CE_GPIOS_DT_SPEC_GET(mspi_dev) \
221
GPIO_DT_SPEC_GET_BY_IDX_OR(DT_BUS(mspi_dev), ce_gpios, \
222
DT_REG_ADDR_RAW(mspi_dev), {})
223
233
#define MSPI_DEV_CE_GPIOS_DT_SPEC_INST_GET(inst) \
234
MSPI_DEV_CE_GPIOS_DT_SPEC_GET(DT_DRV_INST(inst))
235
236
247
#define MSPI_CE_GPIOS_DT_SPEC_GET(node_id) \
248
{ \
249
COND_CODE_1(DT_NODE_HAS_PROP(node_id, ce_gpios), \
250
(DT_FOREACH_PROP_ELEM_SEP(node_id, ce_gpios, GPIO_DT_SPEC_GET_BY_IDX, (,))), \
251
()) \
252
}
253
263
#define MSPI_CE_GPIOS_DT_SPEC_INST_GET(inst) \
264
MSPI_CE_GPIOS_DT_SPEC_GET(DT_DRV_INST(inst))
265
304
#define MSPI_CE_CONTROL_INIT(node_id, delay_) \
305
{ \
306
.gpio = MSPI_DEV_CE_GPIOS_DT_SPEC_GET(node_id), .delay = (delay_), \
307
}
308
322
#define MSPI_CE_CONTROL_INIT_INST(inst, delay_) MSPI_CE_CONTROL_INIT(DT_DRV_INST(inst), delay_)
323
324
#ifdef __cplusplus
325
}
326
#endif
327
331
332
#endif
/* ZEPHYR_INCLUDE_DRIVERS_MSPI_DEVICETREE_H_ */
gpio.h
Main header file for GPIO driver API.
zephyr
drivers
mspi
devicetree.h
Generated on
for Zephyr API Documentation by
1.16.1