2 * Copyright (C) 2017 C-SKY Microsystems Co., Ltd. All rights reserved.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 /**************************************************************************//**
19 * @brief CSI Core Peripheral Access Layer Header File for
20 * CSKYSOC Device Series
23 ******************************************************************************/
34 #define SYSTEM_CLOCK (24000000)
38 #define IHS_VALUE (8000000)
42 #define EHS_VALUE (8000000)
44 /* ------------------------- Interrupt Number Definition ------------------------ */
48 /* ---------------------- CSKYCK801 Specific Interrupt Numbers --------------------- */
49 GPIOA_IRQn = 0, /* gpio Interrupt */
50 CORET_IRQn = 1, /* core Timer Interrupt */
51 TIMA0_IRQn = 2, /* timerA0 Interrupt */
52 TIMA1_IRQn = 3, /* timerA1 Interrupt */
53 I2S_IRQn = 4, /* i2s Interrupt */
54 WDT_IRQn = 5, /* wdt Interrupt */
55 UART0_IRQn = 6, /* uart0 Interrupt */
56 UART1_IRQn = 7, /* uart1 Interrupt */
57 UART2_IRQn = 8, /* uart2 Interrupt */
58 I2C0_IRQn = 9, /* i2c0 Interrupt */
59 I2C1_IRQn = 10, /* i2c1 Interrupt */
60 SPI1_IRQn = 11, /* spi0 Interrupt */
61 SPI0_IRQn = 12, /* spi1 Interrupt */
62 RTC_IRQn = 13, /* rtc Interrupt */
63 EXTWAK_IRQn = 14, /* extwakeup Interrupt */
64 ADC_IRQn = 15, /* adc interrupt */
65 CMP_IRQn = 16, /* cmp interrupt */
66 SEU_DMAC_IRQn = 17, /* seu dmac Interrupt */
67 POWM_IRQn = 18, /* powm Interrupt */
68 PWM_IRQn = 19, /* pwm Interrupt */
69 SYS_RESET_IRQn = 20, /* system reset Interrupt */
70 REV_IRQn = 21, /* rev Interrupt */
71 NONSEU_DMAC_IRQn = 22, /* nonuseu dmac Interrupt */
72 TIMB0_IRQn = 23, /* timerB0 Interrupt */
73 TIMB1_IRQn = 24, /* timerB1 Interrupt */
74 RTC1_IRQn = 25, /* rtc1 Interrupt */
75 AES_IRQn = 26, /* aes Interrupt */
76 GPIOB_IRQn = 27, /* trng Interrupt */
77 RSA_IRQn = 28, /* rsa Interrupt */
78 SHA_IRQn = 29, /* sha Interrupt */
83 /* ================================================================================ */
84 /* ================ Processor and Core Peripheral Section ================ */
85 /* ================================================================================ */
87 /* -------- Configuration of the CK801 Processor and Core Peripherals ------- */
88 #define __CK802_REV 0x0000U /* Core revision r0p0 */
89 #define __MGU_PRESENT 0 /* MGU present or not */
90 #define __NVIC_PRIO_BITS 2 /* Number of Bits used for Priority Levels */
91 #define __Vendor_SysTickConfig 0 /* Set to 1 if different SysTick Config is used */
93 #include "core_ck802.h" /* Processor and core peripherals */
114 } ckenum_dma_device_e;
116 /* ================================================================================ */
117 /* ================ Device Specific Peripheral Section ================ */
118 /* ================================================================================ */
121 /* ================================================================================ */
122 /* ============== Universal Asyncronous Receiver / Transmitter (UART) ============= */
123 /* ================================================================================ */
126 __IM uint32_t RBR; /* Offset: 0x000 (R/ ) Receive buffer register */
127 __OM uint32_t THR; /* Offset: 0x000 ( /W) Transmission hold register */
128 __IOM uint32_t DLL; /* Offset: 0x000 (R/W) Clock frequency division low section register */
131 __IOM uint32_t DLH; /* Offset: 0x004 (R/W) Clock frequency division high section register */
132 __IOM uint32_t IER; /* Offset: 0x004 (R/W) Interrupt enable register */
134 __IM uint32_t IIR; /* Offset: 0x008 (R/ ) Interrupt indicia register */
135 __IOM uint32_t LCR; /* Offset: 0x00C (R/W) Transmission control register */
136 __IOM uint32_t MCR; /* Offset: 0x010 (R/W) Modem control register */
137 __IM uint32_t LSR; /* Offset: 0x014 (R/ ) Transmission state register */
138 __IM uint32_t MSR; /* Offset: 0x018 (R/ ) Modem state register */
139 uint32_t RESERVED1[24];
140 __IM uint32_t USR; /* Offset: 0x07c (R/ ) UART state register */
144 /* ================================================================================ */
145 /* ============== Inter-Integrated Circuit (IIC) ============= */
146 /* ================================================================================ */
148 __IOM uint32_t IC_CON; /* Offset: 0x000 (R/W) Receive buffer register */
149 __IOM uint32_t IC_TAR; /* Offset: 0x004 (R/W) Transmission hold register */
150 __IOM uint32_t IC_SAR; /* Offset: 0x008 (R/W) Clock frequency division low section register */
151 __IOM uint32_t IC_HS_MADDR; /* Offset: 0x00c (R/W) Clock frequency division high section register */
152 __IOM uint32_t IC_DATA_CMD; /* Offset: 0x010 (R/W) Interrupt enable register */
153 __IOM uint32_t IC_SS_SCL_HCNT; /* Offset: 0x014 (R/W) Interrupt indicia register */
154 __IOM uint32_t IC_SS_SCL_LCNT; /* Offset: 0x018 (R/W) Transmission control register */
155 __IOM uint32_t IC_FS_SCL_HCNT; /* Offset: 0x01c (R/W) Modem control register */
156 __IOM uint32_t IC_FS_SCL_LCNT; /* Offset: 0x020 (R/W) Transmission state register */
157 __IOM uint32_t IC_HS_SCL_HCNT; /* Offset: 0x024 (R/W) Transmission state register */
158 __IOM uint32_t IC_HS_SCL_LCNT; /* Offset: 0x028 (R/W) Transmission state register */
159 __IOM uint32_t IC_INTR_STAT; /* Offset: 0x02c (R) Transmission state register */
160 __IOM uint32_t IC_INTR_MASK; /* Offset: 0x030 (R/W) Transmission state register */
161 __IOM uint32_t IC_RAW_INTR_STAT; /* Offset: 0x034 (R) Transmission state register */
162 __IOM uint32_t IC_RX_TL; /* Offset: 0x038 (R/W) Transmission state register */
163 __IOM uint32_t IC_TX_TL; /* Offset: 0x03c (R/W) Transmission state register */
164 __IOM uint32_t IC_CLR_INTR; /* Offset: 0x040 (R) Transmission state register */
165 __IOM uint32_t IC_CLR_RX_UNDER; /* Offset: 0x044 (R) Transmission state register */
166 __IOM uint32_t IC_CLR_RX_OVER; /* Offset: 0x048 (R) Transmission state register */
167 __IOM uint32_t IC_CLR_TX_OVER; /* Offset: 0x04c (R) Transmission state register */
168 __IOM uint32_t IC_CLR_RD_REQ; /* Offset: 0x050 (R) Transmission state register */
169 __IOM uint32_t IC_CLR_TX_ABRT; /* Offset: 0x054 (R) Transmission state register */
170 __IOM uint32_t IC_CLR_RX_DONE; /* Offset: 0x058 (R) Transmission state register */
171 __IOM uint32_t IC_CLR_ACTIVITY; /* Offset: 0x05c (R) Transmission state register */
172 __IOM uint32_t IC_CLR_STOP_DET; /* Offset: 0x060 (R) Transmission state register */
173 __IOM uint32_t IC_CLR_START_DET; /* Offset: 0x064 (R) Transmission state register */
174 __IOM uint32_t IC_CLR_GEN_CALL; /* Offset: 0x068 (R) Transmission state register */
175 __IOM uint32_t IC_ENABLE; /* Offset: 0x06c (R/W) Transmission state register */
176 __IOM uint32_t IC_STATUS; /* Offset: 0x070 (R) Transmission state register */
177 __IOM uint32_t IC_TXFLR; /* Offset: 0x074 (R) Transmission state register */
178 __IOM uint32_t IC_RXFLR; /* Offset: 0x078 (R) Transmission state register */
179 uint32_t RESERVED; /* Offset: 0x014 (R/ ) Transmission state register */
180 __IOM uint32_t IC_TX_ABRT_SOURCE; /* Offset: 0x080 (R/W) Transmission state register */
181 __IOM uint32_t IC_SAR1; /* Offset: 0x084 (R/W) Transmission state register */
182 __IOM uint32_t IC_DMA_CR; /* Offset: 0x088 (R/W) Transmission state register */
183 __IOM uint32_t IC_DMA_TDLR; /* Offset: 0x08c (R/W) Transmission state register */
184 __IOM uint32_t IC_DMA_RDLR; /* Offset: 0x090 (R/W) Transmission state register */
185 __IOM uint32_t IC_SAR2; /* Offset: 0x094 (R/W) Transmission state register */
186 __IOM uint32_t IC_SAR3; /* Offset: 0x098 (R/W) Transmission state register */
187 __IOM uint32_t IC_MULTI_SLAVE; /* Offset: 0x09c (R/W) Transmission state register */
188 __IOM uint32_t IC_GEN_CALL_EN; /* Offset: 0x0a0 (R/W) Transmission state register */
193 /* ================================================================================ */
194 /* ============== TIMER ============= */
195 /* ================================================================================ */
197 __IOM uint32_t TxLoadCount; /* Offset: 0x000 (R/W) Receive buffer register */
198 __IOM uint32_t TxCurrentValue; /* Offset: 0x004 (R) Transmission hold register */
199 __IOM uint32_t TxControl; /* Offset: 0x008 (R/W) Clock frequency division low section register */
200 __IOM uint32_t TxEOI; /* Offset: 0x00c (R) Clock frequency division high section register */
201 __IOM uint32_t TxIntStatus; /* Offset: 0x010 (R) Interrupt enable register */
203 } CSKY_TIMER_TypeDef;
205 /* ================================================================================ */
206 /* ============== TIMER Control ============= */
207 /* ================================================================================ */
209 __IOM uint32_t TimersIntStatus; /* Offset: 0x000 (R) Interrupt indicia register */
210 __IOM uint32_t TimerEOI; /* Offset: 0x004 (R) Transmission control register */
211 __IOM uint32_t TimerRawIntStatus; /* Offset: 0x008 (R) Modem control register */
213 } CSKY_TIMER_Control_TypeDef;
216 /* ================================================================================ */
217 /* ============== GPIO ============= */
218 /* ================================================================================ */
220 __IOM uint32_t SWPORT_DR; /* Offset: 0x000 (R/W) Interrupt indicia register */
221 __IOM uint32_t SWPORT_DDR; /* Offset: 0x004 (R/W) Interrupt indicia register */
222 __IOM uint32_t PORT_CTL; /* Offset: 0x008 (R/W) Interrupt indicia register */
223 } CKStruct_GPIO, *PCKStruct_GPIO;
226 __IOM uint32_t SHA_CON; /* Offset: 0x000 (R/W) Control register */
227 __IOM uint32_t SHA_INTSTATE; /* Offset: 0x004 (R/W) Instatus register */
228 __IOM uint32_t SHA_H0L; /* Offset: 0x008 (R/W) H0L register */
229 __IOM uint32_t SHA_H1L; /* Offset: 0x00c (R/W) H1L register */
230 __IOM uint32_t SHA_H2L; /* Offset: 0x010 (R/W) H2L register */
231 __IOM uint32_t SHA_H3L; /* Offset: 0x014 (R/W) H3L register */
232 __IOM uint32_t SHA_H4L; /* Offset: 0x018 (R/W) H4L register */
233 __IOM uint32_t SHA_H5L; /* Offset: 0x01c (R/W) H5L register */
234 __IOM uint32_t SHA_H6L; /* Offset: 0x020 (R/W) H6L register */
235 __IOM uint32_t SHA_H7L; /* Offset: 0x024 (R/W) H7L register */
236 __IOM uint32_t SHA_H0H; /* Offset: 0x028 (R/W) H0H register */
237 __IOM uint32_t SHA_H1H; /* Offset: 0x02c (R/W) H1H register */
238 __IOM uint32_t SHA_H2H; /* Offset: 0x030 (R/W) H2H register */
239 __IOM uint32_t SHA_H3H; /* Offset: 0x034 (R/W) H3H register */
240 __IOM uint32_t SHA_H4H; /* Offset: 0x038 (R/W) H4H register */
241 __IOM uint32_t SHA_H5H; /* Offset: 0x03c (R/W) H5H register */
242 __IOM uint32_t SHA_H6H; /* Offset: 0x040 (R/W) H6H register */
243 __IOM uint32_t SHA_H7H; /* Offset: 0x044 (R/W) H7H register */
244 __IOM uint32_t SHA_DATA1; /* Offset: 0x048 (R/W) DATA1 register */
246 __IOM uint32_t SHA_DATA2; /* Offset: 0x088 (R/W) DATA2 register */
252 #define CONFIG_PMU_NUM 1
253 #define CONFIG_CRC_NUM 1
254 #define CONFIG_EFLASH_NUM 1
255 #define CONFIG_IIC_NUM 2
256 #define CONFIG_TRNG_NUM 1
257 #define CONFIG_AES_NUM 1
258 #define CONFIG_RSA_NUM 1
259 #define CONFIG_SHA_NUM 1
260 #define CONFIG_SPI_NUM 2
261 #define CONFIG_PWM_NUM 6
262 #define CONFIG_TIMER_NUM 4
263 #define CONFIG_RTC_NUM 2
264 #define CONFIG_WDT_NUM 1
265 #define CONFIG_DMAC_NUM 2
266 #define CONFIG_GPIO_NUM 2
267 #define CONFIG_GPIO_PIN_NUM 32
268 #define CONFIG_USART_NUM 3
269 #define CONFIG_ETH_NUM 2
271 /* ================================================================================ */
272 /* ================ Peripheral memory map ================ */
273 /* ================================================================================ */
274 /* -------------------------- CHIP memory map ------------------------------- */
275 #define CSKY_EFLASH_BASE (0x10000000UL)
276 #define CSKY_SRAM_BASE (0x60000000UL)
279 #define CSKY_AHB_ARB_BASE (0x40000000UL)
280 #define CSKY_DMAC0_BASE (0x40001000UL)
281 #define CSKY_CLKGEN_BASE (0x40002000UL)
282 #define CSKY_CRC_BASE (0x40003000UL)
283 #define CSKY_DMAC1_BASE (0x40004000UL)
284 #define CSKY_OTP_BASE (0x4003F000UL)
285 #define CSKY_AES_BASE (0x40006000UL)
286 #define CSKY_SRAM_SASC_BASE (0x40007000UL)
287 #define CSKY_SHA_BASE (0x40008000UL)
288 #define CSKY_TRNG_BASE (0x40009000UL)
289 #define CSKY_RSA_BASE (0x4000a000UL)
290 #define CSKY_EFLASH_CONTROL_BASE (0x4003f000UL)
291 #define CSKY_APB0_BRIDGE_BASE (0x50000000UL)
292 #define CSKY_APB1_BRIDGE_BASE (0x50010000UL)
295 #define CSKY_WDT_BASE (0x50001000UL)
296 #define CSKY_SPI0_BASE (0x50002000UL)
297 #define CSKY_RTC0_BASE (0x50003000UL)
298 #define CSKY_UART0_BASE (0x50004000UL)
299 #define CSKY_UART1_BASE (0x50005000UL)
300 #define CSKY_GPIO0_BASE (0x50006000UL)
301 #define CSKY_I2C0_BASE (0x50007000UL)
302 #define CSKY_I2S_BASE (0x50008000UL)
303 #define CSKY_GPIO1_BASE (0x50009000UL)
304 #define CSKY_SIPC_BASE (0x5000a000UL)
307 #define CSKY_TIM0_BASE (0x50011000UL)
308 #define CSKY_SPI1_BASE (0x50012000UL)
309 #define CSKY_I2C1_BASE (0x50013000UL)
310 #define CSKY_PWM_BASE (0x50014000UL)
311 #define CSKY_UART2_BASE (0x50015000UL)
312 #define CSKY_ADC_CTL_BASE (0x50016000UL)
313 #define CSKY_CMP_CTL_BASE (0x50017000UL)
314 #define CSKY_ETB_BASE (0x50018000UL)
315 #define CSKY_TIM1_BASE (0x50019000UL)
316 #define CSKY_RTC1_BASE (0x5001a000UL)
318 #define SHA_CONTEXT_SIZE 224
320 /* ================================================================================ */
321 /* ================ Peripheral declaration ================ */
322 /* ================================================================================ */
323 #define CSKY_UART1 (( CSKY_UART_TypeDef *) CSKY_UART1_BASE)
324 #define CSKY_SHA (( CSKY_SHA_TypeDef *) CSKY_SHA_BASE)