blob: 2dbd9683a1a525a584a75e5bf842edb9829c97b3 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
|
/*
* Interrupt handler Header file
*
* Copyright (c) 2004 by Jay Monkman <jtm@lopingdog.com>
*
* The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at
*
* http://www.OARcorp.com/rtems/license.html.
*
*
* $Id$
*/
#ifndef __IRQ_H__
#define __IRQ_H__
#ifdef __cplusplus
extern "C" {
#endif
/* define that can be useful (the values are just examples) */
#ifndef __asm__
/*
* Include some preprocessor value also used by assember code
*/
#include <rtems.h>
#include <mc9328mxl.h>
extern void default_int_handler();
/***********************************************************************
* Constants
**********************************************************************/
/* possible interrupt sources on the AT91RM9200 */
#define BSP_INT_UART3_PFERR 0
#define BSP_INT_UART3_RTS 1
#define BSP_INT_UART3_DTR 2
#define BSP_INT_UART3_UARTC 3
#define BSP_INT_UART3_TX 4
#define BSP_INT_PEN_UP 5
#define BSP_INT_CSI 6
#define BSP_INT_MMA_MAC 7
#define BSP_INT_MMA 8
#define BSP_INT_COMP 9
#define BSP_INT_MSIRQ 10
#define BSP_INT_GPIO_PORTA 11
#define BSP_INT_GPIO_PORTB 12
#define BSP_INT_GPIO_PORTC 13
#define BSP_INT_LCDC 14
#define BSP_INT_SIM_IRQ 15
#define BSP_INT_SIM_DATA 16
#define BSP_INT_RTC 17
#define BSP_INT_RTC_SAM 18
#define BSP_INT_UART2_PFERR 19
#define BSP_INT_UART2_RTS 20
#define BSP_INT_UART2_DTR 21
#define BSP_INT_UART2_UARTC 22
#define BSP_INT_UART2_TX 23
#define BSP_INT_UART2_RX 24
#define BSP_INT_UART1_PFERR 25
#define BSP_INT_UART1_RTS 26
#define BSP_INT_UART1_DTR 27
#define BSP_INT_UART1_UARTC 28
#define BSP_INT_UART1_TX 29
#define BSP_INT_UART1_RX 30
#define BSP_INT_RES31 31
#define BSP_INT_RES32 32
#define BSP_INT_PEN_DATA 33
#define BSP_INT_PWM 34
#define BSP_INT_MMC_IRQ 35
#define BSP_INT_SSI2_TX 36
#define BSP_INT_SSI2_RX 37
#define BSP_INT_SSI2_ERR 38
#define BSP_INT_I2C 39
#define BSP_INT_SPI2 40
#define BSP_INT_SPI1 41
#define BSP_INT_SSI_TX 42
#define BSP_INT_SSI_TX_ERR 43
#define BSP_INT_SSI_RX 44
#define BSP_INT_SSI_RX_ERR 45
#define BSP_INT_TOUCH 46
#define BSP_INT_USBD0 47
#define BSP_INT_USBD1 48
#define BSP_INT_USBD2 49
#define BSP_INT_USBD3 50
#define BSP_INT_USBD4 51
#define BSP_INT_USBD5 52
#define BSP_INT_USBD6 53
#define BSP_INT_UART3_RX 54
#define BSP_INT_BTSYS 55
#define BSP_INT_BTTIM 56
#define BSP_INT_BTWUI 57
#define BSP_INT_TIMER2 58
#define BSP_INT_TIMER1 59
#define BSP_INT_DMA_ERR 60
#define BSP_INT_DMA 61
#define BSP_INT_GPIO_PORTD 62
#define BSP_INT_WDT 63
#define BSP_MAX_INT 64
typedef unsigned char rtems_irq_level;
typedef unsigned char rtems_irq_trigger;
typedef unsigned int rtems_irq_number;
struct __rtems_irq_connect_data__; /* forward declaratiuon */
typedef void (*rtems_irq_hdl) (void);
typedef void (*rtems_irq_enable) (const struct __rtems_irq_connect_data__*);
typedef void (*rtems_irq_disable) (const struct __rtems_irq_connect_data__*);
typedef int (*rtems_irq_is_enabled)(const struct __rtems_irq_connect_data__*);
extern rtems_irq_hdl bsp_vector_table[BSP_MAX_INT];
#define VECTOR_TABLE bsp_vector_table
typedef struct __rtems_irq_connect_data__ {
/* IRQ line */
rtems_irq_number name;
/* Handler */
rtems_irq_hdl hdl;
/* function for enabling interrupts at device level. */
rtems_irq_enable on;
/* function for disabling interrupts at device level. */
rtems_irq_disable off;
/* Function to test if interrupt is enabled */
rtems_irq_is_enabled isOn;
/* priority level of interrupt */
rtems_irq_level irqLevel;
/* Trigger method (rising/falling edge or high/low level) */
rtems_irq_trigger irqTrigger;
} rtems_irq_connect_data;
/*
* function to initialize the interrupt for a specific BSP
*/
void BSP_rtems_irq_mngt_init();
/*
* function to connect a particular irq handler.
*/
int BSP_install_rtems_irq_handler (const rtems_irq_connect_data*);
/*
* function to get the current RTEMS irq handler for ptr->name.
*/
int BSP_get_current_rtems_irq_handler (rtems_irq_connect_data* ptr);
/*
* function to disconnect the RTEMS irq handler for ptr->name.
*/
int BSP_remove_rtems_irq_handler (const rtems_irq_connect_data*);
#endif /* __asm__ */
#ifdef __cplusplus
}
#endif
#endif /* __IRQ_H__ */
|