source: rtems/bsps/m68k/genmcf548x/include/bsp/irq.h @ e518323

Last change on this file since e518323 was e518323, checked in by Sebastian Huber <sebastian.huber@…>, on 06/25/21 at 13:52:16

bsps/irq: Add rtems_interrupt_entry_install()

Add rtems_interrupt_entry_remove(). Split up irq-generic.c into several files.
In particular, place all functions which use dynamic memory into their own
file.

Add optional macros to let the BSP customize the vector installation after
installing the first entry and the vector removal before removing the last
entry:

  • bsp_interrupt_vector_install()
  • bsp_interrupt_vector_remove()

Use these new customization options in the m68k/genmcf548x BSP so re-use the
generic interrupt controller support.

Update #3269.

  • Property mode set to 100644
File size: 2.9 KB
Line 
1/**
2 * @file
3 *
4 * @ingroup genmcf548x_interrupt
5 *
6 * @brief Interrupt definitions.
7 */
8
9/*
10 * Copyright (c) 2013 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_M68K_MCF548X_IRQ_H
24#define LIBBSP_M68K_MCF548X_IRQ_H
25
26#include <rtems.h>
27#include <rtems/irq.h>
28#include <rtems/irq-extension.h>
29
30/**
31 * @defgroup genmcf548x_interrupt Interrupt Support
32 *
33 * @ingroup RTEMSBSPsM68kGenMCF548X
34 *
35 * @brief Interrupt support.
36 */
37
38
39#define MCF548X_IRQ_EPORT_EPF1 1
40#define MCF548X_IRQ_EPORT_EPF2 2
41#define MCF548X_IRQ_EPORT_EPF3 3
42#define MCF548X_IRQ_EPORT_EPF4 4
43#define MCF548X_IRQ_EPORT_EPF5 5
44#define MCF548X_IRQ_EPORT_EPF6 6
45#define MCF548X_IRQ_EPORT_EPF7 7
46#define MCF548X_IRQ_USB_EP0ISR 15
47#define MCF548X_IRQ_USB_EP1ISR 16
48#define MCF548X_IRQ_USB_EP2ISR 17
49#define MCF548X_IRQ_USB_EP3ISR 18
50#define MCF548X_IRQ_USB_EP4ISR 19
51#define MCF548X_IRQ_USB_EP5ISR 20
52#define MCF548X_IRQ_USB_EP6ISR 21
53#define MCF548X_IRQ_USB_ISR 22
54#define MCF548X_IRQ_USB_AISR 23
55#define MCF548X_IRQ_DSPI_RFOF_TFUF 25
56#define MCF548X_IRQ_DSPI_RFOF 26
57#define MCF548X_IRQ_DSPI_RFDF 27
58#define MCF548X_IRQ_DSPI_TFUF 28
59#define MCF548X_IRQ_DSPI_TCF 29
60#define MCF548X_IRQ_DSPI_TFFF 30
61#define MCF548X_IRQ_DSPI_EOQF 31
62#define MCF548X_IRQ_DSPI 25
63#define MCF548X_IRQ_PSC3 32
64#define MCF548X_IRQ_PSC2 33
65#define MCF548X_IRQ_PSC1 34
66#define MCF548X_IRQ_PSC0 35
67#define MCF548X_IRQ_PSC(i) (35 - (i))
68#define MCF548X_IRQ_COMMTIM 36
69#define MCF548X_IRQ_SEC 37
70#define MCF548X_IRQ_FEC1 38
71#define MCF548X_IRQ_FEC0 39
72#define MCF548X_IRQ_FEC(i) (39 - (i))
73#define MCF548X_IRQ_I2C 40
74#define MCF548X_IRQ_PCIARB 41
75#define MCF548X_IRQ_CBPCI 42
76#define MCF548X_IRQ_XLBPCI 43
77#define MCF548X_IRQ_XLBARB 47
78#define MCF548X_IRQ_DMA 48
79#define MCF548X_IRQ_CAN0_ERROR 49
80#define MCF548X_IRQ_CAN0_BUSOFF 50
81#define MCF548X_IRQ_CAN0_MBOR 51
82#define MCF548X_IRQ_SLT1 53
83#define MCF548X_IRQ_SLT0 54
84#define MCF548X_IRQ_CAN1_ERROR 55
85#define MCF548X_IRQ_CAN1_BUSOFF 56
86#define MCF548X_IRQ_CAN1_MBOR 57
87#define MCF548X_IRQ_GPT3 59
88#define MCF548X_IRQ_GPT2 60
89#define MCF548X_IRQ_GPT1 61
90#define MCF548X_IRQ_GPT0 62
91
92#define BSP_INTERRUPT_VECTOR_COUNT 64
93
94#define BSP_INTERRUPT_CUSTOM_VALID_VECTOR
95
96static inline bool bsp_interrupt_is_valid_vector(rtems_vector_number vector)
97{
98  return 1 <= vector
99    && vector < (rtems_vector_number) BSP_INTERRUPT_VECTOR_COUNT;
100}
101
102void mcf548x_interrupt_vector_install(rtems_vector_number vector);
103
104void mcf548x_interrupt_vector_remove(rtems_vector_number vector);
105
106#define bsp_interrupt_vector_install(v) mcf548x_interrupt_vector_install(v)
107
108#define bsp_interrupt_vector_remove(v) mcf548x_interrupt_vector_remove(v)
109
110#endif /* LIBBSP_M68K_MCF548X_IRQ_H */
Note: See TracBrowser for help on using the repository browser.