summaryrefslogtreecommitdiff
path: root/libcpu/unicore32/sep6200/sep6200.h
blob: 4b9eab6d79eef2804b15cca9cc57d1c487f80099 (plain)
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
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2013-7-17      Peng Fan     sep6200 implementation
 */

#ifndef __SEP6200_H
#define __SEP6200_H

#include <rtthread.h>

/*Core definations*/
#define PRIVMODE  0x13
#define Mode_USR    0x10
#define Mode_REAL   0x11
#define Mode_IRQ    0x12
#define Mode_PRIV   0x13
#define Mode_TRAP   0x17
#define Mode_EXT    0x1B
#define Mode_SUSR   0x1F

/*
 *  Address
 */

#define  SEP6200_VIC_BASE   0xb0000000
#define  SEP6200_PMU_BASE   0xb0001000
#define  SEP6200_RTC_BASE   0xb0002000
#define  SEP6200_TIMER_BASE 0xb0003000
#define  SEP6200_PWM_BASE   0xb0004000
#define  SEP6200_GPIO_BASE  0xb0006000
#define  SEP6200_TOUCH_ADC  0xb0007000
#define  SEP6200_SYSCTL_BASE    0xb0008000
#define  SEP6200_UART0_BASE 0xb1000000
#define  SEP6200_UART1_BASE 0xb1001000
#define  SEP6200_UART2_BASE 0xb1002000
#define  SEP6200_UART3_BASE 0xb1003000
#define  SEP6200_SSI1_BASE  0xb1004000
#define  SEP6200_SSI2_BASE  0xb1005000
#define  SEP6200_SSI3_BASE  0xb1006000
#define  SEP6200_I2C_BASE   0xb1007000
#define  SEP6200_I2S_BASE   0xb1008000
#define  SEP6200_USB_BASE    0xb1010000
#define  SEP6200_DMAC2_BASE  0xb1011000
#define  SEP6200_ESRAM_BASE  0xb2000000
#define  SEP6200_NORREG_BASE0xb2020000
#define  SEP6200_SDIO1_BASE 0xb2022000
#define  SEP6200_SDIO2_BASE 0xb2023000
#define  SEP6200_LCDC_BASE  0xb2025000
#define  SEP6200_VPU_BASE   0xb2026000
#define  SEP6200_DMAC1_BASE 0xb2027000
#define  SEP6200_DDR2_REG   0xb3000000
#define  SEP6200_DDR_MEM    0x40000000

#define SEP6200_UART0_DLBL  (SEP6200_UART0_BASE+0x00)
#define SEP6200_UART0_RXFIFO    (SEP6200_UART0_BASE+0x00)
#define SEP6200_UART0_TXFIFO    (SEP6200_UART0_BASE+0x00)
#define SEP6200_UART0_DLBH  (SEP6200_UART0_BASE+0x04)
#define SEP6200_UART0_IER   (SEP6200_UART0_BASE+0x04)
#define SEP6200_UART0_IIR   (SEP6200_UART0_BASE+0x08)
#define SEP6200_UART0_FCR   (SEP6200_UART0_BASE+0x08)
#define SEP6200_UART0_LCR   (SEP6200_UART0_BASE+0x0c)
#define SEP6200_UART0_MCR   (SEP6200_UART0_BASE+0x10)
#define SEP6200_UART0_LSR   (SEP6200_UART0_BASE+0x14)
#define SEP6200_UART0_MSR   (SEP6200_UART0_BASE+0x18)


