]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M4F_CEC1302_Keil/peripheral_library/interrupt/interrupt.h
Kernel source code:
[freertos] / FreeRTOS / Demo / CORTEX_M4F_CEC1302_Keil / peripheral_library / interrupt / interrupt.h
1 /****************************************************************************\r
2 * © 2013 Microchip Technology Inc. and its subsidiaries.\r
3 * You may use this software and any derivatives exclusively with\r
4 * Microchip products.\r
5 * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS".\r
6 * NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE,\r
7 * INCLUDING ANY IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY,\r
8 * AND FITNESS FOR A PARTICULAR PURPOSE, OR ITS INTERACTION WITH MICROCHIP\r
9 * PRODUCTS, COMBINATION WITH ANY OTHER PRODUCTS, OR USE IN ANY APPLICATION.\r
10 * IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,\r
11 * INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND\r
12 * WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS\r
13 * BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE.\r
14 * TO THE FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL\r
15 * CLAIMS IN ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF\r
16 * FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.\r
17 * MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE\r
18 * OF THESE TERMS.\r
19 */\r
20 \r
21 /** @defgroup interrupt interrupt\r
22  *  @{\r
23  */\r
24 /** @file interrupt.h\r
25  \brief This is the header file for interrupt.c\r
26  This program is designed to allow the other C programs to be able to use this component\r
27 \r
28  There are entry points for all C wrapper API implementation\r
29 \r
30 <b>Platform:</b> This is ARC-based component \r
31 \r
32 <b>Toolset:</b> Metaware IDE(8.5.1)\r
33 <b>Reference:</b> smsc_reusable_fw_requirement.doc */\r
34 \r
35 /*******************************************************************************\r
36  *  SMSC version control information (Perforce):\r
37  *\r
38  *  FILE:     $File: //depot_pcs/FWEng/Release/projects/CEC1302_CLIB/release2/Source/hw_blks/kernel/skern/source/interrupt/interrupt.h $\r
39  *  REVISION: $Revision: #1 $\r
40  *  DATETIME: $DateTime: 2015/12/23 15:37:58 $\r
41  *  AUTHOR:   $Author: akrishnan $\r
42  *\r
43  *  Revision history (latest first):\r
44  *      #xx\r
45  ***********************************************************************************\r
46  */\r
47 \r
48 #ifndef _INTERRUPT_H_\r
49 #define _INTERRUPT_H_\r
50 \r
51 \r
52 /* public function prototypes */\r
53 void interrupt_block_init(void);\r
54 void null_handler(void);\r
55 __irq void SysTick_Handler(void);\r
56 \r
57 /* macro for interrupt control */\r
58 /* 16-bit timers interrupt control */\r
59 #define sbit_TIMER0                             ( 1UL << 0UL )\r
60 #define sbit_TIMER1                             ( 1UL << 1UL )\r
61 #define sbit_TIMER2                             ( 1UL << 2UL )\r
62 #define sbit_TIMER3                             ( 1UL << 3Ul )\r
63 \r
64 #define disable_timer0_irq()    mCLR_BIT(sbit_TIMER0, MMCR_EC_GIRQ23_ENABLE_SET)\r
65 #define enable_timer0_irq()             mSET_BIT(sbit_TIMER0, MMCR_EC_GIRQ23_ENABLE_SET)\r
66 #define clear_timer0_source()   mCLR_SRC_BIT(sbit_TIMER0, MMCR_EC_GIRQ23_SOURCE)\r
67 #define get_timer0_source()         mGET_BIT(sbit_TIMER0, MMCR_EC_GIRQ23_SOURCE)\r
68 \r
69 #define disable_timer1_irq()    mCLR_BIT(sbit_TIMER1, MMCR_EC_GIRQ23_ENABLE_SET)\r
70 #define enable_timer1_irq()             mSET_BIT(sbit_TIMER1, MMCR_EC_GIRQ23_ENABLE_SET)\r
71 #define clear_timer1_source()   mCLR_SRC_BIT(sbit_TIMER1, MMCR_EC_GIRQ23_SOURCE)\r
72 #define get_timer1_source()         mGET_BIT(sbit_TIMER1, MMCR_EC_GIRQ23_SOURCE)\r
73 \r
74 #define disable_timer2_irq()    mCLR_BIT(sbit_TIMER2, MMCR_EC_GIRQ23_ENABLE_SET)\r
75 #define enable_timer2_irq()             mSET_BIT(sbit_TIMER2, MMCR_EC_GIRQ23_ENABLE_SET)\r
76 #define clear_timer2_source()   mCLR_SRC_BIT(sbit_TIMER2, MMCR_EC_GIRQ23_SOURCE)\r
77 #define get_timer2_source()         mGET_BIT(sbit_TIMER2, MMCR_EC_GIRQ23_SOURCE)\r
78 \r
79 #define disable_timer3_irq()    mCLR_BIT(sbit_TIMER3, MMCR_EC_GIRQ23_ENABLE_SET)\r
80 #define enable_timer3_irq()             mSET_BIT(sbit_TIMER3, MMCR_EC_GIRQ23_ENABLE_SET)\r
81 #define clear_timer3_source()   mCLR_SRC_BIT(sbit_TIMER3, MMCR_EC_GIRQ23_SOURCE)\r
82 #define get_timer3_source()         mGET_BIT(sbit_TIMER3, MMCR_EC_GIRQ23_SOURCE)\r
83 \r
84 \r
85 /* hibernation timers interrupt control */\r
86 #define sbit_HTIMER0                    ( 1UL << 20 )\r
87 #define sbit_HTIMER1                    b_bit14\r
88 \r
89 #define disable_htimer0_irq()   mCLR_BIT(sbit_HTIMER0, MMCR_EC_GIRQ17_ENABLE_SET)\r
90 #define enable_htimer0_irq()    mSET_BIT(sbit_HTIMER0, MMCR_EC_GIRQ17_ENABLE_SET)\r
91 #define clear_htimer0_source()  mCLR_SRC_BIT(sbit_HTIMER0, MMCR_EC_GIRQ17_SOURCE)\r
92 #define get_htimer0_source()    mGET_BIT(sbit_HTIMER0, MMCR_EC_GIRQ17_SOURCE)\r
93 \r
94 #define disable_htimer1_irq()   mCLR_BIT(sbit_HTIMER1, MMCR_EC_GIRQ23_ENABLE_SET)\r
95 #define enable_htimer1_irq()    mSET_BIT(sbit_HTIMER1, MMCR_EC_GIRQ23_ENABLE_SET)\r
96 #define clear_htimer1_source()  mCLR_SRC_BIT(sbit_HTIMER1, MMCR_EC_GIRQ23_SOURCE)\r
97 #define get_htimer1_source()    mGET_BIT(sbit_HTIMER1, MMCR_EC_GIRQ23_SOURCE)\r
98 \r
99 /* RTC  interrupt control */\r
100 #define b_bit18 (1 << 18)\r
101 #define b_bit19 (1 << 19)\r
102 #define sbit_RTC_INT                   b_bit18\r
103 #define disable_rtc_irq()              mCLR_BIT(sbit_RTC_INT, MMCR_EC_GIRQ17_ENABLE_SET)\r
104 #define enable_rtc_irq()               mSET_BIT(sbit_RTC_INT, MMCR_EC_GIRQ17_ENABLE_SET)\r
105 #define clear_rtc_irq_source()         mCLR_SRC_BIT(sbit_RTC_INT, MMCR_EC_GIRQ17_ENABLE_SET)\r
106 #define get_rtc_irq_source()           mGET_BIT(sbit_RTC_INT, MMCR_EC_GIRQ17_ENABLE_SET)\r
107 /* RTC  alarm interrupt control */\r
108 #define sbit_RTC_ALM_INT               b_bit19\r
109 #define disable_rtc_alm_irq()          mCLR_BIT(sbit_RTC_ALM_INT, MMCR_EC_GIRQ17_ENABLE_SET)\r
110 #define enable_rtc_alm_irq()           mSET_BIT(sbit_RTC_ALM_INT, MMCR_EC_GIRQ17_ENABLE_SET)\r
111 #define clear_rtc_irq_alm_source()     mCLR_SRC_BIT(sbit_RTC_ALM_INT, MMCR_EC_GIRQ17_ENABLE_SET)\r
112 #define get_rtc_irq_alm_source()       mGET_BIT(sbit_RTC_ALM_INT, MMCR_EC_GIRQ17_ENABLE_SET)\r
113 \r
114 /* week timer interrupt control */\r
115 #define sbit_WKTIMER                    b_bit7\r
116 \r
117 #define disable_wktimer_irq()   mCLR_BIT(sbit_WKTIMER, MMCR_EC_GIRQ23_ENABLE_SET)\r
118 #define enable_wktimer_irq()    mSET_BIT(sbit_WKTIMER, MMCR_EC_GIRQ23_ENABLE_SET)\r
119 #define clear_wktimer_source()  mCLR_SRC_BIT(sbit_WKTIMER, MMCR_EC_GIRQ23_SOURCE)\r
120 #define get_wktimer_source()    mGET_BIT(sbit_WKTIMER, MMCR_EC_GIRQ23_SOURCE)\r
121 \r
122 \r
123 /* scan matrix interrupt control */\r
124 #define sbit_SCANNER                    b_bit16\r
125 #define disable_scanner_irq()   mCLR_BIT(sbit_SCANNER, MMCR_EC_GIRQ18_ENABLE_SET)\r
126 #define enable_scanner_irq()    mSET_BIT(sbit_SCANNER, MMCR_EC_GIRQ18_ENABLE_SET)\r
127 #define clear_scanner_source()  mCLR_SRC_BIT(sbit_SCANNER, MMCR_EC_GIRQ18_SOURCE)\r
128 #define get_scanner_source()    mGET_BIT(sbit_SCANNER, MMCR_EC_GIRQ18_SOURCE)\r
129 \r
130 \r
131 /* PS2 interrupt control */\r
132 /* PS2 activity interrupt */\r
133 #define sbit_PS2_ACT_0                    b_bit13\r
134 #define sbit_PS2_ACT_1                    b_bit14\r
135 #define sbit_PS2_ACT_2                    b_bit15\r
136 /* PS2 wakeup interrupt: detect start bit */\r
137 #define sbit_PS2_WK_0A                    b_bit17\r
138 #define sbit_PS2_WK_1B                    b_bit20\r
139 #define sbit_PS2_WK_2                     b_bit21\r
140 \r
141 /* PS2 activity interrupt control */\r
142 #define disable_ps2_act_0_irq()   mCLR_BIT(sbit_PS2_ACT_0, MMCR_EC_GIRQ19_ENABLE_SET)\r
143 #define enable_ps2_act_0_irq()    mSET_BIT(sbit_PS2_ACT_0, MMCR_EC_GIRQ19_ENABLE_SET)\r
144 #define clear_ps2_act_0_source()  mCLR_SRC_BIT(sbit_PS2_ACT_0, MMCR_EC_GIRQ19_SOURCE)\r
145 #define get_ps2_act_0_source()    mGET_BIT(sbit_PS2_ACT_0, MMCR_EC_GIRQ19_SOURCE)\r
146 \r
147 #define disable_ps2_act_1_irq()   mCLR_BIT(sbit_PS2_ACT_1, MMCR_EC_GIRQ19_ENABLE_SET)\r
148 #define enable_ps2_act_1_irq()    mSET_BIT(sbit_PS2_ACT_1, MMCR_EC_GIRQ19_ENABLE_SET)\r
149 #define clear_ps2_act_1_source()  mCLR_SRC_BIT(sbit_PS2_ACT_1, MMCR_EC_GIRQ19_SOURCE)\r
150 #define get_ps2_act_1_source()    mGET_BIT(sbit_PS2_ACT_1, MMCR_EC_GIRQ19_SOURCE)\r
151 \r
152 #define disable_ps2_act_2_irq()   mCLR_BIT(sbit_PS2_ACT_2, MMCR_EC_GIRQ19_ENABLE_SET)\r
153 #define enable_ps2_act_2_irq()    mSET_BIT(sbit_PS2_ACT_2, MMCR_EC_GIRQ19_ENABLE_SET)\r
154 #define clear_ps2_act_2_source()  mCLR_SRC_BIT(sbit_PS2_ACT_2, MMCR_EC_GIRQ19_SOURCE)\r
155 #define get_ps2_act_2_source()    mGET_BIT(sbit_PS2_ACT_2, MMCR_EC_GIRQ19_SOURCE)\r
156 \r
157 /* PS2 wakeup interrupt control */\r
158 #define disable_ps2_wk_0_irq()    mCLR_BIT(sbit_PS2_WK_0A, MMCR_EC_GIRQ19_ENABLE_SET)\r
159 #define enable_ps2_wk_0_irq()     mSET_BIT(sbit_PS2_WK_0A, MMCR_EC_GIRQ19_ENABLE_SET)\r
160 #define clear_ps2_wk_0_source()   mCLR_SRC_BIT(sbit_PS2_WK_0A, MMCR_EC_GIRQ19_SOURCE)\r
161 #define get_ps2_wk_0_source()     mGET_BIT(sbit_PS2_WK_0A, MMCR_EC_GIRQ19_SOURCE)\r
162 \r
163 #define disable_ps2_wk_1_irq()    mCLR_BIT(sbit_PS2_WK_1B, MMCR_EC_GIRQ19_ENABLE_SET)\r
164 #define enable_ps2_wk_1_irq()     mSET_BIT(sbit_PS2_WK_1B, MMCR_EC_GIRQ19_ENABLE_SET)\r
165 #define clear_ps2_wk_1_source()   mCLR_SRC_BIT(sbit_PS2_WK_1B, MMCR_EC_GIRQ19_SOURCE)\r
166 #define get_ps2_wk_1_source()     mGET_BIT(sbit_PS2_WK_1B, MMCR_EC_GIRQ19_SOURCE)\r
167 \r
168 #define disable_ps2_wk_2_irq()    mCLR_BIT(sbit_PS2_WK_2, MMCR_EC_GIRQ19_ENABLE_SET)\r
169 #define enable_ps2_wk_2_irq()     mSET_BIT(sbit_PS2_WK_2, MMCR_EC_GIRQ19_ENABLE_SET)\r
170 #define clear_ps2_wk_2_source()   mCLR_SRC_BIT(sbit_PS2_WK_2, MMCR_EC_GIRQ19_SOURCE)\r
171 #define get_ps2_wk_2_source()     mGET_BIT(sbit_PS2_WK_2, MMCR_EC_GIRQ19_SOURCE)\r
172 \r
173 \r
174 /* ICT interrupt control */\r
175 /* capture 0~5 interrupt */\r
176 #define sbit_ICT_CAPTURE0                 b_bit17\r
177 #define sbit_ICT_CAPTURE1                 b_bit18\r
178 #define sbit_ICT_CAPTURE2                 b_bit19\r
179 #define sbit_ICT_CAPTURE3                 b_bit20\r
180 #define sbit_ICT_CAPTURE4                 b_bit21\r
181 #define sbit_ICT_CAPTURE5                 b_bit22\r
182 \r
183 /* capture 0 interrupt control */\r
184 #define disable_capture0_irq()    mCLR_BIT(sbit_ICT_CAPTURE0, MMCR_EC_GIRQ23_ENABLE_SET)\r
185 #define enable_capture0_irq()     mSET_BIT(sbit_ICT_CAPTURE0, MMCR_EC_GIRQ23_ENABLE_SET)\r
186 #define clear_capture0_source()   mCLR_SRC_BIT(sbit_ICT_CAPTURE0, MMCR_EC_GIRQ23_SOURCE)\r
187 #define get_capture0_source()     mGET_BIT(sbit_ICT_CAPTURE0, MMCR_EC_GIRQ23_SOURCE)\r
188 \r
189 \r
190 /* SMBus interrupt control */\r
191 \r
192 \r
193 /* GPIO interrupt control */\r
194 \r
195 \r
196 /* BC link interrupt control */\r
197 /* bclink A~D interrupt */\r
198 #define sbit_BCLINK_A_BUSY                b_bit0\r
199 #define sbit_BCLINK_A_ERR                 b_bit1\r
200 #define sbit_BCLINK_A_INT                 b_bit2\r
201 #define sbit_BCLINK_B_BUSY                b_bit3\r
202 #define sbit_BCLINK_B_ERR                 b_bit4\r
203 #define sbit_BCLINK_B_INT                 b_bit5\r
204 #define sbit_BCLINK_C_BUSY                b_bit6\r
205 #define sbit_BCLINK_C_ERR                 b_bit7\r
206 #define sbit_BCLINK_C_INT                 b_bit8\r
207 #define sbit_BCLINK_D_BUSY                b_bit9\r
208 #define sbit_BCLINK_D_ERR                 b_bit10\r
209 #define sbit_BCLINK_D_INT                 b_bit11\r
210 \r
211 /* bclink B interrupt control */\r
212 #define disable_bclink_b_busy_irq()             mCLR_BIT(sbit_BCLINK_B_BUSY, MMCR_EC_GIRQ18_ENABLE_SET)\r
213 #define enable_bclink_b_busy_irq()              mSET_BIT(sbit_BCLINK_B_BUSY, MMCR_EC_GIRQ18_ENABLE_SET)\r
214 #define clear_bclink_b_busy_source()    mCLR_SRC_BIT(sbit_BCLINK_B_BUSY, MMCR_EC_GIRQ18_SOURCE)\r
215 #define get_bclink_b_busy_source()      mGET_BIT(sbit_BCLINK_B_BUSY, MMCR_EC_GIRQ18_SOURCE)\r
216 \r
217 #define disable_bclink_b_err_irq()              mCLR_BIT(sbit_BCLINK_B_ERR, MMCR_EC_GIRQ18_ENABLE_SET)\r
218 #define enable_bclink_b_err_irq()               mSET_BIT(sbit_BCLINK_B_ERR, MMCR_EC_GIRQ18_ENABLE_SET)\r
219 #define clear_bclink_b_err_source()     mCLR_SRC_BIT(sbit_BCLINK_B_ERR, MMCR_EC_GIRQ18_SOURCE)\r
220 #define get_bclink_b_err_source()       mGET_BIT(sbit_BCLINK_B_ERR, MMCR_EC_GIRQ18_SOURCE)\r
221 \r
222 #define disable_bclink_b_int_irq()              mCLR_BIT(sbit_BCLINK_B_INT, MMCR_EC_GIRQ18_ENABLE_SET)\r
223 #define enable_bclink_b_int_irq()               mSET_BIT(sbit_BCLINK_B_INT, MMCR_EC_GIRQ18_ENABLE_SET)\r
224 #define clear_bclink_b_int_source()     mCLR_SRC_BIT(sbit_BCLINK_B_INT, MMCR_EC_GIRQ18_SOURCE)\r
225 #define get_bclink_b_int_source()       mGET_BIT(sbit_BCLINK_B_INT, MMCR_EC_GIRQ18_SOURCE)\r
226 \r
227 /* UART interrupt control */\r
228 #define sbit_UART_INT                   b_bit0\r
229 \r
230 #define disable_uart_irq()              mCLR_BIT(sbit_UART_INT, MMCR_EC_GIRQ15_ENABLE_SET)\r
231 #define enable_uart_irq()               mSET_BIT(sbit_UART_INT, MMCR_EC_GIRQ15_ENABLE_SET)\r
232 #define clear_uart_irq_source()         mCLR_SRC_BIT(sbit_UART_INT, MMCR_EC_GIRQ15_SOURCE)\r
233 #define get_uart_irq_source()           mGET_BIT(sbit_UART_INT, MMCR_EC_GIRQ15_SOURCE)\r
234 \r
235 // GIRQ IDs for EC Interrupt Aggregator\r
236 enum MEC_GIRQ_IDS\r
237 {\r
238     MEC_GIRQ08_ID = 0,\r
239     MEC_GIRQ09_ID,                  \r
240     MEC_GIRQ10_ID,                  \r
241     MEC_GIRQ11_ID,                  \r
242     MEC_GIRQ12_ID,                  \r
243     MEC_GIRQ13_ID,                  \r
244     MEC_GIRQ14_ID,                  \r
245     MEC_GIRQ15_ID,                  \r
246     MEC_GIRQ16_ID,                  \r
247     MEC_GIRQ17_ID,                  \r
248     MEC_GIRQ18_ID,                  \r
249     MEC_GIRQ19_ID,                  \r
250     MEC_GIRQ20_ID,                  \r
251     MEC_GIRQ21_ID,                  \r
252     MEC_GIRQ22_ID,                  \r
253     MEC_GIRQ23_ID,                                   \r
254     MEC_GIRQ_ID_MAX\r
255 };\r
256 \r
257 //Bitmask of GIRQ in ECIA Block Registers\r
258 #define MEC_GIRQ08_BITMASK          (1UL << (MEC_GIRQ08_ID + 8))\r
259 #define MEC_GIRQ09_BITMASK          (1UL << (MEC_GIRQ09_ID + 8))  \r
260 #define MEC_GIRQ10_BITMASK          (1UL << (MEC_GIRQ10_ID + 8))  \r
261 #define MEC_GIRQ11_BITMASK          (1UL << (MEC_GIRQ11_ID + 8)) \r
262 #define MEC_GIRQ12_BITMASK          (1UL << (MEC_GIRQ12_ID + 8)) \r
263 #define MEC_GIRQ13_BITMASK          (1UL << (MEC_GIRQ13_ID + 8)) \r
264 #define MEC_GIRQ14_BITMASK          (1UL << (MEC_GIRQ14_ID + 8)) \r
265 #define MEC_GIRQ15_BITMASK          (1UL << (MEC_GIRQ15_ID + 8)) \r
266 #define MEC_GIRQ16_BITMASK          (1UL << (MEC_GIRQ16_ID + 8)) \r
267 #define MEC_GIRQ17_BITMASK          (1UL << (MEC_GIRQ17_ID + 8)) \r
268 #define MEC_GIRQ18_BITMASK          (1UL << (MEC_GIRQ18_ID + 8)) \r
269 #define MEC_GIRQ19_BITMASK          (1UL << (MEC_GIRQ19_ID + 8)) \r
270 #define MEC_GIRQ20_BITMASK          (1UL << (MEC_GIRQ20_ID + 8)) \r
271 #define MEC_GIRQ21_BITMASK          (1UL << (MEC_GIRQ21_ID + 8)) \r
272 #define MEC_GIRQ22_BITMASK          (1UL << (MEC_GIRQ22_ID + 8)) \r
273 #define MEC_GIRQ23_BITMASK          (1UL << (MEC_GIRQ23_ID + 8)) \r
274 \r
275 #define INTERRUPT_MODE_ALL_AGGREGATED        (0u)\r
276 #define INTERRUPT_MODE_DIRECT                (1u)\r
277 \r
278 // Bit map of GIRQs whose sources can be directly connected to the NVIC\r
279 // GIRQs 12 - 18, 23\r
280 #define ECIA_GIRQ_DIRECT_BITMAP     (0x0087F000ul)\r
281 \r
282 /*\r
283  *  n = b[7:0]   = zero-based direct mapped NVIC ID\r
284  *  m = b[15:8]  = zero-based aggregated NVIC ID\r
285  *  a = b[23:16] = block Aggregator register block ID\r
286  *  b = b[31:24] = block bit position in Aggregator registers\r
287 */\r
288 #define IROUTE(b,a,m,n)         (((uint32_t)(n)&0xFFul) + \\r
289                             (((uint32_t)(m)&0xFFul)<<8u) + \\r
290                             ((((uint32_t)(a)-8ul)&0x0F)<<16u) + \\r
291                             (((uint32_t)(b)&0x1Ful)<<24))\r
292 \r
293 #define ECIA_NVIC_ID_BITPOS             (0u)\r
294 #define ECIA_IA_NVIC_ID_BITPOS          (8u)\r
295 #define ECIA_GIRQ_ID_BITPOS             (16u)\r
296 #define ECIA_GIRQ_BIT_BITPOS            (24u)\r
297 \r
298 //\r
299 // GIRQ08\r
300 //\r
301 #define GPIO_0140_IROUTE                IROUTE(0,8,57,57)\r
302 #define GPIO_0141_IROUTE                IROUTE(1,8,57,57)\r
303 #define GPIO_0142_IROUTE                IROUTE(2,8,57,57)\r
304 #define GPIO_0143_IROUTE                IROUTE(3,8,57,57)\r
305 #define GPIO_0144_IROUTE                IROUTE(4,8,57,57)\r
306 #define GPIO_0145_IROUTE                IROUTE(5,8,57,57)\r
307 #define GPIO_0147_IROUTE                IROUTE(7,8,57,57)\r
308 //\r
309 #define GPIO_0150_IROUTE                IROUTE(8,8,57,57)\r
310 #define GPIO_0151_IROUTE                IROUTE(9,8,57,57)\r
311 #define GPIO_0152_IROUTE                IROUTE(10,8,57,57)\r
312 #define GPIO_0153_IROUTE                IROUTE(11,8,57,57)\r
313 #define GPIO_0154_IROUTE                IROUTE(12,8,57,57)\r
314 #define GPIO_0155_IROUTE                IROUTE(13,8,57,57)\r
315 #define GPIO_0156_IROUTE                IROUTE(14,8,57,57)\r
316 #define GPIO_0157_IROUTE                IROUTE(15,8,57,57)\r
317 //\r
318 #define GPIO_0160_IROUTE                IROUTE(16,8,57,57)\r
319 #define GPIO_0161_IROUTE                IROUTE(17,8,57,57)\r
320 #define GPIO_0162_IROUTE                IROUTE(18,8,57,57)\r
321 #define GPIO_0163_IROUTE                IROUTE(19,8,57,57)\r
322 #define GPIO_0164_IROUTE                IROUTE(20,8,57,57)\r
323 #define GPIO_0165_IROUTE                IROUTE(21,8,57,57)\r
324 #define GPIO_0166_IROUTE                IROUTE(22,8,57,57)\r
325 #define GPIO_0167_IROUTE                IROUTE(23,8,57,57)\r
326 \r
327 //\r
328 // GIRQ09\r
329 //\r
330 #define GPIO_0100_IROUTE                IROUTE(0,9,58,58)\r
331 #define GPIO_0101_IROUTE                IROUTE(1,9,58,58)\r
332 #define GPIO_0102_IROUTE                IROUTE(2,9,58,58)\r
333 #define GPIO_0103_IROUTE                IROUTE(3,9,58,58)\r
334 #define GPIO_0104_IROUTE                IROUTE(4,9,58,58)\r
335 #define GPIO_0105_IROUTE                IROUTE(5,9,58,58)\r
336 #define GPIO_0105_IROUTE                IROUTE(5,9,58,58)\r
337 #define GPIO_0107_IROUTE                IROUTE(7,9,58,58)\r
338 //\r
339 #define GPIO_0110_IROUTE                IROUTE(8,9,58,58)\r
340 #define GPIO_0111_IROUTE                IROUTE(9,9,58,58)\r
341 #define GPIO_0112_IROUTE                IROUTE(10,9,58,58)\r
342 #define GPIO_0113_IROUTE                IROUTE(11,9,58,58)\r
343 #define GPIO_0114_IROUTE                IROUTE(12,9,58,58)\r
344 #define GPIO_0115_IROUTE                IROUTE(13,9,58,58)\r
345 #define GPIO_0116_IROUTE                IROUTE(14,9,58,58)\r
346 #define GPIO_0117_IROUTE                IROUTE(15,9,58,58)\r
347 //\r
348 #define GPIO_0120_IROUTE                IROUTE(16,9,58,58)\r
349 #define GPIO_0121_IROUTE                IROUTE(17,9,58,58)\r
350 #define GPIO_0122_IROUTE                IROUTE(18,9,58,58)\r
351 #define GPIO_0124_IROUTE                IROUTE(20,9,58,58)\r
352 #define GPIO_0125_IROUTE                IROUTE(21,9,58,58)\r
353 #define GPIO_0126_IROUTE                IROUTE(22,9,58,58)\r
354 #define GPIO_0127_IROUTE                IROUTE(23,9,58,58)\r
355 //\r
356 #define GPIO_0130_IROUTE                IROUTE(24,9,58,58)\r
357 #define GPIO_0131_IROUTE                IROUTE(25,9,58,58)\r
358 #define GPIO_0132_IROUTE                IROUTE(26,9,58,58)\r
359 #define GPIO_0133_IROUTE                IROUTE(27,9,58,58)\r
360 #define GPIO_0134_IROUTE                IROUTE(28,9,58,58)\r
361 #define GPIO_0135_IROUTE                IROUTE(29,9,58,58)\r
362 #define GPIO_0136_IROUTE                IROUTE(30,9,58,58)\r
363 \r
364 //\r
365 // GIRQ10\r
366 //\r
367 #define GPIO_0040_IROUTE                IROUTE(0,10,59,59)\r
368 #define GPIO_0041_IROUTE                IROUTE(1,10,59,59)\r
369 #define GPIO_0042_IROUTE                IROUTE(2,10,59,59)\r
370 #define GPIO_0043_IROUTE                IROUTE(3,10,59,59)\r
371 #define GPIO_0044_IROUTE                IROUTE(4,10,59,59)\r
372 #define GPIO_0045_IROUTE                IROUTE(5,10,59,59)\r
373 #define GPIO_0045_IROUTE                IROUTE(5,10,59,59)\r
374 #define GPIO_0047_IROUTE                IROUTE(7,10,59,59)\r
375 //\r
376 #define GPIO_0050_IROUTE                IROUTE(8,10,59,59)\r
377 #define GPIO_0051_IROUTE                IROUTE(9,10,59,59)\r
378 #define GPIO_0052_IROUTE                IROUTE(10,10,59,59)\r
379 #define GPIO_0053_IROUTE                IROUTE(11,10,59,59)\r
380 #define GPIO_0054_IROUTE                IROUTE(12,10,59,59)\r
381 #define GPIO_0055_IROUTE                IROUTE(13,10,59,59)\r
382 #define GPIO_0056_IROUTE                IROUTE(14,10,59,59)\r
383 #define GPIO_0057_IROUTE                IROUTE(15,10,59,59)\r
384 //\r
385 #define GPIO_0060_IROUTE                IROUTE(16,10,59,59)\r
386 #define GPIO_0061_IROUTE                IROUTE(17,10,59,59)\r
387 #define GPIO_0062_IROUTE                IROUTE(18,10,59,59)\r
388 #define GPIO_0063_IROUTE                IROUTE(19,10,59,59)\r
389 #define GPIO_0064_IROUTE                IROUTE(20,10,59,59)\r
390 #define GPIO_0065_IROUTE                IROUTE(21,10,59,59)\r
391 #define GPIO_0066_IROUTE                IROUTE(22,10,59,59)\r
392 #define GPIO_0067_IROUTE                IROUTE(23,10,59,59)\r
393 //\r
394 #define GPIO_0070_IROUTE                IROUTE(24,10,59,59)\r
395 #define GPIO_0071_IROUTE                IROUTE(25,10,59,59)\r
396 #define GPIO_0072_IROUTE                IROUTE(26,10,59,59)\r
397 #define GPIO_0073_IROUTE                IROUTE(27,10,59,59)\r
398 #define GPIO_0074_IROUTE                IROUTE(28,10,59,59)\r
399 #define GPIO_0075_IROUTE                IROUTE(29,10,59,59)\r
400 #define GPIO_0076_IROUTE                IROUTE(30,10,59,59)\r
401 \r
402 //\r
403 // GIRQ11\r
404 //\r
405 #define GPIO_0000_IROUTE                IROUTE(0,11,60,60)\r
406 #define GPIO_0001_IROUTE                IROUTE(1,11,60,60)\r
407 #define GPIO_0002_IROUTE                IROUTE(2,11,60,60)\r
408 #define GPIO_0003_IROUTE                IROUTE(3,11,60,60)\r
409 #define GPIO_0004_IROUTE                IROUTE(4,11,60,60)\r
410 #define GPIO_0005_IROUTE                IROUTE(5,11,60,60)\r
411 #define GPIO_0006_IROUTE                IROUTE(6,11,60,60)\r
412 #define GPIO_0007_IROUTE                IROUTE(7,11,60,60)\r
413 //\r
414 #define GPIO_0010_IROUTE                IROUTE(8,11,60,60)\r
415 #define GPIO_0011_IROUTE                IROUTE(9,11,60,60)\r
416 #define GPIO_0012_IROUTE                IROUTE(10,11,60,60)\r
417 #define GPIO_0013_IROUTE                IROUTE(11,11,60,60)\r
418 #define GPIO_0014_IROUTE                IROUTE(12,11,60,60)\r
419 #define GPIO_0015_IROUTE                IROUTE(13,11,60,60)\r
420 #define GPIO_0016_IROUTE                IROUTE(14,11,60,60)\r
421 #define GPIO_0017_IROUTE                IROUTE(15,11,60,60)\r
422 //\r
423 #define GPIO_0020_IROUTE                IROUTE(16,11,60,60)\r
424 #define GPIO_0021_IROUTE                IROUTE(17,11,60,60)\r
425 #define GPIO_0022_IROUTE                IROUTE(18,11,60,60)\r
426 #define GPIO_0023_IROUTE                IROUTE(19,11,60,60)\r
427 #define GPIO_0024_IROUTE                IROUTE(20,11,60,60)\r
428 #define GPIO_0025_IROUTE                IROUTE(21,11,60,60)\r
429 #define GPIO_0026_IROUTE                IROUTE(22,11,60,60)\r
430 #define GPIO_0027_IROUTE                IROUTE(23,11,60,60)\r
431 //\r
432 #define GPIO_0030_IROUTE                IROUTE(24,11,60,60)\r
433 #define GPIO_0031_IROUTE                IROUTE(25,11,60,60)\r
434 #define GPIO_0032_IROUTE                IROUTE(26,11,60,60)\r
435 #define GPIO_0033_IROUTE                IROUTE(27,11,60,60)\r
436 #define GPIO_0034_IROUTE                IROUTE(28,11,60,60)\r
437 #define GPIO_0035_IROUTE                IROUTE(29,11,60,60)\r
438 #define GPIO_0036_IROUTE                IROUTE(30,11,60,60)\r
439 \r
440 //\r
441 // GIRQ12\r
442 //\r
443 #define SMB0_IROUTE                     IROUTE(0,12,61,0)\r
444 #define SMB1_IROUTE                     IROUTE(1,12,61,1)\r
445 #define SMB2_IROUTE                     IROUTE(2,12,61,2)\r
446 #define SMB3_IROUTE                     IROUTE(3,12,61,3)\r
447 // SMB wakes have no direct connection to NVIC, always aggregated\r
448 #define SMB0_WAKE_IROUTE                IROUTE(4,12,61,61)\r
449 #define SMB1_WAKE_IROUTE                IROUTE(5,12,61,61)\r
450 #define SMB2_WAKE_IROUTE                IROUTE(6,12,61,61)\r
451 #define SMB3_WAKE_IROUTE                IROUTE(7,12,61,61)\r
452 #define SMB4_WAKE_IROUTE                IROUTE(8,12,61,61)\r
453 \r
454 //\r
455 // GIRQ13\r
456 //\r
457 #define DMA0_IROUTE                     IROUTE(16,13,62,4)\r
458 #define DMA1_IROUTE                     IROUTE(17,13,62,5)\r
459 #define DMA2_IROUTE                     IROUTE(18,13,62,6)\r
460 #define DMA3_IROUTE                     IROUTE(19,13,62,7)\r
461 #define DMA4_IROUTE                     IROUTE(20,13,62,8)\r
462 #define DMA5_IROUTE                     IROUTE(21,13,62,9)\r
463 #define DMA6_IROUTE                     IROUTE(22,13,62,10)\r
464 #define DMA7_IROUTE                     IROUTE(23,13,62,11)\r
465 #define DMA8_IROUTE                     IROUTE(24,13,62,81)\r
466 #define DMA9_IROUTE                     IROUTE(25,13,62,82)\r
467 #define DMA10_IROUTE                    IROUTE(26,13,62,83)\r
468 #define DMA11_IROUTE                    IROUTE(27,13,62,84)\r
469 \r
470 //\r
471 // GIRQ14\r
472 //\r
473 #define LPC_BERR_IROUTE                 IROUTE(2,14,63,12)\r
474 \r
475 //\r
476 // GIRQ15\r
477 //\r
478 #define UART0_IROUTE                    IROUTE(0,15,64,13)\r
479 #define EMI0_IROUTE                     IROUTE(2,15,64,14)\r
480 #define ACPI_EC0_IBF_IROUTE             IROUTE(6,15,64,15)\r
481 #define ACPI_EC0_OBF_IROUTE             IROUTE(7,15,64,16)\r
482 #define ACPI_EC1_IBF_IROUTE             IROUTE(8,15,64,17)\r
483 #define ACPI_EC1_OBF_IROUTE             IROUTE(9,15,64,18)\r
484 #define ACPI_PM1_CTL_IROUTE             IROUTE(10,15,64,19)\r
485 #define ACPI_PM1_EN_IROUTE              IROUTE(11,15,64,20)\r
486 #define ACPI_PM1_STS_IROUTE             IROUTE(12,15,64,21)\r
487 #define EM8042_OBF_IROUTE               IROUTE(13,15,64,22)\r
488 #define EM8042_IBF_IROUTE               IROUTE(14,15,64,23)\r
489 #define MBOX_IROUTE                     IROUTE(15,15,64,24)\r
490 #define MBOX_DATA_IROUTE                IROUTE(16,15,64,40) \r
491 \r
492 //\r
493 // GIRQ16\r
494 //\r
495 #define PECI_IROUTE                     IROUTE(3,16,65,25)\r
496 \r
497 //\r
498 // GIRQ17\r
499 //\r
500 #define TACH0_IROUTE                    IROUTE(0,17,66,26)\r
501 #define TACH1_IROUTE                    IROUTE(1,17,66,27)\r
502 #define PS2_0_WAKE_IROUTE               IROUTE(2,17,66,66)\r
503 #define PS2_1_WAKE_IROUTE               IROUTE(3,17,66,66)\r
504 #define PS2_2_WAKE_IROUTE               IROUTE(4,17,66,66)\r
505 #define PS2_3_WAKE_IROUTE               IROUTE(5,17,66,66)\r
506 #define BC_WAKE_IROUTE                  IROUTE(6,17,66,66)\r
507 #define ADC_SNGL_IROUTE                 IROUTE(10,17,66,28)\r
508 #define ADC_RPT_IROUTE                  IROUTE(11,17,66,29)\r
509 #define ADC2PWM1_IROUTE                 IROUTE(12,17,66,30)\r
510 #define ADC2PWM2_IROUTE                 IROUTE(13,17,66,31)\r
511 #define PS2_0_IROUTE                    IROUTE(14,17,66,32)\r
512 #define PS2_1_IROUTE                    IROUTE(15,17,66,33)\r
513 #define PS2_2_IROUTE                    IROUTE(16,17,66,34)\r
514 #define PS2_3_IROUTE                    IROUTE(17,17,66,35)\r
515 #define RTC_IROUTE                      IROUTE(18,17,66,91)\r
516 #define RTC_ALARM_IROUTE                IROUTE(19,17,66,92)\r
517 #define HTIMER_IROUTE                   IROUTE(20,17,66,38)\r
518 #define KSC_IROUTE                      IROUTE(21,17,66,39)\r
519 #define KSC_WAKE_IROUTE                 IROUTE(22,17,66,66)\r
520 #define RPM_STALL_IROUTE                IROUTE(23,17,66,41)\r
521 #define RPM_SPIN_IROUTE                 IROUTE(24,17,66,42)\r
522 #define PFR_IROUTE                      IROUTE(25,17,66,43)\r
523 #define LED0_IROUTE                     IROUTE(26,17,66,44)\r
524 #define LED1_IROUTE                     IROUTE(27,17,66,45)\r
525 #define LED2_IROUTE                     IROUTE(28,17,66,46)\r
526 #define BCM_ERR_IROUTE                  IROUTE(29,17,66,47)\r
527 #define BCM_BUSY_IROUTE                 IROUTE(30,17,66,48)\r
528 \r
529 //\r
530 // GIRQ18\r
531 //\r
532 #define SPI0_TX_IROUTE                  IROUTE(0,18,67,36)\r
533 #define SPI0_RX_IROUTE                  IROUTE(1,18,67,37)\r
534 #define SPI1_TX_IROUTE                  IROUTE(2,18,67,55)\r
535 #define SPI1_RX_IROUTE                  IROUTE(3,18,67,56)\r
536 #define LED3_IROUTE                     IROUTE(4,18,67,85)\r
537 #define PKE_ERR_IROUTE                  IROUTE(5,18,67,86)\r
538 #define PKE_END_IROUTE                  IROUTE(6,18,67,87)\r
539 #define NDRNG_IROUTE                    IROUTE(7,18,67,88)\r
540 #define AES_IROUTE                      IROUTE(8,18,67,89)\r
541 #define HASH_IROUTE                     IROUTE(9,18,67,90)\r
542 \r
543 //\r
544 // GIRQ19, Aggregated only\r
545 //\r
546 #define LRESET_IROUTE                   IROUTE(0,19,68,68)\r
547 #define VCC_PWRGD_IROUTE                IROUTE(1,19,68,68)\r
548 \r
549 //\r
550 // GIRQ20, Aggregated only\r
551 //\r
552 #define GPIO_0200_IROUTE                IROUTE(0,20,69,69)\r
553 #define GPIO_0201_IROUTE                IROUTE(1,20,69,69)\r
554 #define GPIO_0202_IROUTE                IROUTE(2,20,69,69)\r
555 #define GPIO_0203_IROUTE                IROUTE(3,20,69,69)\r
556 #define GPIO_0204_IROUTE                IROUTE(4,20,69,69)\r
557 #define GPIO_0206_IROUTE                IROUTE(6,20,69,69)\r
558 //\r
559 #define GPIO_0210_IROUTE                IROUTE(8,20,69,69)\r
560 #define GPIO_0211_IROUTE                IROUTE(9,20,69,69)\r
561 #define GPIO_0212_IROUTE                IROUTE(10,20,69,69)\r
562 #define GPIO_0213_IROUTE                IROUTE(11,20,69,69)\r
563 \r
564 //\r
565 // GIRQ21\r
566 //\r
567 // No sources\r
568 \r
569 //\r
570 // GIRQ22\r
571 //\r
572 // No sources\r
573 \r
574 //\r
575 // GIRQ23\r
576 //\r
577 #define BTMR0_IROUTE                    IROUTE(0,23,72,49)\r
578 #define BTMR1_IROUTE                    IROUTE(1,23,72,50)\r
579 #define BTMR2_IROUTE                    IROUTE(2,23,72,51)\r
580 #define BTMR3_IROUTE                    IROUTE(3,23,72,52)\r
581 #define BTMR4_IROUTE                    IROUTE(4,23,72,53)\r
582 #define BTMR5_IROUTE                    IROUTE(5,23,72,54)\r
583 \r
584 // GIRQ08 Bit Positions \r
585 #define GIRQ08_GPIO_0140_BITPOS         (0)\r
586 #define GIRQ08_GPIO_0141_BITPOS         (1)\r
587 #define GIRQ08_GPIO_0142_BITPOS         (2)\r
588 #define GIRQ08_GPIO_0143_BITPOS         (3)\r
589 #define GIRQ08_GPIO_0144_BITPOS         (4)\r
590 #define GIRQ08_GPIO_0145_BITPOS         (5)\r
591 //#define GIRQ08_GPIO_0146_BITPOS       (6) RESERVED\r
592 #define GIRQ08_GPIO_0147_BITPOS         (7)\r
593 //\r
594 #define GIRQ08_GPIO_0150_BITPOS         (8)\r
595 #define GIRQ08_GPIO_0151_BITPOS         (9)\r
596 #define GIRQ08_GPIO_0152_BITPOS         (10)\r
597 #define GIRQ08_GPIO_0153_BITPOS         (11)\r
598 #define GIRQ08_GPIO_0154_BITPOS         (12)\r
599 #define GIRQ08_GPIO_0155_BITPOS         (13)\r
600 #define GIRQ08_GPIO_0156_BITPOS         (14) \r
601 #define GIRQ08_GPIO_0157_BITPOS         (15)\r
602 //\r
603 #define GIRQ08_GPIO_0160_BITPOS         (16)\r
604 #define GIRQ08_GPIO_0161_BITPOS         (17)\r
605 #define GIRQ08_GPIO_0162_BITPOS         (18)\r
606 #define GIRQ08_GPIO_0163_BITPOS         (19)\r
607 #define GIRQ08_GPIO_0164_BITPOS         (20)\r
608 #define GIRQ08_GPIO_0165_BITPOS         (21)\r
609 #define GIRQ08_GPIO_0166_BITPOS         (22) \r
610 #define GIRQ08_GPIO_0167_BITPOS         (23)\r
611 //\r
612 #define GIRQ08_MASK                     (0x00FFFFBFul)\r
613 #define GIRQ08_WAKE_CAPABLE_MASK        (0x00FFFFBFul)\r
614 //\r
615 \r
616 // GIRQ09 Bit Positions \r
617 #define GIRQ09_GPIO_0100_BITPOS         (0)\r
618 #define GIRQ09_GPIO_0101_BITPOS         (1)\r
619 #define GIRQ09_GPIO_0102_BITPOS         (2)\r
620 #define GIRQ09_GPIO_0103_BITPOS         (3)\r
621 #define GIRQ09_GPIO_0104_BITPOS         (4)\r
622 #define GIRQ09_GPIO_0105_BITPOS         (5)\r
623 #define GIRQ09_GPIO_0106_BITPOS         (6) \r
624 #define GIRQ09_GPIO_0107_BITPOS         (7)\r
625 //\r
626 #define GIRQ09_GPIO_0110_BITPOS         (8)\r
627 #define GIRQ09_GPIO_0111_BITPOS         (9)\r
628 #define GIRQ09_GPIO_0112_BITPOS         (10)\r
629 #define GIRQ09_GPIO_0113_BITPOS         (11)\r
630 #define GIRQ09_GPIO_0114_BITPOS         (12)\r
631 #define GIRQ09_GPIO_0115_BITPOS         (13)\r
632 #define GIRQ09_GPIO_0116_BITPOS         (14) \r
633 #define GIRQ09_GPIO_0117_BITPOS         (15)\r
634 //\r
635 #define GIRQ09_GPIO_0120_BITPOS         (16)\r
636 #define GIRQ09_GPIO_0121_BITPOS         (17)\r
637 #define GIRQ09_GPIO_0122_BITPOS         (18)\r
638 //#define GIRQ09_GPIO_0123_BITPOS       (19) RESERVED\r
639 #define GIRQ09_GPIO_0124_BITPOS         (20)\r
640 #define GIRQ09_GPIO_0125_BITPOS         (21)\r
641 #define GIRQ09_GPIO_0126_BITPOS         (22) \r
642 #define GIRQ09_GPIO_0127_BITPOS         (23)\r
643 //\r
644 #define GIRQ09_GPIO_0130_BITPOS         (24)\r
645 #define GIRQ09_GPIO_0131_BITPOS         (25)\r
646 #define GIRQ09_GPIO_0132_BITPOS         (26)\r
647 #define GIRQ09_GPIO_0133_BITPOS         (27)\r
648 #define GIRQ09_GPIO_0134_BITPOS         (28)\r
649 #define GIRQ09_GPIO_0135_BITPOS         (29)\r
650 #define GIRQ09_GPIO_0136_BITPOS         (30) \r
651 //#define GIRQ09_GPIO_0137_BITPOS       (31) RESERVED\r
652 //\r
653 #define GIRQ09_MASK                     (0x7FF7FFFFul)\r
654 #define GIRQ09_WAKE_CAPABLE_MASK        (0x7FF7FFFFul)\r
655 //\r
656 \r
657 // GIRQ10 Bit Positions \r
658 #define GIRQ10_GPIO_0040_BITPOS         (0)\r
659 #define GIRQ10_GPIO_0041_BITPOS         (1)\r
660 #define GIRQ10_GPIO_0042_BITPOS         (2)\r
661 #define GIRQ10_GPIO_0043_BITPOS         (3)\r
662 #define GIRQ10_GPIO_0044_BITPOS         (4)\r
663 #define GIRQ10_GPIO_0045_BITPOS         (5)\r
664 #define GIRQ10_GPIO_0046_BITPOS         (6) \r
665 #define GIRQ10_GPIO_0047_BITPOS         (7)\r
666 //\r
667 #define GIRQ10_GPIO_0050_BITPOS         (8)\r
668 #define GIRQ10_GPIO_0051_BITPOS         (9)\r
669 #define GIRQ10_GPIO_0052_BITPOS         (10)\r
670 #define GIRQ10_GPIO_0053_BITPOS         (11)\r
671 #define GIRQ10_GPIO_0054_BITPOS         (12)\r
672 #define GIRQ10_GPIO_0055_BITPOS         (13)\r
673 #define GIRQ10_GPIO_0056_BITPOS         (14) \r
674 #define GIRQ10_GPIO_0057_BITPOS         (15)\r
675 //\r
676 #define GIRQ10_GPIO_0060_BITPOS         (16)\r
677 #define GIRQ10_GPIO_0061_BITPOS         (17)\r
678 #define GIRQ10_GPIO_0062_BITPOS         (18)\r
679 #define GIRQ10_GPIO_0063_BITPOS         (19)\r
680 #define GIRQ10_GPIO_0064_BITPOS         (20)\r
681 #define GIRQ10_GPIO_0065_BITPOS         (21)\r
682 #define GIRQ10_GPIO_0066_BITPOS         (22) \r
683 #define GIRQ10_GPIO_0067_BITPOS         (23)\r
684 //\r
685 #define GIRQ10_GPIO_0070_BITPOS         (24)\r
686 #define GIRQ10_GPIO_0071_BITPOS         (25)\r
687 #define GIRQ10_GPIO_0072_BITPOS         (26)\r
688 #define GIRQ10_GPIO_0073_BITPOS         (27)\r
689 #define GIRQ10_GPIO_0074_BITPOS         (28)\r
690 #define GIRQ10_GPIO_0075_BITPOS         (29)\r
691 #define GIRQ10_GPIO_0076_BITPOS         (30) \r
692 //#define GIRQ10_GPIO_0077_BITPOS       (31) RESERVED\r
693 //\r
694 #define GIRQ10_MASK                     (0x7FFFFFFFul)\r
695 #define GIRQ10_WAKE_CAPABLE_MASK        (0x7FFFFFFFul)\r
696 //\r
697 \r
698 // GIRQ11 Bit Positions \r
699 #define GIRQ11_GPIO_0000_BITPOS         (0)\r
700 #define GIRQ11_GPIO_0001_BITPOS         (1)\r
701 #define GIRQ11_GPIO_0002_BITPOS         (2)\r
702 #define GIRQ11_GPIO_0003_BITPOS         (3)\r
703 #define GIRQ11_GPIO_0004_BITPOS         (4)\r
704 #define GIRQ11_GPIO_0005_BITPOS         (5)\r
705 #define GIRQ11_GPIO_0006_BITPOS         (6) \r
706 #define GIRQ11_GPIO_0007_BITPOS         (7)\r
707 //\r
708 #define GIRQ11_GPIO_0010_BITPOS         (8)\r
709 #define GIRQ11_GPIO_0011_BITPOS         (9)\r
710 #define GIRQ11_GPIO_0012_BITPOS         (10)\r
711 #define GIRQ11_GPIO_0013_BITPOS         (11)\r
712 #define GIRQ11_GPIO_0014_BITPOS         (12)\r
713 #define GIRQ11_GPIO_0015_BITPOS         (13)\r
714 #define GIRQ11_GPIO_0016_BITPOS         (14) \r
715 #define GIRQ11_GPIO_0017_BITPOS         (15)\r
716 //\r
717 #define GIRQ11_GPIO_0020_BITPOS         (16)\r
718 #define GIRQ11_GPIO_0021_BITPOS         (17)\r
719 #define GIRQ11_GPIO_0022_BITPOS         (18)\r
720 #define GIRQ11_GPIO_0023_BITPOS         (19)\r
721 #define GIRQ11_GPIO_0024_BITPOS         (20)\r
722 #define GIRQ11_GPIO_0025_BITPOS         (21)\r
723 #define GIRQ11_GPIO_0026_BITPOS         (22) \r
724 #define GIRQ11_GPIO_0027_BITPOS         (23)\r
725 //\r
726 #define GIRQ11_GPIO_0030_BITPOS         (24)\r
727 #define GIRQ11_GPIO_0031_BITPOS         (25)\r
728 #define GIRQ11_GPIO_0032_BITPOS         (26)\r
729 #define GIRQ11_GPIO_0033_BITPOS         (27)\r
730 #define GIRQ11_GPIO_0034_BITPOS         (28)\r
731 #define GIRQ11_GPIO_0035_BITPOS         (29)\r
732 #define GIRQ11_GPIO_0036_BITPOS         (30) \r
733 //#define GIRQ11_GPIO_0037_BITPOS       (31) RESERVED\r
734 //\r
735 #define GIRQ11_MASK                     (0x7FFFFFFFul)\r
736 #define GIRQ11_WAKE_CAPABLE_MASK        (0x7FFFFFFFul)\r
737 //\r
738 \r
739 // GIRQ12 Bit Positions \r
740 #define GIRQ12_SMBUS0_BITPOS            (0)\r
741 #define GIRQ12_SMBUS1_BITPOS            (1)\r
742 #define GIRQ12_SMBUS2_BITPOS            (2)\r
743 #define GIRQ12_SMBUS3_BITPOS            (3)\r
744 #define GIRQ12_SMBUS0_WAKE_BITPOS       (4)\r
745 #define GIRQ12_SMBUS1_WAKE_BITPOS       (5)\r
746 #define GIRQ12_SMBUS2_WAKE_BITPOS       (6)\r
747 #define GIRQ12_SMBUS3_WAKE_BITPOS       (7)\r
748 #define GIRQ12_SMBUS4_WAKE_BITPOS       (8)\r
749 // RESERVED bits[31:9]\r
750 #define GIRQ12_MASK                     (0x01FFul)\r
751 #define GIRQ12_WAKE_CAPABLE_MASK        (0x01F0ul)\r
752 //\r
753 \r
754 // GIRQ13 Bit Positions \r
755 #define GIRQ13_DMA0_BITPOS              (16)\r
756 #define GIRQ13_DMA1_BITPOS              (17)\r
757 #define GIRQ13_DMA2_BITPOS              (18)\r
758 #define GIRQ13_DMA3_BITPOS              (19)\r
759 #define GIRQ13_DMA4_BITPOS              (20)\r
760 #define GIRQ13_DMA5_BITPOS              (21)\r
761 #define GIRQ13_DMA6_BITPOS              (22)\r
762 #define GIRQ13_DMA7_BITPOS              (23)\r
763 #define GIRQ13_DMA8_BITPOS              (24)\r
764 #define GIRQ13_DMA9_BITPOS              (25)\r
765 #define GIRQ13_DMA10_BITPOS             (26)\r
766 #define GIRQ13_DMA11_BITPOS             (27)\r
767 //\r
768 #define GIRQ13_MASK                     (0x0FFF0000ul)\r
769 #define GIRQ13_WAKE_CAPABLE_MASK        (0x00000000ul)\r
770 //\r
771 \r
772 // GIRQ14 Bit Positions \r
773 #define GIRQ14_LPC_BITPOS               (2)\r
774 //\r
775 #define GIRQ14_MASK                     (0x04ul)\r
776 #define GIRQ14_WAKE_CAPABLE_MASK        (0x00ul)\r
777 //\r
778 \r
779 // GIRQ15 Bit Positions \r
780 #define GIRQ15_UART0_BITPOS             (0)\r
781 #define GIRQ15_IMAP_BITPOS              (2)\r
782 #define GIRQ15_KBD_K_BITPOS             (3)\r
783 #define GIRQ15_KBD_M_BITPOS             (4)\r
784 #define GIRQ15_ACPI0_IBF_BITPOS         (6)\r
785 #define GIRQ15_ACPI0_OBF_BITPOS         (7)\r
786 #define GIRQ15_ACPI1_IBF_BITPOS         (8)\r
787 #define GIRQ15_ACPI1_OBF_BITPOS         (9)\r
788 #define GIRQ15_ACPI_PM1CTL_BITPOS       (10)\r
789 #define GIRQ15_ACPI_PM1EN_BITPOS        (11)\r
790 #define GIRQ15_ACPI_PM1STS_BITPOS       (12)\r
791 #define GIRQ15_MF8042_OBF_BITPOS        (13)\r
792 #define GIRQ15_MF8042_IBF_BITPOS        (14)\r
793 #define GIRQ15_MAILBOX_BITPOS           (15)\r
794 #define GIRQ15_MAILBOX_DATA_BITPOS      (16)\r
795 //\r
796 #define GIRQ15_MASK                     (0x01FFDDul)\r
797 #define GIRQ15_WAKE_CAPABLE_MASK        (0x000000ul)\r
798 //\r
799 \r
800 // GIRQ16 Bit Positions \r
801 #define GIRQ16_PECI_BITPOS              (3)\r
802 //\r
803 #define GIRQ16_MASK                     (0x08ul)\r
804 #define GIRQ16_WAKE_CAPABLE_MASK        (0x00ul)\r
805 //\r
806 \r
807 // GIRQ17 Bit Positions \r
808 #define GIRQ17_TACH0_BITPOS             (0)\r
809 #define GIRQ17_TACH1_BITPOS             (1)\r
810 #define GIRQ17_PS2_0_WAKE_BITPOS        (2)\r
811 #define GIRQ17_PS2_1_WAKE_BITPOS        (3)\r
812 #define GIRQ17_PS2_2_WAKE_BITPOS        (4)\r
813 #define GIRQ17_PS2_3_WAKE_BITPOS        (5)\r
814 #define GIRQ17_BC_WAKE_BITPOS           (6)\r
815 // RESERVED b[9:7]\r
816 #define GIRQ17_ADC_INT0_BITPOS          (10)\r
817 #define GIRQ17_ADC_INT1_BITPOS          (11)\r
818 #define GIRQ17_V2P_INT0_BITPOS          (12)\r
819 #define GIRQ17_V2P_INT1_BITPOS          (13)\r
820 #define GIRQ17_PS2_0_BITPOS             (14)\r
821 #define GIRQ17_PS2_1_BITPOS             (15)\r
822 #define GIRQ17_PS2_2_BITPOS             (16)\r
823 #define GIRQ17_PS2_3_BITPOS             (17)\r
824 // RESERVED b[19:18]\r
825 #define GIRQ17_HIBTMR_BITPOS            (20)\r
826 #define GIRQ17_KEY_INT_BITPOS           (21)\r
827 #define GIRQ17_KEY_INT_WAKE_BITPOS      (22)\r
828 #define GIRQ17_RPM_STALL_BITPOS         (23)\r
829 #define GIRQ17_RPM_SPIN_BITPOS          (24)\r
830 #define GIRQ17_VBAT_BITPOS              (25)\r
831 #define GIRQ17_LED0_BITPOS              (26)\r
832 #define GIRQ17_LED1_BITPOS              (27)\r
833 #define GIRQ17_LED2_BITPOS              (28)\r
834 #define GIRQ17_MBC_ERR_BITPOS           (29)\r
835 #define GIRQ17_MBC_BUSY_BITPOS          (30)\r
836 //\r
837 #define GIRQ17_MASK                     (0x7FF3FC7Ful)\r
838 #define GIRQ17_WAKE_CAPABLE_MASK        (0x0230007Cul)\r
839 //\r
840 \r
841 // GIRQ18 Bit Positions \r
842 #define GIRQ18_SPI0_TX_BITPOS           (0)\r
843 #define GIRQ18_SPI0_RX_BITPOS           (1)\r
844 #define GIRQ18_SPI1_TX_BITPOS           (2)\r
845 #define GIRQ18_SPI1_RX_BITPOS           (3)\r
846 #define GIRQ18_LED3_BITPOS              (4)  // NVIC 85\r
847 #define GIRQ18_PKE_ERR_BITPOS           (5)  // NVIC 86\r
848 #define GIRQ18_PKE_END_BITPOS           (6)  // NVIC 87\r
849 #define GIRQ18_TRNG_BITPOS              (7)  // NVIC 88\r
850 #define GIRQ18_AES_BITPOS               (8)  // NVIC 89\r
851 #define GIRQ18_HASH_BITPOS              (9)  // NVIC 90\r
852 //\r
853 #define GIRQ18_MASK                     (0x0FFul)\r
854 #define GIRQ18_WAKE_CAPABLE_MASK        (0x000ul)\r
855 //\r
856 \r
857 // GIRQ19 Bit Positions \r
858 #define GIRQ19_LRESET_BITPOS            (0)\r
859 #define GIRQ19_VCC_PWRGD_BITPOS         (1)\r
860 //\r
861 #define GIRQ19_MASK                     (0x03ul)\r
862 #define GIRQ19_WAKE_CAPABLE_MASK        (0x03ul)\r
863 //\r
864 \r
865 // GIRQ20 Bit Positions \r
866 #define GIRQ20_GPIO_0200_BITPOS         (0)\r
867 #define GIRQ20_GPIO_0201_BITPOS         (1)\r
868 #define GIRQ20_GPIO_0202_BITPOS         (2)\r
869 #define GIRQ20_GPIO_0203_BITPOS         (3)\r
870 #define GIRQ20_GPIO_0204_BITPOS         (4)\r
871 //#define GIRQ20_GPIO_0205_BITPOS       (5)\r
872 #define GIRQ20_GPIO_0206_BITPOS         (6)\r
873 //#define GIRQ20_GPIO_0207_BITPOS       (7)\r
874 //\r
875 #define GIRQ20_GPIO_0210_BITPOS         (8)\r
876 #define GIRQ20_GPIO_0211_BITPOS         (9)\r
877 #define GIRQ20_GPIO_0212_BITPOS         (10)\r
878 #define GIRQ20_GPIO_0213_BITPOS         (11)\r
879 // \r
880 #define GIRQ20_MASK                     (0x0F5Ful)\r
881 #define GIRQ20_WAKE_CAPABLE_MASK        (0x0F5Ful)\r
882 //\r
883 \r
884 // GIRQ21 Bit Positions \r
885 #define GIRQ21_MASK                     (0x00ul)\r
886 #define GIRQ21_WAKE_CAPABLE_MASK        (0x00ul)\r
887 \r
888 // GIRQ22 Bit Positions \r
889 #define GIRQ22_MASK                     (0x00ul)\r
890 #define GIRQ22_WAKE_CAPABLE_MASK        (0x00ul)\r
891 \r
892 // GIRQ23 Bit Positions \r
893 #define GIRQ23_TMR0_BITPOS              (0)\r
894 #define GIRQ23_TMR1_BITPOS              (1)\r
895 #define GIRQ23_TMR2_BITPOS              (2)\r
896 #define GIRQ23_TMR3_BITPOS              (3)\r
897 #define GIRQ23_TMR4_BITPOS              (4)\r
898 #define GIRQ23_TMR5_BITPOS              (5)\r
899 //\r
900 #define GIRQ23_MASK                     (0x03Ful)\r
901 #define GIRQ23_WAKE_CAPABLE_MASK        (0x000ul)\r
902 //\r
903 \r
904 /* ------------------------------------------------------------------------------- */\r
905 /*                  NVIC,ECIA Routing Policy for Direct Mode                       */\r
906 /* ------------------------------------------------------------------------------- */\r
907 /* In Direct Mode, some interrupts could be configured to be used as aggregated.\r
908  * Configuration:\r
909  *      1. Always set ECS Interrupt Direct enable bit.         \r
910  *      2. If GIRQn aggregated set Block Enable bit.\r
911  *      3. If GIRQn direct then clear Block Enable bit and enable individual NVIC inputs.\r
912  *  Switching issues:\r
913  *  Aggregate enable/disable requires set/clear single GIRQn bit in GIRQ Block En/Clr registers.\r
914  *  Also requires set/clear of individual NVIC Enables.\r
915  *  \r
916  * Note: interrupt_is_girq_direct() internal function uses this policy to detect \r
917  * if any interrupt is configured as direct or aggregated\r
918 */\r
919 \r
920 /** Initialize EC Interrupt Aggregator\r
921  * @param mode 1 - Direct Map mode, 0 - Fully Aggregated Mode \r
922  * @param girq_bitmask - BitMask of GIRQ to be configured as aggregated \r
923  *                     This parameter is only applicable in direct mode.\r
924  * @note All GPIO's and wake capable sources are always \r
925  * aggregated! GPIO's interrupts will still work in direct mode.\r
926  * Block wakes are not be routed to the processor in direct \r
927  * mode. \r
928  * Note2: This function disables and enables global interrupt  \r
929  */\r
930 void interrupt_init(uint8_t mode, uint32_t girq_bitmask);\r
931 \r
932 /** Set interrupt routing mode to aggregated or direct. \r
933  * @param mode 1 = Direct (except GPIO & wake), 0 = All Aggregated \r
934  * @note In direct mode, one could enable certain GIRQs as aggregated using \r
935  * p_interrupt_ecia_block_enable_set function\r
936  */\r
937 void interrupt_mode_set(uint8_t mode);\r
938 \r
939 /** Clears all individual interrupts Enables and Source in ECIA,\r
940  *  and Clears all NVIC external enables and pending bits  \r
941  */\r
942 void interrupt_reset(void);\r
943 \r
944 /** Enables interrupt for a device \r
945  * @param dev_iroute - source IROUTING information \r
946  * @note This function disables and enables global interrupt \r
947  */\r
948 void interrupt_device_enable(uint32_t dev_iroute);\r
949 \r
950 /** Disables interrupt for a device\r
951  * @param dev_iroute - source IROUTING information  \r
952  * @note This function disables and enables global interrupt \r
953  */\r
954 void interrupt_device_disable(uint32_t dev_iroute);\r
955 \r
956 /* ------------------------------------------------------------------------------- */\r
957 /*                  ECIA APIs using device IROUTE() as input                       */ \r
958 /* ------------------------------------------------------------------------------- */\r
959 \r
960 /** Clear Source in the ECIA for the device  \r
961  * @param devi - device IROUTING value  \r
962  */\r
963 void interrupt_device_ecia_source_clear(const uint32_t dev_iroute);\r
964 \r
965 /** Get the Source bit in the ECIA for the device  \r
966  * @param devi - device IROUTING value  \r
967  * @return 0 if source bit not set; else non-zero value\r
968  */\r
969 uint32_t interrupt_device_ecia_source_get(const uint32_t dev_iroute);\r
970 \r
971 /** Get the Result bit in the ECIA for the device  \r
972  * @param devi - device IROUTING value  \r
973  * @return 0 if result bit not set; else non-zero value\r
974  */\r
975 uint32_t interrupt_device_ecia_result_get(const uint32_t dev_iroute);\r
976 \r
977 /* ------------------------------------------------------------------------------- */\r
978 /*                  NVIC APIs using device IROUTE() as input                       */ \r
979 /* ------------------------------------------------------------------------------- */\r
980 /* Note that if the device interrupt is aggregated, then these APIs would affect the \r
981  * NVIC corresponding to the aggregated GIRQ \r
982  */\r
983 \r
984 /**  Enable/Disable the NVIC (in the NVIC controller) for the device\r
985  * @param dev_iroute : source IROUTING information (encoded in a uint32_t)\r
986  * @param en_flag : 1 = Enable the NVIC IRQ, 0 = Disable the NVIC IRQ \r
987  * @note Recommended to use interrupt_device_enable, interrupt_device_disable\r
988  * to enable/disable interrupts for the device, since those APIs configure ECIA as well\r
989  */\r
990 void interrupt_device_nvic_enable(uint32_t dev_iroute, uint8_t en_flag);\r
991 \r
992 /** Set NVIC priority for specified peripheral interrupt source\r
993  * @param dev_iroute - source IROUTING information (encoded in a uint32_t)\r
994  * @param nvic_pri - NVIC Priority\r
995  * @note 1. If ECIA is in aggregated mode, the priority affects all interrupt \r
996  * sources in the GIRQ. \r
997  * 2. This function disables and enables global interrupt    \r
998  */\r
999 void interrupt_device_nvic_priority_set(const uint32_t dev_iroute, const uint8_t nvic_pri);\r
1000 \r
1001 /** Return NVIC priority for interrupt source\r
1002  * @param dev_iroute - source IROUTING information \r
1003  * @return uint32_t  NVIC priority \r
1004  */\r
1005 uint32_t interrupt_device_nvic_priority_get(const uint32_t dev_iroute);\r
1006 \r
1007 /** Return NVIC pending for interrupt source\r
1008  * @param dev_iroute - source IROUTING information \r
1009  * @return uint8_t 0(not pending), 1 (pending in NVIC) \r
1010  *  \r
1011  */\r
1012 uint8_t interrupt_device_nvic_pending_get(const uint32_t dev_iroute);\r
1013 \r
1014 /** Set NVIC pending for interrupt source\r
1015  * @param dev_iroute - source IROUTING information   \r
1016  */\r
1017 void interrupt_device_nvic_pending_set(const uint32_t dev_iroute);\r
1018 \r
1019 /** Clears NVIC pending for interrupt source\r
1020  * @param dev_iroute - source IROUTING information \r
1021  * @return uint8_t 0(not pending), 1 (pending in NVIC) - before clear \r
1022  * @note This function disables and enables global interrupt    \r
1023  */\r
1024 uint8_t interrupt_device_nvic_pending_clear(const uint32_t dev_iroute);\r
1025     \r
1026 /* ------------------------------------------------------------------------------- */\r
1027 /* Peripheral Functions - Operations on GIRQ Block Enable Set, Enable Clear        *\r
1028  * and Status Register                                                             */\r
1029 /* ------------------------------------------------------------------------------- */\r
1030 \r
1031 /** Enable specified GIRQ in ECIA block\r
1032  * @param girq_id - enum MEC_GIRQ_IDS \r
1033  */\r
1034  void p_interrupt_ecia_block_enable_set(uint8_t girq_id);\r
1035   \r
1036  /** Enable GIRQs in ECIA Block \r
1037  * @param girq_bitmask - Bitmask of GIRQs to be enabled in ECIA Block  \r
1038  */\r
1039 void p_interrupt_ecia_block_enable_bitmask_set(uint32_t girq_bitmask);\r
1040 \r
1041 /** Check if specified GIRQ block enabled or not\r
1042  * @param girq_id - enum MEC_GIRQ_IDS \r
1043  * @return retVal - 1 if the particular GIRQ block enabled, else 0\r
1044  */\r
1045 uint8_t p_interrupt_ecia_block_enable_get(uint8_t girq_id);\r
1046 \r
1047 /** Set all GIRQ block enables */\r
1048 void p_interrupt_ecia_block_enable_all_set(void);\r
1049 \r
1050 /** Clear specified GIRQ in ECIA Block \r
1051  * @param girq_id - enum MEC_GIRQ_IDS \r
1052  */\r
1053 void p_interrupt_ecia_block_enable_clr(uint8_t girq_id);\r
1054 \r
1055 /** Clear GIRQs in ECIA Block \r
1056  * @param girq_bitmask - Bitmask of GIRQs to be cleared in ECIA Block  \r
1057  */\r
1058 void p_interrupt_ecia_block_enable_bitmask_clr(uint32_t girq_bitmask);\r
1059 \r
1060 /** p_interrupt_ecia_block_enable_all_clr - Clears all GIRQ block enables */\r
1061 void p_interrupt_ecia_block_enable_all_clr(void);\r
1062  \r
1063  /** Get status of GIRQ in ECIA Block\r
1064  * @param girq_id - enum MEC_GIRQ_IDS  \r
1065  * @return 0 if status bit not set; else non-zero value\r
1066  */\r
1067 uint32_t p_interrupt_ecia_block_irq_status_get(uint8_t girq_id);\r
1068 \r
1069 /** Reads the Block IRQ Vector Register\r
1070   * @return 32-bit value\r
1071  */\r
1072 uint32_t p_interrupt_ecia_block_irq_all_status_get(void);\r
1073 \r
1074 /* ---------------------------------------------------------------------------- */\r
1075 /* Peripheral Functions - Operations on GIRQx Source, Enable, Result            *\r
1076  * and Enable Registers                                                         */\r
1077 /* ---------------------------------------------------------------------------- */\r
1078 \r
1079 /** Clear specified interrupt source bit in GIRQx\r
1080  * @param girq_id - enum MEC_GIRQ_IDS\r
1081  * @param bitnum -[0, 31]\r
1082  */\r
1083 void p_interrupt_ecia_girq_source_clr(int16_t girq_id, uint8_t bitnum);\r
1084 \r
1085 /** Read the specified interrupt source bit in GIRQx\r
1086  * @param girq_id - enum MEC_GIRQ_IDS\r
1087  * @param bitnum -[0, 31]\r
1088  * @return 0 if source bit not set; else non-zero value\r
1089  */\r
1090 uint32_t p_interrupt_ecia_girq_source_get(int16_t girq_id, uint8_t bitnum);\r
1091 \r
1092 /** Enable the specified interrupt in GIRQx\r
1093  * girq_id - enum MEC_GIRQ_IDS\r
1094  * bitnum = [0, 31]\r
1095  */\r
1096 void p_interrupt_ecia_girq_enable_set(uint16_t girq_id, uint8_t bitnum);\r
1097 \r
1098 /** Disable the specified interrupt in GIRQx\r
1099  * girq_id - enum MEC_GIRQ_IDS\r
1100  * bitnum = [0, 31]\r
1101  */\r
1102 void p_interrupt_ecia_girq_enable_clr(uint16_t girq_id, uint8_t bitnum);\r
1103 \r
1104 /** Read the status of the specified interrupt in GIRQx\r
1105  * girq_id - enum MEC_GIRQ_IDS\r
1106  * bitnum = [0, 31]\r
1107  * @return 0 if enable bit not set; else non-zero value\r
1108  */\r
1109 uint32_t p_interrupt_ecia_girq_enable_get(uint16_t girq_id, uint8_t bitnum);\r
1110 \r
1111 /** Read the result bit of the interrupt in GIRQx\r
1112  * @param girq_id - enum MEC_GIRQ_IDS\r
1113  * @param bitnum -[0, 31]\r
1114  * @return 0 if enable bit not set; else non-zero value\r
1115  */\r
1116 uint32_t p_interrupt_ecia_girq_result_get(int16_t girq_id, uint8_t bitnum);\r
1117 \r
1118 /* ------------------------------------------------------------------------------- */\r
1119 /* Peripheral Function - Operations on all GIRQs                                   */\r
1120 /* ------------------------------------------------------------------------------- */\r
1121 \r
1122 /** Clear all aggregator GIRQn status registers */\r
1123 void p_interrupt_ecia_girqs_source_reset(void);\r
1124 \r
1125 /** Clear all aggregator GIRQn enables */\r
1126  void p_interrupt_ecia_girqs_enable_reset(void);\r
1127  \r
1128 /* ------------------------------------------------------------------------------- */\r
1129 /* Peripheral Function - Function to set interrupt control                         */\r
1130 /* ------------------------------------------------------------------------------- */\r
1131 \r
1132 /** Set interrupt control \r
1133  * @param nvic_en_flag : 0 = Alternate NVIC disabled, 1 = Alternate NVIC enabled\r
1134  */\r
1135  void p_interrupt_control_set(uint8_t nvic_en_flag);\r
1136      \r
1137  /** Read interrupt control \r
1138  * @return uint8_t - 0 = Alternate NVIC disabled, 1 = Alternate NVIC enabled\r
1139  */\r
1140 uint8_t p_interrupt_control_get(void);\r
1141 \r
1142 /* ------------------------------------------------------------------------------- */\r
1143 /* Peripheral Functions - NVIC                                                     */\r
1144 /* ------------------------------------------------------------------------------- */\r
1145 \r
1146 /**  Enable/Disable the NVIC IRQ in the NVIC interrupt controller\r
1147  * @param nvic_num : NVIC number (see enum IRQn_Type)\r
1148  * @param en_flag : 1 = Enable the NVIC IRQ, 0 = Disable the NVIC IRQ\r
1149  * @note Application should perform this operation\r
1150  */\r
1151  void p_interrupt_nvic_enable(IRQn_Type nvic_num, uint8_t en_flag);\r
1152      \r
1153  /**  ecia_nvic_clr_en - Clear all NVIC external enables */ \r
1154 void p_interrupt_nvic_extEnables_clr(void);\r
1155 \r
1156 /** Clear all NVIC external enables and pending bits */\r
1157 void p_interrupt_nvic_enpend_clr(void);\r
1158 \r
1159 /** Set NVIC external priorities to POR value */\r
1160 void p_interrupt_nvic_priorities_default_set(void);\r
1161 \r
1162 /** Set NVIC external priorities to specified priority (0 - 7)\r
1163  * @param zero-based 3-bit priority value: 0=highest, 7=lowest.\r
1164  * @note NVIC highest priority is the value 0, lowest is all 1's.\r
1165  * Each external interrupt has an 8-bit register and the priority \r
1166  * is left justified in the registers. MECxxx implements 8 priority \r
1167  * levels or bits [7:5] in the register. Lowest priority = 0xE0\r
1168  */\r
1169 void p_interrupt_nvic_priorities_set(uint8_t new_pri);\r
1170 \r
1171 #endif /*_INTERRUPT_H_*/\r
1172 \r
1173 /**   @}\r
1174  */\r
1175 \r
1176 \r
1177 \r