Zephyr API Documentation
4.3.99
A Scalable Open Source RTOS
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
#define VIM_GRP_RAW_STS_MASK (BIT64_MASK(32))
51
52
/* STS */
53
#define VIM_GRP_STS_MSK_MASK (BIT64_MASK(32))
54
55
/* INTR_EN_SET */
56
#define VIM_GRP_INTR_EN_SET_MSK_MASK (BIT64_MASK(32))
57
58
/* INTR_EN_CLR */
59
#define VIM_GRP_INTR_EN_CLR_MSK_MASK (BIT64_MASK(32))
60
61
/* IRQSTS */
62
#define VIM_GRP_IRQSTS_MSK_MASK (BIT64_MASK(32))
63
64
/* FIQSTS */
65
#define VIM_GRP_FIQSTS_MSK_MASK (BIT64_MASK(32))
66
67
/* INTMAP */
68
#define VIM_GRP_INTMAP_MSK_MASK (BIT64_MASK(32))
69
70
/* INTTYPE */
71
#define VIM_GRP_INTTYPE_MSK_MASK (BIT64_MASK(32))
72
73
/* INT */
74
#define VIM_PRI_INT_VAL_MASK (BIT_MASK(4))
75
76
/* INT */
77
#define VIM_VEC_INT_VAL_MASK (0xFFFFFFFCU)
78
79
/* INFO */
80
#define VIM_INFO_INTERRUPTS_MASK (BIT_MASK(11))
81
82
/* PRIIRQ */
83
#define VIM_PRIIRQ_VALID_MASK (0x80000000U)
84
#define VIM_PRIIRQ_VALID_VAL_TRUE (0x1U)
85
#define VIM_PRIIRQ_VALID_VAL_FALSE (0x0U)
86
#define VIM_PRIIRQ_PRI_MASK (0x000F0000U)
87
#define VIM_PRIIRQ_NUM_MASK (BIT_MASK(10))
88
89
/* PRIFIQ */
90
#define VIM_PRIFIQ_VALID_MASK (0x80000000U)
91
#define VIM_PRIFIQ_VALID_VAL_TRUE (0x1U)
92
#define VIM_PRIFIQ_VALID_VAL_FALSE (0x0U)
93
#define VIM_PRIFIQ_PRI_MASK (0x000F0000U)
94
#define VIM_PRIFIQ_NUM_MASK (BIT_MASK(10))
95
96
/* IRQGSTS */
97
#define VIM_IRQGSTS_STS_MASK (BIT64_MASK(32))
98
99
/* FIQGSTS */
100
#define VIM_FIQGSTS_STS_MASK (BIT64_MASK(32))
101
102
/* IRQVEC */
103
#define VIM_IRQVEC_ADDR_MASK (0xFFFFFFFCU)
104
105
/* FIQVEC */
106
#define VIM_FIQVEC_ADDR_MASK (0xFFFFFFFCU)
107
108
/* ACTIRQ */
109
#define VIM_ACTIRQ_VALID_MASK (0x80000000U)
110
#define VIM_ACTIRQ_VALID_VAL_TRUE (0x1U)
111
#define VIM_ACTIRQ_VALID_VAL_FALSE (0x0U)
112
#define VIM_ACTIRQ_PRI_MASK (0x000F0000U)
113
#define VIM_ACTIRQ_NUM_MASK (BIT_MASK(10))
114
115
/* ACTFIQ */
116
#define VIM_ACTFIQ_VALID_MASK (0x80000000U)
117
#define VIM_ACTFIQ_VALID_VAL_TRUE (0x1U)
118
#define VIM_ACTFIQ_VALID_VAL_FALSE (0x0U)
119
#define VIM_ACTFIQ_PRI_MASK (0x000F0000U)
120
#define VIM_ACTFIQ_NUM_MASK (BIT_MASK(10))
121
122
/* DEDVEC */
123
#define VIM_DEDVEC_ADDR_MASK (0xFFFFFFFCU)
124
125
/*
126
* VIM Driver Interface Functions
127
*/
128
134
unsigned
int
z_vim_irq_get_active(
void
);
135
141
void
z_vim_irq_eoi(
unsigned
int
irq);
142
146
void
z_vim_irq_init(
void
);
147
155
void
z_vim_irq_priority_set(
unsigned
int
irq,
unsigned
int
prio,
uint32_t
flags
);
156
162
void
z_vim_irq_enable(
unsigned
int
irq);
163
169
void
z_vim_irq_disable(
unsigned
int
irq);
170
179
int
z_vim_irq_is_enabled(
unsigned
int
irq);
180
186
void
z_vim_arm_enter_irq(
int
irq);
187
188
#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.15.0