#define    SEP6200_TIMER_T1LCR              (SEP6200_TIMER_BASE + 0X000)
#define    SEP6200_TIMER_T1CCR              (SEP6200_TIMER_BASE + 0X004)
#define    SEP6200_TIMER_T1CR               (SEP6200_TIMER_BASE + 0X008)
#define    SEP6200_TIMER_T1ISCR             (SEP6200_TIMER_BASE + 0X00C)
#define    SEP6200_TIMER_T1IMSR             (SEP6200_TIMER_BASE + 0X010)
#define    SEP6200_TIMER_T2LCR              (SEP6200_TIMER_BASE + 0X020)
#define    SEP6200_TIMER_T2CCR              (SEP6200_TIMER_BASE + 0X024)
#define    SEP6200_TIMER_T2CR               (SEP6200_TIMER_BASE + 0X028)
#define    SEP6200_TIMER_T2ISCR             (SEP6200_TIMER_BASE + 0X02C)
#define    SEP6200_TIMER_T2IMSR             (SEP6200_TIMER_BASE + 0X030)
#define    SEP6200_TIMER_T3LCR              (SEP6200_TIMER_BASE + 0X040)
#define    SEP6200_TIMER_T3CCR              (SEP6200_TIMER_BASE + 0X044)
#define    SEP6200_TIMER_T3CR               (SEP6200_TIMER_BASE + 0X048)
#define    SEP6200_TIMER_T3ISCR             (SEP6200_TIMER_BASE + 0X04C)
#define    SEP6200_TIMER_T3IMSR             (SEP6200_TIMER_BASE + 0X050)
#define    SEP6200_TIMER_T3CAPR             (SEP6200_TIMER_BASE + 0X054)
#define    SEP6200_TIMER_T4LCR              (SEP6200_TIMER_BASE + 0X060)
#define    SEP6200_TIMER_T4CCR              (SEP6200_TIMER_BASE + 0X064)
#define    SEP6200_TIMER_T4CR               (SEP6200_TIMER_BASE + 0X068)
#define    SEP6200_TIMER_T4ISCR             (SEP6200_TIMER_BASE + 0X06C)
#define    SEP6200_TIMER_T4IMSR             (SEP6200_TIMER_BASE + 0X070)
#define    SEP6200_TIMER_T4CAPR             (SEP6200_TIMER_BASE + 0X074)
#define    SEP6200_TIMER_T5LCR              (SEP6200_TIMER_BASE + 0X080)
#define    SEP6200_TIMER_T5CCR              (SEP6200_TIMER_BASE + 0X084)
#define    SEP6200_TIMER_T5CR               (SEP6200_TIMER_BASE + 0X088)
#define    SEP6200_TIMER_T5ISCR             (SEP6200_TIMER_BASE + 0X08C)
#define    SEP6200_TIMER_T5IMSR             (SEP6200_TIMER_BASE + 0X090)
#define    SEP6200_TIMER_T5CAPR             (SEP6200_TIMER_BASE + 0X094)
#define    SEP6200_TIMER_T6LCR              (SEP6200_TIMER_BASE + 0X0A0)
#define    SEP6200_TIMER_T6CCR              (SEP6200_TIMER_BASE + 0X0A4)
#define    SEP6200_TIMER_T6CR               (SEP6200_TIMER_BASE + 0X0A8)
#define    SEP6200_TIMER_T6ISCR             (SEP6200_TIMER_BASE + 0X0AC)
#define    SEP6200_TIMER_T6IMSR             (SEP6200_TIMER_BASE + 0X0B0)
#define    SEP6200_TIMER_T6CAPR             (SEP6200_TIMER_BASE + 0X0B4)
#define    SEP6200_TIMER_T7LCR              (SEP6200_TIMER_BASE + 0X0C0)
#define    SEP6200_TIMER_T7CCR              (SEP6200_TIMER_BASE + 0X0C4)
#define    SEP6200_TIMER_T7CR               (SEP6200_TIMER_BASE + 0X0C8)
#define    SEP6200_TIMER_T7ISCR             (SEP6200_TIMER_BASE + 0X0CC)
#define    SEP6200_TIMER_T7IMSR             (SEP6200_TIMER_BASE + 0X0D0)
#define    SEP6200_TIMER_T8LCR              (SEP6200_TIMER_BASE + 0X0E0)
#define    SEP6200_TIMER_T8CCR              (SEP6200_TIMER_BASE + 0X0E4)
#define    SEP6200_TIMER_T8CR               (SEP6200_TIMER_BASE + 0X0E8)
#define    SEP6200_TIMER_T8ISCR             (SEP6200_TIMER_BASE + 0X0EC)
#define    SEP6200_TIMER_T8IMSR             (SEP6200_TIMER_BASE + 0X0F0)
#define    SEP6200_TIMER_T9LCR              (SEP6200_TIMER_BASE + 0X100)
#define    SEP6200_TIMER_T9CCR              (SEP6200_TIMER_BASE + 0X104)
#define    SEP6200_TIMER_T9CR               (SEP6200_TIMER_BASE + 0X108)
#define    SEP6200_TIMER_T9ISCR             (SEP6200_TIMER_BASE + 0X10C)
#define    SEP6200_TIMER_T9IMSR             (SEP6200_TIMER_BASE + 0X110)
#define    SEP6200_TIMER_T10LCR             (SEP6200_TIMER_BASE + 0X120)
#define    SEP6200_TIMER_T10CCR             (SEP6200_TIMER_BASE + 0X124)
#define    SEP6200_TIMER_T10CR              (SEP6200_TIMER_BASE + 0X128)
#define    SEP6200_TIMER_T10ISCR            (SEP6200_TIMER_BASE + 0X12C)
#define    SEP6200_TIMER_T10IMSR            (SEP6200_TIMER_BASE + 0X130)
#define    SEP6200_TIMER_TIMSR              (SEP6200_TIMER_BASE + 0X140)
#define    SEP6200_TIMER_TISCR              (SEP6200_TIMER_BASE + 0X144)
#define    SEP6200_TIMER_TISR               (SEP6200_TIMER_BASE + 0X148)

