Zephyr API Documentation
4.2.0-rc3
A Scalable Open Source RTOS
4.2.0-rc3
Toggle main menu visibility
Main Page
Related Pages
Topics
Data Structures
Data Structures
Data Structure Index
Data Fields
All
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
Variables
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerations
Enumerator
Files
File List
Globals
All
$
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Functions
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Variables
$
a
b
c
d
f
g
h
i
k
l
m
n
o
p
r
s
t
u
x
z
Typedefs
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Enumerations
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
x
z
Enumerator
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
x
z
Macros
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Zephyr API Documentation
Introduction
Deprecated List
Topics
Data Structures
Files
File List
doc
kernel
lib
modules
subsys
zephyr
acpi
app_memory
arch
audio
bluetooth
canbus
console
crypto
data
debug
devicetree
dfu
display
drivers
adc
bluetooth
can
clock_control
comparator
console
dac
dma
edac
eeprom
ethernet
firmware
flash
gnss
gpio
haptics
i2c
i3c
ieee802154
interrupt_controller
dw_ace.h
gd32_exti.h
gic.h
gicv3_its.h
gpio_intc_stm32.h
intc_eirq_nxp_s32.h
intc_esp32.h
intc_mchp_xec_ecia.h
intc_rx_icu.h
intc_rz_ext_irq.h
intc_vim.h
intc_wkpu_nxp_s32.h
intc_xmc4xxx.h
intel_vtd.h
ioapic.h
loapic.h
nxp_pint.h
riscv_clic.h
riscv_plic.h
sam0_eic.h
sysapic.h
wch_exti.h
wuc_ite_it51xxx.h
wuc_ite_it8xxx2.h
led
led_strip
mfd
mic_privacy
mipi_dsi
misc
mm
modem
mspi
pcie
pinctrl
pm_cpu_ops
power
psi5
pwm
regulator
retained_mem
rtc
sensor
sent
serial
sip_svc
spi
stepper
timer
uart
usb
usb_c
video
virtio
virtualization
adc.h
auxdisplay.h
bbram.h
bluetooth.h
cache.h
can.h
cellular.h
charger.h
clock_control.h
comparator.h
coredump.h
counter.h
dac.h
dai.h
disk.h
display.h
dma.h
edac.h
eeprom.h
emul.h
emul_bbram.h
emul_fuel_gauge.h
emul_sensor.h
emul_stub_device.h
entropy.h
espi.h
espi_emul.h
espi_saf.h
flash.h
fpga.h
fuel_gauge.h
gnss.h
gpio.h
haptics.h
hwinfo.h
hwspinlock.h
i2c.h
i2c_emul.h
i2s.h
i3c.h
ipm.h
led.h
led_strip.h
loopback_disk.h
lora.h
mbox.h
mdio.h
mipi_dbi.h
mipi_dsi.h
mspi.h
mspi_emul.h
peci.h
pinctrl.h
pm_cpu_ops.h
ps2.h
ptp_clock.h
pwm.h
regulator.h
reset.h
retained_mem.h
rtc.h
sdhc.h
sensor.h
sensor_attribute_types.h
sensor_clock.h
sensor_data_types.h
smbus.h
spi.h
spi_emul.h
stepper.h
swdp.h
syscon.h
tee.h
uart.h
uart_emul.h
uart_pipe.h
video-controls.h
video.h
virtio.h
w1.h
watchdog.h
dsp
dt-bindings
fs
input
internal
ipc
kernel
linker
llext
logging
lorawan
math
mem_mgmt
mgmt
misc
modbus
modem
multi_heap
net
platform
pm
pmci
portability
posix
psa
random
retention
rtio
sd
sensing
settings
shell
sip_svc
stats
storage
sys
task_wdt
timing
toolchain
tracing
usb
usb_c
xen
zbus
zvfs
bindesc.h
cache.h
device.h
devicetree.h
fatal.h
fatal_types.h
init.h
irq.h
irq_multilevel.h
irq_nextlevel.h
irq_offload.h
kernel.h
kernel_includes.h
kernel_structs.h
kernel_version.h
net_buf.h
shared_irq.h
smf.h
spinlock.h
sw_isr_table.h
sys_clock.h
syscall.h
toolchain.h
types.h
Globals
•
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Modules
Pages
Loading...
Searching...
No Matches
intc_vim.h
Go to the documentation of this file.
1
/* Copyright (C) 2023 BeagleBoard.org Foundation
2
* Copyright (C) 2023 S Prashanth
3
*
4
* SPDX-License-Identifier: Apache-2.0
5
*/
6
7
#ifndef ZEPHYR_DRIVERS_INTC_VIM_H_
8
#define ZEPHYR_DRIVERS_INTC_VIM_H_
9
10
#include <
stdint.h
>
11
12
#include <
zephyr/devicetree.h
>
13
#include <
zephyr/dt-bindings/interrupt-controller/ti-vim.h
>
14
#include <
zephyr/sys/util_macro.h
>
15
16
#define VIM_BASE_ADDR DT_REG_ADDR(DT_INST(0, ti_vim))
17
18
#define VIM_MAX_IRQ_PER_GROUP (32)
19
#define VIM_MAX_GROUP_NUM ((uint32_t)(CONFIG_NUM_IRQS / VIM_MAX_IRQ_PER_GROUP))
20
21
#define VIM_GET_IRQ_GROUP_NUM(n) ((uint32_t)((n) / VIM_MAX_IRQ_PER_GROUP))
22
#define VIM_GET_IRQ_BIT_NUM(n) ((uint32_t)((n) % VIM_MAX_IRQ_PER_GROUP))
23
24
#define VIM_PRI_INT_MAX (15)
25
26
#define VIM_PID (VIM_BASE_ADDR + 0x0000)
27
#define VIM_INFO (VIM_BASE_ADDR + 0x0004)
28
#define VIM_PRIIRQ (VIM_BASE_ADDR + 0x0008)
29
#define VIM_PRIFIQ (VIM_BASE_ADDR + 0x000C)
30
#define VIM_IRQGSTS (VIM_BASE_ADDR + 0x0010)
31
#define VIM_FIQGSTS (VIM_BASE_ADDR + 0x0014)
32
#define VIM_IRQVEC (VIM_BASE_ADDR + 0x0018)
33
#define VIM_FIQVEC (VIM_BASE_ADDR + 0x001C)
34
#define VIM_ACTIRQ (VIM_BASE_ADDR + 0x0020)
35
#define VIM_ACTFIQ (VIM_BASE_ADDR + 0x0024)
36
#define VIM_DEDVEC (VIM_BASE_ADDR + 0x0030)
37
38
#define VIM_RAW(n) (VIM_BASE_ADDR + (0x400) + ((n) * 0x20))
39
#define VIM_STS(n) (VIM_BASE_ADDR + (0x404) + ((n) * 0x20))
40
#define VIM_INTR_EN_SET(n) (VIM_BASE_ADDR + (0x408) + ((n) * 0x20))
41
#define VIM_INTR_EN_CLR(n) (VIM_BASE_ADDR + (0x40c) + ((n) * 0x20))
42
#define VIM_IRQSTS(n) (VIM_BASE_ADDR + (0x410) + ((n) * 0x20))
43
#define VIM_FIQSTS(n) (VIM_BASE_ADDR + (0x414) + ((n) * 0x20))
44
#define VIM_INTMAP(n) (VIM_BASE_ADDR + (0x418) + ((n) * 0x20))
45
#define VIM_INTTYPE(n) (VIM_BASE_ADDR + (0x41c) + ((n) * 0x20))
46
#define VIM_PRI_INT(n) (VIM_BASE_ADDR + (0x1000) + ((n) * 0x4))
47
#define VIM_VEC_INT(n) (VIM_BASE_ADDR + (0x2000) + ((n) * 0x4))
48
49
/* RAW */
50
51
#define VIM_GRP_RAW_STS_MASK (BIT_MASK(32))
52
#define VIM_GRP_RAW_STS_SHIFT (0x00000000U)
53
#define VIM_GRP_RAW_STS_RESETVAL (0x00000000U)
54
#define VIM_GRP_RAW_STS_MAX (BIT_MASK(32))
55
56
#define VIM_GRP_RAW_RESETVAL (0x00000000U)
57
58
/* STS */
59
60
#define VIM_GRP_STS_MSK_MASK (BIT_MASK(32))
61
#define VIM_GRP_STS_MSK_SHIFT (0x00000000U)
62
#define VIM_GRP_STS_MSK_RESETVAL (0x00000000U)
63
#define VIM_GRP_STS_MSK_MAX (BIT_MASK(32))
64
65
#define VIM_GRP_STS_RESETVAL (0x00000000U)
66
67
/* INTR_EN_SET */
68
69
#define VIM_GRP_INTR_EN_SET_MSK_MASK (BIT_MASK(32))
70
#define VIM_GRP_INTR_EN_SET_MSK_SHIFT (0x00000000U)
71
#define VIM_GRP_INTR_EN_SET_MSK_RESETVAL (0x00000000U)
72
#define VIM_GRP_INTR_EN_SET_MSK_MAX (BIT_MASK(32))
73
74
#define VIM_GRP_INTR_EN_SET_RESETVAL (0x00000000U)
75
76
/* INTR_EN_CLR */
77
78
#define VIM_GRP_INTR_EN_CLR_MSK_MASK (BIT_MASK(32))
79
#define VIM_GRP_INTR_EN_CLR_MSK_SHIFT (0x00000000U)
80
#define VIM_GRP_INTR_EN_CLR_MSK_RESETVAL (0x00000000U)
81
#define VIM_GRP_INTR_EN_CLR_MSK_MAX (BIT_MASK(32))
82
83
#define VIM_GRP_INTR_EN_CLR_RESETVAL (0x00000000U)
84
85
/* IRQSTS */
86
87
#define VIM_GRP_IRQSTS_MSK_MASK (BIT_MASK(32))
88
#define VIM_GRP_IRQSTS_MSK_SHIFT (0x00000000U)
89
#define VIM_GRP_IRQSTS_MSK_RESETVAL (0x00000000U)
90
#define VIM_GRP_IRQSTS_MSK_MAX (BIT_MASK(32))
91
92
#define VIM_GRP_IRQSTS_RESETVAL (0x00000000U)
93
94
/* FIQSTS */
95
96
#define VIM_GRP_FIQSTS_MSK_MASK (BIT_MASK(32))
97
#define VIM_GRP_FIQSTS_MSK_SHIFT (0x00000000U)
98
#define VIM_GRP_FIQSTS_MSK_RESETVAL (0x00000000U)
99
#define VIM_GRP_FIQSTS_MSK_MAX (BIT_MASK(32))
100
101
#define VIM_GRP_FIQSTS_RESETVAL (0x00000000U)
102
103
/* INTMAP */
104
105
#define VIM_GRP_INTMAP_MSK_MASK (BIT_MASK(32))
106
#define VIM_GRP_INTMAP_MSK_SHIFT (0x00000000U)
107
#define VIM_GRP_INTMAP_MSK_RESETVAL (0x00000000U)
108
#define VIM_GRP_INTMAP_MSK_MAX (BIT_MASK(32))
109
110
#define VIM_GRP_INTMAP_RESETVAL (0x00000000U)
111
112
/* INTTYPE */
113
114
#define VIM_GRP_INTTYPE_MSK_MASK (BIT_MASK(32))
115
#define VIM_GRP_INTTYPE_MSK_SHIFT (0x00000000U)
116
#define VIM_GRP_INTTYPE_MSK_RESETVAL (0x00000000U)
117
#define VIM_GRP_INTTYPE_MSK_MAX (BIT_MASK(32))
118
119
#define VIM_GRP_INTTYPE_RESETVAL (0x00000000U)
120
121
/* INT */
122
123
#define VIM_PRI_INT_VAL_MASK (BIT_MASK(4))
124
#define VIM_PRI_INT_VAL_SHIFT (0x00000000U)
125
#define VIM_PRI_INT_VAL_RESETVAL (BIT_MASK(4))
126
#define VIM_PRI_INT_VAL_MAX (BIT_MASK(4))
127
128
#define VIM_PRI_INT_RESETVAL (BIT_MASK(4))
129
130
/* INT */
131
132
#define VIM_VEC_INT_VAL_MASK (0xFFFFFFFCU)
133
#define VIM_VEC_INT_VAL_SHIFT (0x00000002U)
134
#define VIM_VEC_INT_VAL_RESETVAL (0x00000000U)
135
#define VIM_VEC_INT_VAL_MAX (BIT_MASK(30))
136
137
#define VIM_VEC_INT_RESETVAL (0x00000000U)
138
139
/* INFO */
140
141
#define VIM_INFO_INTERRUPTS_MASK (BIT_MASK(11))
142
#define VIM_INFO_INTERRUPTS_SHIFT (0x00000000U)
143
#define VIM_INFO_INTERRUPTS_RESETVAL (0x00000400U)
144
#define VIM_INFO_INTERRUPTS_MAX (BIT_MASK(11))
145
146
#define VIM_INFO_RESETVAL (0x00000400U)
147
148
/* PRIIRQ */
149
150
#define VIM_PRIIRQ_VALID_MASK (0x80000000U)
151
#define VIM_PRIIRQ_VALID_SHIFT (BIT_MASK(5))
152
#define VIM_PRIIRQ_VALID_RESETVAL (0x00000000U)
153
#define VIM_PRIIRQ_VALID_MAX (0x00000001U)
154
155
#define VIM_PRIIRQ_VALID_VAL_TRUE (0x1U)
156
#define VIM_PRIIRQ_VALID_VAL_FALSE (0x0U)
157
158
#define VIM_PRIIRQ_PRI_MASK (0x000F0000U)
159
#define VIM_PRIIRQ_PRI_SHIFT (0x00000010U)
160
#define VIM_PRIIRQ_PRI_RESETVAL (0x00000000U)
161
#define VIM_PRIIRQ_PRI_MAX (BIT_MASK(4))
162
163
#define VIM_PRIIRQ_NUM_MASK (BIT_MASK(10))
164
#define VIM_PRIIRQ_NUM_SHIFT (0x00000000U)
165
#define VIM_PRIIRQ_NUM_RESETVAL (0x00000000U)
166
#define VIM_PRIIRQ_NUM_MAX (BIT_MASK(10))
167
168
#define VIM_PRIIRQ_RESETVAL (0x00000000U)
169
170
/* PRIFIQ */
171
172
#define VIM_PRIFIQ_VALID_MASK (0x80000000U)
173
#define VIM_PRIFIQ_VALID_SHIFT (BIT_MASK(5))
174
#define VIM_PRIFIQ_VALID_RESETVAL (0x00000000U)
175
#define VIM_PRIFIQ_VALID_MAX (0x00000001U)
176
177
#define VIM_PRIFIQ_VALID_VAL_TRUE (0x1U)
178
#define VIM_PRIFIQ_VALID_VAL_FALSE (0x0U)
179
180
#define VIM_PRIFIQ_PRI_MASK (0x000F0000U)
181
#define VIM_PRIFIQ_PRI_SHIFT (0x00000010U)
182
#define VIM_PRIFIQ_PRI_RESETVAL (0x00000000U)
183
#define VIM_PRIFIQ_PRI_MAX (BIT_MASK(4))
184
185
#define VIM_PRIFIQ_NUM_MASK (BIT_MASK(10))
186
#define VIM_PRIFIQ_NUM_SHIFT (0x00000000U)
187
#define VIM_PRIFIQ_NUM_RESETVAL (0x00000000U)
188
#define VIM_PRIFIQ_NUM_MAX (BIT_MASK(10))
189
190
#define VIM_PRIFIQ_RESETVAL (0x00000000U)
191
192
/* IRQGSTS */
193
194
#define VIM_IRQGSTS_STS_MASK (BIT_MASK(32))
195
#define VIM_IRQGSTS_STS_SHIFT (0x00000000U)
196
#define VIM_IRQGSTS_STS_RESETVAL (0x00000000U)
197
#define VIM_IRQGSTS_STS_MAX (BIT_MASK(32))
198
199
#define VIM_IRQGSTS_RESETVAL (0x00000000U)
200
201
/* FIQGSTS */
202
203
#define VIM_FIQGSTS_STS_MASK (BIT_MASK(32))
204
#define VIM_FIQGSTS_STS_SHIFT (0x00000000U)
205
#define VIM_FIQGSTS_STS_RESETVAL (0x00000000U)
206
#define VIM_FIQGSTS_STS_MAX (BIT_MASK(32))
207
208
#define VIM_FIQGSTS_RESETVAL (0x00000000U)
209
210
/* IRQVEC */
211
212
#define VIM_IRQVEC_ADDR_MASK (0xFFFFFFFCU)
213
#define VIM_IRQVEC_ADDR_SHIFT (0x00000002U)
214
#define VIM_IRQVEC_ADDR_RESETVAL (0x00000000U)
215
#define VIM_IRQVEC_ADDR_MAX (BIT_MASK(30))
216
217
#define VIM_IRQVEC_RESETVAL (0x00000000U)
218
219
/* FIQVEC */
220
221
#define VIM_FIQVEC_ADDR_MASK (0xFFFFFFFCU)
222
#define VIM_FIQVEC_ADDR_SHIFT (0x00000002U)
223
#define VIM_FIQVEC_ADDR_RESETVAL (0x00000000U)
224
#define VIM_FIQVEC_ADDR_MAX (BIT_MASK(30))
225
226
#define VIM_FIQVEC_RESETVAL (0x00000000U)
227
228
/* ACTIRQ */
229
230
#define VIM_ACTIRQ_VALID_MASK (0x80000000U)
231
#define VIM_ACTIRQ_VALID_SHIFT (BIT_MASK(5))
232
#define VIM_ACTIRQ_VALID_RESETVAL (0x00000000U)
233
#define VIM_ACTIRQ_VALID_MAX (0x00000001U)
234
235
#define VIM_ACTIRQ_VALID_VAL_TRUE (0x1U)
236
#define VIM_ACTIRQ_VALID_VAL_FALSE (0x0U)
237
238
#define VIM_ACTIRQ_PRI_MASK (0x000F0000U)
239
#define VIM_ACTIRQ_PRI_SHIFT (0x00000010U)
240
#define VIM_ACTIRQ_PRI_RESETVAL (0x00000000U)
241
#define VIM_ACTIRQ_PRI_MAX (BIT_MASK(4))
242
243
#define VIM_ACTIRQ_NUM_MASK (BIT_MASK(10))
244
#define VIM_ACTIRQ_NUM_SHIFT (0x00000000U)
245
#define VIM_ACTIRQ_NUM_RESETVAL (0x00000000U)
246
#define VIM_ACTIRQ_NUM_MAX (BIT_MASK(10))
247
248
#define VIM_ACTIRQ_RESETVAL (0x00000000U)
249
250
/* ACTFIQ */
251
252
#define VIM_ACTFIQ_VALID_MASK (0x80000000U)
253
#define VIM_ACTFIQ_VALID_SHIFT (BIT_MASK(5))
254
#define VIM_ACTFIQ_VALID_RESETVAL (0x00000000U)
255
#define VIM_ACTFIQ_VALID_MAX (0x00000001U)
256
257
#define VIM_ACTFIQ_VALID_VAL_TRUE (0x1U)
258
#define VIM_ACTFIQ_VALID_VAL_FALSE (0x0U)
259
260
#define VIM_ACTFIQ_PRI_MASK (0x000F0000U)
261
#define VIM_ACTFIQ_PRI_SHIFT (0x00000010U)
262
#define VIM_ACTFIQ_PRI_RESETVAL (0x00000000U)
263
#define VIM_ACTFIQ_PRI_MAX (BIT_MASK(4))
264
265
#define VIM_ACTFIQ_NUM_MASK (BIT_MASK(10))
266
#define VIM_ACTFIQ_NUM_SHIFT (0x00000000U)
267
#define VIM_ACTFIQ_NUM_RESETVAL (0x00000000U)
268
#define VIM_ACTFIQ_NUM_MAX (BIT_MASK(10))
269
270
#define VIM_ACTFIQ_RESETVAL (0x00000000U)
271
272
/* DEDVEC */
273
274
#define VIM_DEDVEC_ADDR_MASK (0xFFFFFFFCU)
275
#define VIM_DEDVEC_ADDR_SHIFT (0x00000002U)
276
#define VIM_DEDVEC_ADDR_RESETVAL (0x00000000U)
277
#define VIM_DEDVEC_ADDR_MAX (BIT_MASK(30))
278
279
#define VIM_DEDVEC_RESETVAL (0x00000000U)
280
281
/*
282
* VIM Driver Interface Functions
283
*/
284
290
unsigned
int
z_vim_irq_get_active(
void
);
291
297
void
z_vim_irq_eoi(
unsigned
int
irq);
298
302
void
z_vim_irq_init(
void
);
303
311
void
z_vim_irq_priority_set(
unsigned
int
irq,
unsigned
int
prio,
uint32_t
flags
);
312
318
void
z_vim_irq_enable(
unsigned
int
irq);
319
325
void
z_vim_irq_disable(
unsigned
int
irq);
326
335
int
z_vim_irq_is_enabled(
unsigned
int
irq);
336
342
void
z_vim_arm_enter_irq(
int
irq);
343
344
#endif
/* ZEPHYR_DRIVERS_INTC_VIM_H_ */
devicetree.h
Devicetree main header.
flags
flags
Definition
parser.h:97
stdint.h
uint32_t
__UINT32_TYPE__ uint32_t
Definition
stdint.h:90
ti-vim.h
util_macro.h
Macro utilities.
zephyr
drivers
interrupt_controller
intc_vim.h
Generated on
for Zephyr API Documentation by
1.14.0