]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/T-HEAD_CB2201_CDK/csi/csi_driver/csky/phobos/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 / phobos / 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     02. June 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
41 #define readl(addr) \
42     ({ unsigned int __v = (*(volatile unsigned int *) (addr)); __v; })
43
44 #ifndef CONFIG_KERNEL_NONE
45 #define  CSI_INTRPT_ENTER() csi_kernel_intrpt_enter()
46 #define  CSI_INTRPT_EXIT()  csi_kernel_intrpt_exit()
47 #else
48 #define  CSI_INTRPT_ENTER()
49 #define  CSI_INTRPT_EXIT()
50 #endif
51
52 ATTRIBUTE_ISR void CORET_IRQHandler(void)
53 {
54     readl(0xE000E010);
55 }
56
57 #if defined(CONFIG_USART)
58 ATTRIBUTE_ISR void USART0_IRQHandler(void)
59 {
60     CSI_INTRPT_ENTER();
61     dw_usart_irqhandler(0);
62     CSI_INTRPT_EXIT();
63 }
64
65 ATTRIBUTE_ISR void USART1_IRQHandler(void)
66 {
67     CSI_INTRPT_ENTER();
68     dw_usart_irqhandler(1);
69     CSI_INTRPT_EXIT();
70 }
71
72 ATTRIBUTE_ISR void USART2_IRQHandler(void)
73 {
74     CSI_INTRPT_ENTER();
75     dw_usart_irqhandler(2);
76     CSI_INTRPT_EXIT();
77 }
78
79 ATTRIBUTE_ISR void USART3_IRQHandler(void)
80 {
81     CSI_INTRPT_ENTER();
82     dw_usart_irqhandler(3);
83     CSI_INTRPT_EXIT();
84 }
85
86 #endif
87
88 #if defined(CONFIG_TIMER)
89 ATTRIBUTE_ISR void TIMA0_IRQHandler(void)
90 {
91     CSI_INTRPT_ENTER();
92     dw_timer_irqhandler(0);
93     CSI_INTRPT_EXIT();
94 }
95
96 ATTRIBUTE_ISR void TIMA1_IRQHandler(void)
97 {
98     CSI_INTRPT_ENTER();
99     dw_timer_irqhandler(1);
100     CSI_INTRPT_EXIT();
101 }
102 ATTRIBUTE_ISR void TIMB0_IRQHandler(void)
103 {
104     CSI_INTRPT_ENTER();
105     dw_timer_irqhandler(2);
106     CSI_INTRPT_EXIT();
107 }
108
109 ATTRIBUTE_ISR void TIMB1_IRQHandler(void)
110 {
111     CSI_INTRPT_ENTER();
112     dw_timer_irqhandler(3);
113     CSI_INTRPT_EXIT();
114 }
115
116 #endif
117
118 #if defined(CONFIG_GPIO)
119
120 ATTRIBUTE_ISR void GPIOA_IRQHandler(void)
121 {
122     CSI_INTRPT_ENTER();
123     dw_gpio_irqhandler(0);
124     CSI_INTRPT_EXIT();
125 }
126
127 ATTRIBUTE_ISR void GPIOB_IRQHandler(void)
128 {
129     CSI_INTRPT_ENTER();
130     dw_gpio_irqhandler(1);
131     CSI_INTRPT_EXIT();
132 }
133 #endif
134
135 #if defined(CONFIG_IIC)
136 ATTRIBUTE_ISR void I2C0_IRQHandler(void)
137 {
138     CSI_INTRPT_ENTER();
139     dw_iic_irqhandler(0);
140     CSI_INTRPT_EXIT();
141 }
142
143 ATTRIBUTE_ISR void I2C1_IRQHandler(void)
144 {
145     CSI_INTRPT_ENTER();
146     dw_iic_irqhandler(1);
147     CSI_INTRPT_EXIT();
148 }
149 #endif
150
151 #if defined(CONFIG_RTC)
152
153 ATTRIBUTE_ISR void RTC_IRQHandler(void)
154 {
155     CSI_INTRPT_ENTER();
156     ck_rtc_irqhandler(0);
157     CSI_INTRPT_EXIT();
158 }
159
160 #endif
161
162 #if defined(CONFIG_AES)
163
164 ATTRIBUTE_ISR void AES_IRQHandler(void)
165 {
166     CSI_INTRPT_ENTER();
167     ck_aes_irqhandler(0);
168     CSI_INTRPT_EXIT();
169 }
170
171 #endif
172
173 #if defined(CONFIG_SHA)
174
175 ATTRIBUTE_ISR void SHA_IRQHandler(void)
176 {
177     CSI_INTRPT_ENTER();
178     ck_sha_irqhandler(0);
179     CSI_INTRPT_EXIT();
180 }
181
182 #endif
183
184 #if defined(CONFIG_SPI) && defined(CONFIG_GPIO)
185 ATTRIBUTE_ISR void SPI0_IRQHandler(void)
186 {
187     CSI_INTRPT_ENTER();
188     dw_spi_irqhandler(0);
189     CSI_INTRPT_EXIT();
190 }
191
192 ATTRIBUTE_ISR void SPI1_IRQHandler(void)
193 {
194     CSI_INTRPT_ENTER();
195     dw_spi_irqhandler(1);
196     CSI_INTRPT_EXIT();
197 }
198 #endif
199
200 #if defined(CONFIG_WDT)
201 ATTRIBUTE_ISR void WDT_IRQHandler(void)
202 {
203     CSI_INTRPT_ENTER();
204     dw_wdt_irqhandler(0);
205     CSI_INTRPT_EXIT();
206 }
207 #endif
208
209 #if defined(CONFIG_DMAC)
210 ATTRIBUTE_ISR void DMAC_IRQHandler(void)
211 {
212     CSI_INTRPT_ENTER();
213     ck_dma_irqhandler(0);
214     CSI_INTRPT_EXIT();
215 }
216 #endif