#define    SEP6200_VIC_INT_SLT_L            (SEP6200_VIC_BASE + 0x000)
#define    SEP6200_VIC_INT_SLT_H            (SEP6200_VIC_BASE + 0x004)
#define    SEP6200_VIC_INT_EN_L             (SEP6200_VIC_BASE + 0x008)
#define    SEP6200_VIC_INT_EN_H             (SEP6200_VIC_BASE + 0x00C)
#define    SEP6200_VIC_INT_EN_CLR_L         (SEP6200_VIC_BASE + 0x010)
#define    SEP6200_VIC_INT_EN_CLR_H         (SEP6200_VIC_BASE + 0x014)
#define    SEP6200_VIC_SFT_INT_L            (SEP6200_VIC_BASE + 0x018)
#define    SEP6200_VIC_SFT_INT_H            (SEP6200_VIC_BASE + 0x01C)
#define    SEP6200_VIC_SFT_INT_CLR_L        (SEP6200_VIC_BASE + 0x020)
#define    SEP6200_VIC_SFT_INT_CLR_H        (SEP6200_VIC_BASE + 0x024)
#define    SEP6200_VIC_INT_MSK_ALL          (SEP6200_VIC_BASE + 0x028)
#define    SEP6200_VIC_RAW_INT_SRC_L        (SEP6200_VIC_BASE + 0x030)
#define    SEP6200_VIC_RAW_INT_SRC_H        (SEP6200_VIC_BASE + 0x034)
#define    SEP6200_VIC_RAW_IRQ_STS_L        (SEP6200_VIC_BASE + 0x038)
#define    SEP6200_VIC_RAW_IRQ_STS_H        (SEP6200_VIC_BASE + 0x03C)
#define    SEP6200_VIC_RAW_FIQ_STS_L        (SEP6200_VIC_BASE + 0x040)
#define    SEP6200_VIC_RAW_FIQ_STS_H        (SEP6200_VIC_BASE + 0x044)
#define    SEP6200_VIC_MSK_IRQ_STS_L        (SEP6200_VIC_BASE + 0x048)
#define    SEP6200_VIC_MSK_IRQ_STS_H        (SEP6200_VIC_BASE + 0x04C)
#define    SEP6200_VIC_MSK_FIQ_STS_L        (SEP6200_VIC_BASE + 0x050)
#define    SEP6200_VIC_MSK_FIQ_STS_H        (SEP6200_VIC_BASE + 0x054)
#define    SEP6200_VIC_IRQ_PENDING_L        (SEP6200_VIC_BASE + 0x058)
#define    SEP6200_VIC_IRQ_PENDING_H        (SEP6200_VIC_BASE + 0x05C)
#define    SEP6200_VIC_FIQ_PENDING_L        (SEP6200_VIC_BASE + 0x060)
#define    SEP6200_VIC_FIQ_PENDING_H        (SEP6200_VIC_BASE + 0x064)
#define    SEP6200_VIC_IRQ_VECTOR_BASE      (SEP6200_VIC_BASE + 0x070)
#define    SEP6200_VIC_FIQ_VECTOR_BASE      (SEP6200_VIC_BASE + 0x074)
#define    SEP6200_VIC_IRQ_VECTOR_NUM       (SEP6200_VIC_BASE + 0x078)
#define    SEP6200_VIC_FIQ_VECTOR_NUM       (SEP6200_VIC_BASE + 0x07C)
#define    SEP6200_VIC_IRQ_VECTOR_ADDR      (SEP6200_VIC_BASE + 0x080)
#define    SEP6200_VIC_FIQ_VECTOR_ADDR      (SEP6200_VIC_BASE + 0x084)
#define    SEP6200_VIC_PROIRTY_MASK         (SEP6200_VIC_BASE + 0x090)
#define    SEP6200_VIC_VECTOR_PROIRTY00     (SEP6200_VIC_BASE + 0x100)
#define    SEP6200_VIC_VECTOR_PROIRTY01     (SEP6200_VIC_BASE + 0x104)
#define    SEP6200_VIC_VECTOR_PROIRTY02     (SEP6200_VIC_BASE + 0x108)
#define    SEP6200_VIC_VECTOR_PROIRTY03     (SEP6200_VIC_BASE + 0x10C)
#define    SEP6200_VIC_VECTOR_PROIRTY04     (SEP6200_VIC_BASE + 0x110)
#define    SEP6200_VIC_VECTOR_PROIRTY05     (SEP6200_VIC_BASE + 0x114)
#define    SEP6200_VIC_VECTOR_PROIRTY06     (SEP6200_VIC_BASE + 0x118)
#define    SEP6200_VIC_VECTOR_PROIRTY07     (SEP6200_VIC_BASE + 0x11C)
#define    SEP6200_VIC_VECTOR_PROIRTY08     (SEP6200_VIC_BASE + 0x120)
#define    SEP6200_VIC_VECTOR_PROIRTY09     (SEP6200_VIC_BASE + 0x124)
#define    SEP6200_VIC_VECTOR_PROIRTY10     (SEP6200_VIC_BASE + 0x128)
#define    SEP6200_VIC_VECTOR_PROIRTY11     (SEP6200_VIC_BASE + 0x12C)
#define    SEP6200_VIC_VECTOR_PROIRTY12     (SEP6200_VIC_BASE + 0x130)
#define    SEP6200_VIC_VECTOR_PROIRTY13     (SEP6200_VIC_BASE + 0x134)
#define    SEP6200_VIC_VECTOR_PROIRTY14     (SEP6200_VIC_BASE + 0x138)
#define    SEP6200_VIC_VECTOR_PROIRTY15     (SEP6200_VIC_BASE + 0x13C)
#define    SEP6200_VIC_VECTOR_PROIRTY16     (SEP6200_VIC_BASE + 0x140)
#define    SEP6200_VIC_VECTOR_PROIRTY17     (SEP6200_VIC_BASE + 0x144)
#define    SEP6200_VIC_VECTOR_PROIRTY18     (SEP6200_VIC_BASE + 0x148)
#define    SEP6200_VIC_VECTOR_PROIRTY19     (SEP6200_VIC_BASE + 0x14C)
#define    SEP6200_VIC_VECTOR_PROIRTY20     (SEP6200_VIC_BASE + 0x150)
#define    SEP6200_VIC_VECTOR_PROIRTY21     (SEP6200_VIC_BASE + 0x154)
#define    SEP6200_VIC_VECTOR_PROIRTY22     (SEP6200_VIC_BASE + 0x158)
#define    SEP6200_VIC_VECTOR_PROIRTY23     (SEP6200_VIC_BASE + 0x15C)
#define    SEP6200_VIC_VECTOR_PROIRTY24     (SEP6200_VIC_BASE + 0x160)
#define    SEP6200_VIC_VECTOR_PROIRTY25     (SEP6200_VIC_BASE + 0x164)
#define    SEP6200_VIC_VECTOR_PROIRTY26     (SEP6200_VIC_BASE + 0x168)
#define    SEP6200_VIC_VECTOR_PROIRTY27     (SEP6200_VIC_BASE + 0x16C)
#define    SEP6200_VIC_VECTOR_PROIRTY28     (SEP6200_VIC_BASE + 0x170)
#define    SEP6200_VIC_VECTOR_PROIRTY29     (SEP6200_VIC_BASE + 0x174)
#define    SEP6200_VIC_VECTOR_PROIRTY30     (SEP6200_VIC_BASE + 0x178)
#define    SEP6200_VIC_VECTOR_PROIRTY31     (SEP6200_VIC_BASE + 0x17C)
#define    SEP6200_VIC_VECTOR_PROIRTY32     (SEP6200_VIC_BASE + 0x180)
#define    SEP6200_VIC_VECTOR_PROIRTY33     (SEP6200_VIC_BASE + 0x184)
#define    SEP6200_VIC_VECTOR_PROIRTY34     (SEP6200_VIC_BASE + 0x188)
#define    SEP6200_VIC_VECTOR_PROIRTY35     (SEP6200_VIC_BASE + 0x18C)
#define    SEP6200_VIC_VECTOR_PROIRTY36     (SEP6200_VIC_BASE + 0x190)
#define    SEP6200_VIC_VECTOR_PROIRTY37     (SEP6200_VIC_BASE + 0x194)
#define    SEP6200_VIC_VECTOR_PROIRTY38     (SEP6200_VIC_BASE + 0x198)
#define    SEP6200_VIC_VECTOR_PROIRTY39     (SEP6200_VIC_BASE + 0x19C)
#define    SEP6200_VIC_VECTOR_PROIRTY40     (SEP6200_VIC_BASE + 0x1A0)
#define    SEP6200_VIC_VECTOR_PROIRTY41     (SEP6200_VIC_BASE + 0x1A4)
#define    SEP6200_VIC_VECTOR_PROIRTY42     (SEP6200_VIC_BASE + 0x1A8)
#define    SEP6200_VIC_VECTOR_PROIRTY43     (SEP6200_VIC_BASE + 0x1AC)
#define    SEP6200_VIC_VECTOR_PROIRTY44     (SEP6200_VIC_BASE + 0x1B0)
#define    SEP6200_VIC_VECTOR_PROIRTY45     (SEP6200_VIC_BASE + 0x1B4)
#define    SEP6200_VIC_VECTOR_PROIRTY46     (SEP6200_VIC_BASE + 0x1B8)
#define    SEP6200_VIC_VECTOR_PROIRTY47     (SEP6200_VIC_BASE + 0x1BC)
#define    SEP6200_VIC_VECTOR_PROIRTY48     (SEP6200_VIC_BASE + 0x1C0)
#define    SEP6200_VIC_VECTOR_PROIRTY49     (SEP6200_VIC_BASE + 0x1C4)
#define    SEP6200_VIC_VECTOR_PROIRTY50     (SEP6200_VIC_BASE + 0x1C8)
#define    SEP6200_VIC_VECTOR_PROIRTY51     (SEP6200_VIC_BASE + 0x1CC)
#define    SEP6200_VIC_VECTOR_PROIRTY52     (SEP6200_VIC_BASE + 0x1D0)
#define    SEP6200_VIC_VECTOR_PROIRTY53     (SEP6200_VIC_BASE + 0x1D4)
#define    SEP6200_VIC_VECTOR_PROIRTY54     (SEP6200_VIC_BASE + 0x1D8)
#define    SEP6200_VIC_VECTOR_PROIRTY55     (SEP6200_VIC_BASE + 0x1DC)
#define    SEP6200_VIC_VECTOR_PROIRTY56     (SEP6200_VIC_BASE + 0x1E0)
#define    SEP6200_VIC_VECTOR_PROIRTY57     (SEP6200_VIC_BASE + 0x1E4)
#define    SEP6200_VIC_VECTOR_PROIRTY58     (SEP6200_VIC_BASE + 0x1E8)
#define    SEP6200_VIC_VECTOR_PROIRTY59     (SEP6200_VIC_BASE + 0x1EC)
#define    SEP6200_VIC_VECTOR_PROIRTY60     (SEP6200_VIC_BASE + 0x1F0)
#define    SEP6200_VIC_VECTOR_PROIRTY61     (SEP6200_VIC_BASE + 0x1F4)
#define    SEP6200_VIC_VECTOR_PROIRTY62     (SEP6200_VIC_BASE + 0x1F8)
#define    SEP6200_VIC_VECTOR_PROIRTY63     (SEP6200_VIC_BASE + 0x1FC)

