source: rtems/c/src/lib/libbsp/powerpc/qoriq/include/irq.h @ e19da87a

5
Last change on this file since e19da87a was e19da87a, checked in by Sebastian Huber <sebastian.huber@…>, on 07/12/17 at 08:55:59

bsps: Include missing header file

Update #3071.

  • Property mode set to 100644
File size: 10.6 KB
Line 
1/**
2 * @file
3 *
4 * @ingroup QorIQInterrupt
5 *
6 * @brief Interrupt API.
7 */
8
9/*
10 * Copyright (c) 2010-2015 embedded brains GmbH.  All rights reserved.
11 *
12 *  embedded brains GmbH
13 *  Dornierstr. 4
14 *  82178 Puchheim
15 *  Germany
16 *  <rtems@embedded-brains.de>
17 *
18 * The license and distribution terms for this file may be
19 * found in the file LICENSE in this distribution or at
20 * http://www.rtems.org/license/LICENSE.
21 */
22
23#ifndef LIBBSP_POWERPC_QORIQ_IRQ_H
24#define LIBBSP_POWERPC_QORIQ_IRQ_H
25
26#include <bsp.h>
27#include <rtems/irq.h>
28#include <rtems/irq-extension.h>
29#include <rtems/score/processormask.h>
30
31#ifdef __cplusplus
32extern "C" {
33#endif /* __cplusplus */
34
35#define QORIQ_IRQ_ERROR 0
36
37#if QORIQ_CHIP_IS_T_VARIANT(QORIQ_CHIP_VARIANT)
38
39#define QORIQ_IRQ_PCI_EXPRESS_1 4
40#define QORIQ_IRQ_PCI_EXPRESS_2 5
41#define QORIQ_IRQ_PCI_EXPRESS_3 6
42#define QORIQ_IRQ_PCI_EXPRESS_4 7
43#define QORIQ_IRQ_PAMU 8
44#define QORIQ_IRQ_IFC 9
45#define QORIQ_IRQ_DMA_CHANNEL_1_1 12
46#define QORIQ_IRQ_DMA_CHANNEL_1_2 13
47#define QORIQ_IRQ_DMA_CHANNEL_1_3 14
48#define QORIQ_IRQ_DMA_CHANNEL_1_4 15
49#define QORIQ_IRQ_DMA_CHANNEL_2_1 16
50#define QORIQ_IRQ_DMA_CHANNEL_2_2 17
51#define QORIQ_IRQ_DMA_CHANNEL_2_3 18
52#define QORIQ_IRQ_DMA_CHANNEL_2_4 19
53#define QORIQ_IRQ_DUART_1 20
54#define QORIQ_IRQ_DUART_2 21
55#define QORIQ_IRQ_DUARL_I2C_1 22
56#define QORIQ_IRQ_DUARL_I2C_2 23
57#define QORIQ_IRQ_PCI_EXPRESS_1_INTA 24
58#define QORIQ_IRQ_PCI_EXPRESS_2_INTA 25
59#define QORIQ_IRQ_PCI_EXPRESS_3_INTA 26
60#define QORIQ_IRQ_PCI_EXPRESS_4_INTA 27
61#define QORIQ_IRQ_USB_1 28
62#define QORIQ_IRQ_USB_2 29
63#define QORIQ_IRQ_ESDHC 32
64#define QORIQ_IRQ_PERF_MON 36
65#define QORIQ_IRQ_ESPI 37
66#define QORIQ_IRQ_GPIO_2 38
67#define QORIQ_IRQ_GPIO_1 39
68#define QORIQ_IRQ_SATA_1 52
69#define QORIQ_IRQ_SATA_2 53
70#define QORIQ_IRQ_DMA_CHANNEL_1_5 60
71#define QORIQ_IRQ_DMA_CHANNEL_1_6 61
72#define QORIQ_IRQ_DMA_CHANNEL_1_7 62
73#define QORIQ_IRQ_DMA_CHANNEL_1_8 63
74#define QORIQ_IRQ_DMA_CHANNEL_2_5 64
75#define QORIQ_IRQ_DMA_CHANNEL_2_6 65
76#define QORIQ_IRQ_DMA_CHANNEL_2_7 66
77#define QORIQ_IRQ_DMA_CHANNEL_2_8 67
78#define QORIQ_IRQ_EVENT_PROC_UNIT_1 68
79#define QORIQ_IRQ_EVENT_PROC_UNIT_2 69
80#define QORIQ_IRQ_GPIO_3 70
81#define QORIQ_IRQ_GPIO_4 71
82#define QORIQ_IRQ_SEC_5_2_JOB_QUEUE_1 72
83#define QORIQ_IRQ_SEC_5_2_JOB_QUEUE_2 73
84#define QORIQ_IRQ_SEC_5_2_JOB_QUEUE_3 74
85#define QORIQ_IRQ_SEC_5_2_JOB_QUEUE_4 75
86#define QORIQ_IRQ_SEC_5_2_GLOBAL_ERROR 76
87#define QORIQ_IRQ_SEC_MON 77
88#define QORIQ_IRQ_EVENT_PROC_UNIT_3 78
89#define QORIQ_IRQ_EVENT_PROC_UNIT_4 79
90#define QORIQ_IRQ_FRAME_MGR 80
91#define QORIQ_IRQ_MDIO_1 84
92#define QORIQ_IRQ_MDIO_2 85
93#define QORIQ_IRQ_QUEUE_MGR_PORTAL_0 88
94#define QORIQ_IRQ_BUFFER_MGR_PORTAL_0 89
95#define QORIQ_IRQ_QUEUE_MGR_PORTAL_1 90
96#define QORIQ_IRQ_BUFFER_MGR_PORTAL_1 91
97#define QORIQ_IRQ_QUEUE_MGR_PORTAL_2 92
98#define QORIQ_IRQ_BUFFER_MGR_PORTAL_2 93
99#define QORIQ_IRQ_QUEUE_MGR_PORTAL_3 94
100#define QORIQ_IRQ_BUFFER_MGR_PORTAL_3 95
101#define QORIQ_IRQ_QUEUE_MGR_PORTAL_4 96
102#define QORIQ_IRQ_BUFFER_MGR_PORTAL_4 97
103#define QORIQ_IRQ_QUEUE_MGR_PORTAL_5 98
104#define QORIQ_IRQ_BUFFER_MGR_PORTAL_5 99
105#define QORIQ_IRQ_QUEUE_MGR_PORTAL_6 100
106#define QORIQ_IRQ_BUFFER_MGR_PORTAL_6 101
107#define QORIQ_IRQ_QUEUE_MGR_PORTAL_7 102
108#define QORIQ_IRQ_BUFFER_MGR_PORTAL_7 103
109#define QORIQ_IRQ_QUEUE_MGR_PORTAL_8 104
110#define QORIQ_IRQ_BUFFER_MGR_PORTAL_8 105
111#define QORIQ_IRQ_QUEUE_MGR_PORTAL_9 106
112#define QORIQ_IRQ_BUFFER_MGR_PORTAL_9 107
113#define QORIQ_IRQ_QUEUE_MGR_PORTAL_10 109
114#define QORIQ_IRQ_BUFFER_MGR_PORTAL_10 109
115#define QORIQ_IRQ_QUEUE_MGR_PORTAL_11 110
116#define QORIQ_IRQ_BUFFER_MGR_PORTAL_11 111
117#define QORIQ_IRQ_QUEUE_MGR_PORTAL_12 112
118#define QORIQ_IRQ_BUFFER_MGR_PORTAL_12 113
119#define QORIQ_IRQ_QUEUE_MGR_PORTAL_13 114
120#define QORIQ_IRQ_BUFFER_MGR_PORTAL_13 115
121#define QORIQ_IRQ_QUEUE_MGR_PORTAL_14 116
122#define QORIQ_IRQ_BUFFER_MGR_PORTAL_14 117
123#define QORIQ_IRQ_QUEUE_MGR_PORTAL_15 118
124#define QORIQ_IRQ_BUFFER_MGR_PORTAL_15 119
125#define QORIQ_IRQ_QUEUE_MGR_PORTAL_16 120
126#define QORIQ_IRQ_BUFFER_MGR_PORTAL_16 121
127#define QORIQ_IRQ_QUEUE_MGR_PORTAL_17 122
128#define QORIQ_IRQ_BUFFER_MGR_PORTAL_17 123
129#define QORIQ_IRQ_DMA_CHANNEL_3_1 240
130#define QORIQ_IRQ_DMA_CHANNEL_3_2 241
131#define QORIQ_IRQ_DMA_CHANNEL_3_3 242
132#define QORIQ_IRQ_DMA_CHANNEL_3_4 243
133#define QORIQ_IRQ_DMA_CHANNEL_3_5 244
134#define QORIQ_IRQ_DMA_CHANNEL_3_6 245
135#define QORIQ_IRQ_DMA_CHANNEL_3_7 246
136#define QORIQ_IRQ_DMA_CHANNEL_3_8 247
137
138#define QORIQ_IRQ_EXT_BASE 256
139
140#else /* QORIQ_CHIP_VARIANT */
141
142/**
143 * @defgroup QoriqInterruptP1020 QorIQ - P1020 Internal Interrupt Sources
144 *
145 * @ingroup QorIQInterrupt
146 *
147 * @brief P1020 internal interrupt sources.
148 *
149 * @{
150 */
151
152#define QORIQ_IRQ_ETSEC_TX_1_GROUP_1 1
153#define QORIQ_IRQ_ETSEC_RX_1_GROUP_1 2
154#define QORIQ_IRQ_ETSEC_ER_1_GROUP_1 8
155#define QORIQ_IRQ_ETSEC_TX_3_GROUP_1 9
156#define QORIQ_IRQ_ETSEC_RX_3_GROUP_1 10
157#define QORIQ_IRQ_ETSEC_ER_3_GROUP_1 11
158#define QORIQ_IRQ_ETSEC_TX_2_GROUP_1 35
159#define QORIQ_IRQ_ETSEC_RX_2_GROUP_1 36
160#define QORIQ_IRQ_TDM 46
161#define QORIQ_IRQ_TDM_ERROR 47
162#define QORIQ_IRQ_ETSEC_ER_2_GROUP_1 51
163
164/** @} */
165
166/**
167 * @defgroup QoriqInterruptP2020 QorIQ - P2020 Internal Interrupt Sources
168 *
169 * @ingroup QorIQInterrupt
170 *
171 * @brief P2020 internal interrupt sources.
172 *
173 * @{
174 */
175
176#define QORIQ_IRQ_L2_CACHE 0
177#define QORIQ_IRQ_ECM 1
178#define QORIQ_IRQ_DDR_CONTROLLER 2
179#define QORIQ_IRQ_PCI_EXPRESS_3 8
180#define QORIQ_IRQ_PCI_EXPRESS_2 9
181#define QORIQ_IRQ_PCI_EXPRESS_1 10
182#define QORIQ_IRQ_SRIO_ERR_WRT_1_2 32
183#define QORIQ_IRQ_SRIO_OUT_DOORBELL_1 33
184#define QORIQ_IRQ_SRIO_IN_DOORBELL_1 34
185#define QORIQ_IRQ_SRIO_OUT_MSG_1 37
186#define QORIQ_IRQ_SRIO_IN_MSG_1 38
187#define QORIQ_IRQ_SRIO_OUT_MSG_2 39
188#define QORIQ_IRQ_SRIO_IN_MSG_2 40
189
190/** @} */
191
192/**
193 * @defgroup QoriqInterruptAll QorIQ - Internal Interrupt Sources
194 *
195 * @ingroup QorIQInterrupt
196 *
197 * @brief Internal interrupt sources.
198 *
199 * @{
200 */
201
202#define QORIQ_IRQ_ELBC 3
203#define QORIQ_IRQ_DMA_CHANNEL_1_1 4
204#define QORIQ_IRQ_DMA_CHANNEL_2_1 5
205#define QORIQ_IRQ_DMA_CHANNEL_3_1 6
206#define QORIQ_IRQ_DMA_CHANNEL_4_1 7
207#define QORIQ_IRQ_USB_1 12
208#define QORIQ_IRQ_ETSEC_TX_1 13
209#define QORIQ_IRQ_ETSEC_RX_1 14
210#define QORIQ_IRQ_ETSEC_TX_3 15
211#define QORIQ_IRQ_ETSEC_RX_3 16
212#define QORIQ_IRQ_ETSEC_ER_3 17
213#define QORIQ_IRQ_ETSEC_ER_1 18
214#define QORIQ_IRQ_ETSEC_TX_2 19
215#define QORIQ_IRQ_ETSEC_RX_2 20
216#define QORIQ_IRQ_ETSEC_ER_2 24
217#define QORIQ_IRQ_DUART_1 26
218#define QORIQ_IRQ_I2C 27
219#define QORIQ_IRQ_PERFORMANCE_MONITOR 28
220#define QORIQ_IRQ_SECURITY_1 29
221#define QORIQ_IRQ_USB_2 30
222#define QORIQ_IRQ_GPIO 31
223#define QORIQ_IRQ_SECURITY_2 42
224#define QORIQ_IRQ_ESPI 43
225#define QORIQ_IRQ_ETSEC_IEEE_1588_1 52
226#define QORIQ_IRQ_ETSEC_IEEE_1588_2 53
227#define QORIQ_IRQ_ETSEC_IEEE_1588_3 54
228#define QORIQ_IRQ_ESDHC 56
229#define QORIQ_IRQ_DMA_CHANNEL_1_2 60
230#define QORIQ_IRQ_DMA_CHANNEL_2_2 61
231#define QORIQ_IRQ_DMA_CHANNEL_3_2 62
232#define QORIQ_IRQ_DMA_CHANNEL_4_2 63
233
234/** @} */
235
236#define QORIQ_IRQ_EXT_BASE 64
237
238#endif /* QORIQ_CHIP_VARIANT */
239
240/**
241 * @defgroup QoriqInterruptExternal QorIQ - External Interrupt Sources
242 *
243 * @ingroup QorIQInterrupt
244 *
245 * @brief External interrupt sources.
246 *
247 * @{
248 */
249
250#define QORIQ_IRQ_EXT_0 (QORIQ_IRQ_EXT_BASE + 0)
251#define QORIQ_IRQ_EXT_1 (QORIQ_IRQ_EXT_BASE + 1)
252#define QORIQ_IRQ_EXT_2 (QORIQ_IRQ_EXT_BASE + 2)
253#define QORIQ_IRQ_EXT_3 (QORIQ_IRQ_EXT_BASE + 3)
254#define QORIQ_IRQ_EXT_4 (QORIQ_IRQ_EXT_BASE + 4)
255#define QORIQ_IRQ_EXT_5 (QORIQ_IRQ_EXT_BASE + 5)
256#define QORIQ_IRQ_EXT_6 (QORIQ_IRQ_EXT_BASE + 6)
257#define QORIQ_IRQ_EXT_7 (QORIQ_IRQ_EXT_BASE + 7)
258#define QORIQ_IRQ_EXT_8 (QORIQ_IRQ_EXT_BASE + 8)
259#define QORIQ_IRQ_EXT_9 (QORIQ_IRQ_EXT_BASE + 9)
260#define QORIQ_IRQ_EXT_10 (QORIQ_IRQ_EXT_BASE + 10)
261#define QORIQ_IRQ_EXT_11 (QORIQ_IRQ_EXT_BASE + 11)
262
263/** @} */
264
265/**
266 * @defgroup QoriqInterruptIPI QorIQ - Interprocessor Interrupts
267 *
268 * @ingroup QorIQInterrupt
269 *
270 * @brief Interprocessor interrupts.
271 *
272 * @{
273 */
274
275#define QORIQ_IRQ_IPI_BASE (QORIQ_IRQ_EXT_11 + 1)
276#define QORIQ_IRQ_IPI_0 (QORIQ_IRQ_IPI_BASE + 0)
277#define QORIQ_IRQ_IPI_1 (QORIQ_IRQ_IPI_BASE + 1)
278#define QORIQ_IRQ_IPI_2 (QORIQ_IRQ_IPI_BASE + 2)
279#define QORIQ_IRQ_IPI_3 (QORIQ_IRQ_IPI_BASE + 3)
280
281/** @} */
282
283/**
284 * @defgroup QoriqInterruptIPI QorIQ - Message Interrupts
285 *
286 * @ingroup QorIQInterrupt
287 *
288 * @brief Message interrupts.
289 *
290 * @{
291 */
292
293#define QORIQ_IRQ_MI_BASE (QORIQ_IRQ_IPI_3 + 1)
294#define QORIQ_IRQ_MI_0 (QORIQ_IRQ_MI_BASE + 0)
295#define QORIQ_IRQ_MI_1 (QORIQ_IRQ_MI_BASE + 1)
296#define QORIQ_IRQ_MI_2 (QORIQ_IRQ_MI_BASE + 2)
297#define QORIQ_IRQ_MI_3 (QORIQ_IRQ_MI_BASE + 3)
298#define QORIQ_IRQ_MI_4 (QORIQ_IRQ_MI_BASE + 4)
299#define QORIQ_IRQ_MI_5 (QORIQ_IRQ_MI_BASE + 5)
300#define QORIQ_IRQ_MI_6 (QORIQ_IRQ_MI_BASE + 6)
301#define QORIQ_IRQ_MI_7 (QORIQ_IRQ_MI_BASE + 7)
302
303/** @} */
304
305/**
306 * @defgroup QoriqInterruptIPI QorIQ - Shared Message Signaled Interrupts
307 *
308 * @ingroup QorIQInterrupt
309 *
310 * @brief Shared message signaled interrupts.
311 *
312 * @{
313 */
314
315#define QORIQ_IRQ_MSI_BASE (QORIQ_IRQ_MI_7 + 1)
316#define QORIQ_IRQ_MSI_0 (QORIQ_IRQ_MSI_BASE + 0)
317#define QORIQ_IRQ_MSI_1 (QORIQ_IRQ_MSI_BASE + 1)
318#define QORIQ_IRQ_MSI_2 (QORIQ_IRQ_MSI_BASE + 2)
319#define QORIQ_IRQ_MSI_3 (QORIQ_IRQ_MSI_BASE + 3)
320#define QORIQ_IRQ_MSI_4 (QORIQ_IRQ_MSI_BASE + 4)
321#define QORIQ_IRQ_MSI_5 (QORIQ_IRQ_MSI_BASE + 5)
322#define QORIQ_IRQ_MSI_6 (QORIQ_IRQ_MSI_BASE + 6)
323#define QORIQ_IRQ_MSI_7 (QORIQ_IRQ_MSI_BASE + 7)
324
325/** @} */
326
327/**
328 * @defgroup QoriqInterruptIPI QorIQ - Global Timer Interrupts
329 *
330 * @ingroup QorIQInterrupt
331 *
332 * @brief Global Timer interrupts.
333 *
334 * @{
335 */
336
337#define QORIQ_IRQ_GT_BASE (QORIQ_IRQ_MSI_7 + 1)
338#define QORIQ_IRQ_GT_A_0 (QORIQ_IRQ_GT_BASE + 0)
339#define QORIQ_IRQ_GT_A_1 (QORIQ_IRQ_GT_BASE + 1)
340#define QORIQ_IRQ_GT_A_2 (QORIQ_IRQ_GT_BASE + 2)
341#define QORIQ_IRQ_GT_A_3 (QORIQ_IRQ_GT_BASE + 3)
342#define QORIQ_IRQ_GT_B_0 (QORIQ_IRQ_GT_BASE + 4)
343#define QORIQ_IRQ_GT_B_1 (QORIQ_IRQ_GT_BASE + 5)
344#define QORIQ_IRQ_GT_B_2 (QORIQ_IRQ_GT_BASE + 6)
345#define QORIQ_IRQ_GT_B_3 (QORIQ_IRQ_GT_BASE + 7)
346
347/** @} */
348
349/**
350 * @defgroup QorIQInterrupt QorIQ - Interrupt Support
351 *
352 * @ingroup QorIQ
353 *
354 * @brief Interrupt support.
355 *
356 * @{
357 */
358
359#define BSP_INTERRUPT_VECTOR_MIN 0
360#define BSP_INTERRUPT_VECTOR_MAX QORIQ_IRQ_GT_B_3
361
362#define QORIQ_PIC_PRIORITY_LOWEST 1
363#define QORIQ_PIC_PRIORITY_HIGHEST 15
364#define QORIQ_PIC_PRIORITY_DISABLED 0
365#define QORIQ_PIC_PRIORITY_INVALID (QORIQ_PIC_PRIORITY_HIGHEST + 1)
366#define QORIQ_PIC_PRIORITY_DEFAULT (QORIQ_PIC_PRIORITY_LOWEST + 1)
367#define QORIQ_PIC_PRIORITY_IS_VALID(p) \
368  ((p) >= QORIQ_PIC_PRIORITY_DISABLED && (p) <= QORIQ_PIC_PRIORITY_HIGHEST)
369
370rtems_status_code qoriq_pic_set_priority(
371  rtems_vector_number vector,
372  int new_priority,
373  int *old_priority
374);
375
376void bsp_interrupt_set_affinity(
377  rtems_vector_number vector,
378  const Processor_mask *affinity
379);
380
381void bsp_interrupt_get_affinity(
382  rtems_vector_number vector,
383  Processor_mask *affinity
384);
385
386/** @} */
387
388#ifdef __cplusplus
389}
390#endif /* __cplusplus */
391
392#endif /* LIBBSP_POWERPC_QORIQ_IRQ_H */
Note: See TracBrowser for help on using the repository browser.