]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/T-HEAD_CB2201_CDK/csi/csi_driver/csky/hobbit1_2/isr.c
Introduce a port for T-HEAD CK802. A simple demo for T-HEAD CB2201 is also included.
[freertos] / FreeRTOS / Demo / T-HEAD_CB2201_CDK / csi / csi_driver / csky / hobbit1_2 / isr.c
1 /*
2  * Copyright (C) 2017 C-SKY Microsystems Co., Ltd. All rights reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *   http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 /******************************************************************************
18  * @file     isr.c
19  * @brief    source file for the interrupt server route
20  * @version  V1.0
21  * @date     25. August 2017
22  ******************************************************************************/
23 #include <drv_common.h>
24 #include "config.h"
25 #include "soc.h"
26 #ifndef CONFIG_KERNEL_NONE
27 #include <csi_kernel.h>
28 #endif
29
30 extern void dw_usart_irqhandler(int32_t idx);
31 extern void dw_timer_irqhandler(int32_t idx);
32 extern void dw_gpio_irqhandler(int32_t idx);
33 extern void dw_iic_irqhandler(int32_t idx);
34 extern void ck_rtc_irqhandler(int32_t idx);
35 extern void dw_spi_irqhandler(int32_t idx);
36 extern void dw_wdt_irqhandler(int32_t idx);
37 extern void ck_dma_irqhandler(int32_t idx);
38 extern void ck_aes_irqhandler(int32_t idx);
39 extern void ck_sha_irqhandler(int32_t idx);
40 extern void xPortSysTickHandler( void );
41
42 #define readl(addr) \
43     ({ unsigned int __v = (*(volatile unsigned int *) (addr)); __v; })
44
45 #define ATTRIBUTE_ISR
46
47 #ifndef CONFIG_KERNEL_NONE
48 #define  CSI_INTRPT_ENTER() csi_kernel_intrpt_enter()
49 #define  CSI_INTRPT_EXIT()  csi_kernel_intrpt_exit()
50 #else
51 #define  CSI_INTRPT_ENTER()
52 #define  CSI_INTRPT_EXIT()
53 #endif
54
55
56
57 ATTRIBUTE_ISR void CORET_IRQHandler(void)
58 {
59     readl(0xE000E010);
60
61         xPortSysTickHandler();
62 }
63
64 #if defined(CONFIG_USART)
65 ATTRIBUTE_ISR void USART0_IRQHandler(void)
66 {
67     CSI_INTRPT_ENTER();
68     dw_usart_irqhandler(0);
69     CSI_INTRPT_EXIT();
70 }
71
72 ATTRIBUTE_ISR void USART1_IRQHandler(void)
73 {
74     CSI_INTRPT_ENTER();
75     dw_usart_irqhandler(1);
76     CSI_INTRPT_EXIT();
77 }
78
79 ATTRIBUTE_ISR void USART2_IRQHandler(void)
80 {
81     CSI_INTRPT_ENTER();
82     dw_usart_irqhandler(2);
83     CSI_INTRPT_EXIT();
84 }
85
86 ATTRIBUTE_ISR void USART3_IRQHandler(void)
87 {
88     CSI_INTRPT_ENTER();
89     dw_usart_irqhandler(3);
90     CSI_INTRPT_EXIT();
91 }
92
93 #endif
94
95 #if defined(CONFIG_TIMER)
96 ATTRIBUTE_ISR void TIMA0_IRQHandler(void)
97 {
98     CSI_INTRPT_ENTER();
99     dw_timer_irqhandler(0);
100     CSI_INTRPT_EXIT();
101 }
102
103 ATTRIBUTE_ISR void TIMA1_IRQHandler(void)
104 {
105     CSI_INTRPT_ENTER();
106     dw_timer_irqhandler(1);
107     CSI_INTRPT_EXIT();
108 }
109
110 ATTRIBUTE_ISR void TIMB0_IRQHandler(void)
111 {
112     CSI_INTRPT_ENTER();
113     dw_timer_irqhandler(2);
114     CSI_INTRPT_EXIT();
115 }
116
117 ATTRIBUTE_ISR void TIMB1_IRQHandler(void)
118 {
119     CSI_INTRPT_ENTER();
120     dw_timer_irqhandler(3);
121     CSI_INTRPT_EXIT();
122 }
123
124 #endif
125
126 #if defined(CONFIG_GPIO)
127
128 ATTRIBUTE_ISR void GPIO0_IRQHandler(void)
129 {
130     CSI_INTRPT_ENTER();
131     dw_gpio_irqhandler(0);
132     CSI_INTRPT_EXIT();
133 }
134
135 ATTRIBUTE_ISR void GPIO1_IRQHandler(void)
136 {
137     CSI_INTRPT_ENTER();
138     dw_gpio_irqhandler(1);
139     CSI_INTRPT_EXIT();
140 }
141
142 #endif
143
144 #if defined(CONFIG_IIC)
145 ATTRIBUTE_ISR void I2C0_IRQHandler(void)
146 {
147     CSI_INTRPT_ENTER();
148     dw_iic_irqhandler(0);
149     CSI_INTRPT_EXIT();
150 }
151
152 ATTRIBUTE_ISR void I2C1_IRQHandler(void)
153 {
154     CSI_INTRPT_ENTER();
155     dw_iic_irqhandler(1);
156     CSI_INTRPT_EXIT();
157 }
158 #endif
159
160 #if defined(CONFIG_RTC)
161
162 ATTRIBUTE_ISR void RTC_IRQHandler(void)
163 {
164     CSI_INTRPT_ENTER();
165     ck_rtc_irqhandler(0);
166     CSI_INTRPT_EXIT();
167 }
168
169 ATTRIBUTE_ISR void RTC1_IRQHandler(void)
170 {
171     CSI_INTRPT_ENTER();
172     ck_rtc_irqhandler(1);
173     CSI_INTRPT_EXIT();
174 }
175 #endif
176
177 #if defined(CONFIG_AES)
178
179 ATTRIBUTE_ISR void AES_IRQHandler(void)
180 {
181     CSI_INTRPT_ENTER();
182     ck_aes_irqhandler(0);
183     CSI_INTRPT_EXIT();
184 }
185
186 #endif
187
188 #if defined(CONFIG_TRNG)
189 ATTRIBUTE_ISR void TRNG_IRQHandler(void)
190 {
191     CSI_INTRPT_ENTER();
192
193     CSI_INTRPT_EXIT();
194 }
195 #endif
196
197 #if defined(CONFIG_RSA)
198 ATTRIBUTE_ISR void RSA_IRQHandler(void)
199 {
200     CSI_INTRPT_ENTER();
201
202     CSI_INTRPT_EXIT();
203 }
204 #endif
205
206 #if defined(CONFIG_SPI) && defined(CONFIG_GPIO)
207 ATTRIBUTE_ISR void SPI0_IRQHandler(void)
208 {
209     CSI_INTRPT_ENTER();
210     dw_spi_irqhandler(0);
211     CSI_INTRPT_EXIT();
212 }
213
214 ATTRIBUTE_ISR void SPI1_IRQHandler(void)
215 {
216     CSI_INTRPT_ENTER();
217     dw_spi_irqhandler(1);
218     CSI_INTRPT_EXIT();
219 }
220 #endif
221
222 #if defined(CONFIG_WDT)
223 ATTRIBUTE_ISR void WDT_IRQHandler(void)
224 {
225     CSI_INTRPT_ENTER();
226     dw_wdt_irqhandler(0);
227     CSI_INTRPT_EXIT();
228 }
229 #endif