#define    SEP6200_PMU_PLL_SET              (SEP6200_PMU_BASE + 0x000)
#define    SEP6200_PMU_APLL_CFG             (SEP6200_PMU_BASE + 0x004)
#define    SEP6200_PMU_MPLL_GFG             (SEP6200_PMU_BASE + 0x008)
#define    SEP6200_PMU_DPLL_CFG             (SEP6200_PMU_BASE + 0x00C)
#define    SEP6200_PMU_PMDR                 (SEP6200_PMU_BASE + 0x010)
#define    SEP6200_PMU_CLK_GT_CFG1          (SEP6200_PMU_BASE + 0x014)
#define    SEP6200_PMU_CLK_GT_CFG2          (SEP6200_PMU_BASE + 0x018)
#define    SEP6200_PMU_PWR_GT_CFG           (SEP6200_PMU_BASE + 0x01C)
#define    SEP6200_PMU_AHB_CLK_CFG          (SEP6200_PMU_BASE + 0x020)
#define    SEP6200_PMU_ARM_CLK_CFG          (SEP6200_PMU_BASE + 0x024)
#define    SEP6200_PMU_DDR_CLK_CFG          (SEP6200_PMU_BASE + 0x028)
#define    SEP6200_PMU_PIX_CLK_CFG          (SEP6200_PMU_BASE + 0x02C)
#define    SEP6200_PMU_GPU_CLK2X_CFG        (SEP6200_PMU_BASE + 0x030)
#define    SEP6200_PMU_DIV_SET              (SEP6200_PMU_BASE + 0x034)
#define    SEP6200_PMU_CRYSTAL_CFG          (SEP6200_PMU_BASE + 0x038)
#define    SEP6200_PMU_MSK_WAKEUP           (SEP6200_PMU_BASE + 0x03C)
#define    SEP6200_PMU_RTCR                 (SEP6200_PMU_BASE + 0x040)
#define    SEP6200_PMU_CLR_WAKEUP           (SEP6200_PMU_BASE + 0x044)
#define    SEP6200_PMU_WAKEUP_TIME          (SEP6200_PMU_BASE + 0x048)
#define    SEP6200_PMU_SLEEP_FLAG           (SEP6200_PMU_BASE + 0x04C)
#define    SEP6200_PMU_WAIT_PWR_SWITCH      (SEP6200_PMU_BASE + 0x050)
#define    SEP6200_PMU_PWR_STATE            (SEP6200_PMU_BASE + 0x054)
#define    SEP6200_PMU_INT_POL_SEL          (SEP6200_PMU_BASE + 0x058)
#define    SEP6200_PMU_PLLLD                (SEP6200_PMU_BASE + 0x05C)
#define    SEP6200_PMU_IC_ENABLE            (SEP6200_PMU_BASE + 0x060)
#define    SEP6200_PMU_IC_TAR               (SEP6200_PMU_BASE + 0x064)
#define    SEP6200_PMU_IC_SCL_LCNT          (SEP6200_PMU_BASE + 0x068)
#define    SEP6200_PMU_IC_SCL_HCNT          (SEP6200_PMU_BASE + 0x06C)
#define    SEP6200_PMU_IC_DATA_CMD          (SEP6200_PMU_BASE + 0x070)
#define    SEP6200_PMU_IC_STATE             (SEP6200_PMU_BASE + 0x074)
#define    SEP6200_PMU_IC_SET               (SEP6200_PMU_BASE + 0x078)
#define    SEP6200_PMU_HA_PWR_OFF_DAT       (SEP6200_PMU_BASE + 0x07C)
#define    SEP6200_PMU_HA_PWR_ON_DAT        (SEP6200_PMU_BASE + 0x080)
#define    SEP6200_PMU_HA_PWR_OFF_DAT_CNT   (SEP6200_PMU_BASE + 0x084)
#define    SEP6200_PMU_HA_PWR_ON_DAT_CNT    (SEP6200_PMU_BASE + 0x088)
#define    SEP6200_PMU_PWR_OFF_TIME         (SEP6200_PMU_BASE + 0x08C)
#define    SEP6200_PMU_PWR_ON_TIME          (SEP6200_PMU_BASE + 0x090)
#define    SEP6200_PMU_PWR_ON_POL_SEL       (SEP6200_PMU_BASE + 0x094)
#define    SEP6200_PMU_RETURN_ADDR          (SEP6200_PMU_BASE + 0x098)
#define    SEP6200_PMU_INT                  (SEP6200_PMU_BASE + 0x09C)

/* define the interrupt source number */
#define    INTSRC_RESERVE2      63
#define    INTSRC_RESERVE1      62
#define    INTSRC_LCDC          61
#define    INTSRC_GPU           60
#define    INTSRC_VPU           59
#define    INTSRC_TIMER3        58
#define    INTSRC_TIMER2        57
#define    INTSRC_TIMER1        56
#define    INTSRC_NAND          55
#define    INTSRC_I2S           54
#define    INTSRC_I2C3          53
#define    INTSRC_I2C2          52
#define    INTSRC_I2C1          51
#define    INTSRC_SSI3          50
#define    INTSRC_SSI2          49
#define    INTSRC_SSI1          48
#define    INTSRC_SDIO2         47
#define    INTSRC_SDIO1         46
#define    INTSRC_UART3         45
#define    INTSRC_UART2         44
#define    INTSRC_UART1         43
#define    INTSRC_UART0         42
#define    INTSRC_PWM           41
#define    INTSRC_USB           40
#define    INTSRC_USBDMA        39
#define    INTSRC_DMAC2         38
#define    INTSRC_DMAC1         37
#define    INTSRC_PMUIRQ_A11    36
#define    INTSRC_DMAIRQ_A11    35
#define    INTSRC_GPS           34
#define    INTSRC_RTC           33
#define    INTSRC_RESERVED16    32
#define    INTSRC_PORTE12       31
#define    INTSRC_PORTE11       30
#define    INTSRC_PORTE10       29
#define    INTSRC_PORTE9        28
#define    INTSRC_PORTE5        27
#define    INTSRC_PORTE4        26
#define    INTSRC_PORTD9        25
#define    INTSRC_PORTD8        24
#define    INTSRC_PORTD3        23
#define    INTSRC_PORTD2        22
#define    INTSRC_PORTD1        21
#define    INTSRC_PORTD0        20
#define    INTSRC_PORTC3        19
#define    INTSRC_PORTC2        18
#define    INTSRC_PORTC1        17
#define    INTSRC_PORTC0        16
#define    INTSRC_EXT15         15
#define    INTSRC_EXT14         14
#define    INTSRC_EXT13         13
#define    INTSRC_EXT12         12
#define    INTSRC_EXT11         11
#define    INTSRC_EXT10         10
#define    INTSRC_EXT9          9
#define    INTSRC_EXT8          8
#define    INTSRC_EXT7          7
#define    INTSRC_EXT6          6
#define    INTSRC_EXT5          5
#define    INTSRC_EXT4          4
#define    INTSRC_AO_EXT3       3
#define    INTSRC_AO_EXT2       2
#define    INTSRC_AO_EXT1       1
#define    INTSRC_AO_EXT0       0


typedef    char                 S8;        /* signed 8-bit integer */
typedef    short                S16;       /* signed 16-bit integer */
typedef    long                 S32;       /* signed 32-bit integer */
typedef    unsigned char        U8;        /* unsigned 8-bit integer */
typedef    unsigned short       U16;       /* unsigned 16-bit integer */
typedef    unsigned long        U32;       /* unsigned 32-bit integer */

typedef    volatile U32 *       RP;
typedef    volatile U16 *       RP16;
typedef    volatile U8  *       RP8;

typedef    void                 *VP;       /* pointer to an unpredictable data type */
typedef    void                 (*FP)();   /* program start address */

#ifndef    _BOOL_TYPE_
#define    _BOOL_TYPE_
typedef    int                  BOOL;        /* Boolean value.  TRUE (1) or FALSE (0). */
#endif

typedef    int                  ER;         /* Error code.  A signed integer. */

/**
 * IO definitions
 *
 * define access restrictions to peripheral registers
 */

#define     __I     volatile const            /*!< defines 'read only' permissions      */
#define     __O     volatile                  /*!< defines 'write only' permissions     */
#define     __IO    volatile                  /*!< defines 'read / write' permissions   */
#define     __iomem volatile


/*Macros for debug*/

#define EOUT(fmt,...) \
    do \
    {   \
        rt_kprintf("EOUT:(%s:%i)  ",__FILE__,__LINE__); \
        rt_kprintf(fmt,##__VA_ARGS__); \
    }while(0)

#define RT_USING_DEBUG
#ifdef RT_USING_DEBUG
    #define DBOUT(fmt,...) \
    do \
    {   \
        rt_kprintf("DBOUT:(%s:%i)  ",__FILE__,__LINE__); \
        rt_kprintf(fmt,##__VA_ARGS__); \
    }while(0)
#else
    #define DBOUT(fmt,...) \
    do{}while(0)
#endif

#ifdef  RT_USING_DEBUG
    #define ASSERT(arg) \
    if((arg) == 0) \
    {       \
        while(1) \
        {         \
            rt_kprintf("have a assert failure\n"); \
        }                                        \
    }
#else
    #define ASSERT(arg) \
    do      \
    {        \
    }while(0)
#endif


#define write_reg(reg,value) \
    do \
    { \
        *(RP)(reg) = value; \
    }while(0)

#define read_reg(reg) (*(RP)reg)


struct rt_hw_register
{
    rt_uint32_t r0;
    rt_uint32_t r1;
    rt_uint32_t r2;
    rt_uint32_t r3;
    rt_uint32_t r4;
    rt_uint32_t r5;
    rt_uint32_t r6;
    rt_uint32_t r7;
    rt_uint32_t r8;
    rt_uint32_t r9;
    rt_uint32_t r10;
    rt_uint32_t r11;
    rt_uint32_t r12;
    rt_uint32_t r13;
    rt_uint32_t r14;
    rt_uint32_t r15;
    rt_uint32_t r16;
    rt_uint32_t r17;
    rt_uint32_t r18;
    rt_uint32_t r19;
    rt_uint32_t r20;
    rt_uint32_t r21;
    rt_uint32_t r22;
    rt_uint32_t r23;
    rt_uint32_t r24;
    rt_uint32_t sb;
    rt_uint32_t sl;
    rt_uint32_t fp;
    rt_uint32_t ip;
    rt_uint32_t sp;
    rt_uint32_t lr;
    rt_uint32_t pc;
    rt_uint32_t asr;
    rt_uint32_t bsr;
    rt_uint32_t ORIG_r0;
};

/*@}*/

#endif