xref: /nrf52832-nimble/rt-thread/libcpu/arm/sep4020/sep4020.h (revision 104654410c56c573564690304ae786df310c91fc)
1*10465441SEvalZero /*
2*10465441SEvalZero  * Copyright (c) 2006-2018, RT-Thread Development Team
3*10465441SEvalZero  *
4*10465441SEvalZero  * SPDX-License-Identifier: Apache-2.0
5*10465441SEvalZero  *
6*10465441SEvalZero  * Change Logs:
7*10465441SEvalZero  * Date           Author       Notes
8*10465441SEvalZero  */
9*10465441SEvalZero #ifndef __SEP4020_H
10*10465441SEvalZero #define __SEP4020_H
11*10465441SEvalZero 
12*10465441SEvalZero #include <rtthread.h>
13*10465441SEvalZero 
14*10465441SEvalZero /*Core definations*/
15*10465441SEvalZero #define SVCMODE
16*10465441SEvalZero #define	Mode_USR	0x10
17*10465441SEvalZero #define	Mode_FIQ	0x11
18*10465441SEvalZero #define	Mode_IRQ	0x12
19*10465441SEvalZero #define	Mode_SVC	0x13
20*10465441SEvalZero #define	Mode_ABT	0x17
21*10465441SEvalZero #define	Mode_UND	0x1B
22*10465441SEvalZero #define	Mode_SYS	0x1F
23*10465441SEvalZero 
24*10465441SEvalZero 
25*10465441SEvalZero 
26*10465441SEvalZero /*
27*10465441SEvalZero  *  各模块寄存器基值
28*10465441SEvalZero  */
29*10465441SEvalZero 
30*10465441SEvalZero #define   ESRAM_BASE    0x04000000
31*10465441SEvalZero #define   INTC_BASE     0x10000000
32*10465441SEvalZero #define   PMU_BASE      0x10001000
33*10465441SEvalZero #define   RTC_BASE      0x10002000
34*10465441SEvalZero #define   WD_BASE       0x10002000
35*10465441SEvalZero #define   TIMER_BASE    0x10003000
36*10465441SEvalZero #define   PWM_BASE      0x10004000
37*10465441SEvalZero #define   UART0_BASE    0X10005000
38*10465441SEvalZero #define   UART1_BASE    0X10006000
39*10465441SEvalZero #define   UART2_BASE    0X10007000
40*10465441SEvalZero #define   UART3_BASE    0X10008000
41*10465441SEvalZero #define   SSI_BASE      0X10009000
42*10465441SEvalZero #define   I2S_BASE      0x1000A000
43*10465441SEvalZero #define   MMC_BASE      0x1000B000
44*10465441SEvalZero #define   SD_BASE       0x1000B000
45*10465441SEvalZero #define   SMC0_BASE     0x1000C000
46*10465441SEvalZero #define   SMC1_BASE     0x1000D000
47*10465441SEvalZero #define   USBD_BASE     0x1000E000
48*10465441SEvalZero #define   GPIO_BASE     0x1000F000
49*10465441SEvalZero #define   EMI_BASE      0x11000000
50*10465441SEvalZero #define   DMAC_BASE     0x11001000
51*10465441SEvalZero #define   LCDC_BASE     0x11002000
52*10465441SEvalZero #define   MAC_BASE      0x11003000
53*10465441SEvalZero #define   AMBA_BASE     0x11005000
54*10465441SEvalZero 
55*10465441SEvalZero 
56*10465441SEvalZero /*
57*10465441SEvalZero  *  INTC模块
58*10465441SEvalZero  *  基址: 0x10000000
59*10465441SEvalZero  */
60*10465441SEvalZero 
61*10465441SEvalZero #define INTC_IER                  (INTC_BASE+0X000)       /* IRQ中断允许寄存器 */
62*10465441SEvalZero #define INTC_IMR                  (INTC_BASE+0X008)       /* IRQ中断屏蔽寄存器 */
63*10465441SEvalZero #define INTC_IFR                  (INTC_BASE+0X010)       /* IRQ软件强制中断寄存器 */
64*10465441SEvalZero #define INTC_IRSR                 (INTC_BASE+0X018)       /* IRQ未处理中断状态寄存器 */
65*10465441SEvalZero #define INTC_ISR                  (INTC_BASE+0X020)       /* IRQ中断状态寄存器 */
66*10465441SEvalZero #define INTC_IMSR                 (INTC_BASE+0X028)       /* IRQ屏蔽中断状态寄存器 */
67*10465441SEvalZero #define INTC_IFSR                 (INTC_BASE+0X030)       /* IRQ中断最终状态寄存器 */
68*10465441SEvalZero #define INTC_FIER                 (INTC_BASE+0X0C0)       /* FIQ中断允许寄存器 */
69*10465441SEvalZero #define INTC_FIMR                 (INTC_BASE+0X0C4)       /* FIQ中断屏蔽寄存器 */
70*10465441SEvalZero #define INTC_FIFR                 (INTC_BASE+0X0C8)       /* FIQ软件强制中断寄存器 */
71*10465441SEvalZero #define INTC_FIRSR                (INTC_BASE+0X0CC)       /* FIQ未处理中断状态寄存器 */
72*10465441SEvalZero #define INTC_FISR                 (INTC_BASE+0X0D0)       /* FIQ中断状态寄存器 */
73*10465441SEvalZero #define INTC_FIFSR                (INTC_BASE+0X0D4)       /* FIQ中断最终状态寄存器 */
74*10465441SEvalZero #define INTC_IPLR                 (INTC_BASE+0X0D8)       /* IRQ中断优先级寄存器 */
75*10465441SEvalZero #define INTC_ICR1                 (INTC_BASE+0X0DC)       /* IRQ内部中断优先级控制寄存器1 */
76*10465441SEvalZero #define INTC_ICR2                 (INTC_BASE+0X0E0)       /* IRQ内部中断优先级控制寄存器2 */
77*10465441SEvalZero #define INTC_EXICR1               (INTC_BASE+0X0E4)       /* IRQ外部中断优先级控制寄存器1 */
78*10465441SEvalZero #define INTC_EXICR2               (INTC_BASE+0X0E8)       /* IRQ外部中断优先级控制寄存器2 */
79*10465441SEvalZero 
80*10465441SEvalZero 
81*10465441SEvalZero /*
82*10465441SEvalZero  *  PMU模块
83*10465441SEvalZero  *  基址: 0x10001000
84*10465441SEvalZero  */
85*10465441SEvalZero 
86*10465441SEvalZero #define PMU_PLTR                  (PMU_BASE+0X000)        /* PLL的稳定过渡时间 */
87*10465441SEvalZero #define PMU_PMCR                  (PMU_BASE+0X004)        /* 系统主时钟PLL的控制寄存器 */
88*10465441SEvalZero #define PMU_PUCR                  (PMU_BASE+0X008)        /* USB时钟PLL的控制寄存器 */
89*10465441SEvalZero #define PMU_PCSR                  (PMU_BASE+0X00C)        /* 内部模块时钟源供给的控制寄存器 */
90*10465441SEvalZero #define PMU_PDSLOW                (PMU_BASE+0X010)        /* SLOW状态下时钟的分频因子 */
91*10465441SEvalZero #define PMU_PMDR                  (PMU_BASE+0X014)        /* 芯片工作模式寄存器 */
92*10465441SEvalZero #define PMU_RCTR                  (PMU_BASE+0X018)        /* Reset控制寄存器 */
93*10465441SEvalZero #define PMU_CLRWAKUP              (PMU_BASE+0X01C)        /* WakeUp清除寄存器 */
94*10465441SEvalZero 
95*10465441SEvalZero 
96*10465441SEvalZero /*
97*10465441SEvalZero  *  RTC模块
98*10465441SEvalZero  *  基址: 0x10002000
99*10465441SEvalZero  */
100*10465441SEvalZero 
101*10465441SEvalZero #define RTC_STA_YMD               (RTC_BASE+0X000)        /* 年, 月, 日计数寄存器 */
102*10465441SEvalZero #define RTC_STA_HMS               (RTC_BASE+0X004)        /* 小时, 分钟, 秒寄存器 */
103*10465441SEvalZero #define RTC_ALARM_ALL             (RTC_BASE+0X008)        /* 定时月, 日, 时, 分寄存器 */
104*10465441SEvalZero #define RTC_CTR                   (RTC_BASE+0X00C)        /* 控制寄存器 */
105*10465441SEvalZero #define RTC_INT_EN                (RTC_BASE+0X010)        /* 中断使能寄存器 */
106*10465441SEvalZero #define RTC_INT_STS               (RTC_BASE+0X014)        /* 中断状态寄存器 */
107*10465441SEvalZero #define RTC_SAMP                  (RTC_BASE+0X018)        /* 采样周期寄存器 */
108*10465441SEvalZero #define RTC_WD_CNT                (RTC_BASE+0X01C)        /* Watch-Dog计数值寄存器 */
109*10465441SEvalZero #define RTC_WD_SEV                (RTC_BASE+0X020)        /* Watch-Dog服务寄存器 */
110*10465441SEvalZero #define RTC_CONFIG_CHECK          (RTC_BASE+0X024)        /* 配置时间确认寄存器 (在配置时间之前先写0xaaaaaaaa) */
111*10465441SEvalZero #define RTC_KEY0                  (RTC_BASE+0X02C)        /* 密钥寄存器 */
112*10465441SEvalZero 
113*10465441SEvalZero /*
114*10465441SEvalZero  *  TIMER模块
115*10465441SEvalZero  *  基址: 0x10003000
116*10465441SEvalZero  */
117*10465441SEvalZero 
118*10465441SEvalZero #define TIMER_T1LCR               (TIMER_BASE+0X000)      /* 通道1加载计数寄存器 */
119*10465441SEvalZero #define TIMER_T1CCR               (TIMER_BASE+0X004)      /* 通道1当前计数值寄存器 */
120*10465441SEvalZero #define TIMER_T1CR                (TIMER_BASE+0X008)      /* 通道1控制寄存器 */
121*10465441SEvalZero #define TIMER_T1ISCR              (TIMER_BASE+0X00C)      /* 通道1中断状态清除寄存器 */
122*10465441SEvalZero #define TIMER_T1IMSR              (TIMER_BASE+0X010)      /* 通道1中断屏蔽状态寄存器 */
123*10465441SEvalZero #define TIMER_T2LCR               (TIMER_BASE+0X020)      /* 通道2加载计数寄存器 */
124*10465441SEvalZero #define TIMER_T2CCR               (TIMER_BASE+0X024)      /* 通道2当前计数值寄存器 */
125*10465441SEvalZero #define TIMER_T2CR                (TIMER_BASE+0X028)      /* 通道2控制寄存器 */
126*10465441SEvalZero #define TIMER_T2ISCR              (TIMER_BASE+0X02C)      /* 通道2中断状态清除寄存器 */
127*10465441SEvalZero #define TIMER_T2IMSR              (TIMER_BASE+0X030)      /* 通道2中断屏蔽状态寄存器 */
128*10465441SEvalZero #define TIMER_T3LCR               (TIMER_BASE+0X040)      /* 通道3加载计数寄存器 */
129*10465441SEvalZero #define TIMER_T3CCR               (TIMER_BASE+0X044)      /* 通道3当前计数值寄存器 */
130*10465441SEvalZero #define TIMER_T3CR                (TIMER_BASE+0X048)      /* 通道3控制寄存器 */
131*10465441SEvalZero #define TIMER_T3ISCR              (TIMER_BASE+0X04C)      /* 通道3中断状态清除寄存器 */
132*10465441SEvalZero #define TIMER_T3IMSR              (TIMER_BASE+0X050)      /* 通道3中断屏蔽状态寄存器 */
133*10465441SEvalZero #define TIMER_T3CAPR              (TIMER_BASE+0X054)      /* 通道3捕获寄存器 */
134*10465441SEvalZero #define TIMER_T4LCR               (TIMER_BASE+0X060)      /* 通道4加载计数寄存器 */
135*10465441SEvalZero #define TIMER_T4CCR               (TIMER_BASE+0X064)      /* 通道4当前计数值寄存器 */
136*10465441SEvalZero #define TIMER_T4CR                (TIMER_BASE+0X068)      /* 通道4控制寄存器 */
137*10465441SEvalZero #define TIMER_T4ISCR              (TIMER_BASE+0X06C)      /* 通道4中断状态清除寄存器 */
138*10465441SEvalZero #define TIMER_T4IMSR              (TIMER_BASE+0X070)      /* 通道4中断屏蔽状态寄存器 */
139*10465441SEvalZero #define TIMER_T4CAPR              (TIMER_BASE+0X074)      /* 通道4捕获寄存器 */
140*10465441SEvalZero #define TIMER_T5LCR               (TIMER_BASE+0X080)      /* 通道5加载计数寄存器 */
141*10465441SEvalZero #define TIMER_T5CCR               (TIMER_BASE+0X084)      /* 通道5当前计数值寄存器 */
142*10465441SEvalZero #define TIMER_T5CR                (TIMER_BASE+0X088)      /* 通道5控制寄存器 */
143*10465441SEvalZero #define TIMER_T5ISCR              (TIMER_BASE+0X08C)      /* 通道5中断状态清除寄存器 */
144*10465441SEvalZero #define TIMER_T5IMSR              (TIMER_BASE+0X090)      /* 通道5中断屏蔽状态寄存器 */
145*10465441SEvalZero #define TIMER_T5CAPR              (TIMER_BASE+0X094)      /* 通道5捕获寄存器 */
146*10465441SEvalZero #define TIMER_T6LCR               (TIMER_BASE+0X0A0)      /* 通道6加载计数寄存器 */
147*10465441SEvalZero #define TIMER_T6CCR               (TIMER_BASE+0X0A4)      /* 通道6当前计数值寄存器 */
148*10465441SEvalZero #define TIMER_T6CR                (TIMER_BASE+0X0A8)      /* 通道6控制寄存器 */
149*10465441SEvalZero #define TIMER_T6ISCR              (TIMER_BASE+0X0AC)      /* 通道6中断状态清除寄存器 */
150*10465441SEvalZero #define TIMER_T6IMSR              (TIMER_BASE+0X0B0)      /* 通道6中断屏蔽状态寄存器 */
151*10465441SEvalZero #define TIMER_T6CAPR              (TIMER_BASE+0X0B4)      /* 通道6捕获寄存器 */
152*10465441SEvalZero #define TIMER_T7LCR               (TIMER_BASE+0X0C0)      /* 通道7加载计数寄存器 */
153*10465441SEvalZero #define TIMER_T7CCR               (TIMER_BASE+0X0C4)      /* 通道7当前计数值寄存器 */
154*10465441SEvalZero #define TIMER_T7CR                (TIMER_BASE+0X0C8)      /* 通道7控制寄存器 */
155*10465441SEvalZero #define TIMER_T7ISCR              (TIMER_BASE+0X0CC)      /* 通道7中断状态清除寄存器 */
156*10465441SEvalZero #define TIMER_T7IMSR              (TIMER_BASE+0X0D0)      /* 通道7中断屏蔽状态寄存器 */
157*10465441SEvalZero #define TIMER_T8LCR               (TIMER_BASE+0X0E0)      /* 通道8加载计数寄存器 */
158*10465441SEvalZero #define TIMER_T8CCR               (TIMER_BASE+0X0E4)      /* 通道8当前计数值寄存器 */
159*10465441SEvalZero #define TIMER_T8CR                (TIMER_BASE+0X0E8)      /* 通道8控制寄存器 */
160*10465441SEvalZero #define TIMER_T8ISCR              (TIMER_BASE+0X0EC)      /* 通道8中断状态清除寄存器 */
161*10465441SEvalZero #define TIMER_T8IMSR              (TIMER_BASE+0X0F0)      /* 通道8中断屏蔽状态寄存器 */
162*10465441SEvalZero #define TIMER_T9LCR               (TIMER_BASE+0X100)      /* 通道9加载计数寄存器 */
163*10465441SEvalZero #define TIMER_T9CCR               (TIMER_BASE+0X104)      /* 通道9当前计数值寄存器 */
164*10465441SEvalZero #define TIMER_T9CR                (TIMER_BASE+0X108)      /* 通道9控制寄存器 */
165*10465441SEvalZero #define TIMER_T9ISCR              (TIMER_BASE+0X10C)      /* 通道9中断状态清除寄存器 */
166*10465441SEvalZero #define TIMER_T9IMSR              (TIMER_BASE+0X110)      /* 通道9中断屏蔽状态寄存器 */
167*10465441SEvalZero #define TIMER_T10LCR              (TIMER_BASE+0X120)      /* 通道10加载计数寄存器 */
168*10465441SEvalZero #define TIMER_T10CCR              (TIMER_BASE+0X124)      /* 通道10当前计数值寄存器 */
169*10465441SEvalZero #define TIMER_T10CR               (TIMER_BASE+0X128)      /* 通道10控制寄存器 */
170*10465441SEvalZero #define TIMER_T10ISCR             (TIMER_BASE+0X12C)      /* 通道10中断状态清除寄存器 */
171*10465441SEvalZero #define TIMER_T10IMSR             (TIMER_BASE+0X130)      /* 通道10中断屏蔽状态寄存器 */
172*10465441SEvalZero #define TIMER_TIMSR               (TIMER_BASE+0X140)      /* TIMER中断屏蔽状态寄存器 */
173*10465441SEvalZero #define TIMER_TISCR               (TIMER_BASE+0X144)      /* TIMER中断状态清除寄存器 */
174*10465441SEvalZero #define TIMER_TISR                (TIMER_BASE+0X148)      /* TIMER中断状态寄存器 */
175*10465441SEvalZero 
176*10465441SEvalZero 
177*10465441SEvalZero 
178*10465441SEvalZero /*
179*10465441SEvalZero  *  PWM模块
180*10465441SEvalZero  *  基址: 0x10004000
181*10465441SEvalZero  */
182*10465441SEvalZero 
183*10465441SEvalZero #define PWM0_CTRL                 (PWM_BASE+0X000)        /* PWM0控制寄存器 */
184*10465441SEvalZero #define PWM0_DIV                  (PWM_BASE+0X004)        /* PWM0分频寄存器 */
185*10465441SEvalZero #define PWM0_PERIOD               (PWM_BASE+0X008)        /* PWM0周期寄存器 */
186*10465441SEvalZero #define PWM0_DATA                 (PWM_BASE+0X00C)        /* PWM0数据寄存器 */
187*10465441SEvalZero #define PWM0_CNT                  (PWM_BASE+0X010)        /* PWM0计数寄存器 */
188*10465441SEvalZero #define PWM0_STATUS               (PWM_BASE+0X014)        /* PWM0状态寄存器 */
189*10465441SEvalZero #define PWM1_CTRL                 (PWM_BASE+0X020)        /* PWM1控制寄存器 */
190*10465441SEvalZero #define PWM1_DIV                  (PWM_BASE+0X024)        /* PWM1分频寄存器 */
191*10465441SEvalZero #define PWM1_PERIOD               (PWM_BASE+0X028)        /* PWM1周期寄存器 */
192*10465441SEvalZero #define PWM1_DATA                 (PWM_BASE+0X02C)        /* PWM1数据寄存器 */
193*10465441SEvalZero #define PWM1_CNT                  (PWM_BASE+0X030)        /* PWM1计数寄存器 */
194*10465441SEvalZero #define PWM1_STATUS               (PWM_BASE+0X034)        /* PWM1状态寄存器 */
195*10465441SEvalZero #define PWM2_CTRL                 (PWM_BASE+0X040)        /* PWM2控制寄存器 */
196*10465441SEvalZero #define PWM2_DIV                  (PWM_BASE+0X044)        /* PWM2分频寄存器 */
197*10465441SEvalZero #define PWM2_PERIOD               (PWM_BASE+0X048)        /* PWM2周期寄存器 */
198*10465441SEvalZero #define PWM2_DATA                 (PWM_BASE+0X04C)        /* PWM2数据寄存器 */
199*10465441SEvalZero #define PWM2_CNT                  (PWM_BASE+0X050)        /* PWM2计数寄存器 */
200*10465441SEvalZero #define PWM2_STATUS               (PWM_BASE+0X054)        /* PWM2状态寄存器 */
201*10465441SEvalZero #define PWM3_CTRL                 (PWM_BASE+0X060)        /* PWM3控制寄存器 */
202*10465441SEvalZero #define PWM3_DIV                  (PWM_BASE+0X064)        /* PWM3分频寄存器 */
203*10465441SEvalZero #define PWM3_PERIOD               (PWM_BASE+0X068)        /* PWM3周期寄存器 */
204*10465441SEvalZero #define PWM3_DATA                 (PWM_BASE+0X06C)        /* PWM3数据寄存器 */
205*10465441SEvalZero #define PWM3_CNT                  (PWM_BASE+0X070)        /* PWM3计数寄存器 */
206*10465441SEvalZero #define PWM3_STATUS               (PWM_BASE+0X074)        /* PWM3状态寄存器 */
207*10465441SEvalZero #define PWM_INTMASK               (PWM_BASE+0X080)        /* PWM中断屏蔽寄存器 */
208*10465441SEvalZero #define PWM_INT                   (PWM_BASE+0X084)        /* PWM中断寄存器 */
209*10465441SEvalZero #define PWM_ENABLE                (PWM_BASE+0X088)        /* PWM使能寄存器 */
210*10465441SEvalZero 
211*10465441SEvalZero 
212*10465441SEvalZero /*
213*10465441SEvalZero  *  UART0模块
214*10465441SEvalZero  *  基址: 0x10005000
215*10465441SEvalZero  */
216*10465441SEvalZero 
217*10465441SEvalZero #define UART0_DLBL                (UART0_BASE+0X000)      /* 波特率设置低八位寄存器 */
218*10465441SEvalZero #define UART0_RXFIFO              (UART0_BASE+0X000)      /* 接收FIFO */
219*10465441SEvalZero #define UART0_TXFIFO              (UART0_BASE+0X000)      /* 发送FIFO */
220*10465441SEvalZero #define UART0_DLBH                (UART0_BASE+0X004)      /* 波特率设置高八位寄存器 */
221*10465441SEvalZero #define UART0_IER                 (UART0_BASE+0X004)      /* 中断使能寄存器 */
222*10465441SEvalZero #define UART0_IIR                 (UART0_BASE+0X008)      /* 中断识别寄存器 */
223*10465441SEvalZero #define UART0_FCR                 (UART0_BASE+0X008)      /* FIFO控制寄存器 */
224*10465441SEvalZero #define UART0_LCR                 (UART0_BASE+0X00C)      /* 行控制寄存器 */
225*10465441SEvalZero #define UART0_MCR                 (UART0_BASE+0X010)      /* Modem控制寄存器 */
226*10465441SEvalZero #define UART0_LSR                 (UART0_BASE+0X014)      /* 行状态寄存器 */
227*10465441SEvalZero #define UART0_MSR                 (UART0_BASE+0X018)      /* Modem状态寄存器 */
228*10465441SEvalZero 
229*10465441SEvalZero 
230*10465441SEvalZero /*
231*10465441SEvalZero  *  UART1模块
232*10465441SEvalZero  *  基址: 0x10006000
233*10465441SEvalZero  */
234*10465441SEvalZero 
235*10465441SEvalZero #define UART1_DLBL                (UART1_BASE+0X000)      /* 波特率设置低八位寄存器 */
236*10465441SEvalZero #define UART1_RXFIFO              (UART1_BASE+0X000)      /* 接收FIFO */
237*10465441SEvalZero #define UART1_TXFIFO              (UART1_BASE+0X000)      /* 发送FIFO */
238*10465441SEvalZero #define UART1_DLBH                (UART1_BASE+0X004)      /* 波特率设置高八位寄存器 */
239*10465441SEvalZero #define UART1_IER                 (UART1_BASE+0X004)      /* 中断使能寄存器 */
240*10465441SEvalZero #define UART1_IIR                 (UART1_BASE+0X008)      /* 中断识别寄存器 */
241*10465441SEvalZero #define UART1_FCR                 (UART1_BASE+0X008)      /* FIFO控制寄存器 */
242*10465441SEvalZero #define UART1_LCR                 (UART1_BASE+0X00C)      /* 行控制寄存器 */
243*10465441SEvalZero #define UART1_MCR                 (UART1_BASE+0X010)      /* Modem控制寄存器 */
244*10465441SEvalZero #define UART1_LSR                 (UART1_BASE+0X014)      /* 行状态寄存器 */
245*10465441SEvalZero #define UART1_MSR                 (UART1_BASE+0X018)      /* Modem状态寄存器 */
246*10465441SEvalZero 
247*10465441SEvalZero 
248*10465441SEvalZero /*
249*10465441SEvalZero  *  UART2模块
250*10465441SEvalZero  *  基址: 0x10007000
251*10465441SEvalZero  */
252*10465441SEvalZero 
253*10465441SEvalZero #define UART2_DLBL                (UART2_BASE+0X000)      /* 波特率设置低八位寄存器 */
254*10465441SEvalZero #define UART2_RXFIFO              (UART2_BASE+0X000)      /* 接收FIFO */
255*10465441SEvalZero #define UART2_TXFIFO              (UART2_BASE+0X000)      /* 发送FIFO */
256*10465441SEvalZero #define UART2_DLBH                (UART2_BASE+0X004)      /* 波特率设置高八位寄存器 */
257*10465441SEvalZero #define UART2_IER                 (UART2_BASE+0X004)      /* 中断使能寄存器 */
258*10465441SEvalZero #define UART2_IIR                 (UART2_BASE+0X008)      /* 中断识别寄存器 */
259*10465441SEvalZero #define UART2_FCR                 (UART2_BASE+0X008)      /* FIFO控制寄存器 */
260*10465441SEvalZero #define UART2_LCR                 (UART2_BASE+0X00C)      /* 行控制寄存器 */
261*10465441SEvalZero #define UART2_MCR                 (UART2_BASE+0X010)      /* Modem控制寄存器 */
262*10465441SEvalZero #define UART2_LSR                 (UART2_BASE+0X014)      /* 行状态寄存器 */
263*10465441SEvalZero #define UART2_MSR                 (UART2_BASE+0X018)      /* Modem状态寄存器 */
264*10465441SEvalZero 
265*10465441SEvalZero 
266*10465441SEvalZero /*
267*10465441SEvalZero  *  UART3模块
268*10465441SEvalZero  *  基址: 0x10008000
269*10465441SEvalZero  */
270*10465441SEvalZero 
271*10465441SEvalZero #define UART3_DLBL                (UART3_BASE+0X000)      /* 波特率设置低八位寄存器 */
272*10465441SEvalZero #define UART3_RXFIFO              (UART3_BASE+0X000)      /* 接收FIFO */
273*10465441SEvalZero #define UART3_TXFIFO              (UART3_BASE+0X000)      /* 发送FIFO */
274*10465441SEvalZero #define UART3_DLBH                (UART3_BASE+0X004)      /* 波特率设置高八位寄存器 */
275*10465441SEvalZero #define UART3_IER                 (UART3_BASE+0X004)      /* 中断使能寄存器 */
276*10465441SEvalZero #define UART3_IIR                 (UART3_BASE+0X008)      /* 中断识别寄存器 */
277*10465441SEvalZero #define UART3_FCR                 (UART3_BASE+0X008)      /* FIFO控制寄存器 */
278*10465441SEvalZero #define UART3_LCR                 (UART3_BASE+0X00C)      /* 行控制寄存器 */
279*10465441SEvalZero #define UART3_MCR                 (UART3_BASE+0X010)      /* Modem控制寄存器 */
280*10465441SEvalZero #define UART3_LSR                 (UART3_BASE+0X014)      /* 行状态寄存器 */
281*10465441SEvalZero #define UART3_MSR                 (UART3_BASE+0X018)      /* Modem状态寄存器 */
282*10465441SEvalZero 
283*10465441SEvalZero 
284*10465441SEvalZero /*
285*10465441SEvalZero  *  SSI模块
286*10465441SEvalZero  *  基址: 0x10009000
287*10465441SEvalZero  */
288*10465441SEvalZero 
289*10465441SEvalZero #define SSI_CONTROL0              (SSI_BASE+0X000)        /* 控制寄存器0 */
290*10465441SEvalZero #define SSI_CONTROL1              (SSI_BASE+0X004)        /* 控制寄存器1 */
291*10465441SEvalZero #define SSI_SSIENR                (SSI_BASE+0X008)        /* SSI使能寄存器 */
292*10465441SEvalZero #define SSI_MWCR                  (SSI_BASE+0X00C)        /* Microwire控制寄存器 */
293*10465441SEvalZero #define SSI_SER                   (SSI_BASE+0X010)        /* 从设备使能寄存器 */
294*10465441SEvalZero #define SSI_BAUDR                 (SSI_BASE+0X014)        /* 波特率设置寄存器 */
295*10465441SEvalZero #define SSI_TXFTLR                (SSI_BASE+0X018)        /* 发送FIFO阈值寄存器 */
296*10465441SEvalZero #define SSI_RXFTLR                (SSI_BASE+0X01C)        /* 接收FIFO阈值寄存器 */
297*10465441SEvalZero #define SSI_TXFLR                 (SSI_BASE+0X020)        /* 发送FIFO状态寄存器 */
298*10465441SEvalZero #define SSI_RXFLR                 (SSI_BASE+0X024)        /* 接收FIFO状态寄存器 */
299*10465441SEvalZero #define SSI_SR                    (SSI_BASE+0X028)        /* 状态寄存器 */
300*10465441SEvalZero #define SSI_IMR                   (SSI_BASE+0X02C)        /* 中断屏蔽寄存器 */
301*10465441SEvalZero #define SSI_ISR                   (SSI_BASE+0X030)        /* 中断最终状态寄存器 */
302*10465441SEvalZero #define SSI_RISR                  (SSI_BASE+0X034)        /* 中断原始状态寄存器 */
303*10465441SEvalZero #define SSI_TXOICR                (SSI_BASE+0X038)        /* 发送FIFO上溢中断清除寄存器 */
304*10465441SEvalZero #define SSI_RXOICR                (SSI_BASE+0X03C)        /* 接收FIFO上溢中断清除寄存器 */
305*10465441SEvalZero #define SSI_RXUICR                (SSI_BASE+0X040)        /* 接收FIFO下溢中断清除寄存器 */
306*10465441SEvalZero #define SSI_ICR                   (SSI_BASE+0X02C)        /* 中断清除寄存器 */
307*10465441SEvalZero #define SSI_DMACR                 (SSI_BASE+0X04C)        /* DMA控制寄存器 */
308*10465441SEvalZero #define SSI_DMATDLR               (SSI_BASE+0X050)        /* DMA发送状态寄存器 */
309*10465441SEvalZero #define SSI_DMARDLR               (SSI_BASE+0X054)        /* DMA接收状态寄存器 */
310*10465441SEvalZero #define SSI_DR                    (SSI_BASE+0X060)        /* 数据寄存器 */
311*10465441SEvalZero 
312*10465441SEvalZero 
313*10465441SEvalZero /*
314*10465441SEvalZero  *  I2S模块
315*10465441SEvalZero  *  基址: 0x1000A000
316*10465441SEvalZero  */
317*10465441SEvalZero 
318*10465441SEvalZero #define I2S_CTRL                  (I2S_BASE+0X000)        /* I2S控制寄存器 */
319*10465441SEvalZero #define I2S_DATA                  (I2S_BASE+0X004)        /* I2S数据寄存器 */
320*10465441SEvalZero #define I2S_INT                   (I2S_BASE+0X008)        /* I2S中断寄存器 */
321*10465441SEvalZero #define I2S_STATUS                (I2S_BASE+0X00C)        /* I2S状态寄存器 */
322*10465441SEvalZero 
323*10465441SEvalZero 
324*10465441SEvalZero /*
325*10465441SEvalZero  *  SD模块
326*10465441SEvalZero  *  基址: 0x1000B000
327*10465441SEvalZero  */
328*10465441SEvalZero 
329*10465441SEvalZero #define SDC_CLOCK_CONTROL  		  (SD_BASE+0x00)          /* SDIO时钟控制寄存器 */
330*10465441SEvalZero #define SDC_SOFTWARE_RESET 		  (SD_BASE+0X04)          /* SDIO软件复位寄存器 */
331*10465441SEvalZero #define SDC_ARGUMENT     		  (SD_BASE+0X08)          /* SDIO命令参数寄存器 */
332*10465441SEvalZero #define SDC_COMMAND       	      (SD_BASE+0X0C)          /* SDIO命令控制寄存器 */
333*10465441SEvalZero #define SDC_BLOCK_SIZE            (SD_BASE+0X10)          /* SDIO数据块长度寄存器 */
334*10465441SEvalZero #define SDC_BLOCK_COUNT    		  (SD_BASE+0X14)          /* SDIO数据块数目寄存器 */
335*10465441SEvalZero #define SDC_TRANSFER_MODE  		  (SD_BASE+0X18)          /* SDIO传输模式选择寄存器 */
336*10465441SEvalZero #define SDC_RESPONSE0    		  (SD_BASE+0X1c)          /* SDIO响应寄存器0 */
337*10465441SEvalZero #define SDC_RESPONSE1    		  (SD_BASE+0X20)          /* SDIO响应寄存器1 */
338*10465441SEvalZero #define SDC_RESPONSE2    		  (SD_BASE+0X24)          /* SDIO响应寄存器2 */
339*10465441SEvalZero #define SDC_RESPONSE3    		  (SD_BASE+0X28)          /* SDIO响应寄存器3 */
340*10465441SEvalZero #define SDC_READ_TIMEOUT_CONTROL  (SD_BASE+0X2c)          /* SDIO读超时控制寄存器 */
341*10465441SEvalZero #define SDC_INTERRUPT_STATUS      (SD_BASE+0X30)          /* SDIO中断状态寄存器 */
342*10465441SEvalZero #define SDC_INTERRUPT_STATUS_MASK (SD_BASE+0X34)          /* SDIO中断状态屏蔽寄存器 */
343*10465441SEvalZero #define SDC_READ_BUFER_ACCESS     (SD_BASE+0X38)          /* SDIO接收FIFO */
344*10465441SEvalZero #define SDC_WRITE_BUFER_ACCESS    (SD_BASE+0X3c)          /* SDIO发送FIFO */
345*10465441SEvalZero 
346*10465441SEvalZero 
347*10465441SEvalZero 
348*10465441SEvalZero /*
349*10465441SEvalZero  *  SMC0模块
350*10465441SEvalZero  *  基址: 0x1000C000
351*10465441SEvalZero  */
352*10465441SEvalZero 
353*10465441SEvalZero #define SMC0_CTRL                 (SMC0_BASE+0X000)       /* SMC0控制寄存器 */
354*10465441SEvalZero #define SMC0_INT                  (SMC0_BASE+0X004)       /* SMC0中断寄存器 */
355*10465441SEvalZero #define SMC0_FD                   (SMC0_BASE+0X008)       /* SMC0基本单元时间寄存器 */
356*10465441SEvalZero #define SMC0_CT                   (SMC0_BASE+0X00C)       /* SMC0字符传输时间寄存器 */
357*10465441SEvalZero #define SMC0_BT                   (SMC0_BASE+0X010)       /* SMC0块传输时间寄存器 */
358*10465441SEvalZero 
359*10465441SEvalZero 
360*10465441SEvalZero 
361*10465441SEvalZero /*
362*10465441SEvalZero  *  SMC1模块
363*10465441SEvalZero  *  基址: 0x1000D000
364*10465441SEvalZero  */
365*10465441SEvalZero 
366*10465441SEvalZero #define SMC1_CTRL                 (SMC1_BASE+0X000)       /* SMC1控制寄存器 */
367*10465441SEvalZero #define SMC1_INT                  (SMC1_BASE+0X004)       /* SMC1中断寄存器 */
368*10465441SEvalZero #define SMC1_FD                   (SMC1_BASE+0X008)       /* SMC1基本单元时间寄存器 */
369*10465441SEvalZero #define SMC1_CT                   (SMC1_BASE+0X00C)       /* SMC1字符传输时间寄存器 */
370*10465441SEvalZero #define SMC1_BT                   (SMC1_BASE+0X010)       /* SMC1块传输时间寄存器 */
371*10465441SEvalZero 
372*10465441SEvalZero 
373*10465441SEvalZero 
374*10465441SEvalZero /*
375*10465441SEvalZero  *  USBD模块
376*10465441SEvalZero  *  基址: 0x1000E000
377*10465441SEvalZero  */
378*10465441SEvalZero 
379*10465441SEvalZero #define USBD_PROTOCOLINTR         (USBD_BASE+0X000)       /* USB协议中断寄存器 */
380*10465441SEvalZero #define USBD_INTRMASK             (USBD_BASE+0X004)       /* USB中断屏蔽寄存器 */
381*10465441SEvalZero #define USBD_INTRCTRL             (USBD_BASE+0X008)       /* USB中断类型控制寄存器 */
382*10465441SEvalZero #define USBD_EPINFO               (USBD_BASE+0X00C)       /* USB活动端点状态寄存器 */
383*10465441SEvalZero #define USBD_BCONFIGURATIONVALUE  (USBD_BASE+0X010)       /* SET_CCONFIGURATION记录 */
384*10465441SEvalZero #define USBD_BMATTRIBUTES         (USBD_BASE+0X014)       /* 当前配置属性寄存器 */
385*10465441SEvalZero #define USBD_DEVSPEED             (USBD_BASE+0X018)       /* 当前设备工作速度寄存器 */
386*10465441SEvalZero #define USBD_FRAMENUMBER          (USBD_BASE+0X01C)       /* 记录当前SOF包内的帧号 */
387*10465441SEvalZero #define USBD_EPTRANSACTIONS0      (USBD_BASE+0X020)       /* 记录下次要求的传输次数 */
388*10465441SEvalZero #define USBD_EPTRANSACTIONS1      (USBD_BASE+0X024)       /* 记录下次要求的传输次数 */
389*10465441SEvalZero #define USBD_APPIFUPDATE          (USBD_BASE+0X028)       /* 接口号快速更新寄存器 */
390*10465441SEvalZero #define USBD_CFGINTERFACE0        (USBD_BASE+0X02C)       /* 记录接口的值 */
391*10465441SEvalZero #define USBD_CFGINTERFACE1        (USBD_BASE+0X030)       /* 记录接口的值 */
392*10465441SEvalZero #define USBD_CFGINTERFACE2        (USBD_BASE+0X034)       /* 记录接口的值 */
393*10465441SEvalZero #define USBD_CFGINTERFACE3        (USBD_BASE+0X038)       /* 记录接口的值 */
394*10465441SEvalZero #define USBD_CFGINTERFACE4        (USBD_BASE+0X03C)       /* 记录接口的值 */
395*10465441SEvalZero #define USBD_CFGINTERFACE5        (USBD_BASE+0X040)       /* 记录接口的值 */
396*10465441SEvalZero #define USBD_CFGINTERFACE6        (USBD_BASE+0X044)       /* 记录接口的值 */
397*10465441SEvalZero #define USBD_CFGINTERFACE7        (USBD_BASE+0X048)       /* 记录接口的值 */
398*10465441SEvalZero #define USBD_CFGINTERFACE8        (USBD_BASE+0X04C)       /* 记录接口的值 */
399*10465441SEvalZero #define USBD_CFGINTERFACE9        (USBD_BASE+0X050)       /* 记录接口的值 */
400*10465441SEvalZero #define USBD_CFGINTERFACE10       (USBD_BASE+0X054)       /* 记录接口的值 */
401*10465441SEvalZero #define USBD_CFGINTERFACE11       (USBD_BASE+0X058)       /* 记录接口的值 */
402*10465441SEvalZero #define USBD_CFGINTERFACE12       (USBD_BASE+0X05C)       /* 记录接口的值 */
403*10465441SEvalZero #define USBD_CFGINTERFACE13       (USBD_BASE+0X060)       /* 记录接口的值 */
404*10465441SEvalZero #define USBD_CFGINTERFACE14       (USBD_BASE+0X064)       /* 记录接口的值 */
405*10465441SEvalZero #define USBD_CFGINTERFACE15       (USBD_BASE+0X068)       /* 记录接口的值 */
406*10465441SEvalZero #define USBD_CFGINTERFACE16       (USBD_BASE+0X06C)       /* 记录接口的值 */
407*10465441SEvalZero #define USBD_CFGINTERFACE17       (USBD_BASE+0X070)       /* 记录接口的值 */
408*10465441SEvalZero #define USBD_CFGINTERFACE18       (USBD_BASE+0X074)       /* 记录接口的值 */
409*10465441SEvalZero #define USBD_CFGINTERFACE19       (USBD_BASE+0X078)       /* 记录接口的值 */
410*10465441SEvalZero #define USBD_CFGINTERFACE20       (USBD_BASE+0X07C)       /* 记录接口的值 */
411*10465441SEvalZero #define USBD_CFGINTERFACE21       (USBD_BASE+0X080)       /* 记录接口的值 */
412*10465441SEvalZero #define USBD_CFGINTERFACE22       (USBD_BASE+0X084)       /* 记录接口的值 */
413*10465441SEvalZero #define USBD_CFGINTERFACE23       (USBD_BASE+0X088)       /* 记录接口的值 */
414*10465441SEvalZero #define USBD_CFGINTERFACE24       (USBD_BASE+0X08C)       /* 记录接口的值 */
415*10465441SEvalZero #define USBD_CFGINTERFACE25       (USBD_BASE+0X090)       /* 记录接口的值 */
416*10465441SEvalZero #define USBD_CFGINTERFACE26       (USBD_BASE+0X094)       /* 记录接口的值 */
417*10465441SEvalZero #define USBD_CFGINTERFACE27       (USBD_BASE+0X098)       /* 记录接口的值 */
418*10465441SEvalZero #define USBD_CFGINTERFACE28       (USBD_BASE+0X09C)       /* 记录接口的值 */
419*10465441SEvalZero #define USBD_CFGINTERFACE29       (USBD_BASE+0X0A0)       /* 记录接口的值 */
420*10465441SEvalZero #define USBD_CFGINTERFACE30       (USBD_BASE+0X0A4)       /* 记录接口的值 */
421*10465441SEvalZero #define USBD_CFGINTERFACE31       (USBD_BASE+0X0A8)       /* 记录接口的值 */
422*10465441SEvalZero #define USBD_PKTPASSEDCTRL        (USBD_BASE+0X0AC)       /* 记录成功接收的包数 */
423*10465441SEvalZero #define USBD_PKTDROPPEDCTRL       (USBD_BASE+0X0B0)       /* 记录丢失的包数 */
424*10465441SEvalZero #define USBD_CRCERRCTRL           (USBD_BASE+0X0B4)       /* 记录CRC错误的包数 */
425*10465441SEvalZero #define USBD_BITSTUFFERRCTRL      (USBD_BASE+0X0B8)       /* 记录位填充错误的包数 */
426*10465441SEvalZero #define USBD_PIDERRCTRL           (USBD_BASE+0X0BC)       /* 记录PID错误的包数 */
427*10465441SEvalZero #define USBD_FRAMINGERRCTL        (USBD_BASE+0X0C0)       /* 记录有SYNC和EOP的包数 */
428*10465441SEvalZero #define USBD_TXPKTCTRL            (USBD_BASE+0X0C4)       /* 记录发送包的数量 */
429*10465441SEvalZero #define USBD_STATCTRLOV           (USBD_BASE+0X0C8)       /* 记录统计寄存器溢出情况 */
430*10465441SEvalZero #define USBD_TXLENGTH             (USBD_BASE+0X0CC)       /* 记录每次IN传输事务包长度 */
431*10465441SEvalZero #define USBD_RXLENGTH             (USBD_BASE+0X0D0)       /* 记录OUT传输事务包长度 */
432*10465441SEvalZero #define USBD_RESUME               (USBD_BASE+0X0D4)       /* USB唤醒寄存器 */
433*10465441SEvalZero #define USBD_READFLAG             (USBD_BASE+0X0D8)       /* 读异步状态寄存器标志 */
434*10465441SEvalZero #define USBD_RECEIVETYPE          (USBD_BASE+0X0DC)       /* 传输状态寄存器 */
435*10465441SEvalZero #define USBD_APPLOCK              (USBD_BASE+0X0E0)       /* 锁信号寄存器 */
436*10465441SEvalZero #define USBD_EP0OUTADDR           (USBD_BASE+0X100)       /* 端点0端点号和方向 */
437*10465441SEvalZero #define USBD_EP0OUTBMATTR         (USBD_BASE+0X104)       /* 端点0类型寄存器 */
438*10465441SEvalZero #define USBD_EP0OUTMAXPKTSIZE     (USBD_BASE+0X108)       /* 端点0最大包尺寸寄存器 */
439*10465441SEvalZero #define USBD_EP0OUTIFNUM          (USBD_BASE+0X10C)       /* 端点0接口号寄存器 */
440*10465441SEvalZero #define USBD_EP0OUTSTAT           (USBD_BASE+0X110)       /* 端点0状态寄存器 */
441*10465441SEvalZero #define USBD_EP0OUTBMREQTYPE      (USBD_BASE+0X114)       /* 端点0 SETUP事务请求类 */
442*10465441SEvalZero #define USBD_EP0OUTBREQUEST       (USBD_BASE+0X118)       /* 端点0 SETUP事务请求内容 */
443*10465441SEvalZero #define USBD_EP0OUTWVALUE         (USBD_BASE+0X11C)       /* 端点0 SETUP事务请求值 */
444*10465441SEvalZero #define USBD_EP0OUTWINDEX         (USBD_BASE+0X120)       /* 端点0 SETUP事务请求索引 */
445*10465441SEvalZero #define USBD_EP0OUTWLENGTH        (USBD_BASE+0X120)       /* 端点0 SETUP事务请求长度 */
446*10465441SEvalZero #define USBD_EP0OUTSYNCHFRAME     (USBD_BASE+0X128)       /* 端点0同步包帧号 */
447*10465441SEvalZero #define USBD_EP1OUTADDR           (USBD_BASE+0X12C)       /* 端点1输出端点号和方向 */
448*10465441SEvalZero #define USBD_EP1OUTBMATTR         (USBD_BASE+0X130)       /* 端点1输出类型寄存器 */
449*10465441SEvalZero #define USBD_EP1OUTMAXPKTSIZE     (USBD_BASE+0X134)       /* 端点1输出最大包尺寸寄存器 */
450*10465441SEvalZero #define USBD_EP1OUTIFNUM          (USBD_BASE+0X138)       /* 端点1输出接口号寄存器 */
451*10465441SEvalZero #define USBD_EP1OUTSTAT           (USBD_BASE+0X13C)       /* 端点1输出状态寄存器 */
452*10465441SEvalZero #define USBD_EP1OUTBMREQTYPE      (USBD_BASE+0X140)       /* 端点1输出SETUP事务请求类型 */
453*10465441SEvalZero #define USBD_EP1OUTBREQUEST       (USBD_BASE+0X144)       /* 端点1输出SETUP事务请求内容 */
454*10465441SEvalZero #define USBD_EP1OUTWVALUE         (USBD_BASE+0X148)       /* 端点1输出SETUP事务请求值 */
455*10465441SEvalZero #define USBD_EP1OUTWINDX          (USBD_BASE+0X14C)       /* 端点1输出SETUP事务请求索引 */
456*10465441SEvalZero #define USBD_EP1OUTWLENGH         (USBD_BASE+0X150)       /* 端点1输出SETUP事务请求域长度 */
457*10465441SEvalZero #define USBD_EP1OUTSYNCHFRAME     (USBD_BASE+0X154)       /* 端点1输出同步包帧号 */
458*10465441SEvalZero #define USBD_EP1INADDR            (USBD_BASE+0X158)       /* 端点1输入端点号和方向 */
459*10465441SEvalZero #define USBD_EP1INBMATTR          (USBD_BASE+0X15C)       /* 端点1输入类型寄存器 */
460*10465441SEvalZero #define USBD_EP1INMAXPKTSIZE      (USBD_BASE+0X160)       /* 端点1输入最大包尺寸寄存器 */
461*10465441SEvalZero #define USBD_EP1INIFNUM           (USBD_BASE+0X164)       /* 端点1输入接口号寄存器 */
462*10465441SEvalZero #define USBD_EP1INSTAT            (USBD_BASE+0X168)       /* 端点1输入状态寄存器 */
463*10465441SEvalZero #define USBD_EP1INBMREQTYPE       (USBD_BASE+0X16C)       /* 端点1输入SETUP事务请求类型 */
464*10465441SEvalZero #define USBD_EP1INBREQUEST        (USBD_BASE+0X170)       /* 端点1输入SETUP事务请求内容 */
465*10465441SEvalZero #define USBD_EP1INWVALUE          (USBD_BASE+0X174)       /* 端点1输入SETUP事务请求值 */
466*10465441SEvalZero #define USBD_EP1INWINDEX          (USBD_BASE+0X178)       /* 端点1输入SETUP事务请求索引 */
467*10465441SEvalZero #define USBD_EP1INWLENGTH         (USBD_BASE+0X17C)       /* 端点1输入SETUP事务请求域长度 */
468*10465441SEvalZero #define USBD_EP1INSYNCHFRAME      (USBD_BASE+0X180)       /* 端点1输入同步包帧号 */
469*10465441SEvalZero #define USBD_EP2OUTADDR           (USBD_BASE+0X184)       /* 端点2输出端点号和方向 */
470*10465441SEvalZero #define USBD_EP2OUTBMATTR         (USBD_BASE+0X188)       /* 端点2输出类型寄存器 */
471*10465441SEvalZero #define USBD_EP2OUTMAXPKTSIZE     (USBD_BASE+0X18C)       /* 端点2输出最大包尺寸寄存器 */
472*10465441SEvalZero #define USBD_EP2OUTIFNUM          (USBD_BASE+0X190)       /* 端点2输出接口号寄存器 */
473*10465441SEvalZero #define USBD_EP2OUTSTAT           (USBD_BASE+0X194)       /* 端点2输出状态寄存器 */
474*10465441SEvalZero #define USBD_EP2OUTBMREQTYPE      (USBD_BASE+0X198)       /* 端点2输出SETUP事务请求类型 */
475*10465441SEvalZero #define USBD_EP2OUTBREQUEST       (USBD_BASE+0X19C)       /* 端点2输出SETUP事务请求内容 */
476*10465441SEvalZero #define USBD_EP2OUTWVALUE         (USBD_BASE+0X1A0)       /* 端点2输出SETUP事务请求值 */
477*10465441SEvalZero #define USBD_EP2OUTWINDEX         (USBD_BASE+0X1A4)       /* 端点2输出SETUP事务请求索引 */
478*10465441SEvalZero #define USBD_EP2OUTWLENGTH        (USBD_BASE+0X1A8)       /* 端点2输出SETUP事务请求域长度 */
479*10465441SEvalZero #define USBD_EP2OUTSYNCHFRAME     (USBD_BASE+0X1AC)       /* 端点2输出同步包帧号 */
480*10465441SEvalZero #define USBD_EP2INADDR            (USBD_BASE+0X1B0)       /* 端点2输入端点号和方向 */
481*10465441SEvalZero #define USBD_EP2INBMATTR          (USBD_BASE+0X1B4)       /* 端点2输入类型寄存器 */
482*10465441SEvalZero #define USBD_EP2INMAXPKTSIZE      (USBD_BASE+0X1B8)       /* 端点2输入最大包尺寸寄存器 */
483*10465441SEvalZero #define USBD_EP2INIFNUM           (USBD_BASE+0X1BC)       /* 端点2输入接口号寄存器 */
484*10465441SEvalZero #define USBD_EP2INSTAT            (USBD_BASE+0X1C0)       /* 端点2输入状态寄存器 */
485*10465441SEvalZero #define USBD_EP2INBMREQTYPE       (USBD_BASE+0X1C4)       /* 端点2输入SETUP事务请求类型 */
486*10465441SEvalZero #define USBD_EP2INBREQUEST        (USBD_BASE+0X1C8)       /* 端点2输入SETUP事务请求内容 */
487*10465441SEvalZero #define USBD_EP2INWVALUE          (USBD_BASE+0X1CC)       /* 端点2输入SETUP事务请求值 */
488*10465441SEvalZero #define USBD_EP2INWINDEX          (USBD_BASE+0X1D0)       /* 端点2输入SETUP事务请求索引 */
489*10465441SEvalZero #define USBD_EP2INWLENGTH         (USBD_BASE+0X1D4)       /* 端点2输入SETUP事务请求域长度 */
490*10465441SEvalZero #define USBD_EP2INSYNCHFRAME      (USBD_BASE+0X1D8)       /* 端点2输入同步包帧号 */
491*10465441SEvalZero #define USBD_RXFIFO               (USBD_BASE+0X200)       /* 接受FIFO */
492*10465441SEvalZero #define USBD_TXFIFO               (USBD_BASE+0X300)       /* 发送FIFO */
493*10465441SEvalZero 
494*10465441SEvalZero 
495*10465441SEvalZero /*
496*10465441SEvalZero  *  GPIO模块
497*10465441SEvalZero  *  基址: 0x1000F000
498*10465441SEvalZero  */
499*10465441SEvalZero 
500*10465441SEvalZero #define GPIO_DBCLK_DIV            (GPIO_BASE+0X000)       /* 去毛刺采用时钟分频比配置寄存器 */
501*10465441SEvalZero #define GPIO_PORTA_DIR            (GPIO_BASE+0X004)       /* A组端口输入输出方向配置寄存器 */
502*10465441SEvalZero #define GPIO_PORTA_SEL            (GPIO_BASE+0X008)       /* A组端口通用用途选择配置寄存器 */
503*10465441SEvalZero #define GPIO_PORTA_INCTL          (GPIO_BASE+0X00C)       /* A组端口通用用途输入时类型配置寄存器 */
504*10465441SEvalZero #define GPIO_PORTA_INTRCTL        (GPIO_BASE+0X010)       /* A组端口中断触发类型配置寄存器 */
505*10465441SEvalZero #define GPIO_PORTA_INTRCLR        (GPIO_BASE+0X014)       /* A组端口通用用途中断清除配置寄存器 */
506*10465441SEvalZero #define GPIO_PORTA_DATA           (GPIO_BASE+0X018)       /* A组端口通用用途数据配置寄存器 */
507*10465441SEvalZero #define GPIO_PORTB_DIR            (GPIO_BASE+0X01C)       /* B组端口输入输出方向配置寄存器 */
508*10465441SEvalZero #define GPIO_PORTB_SEL            (GPIO_BASE+0X020)       /* B组端口通用用途选择配置寄存器 */
509*10465441SEvalZero #define GPIO_PORTB_DATA           (GPIO_BASE+0X024)       /* B组端口通用用途数据配置寄存器 */
510*10465441SEvalZero #define GPIO_PORTC_DIR            (GPIO_BASE+0X028)       /* C组端口输入输出方向配置寄存器 */
511*10465441SEvalZero #define GPIO_PORTC_SEL            (GPIO_BASE+0X02C)       /* C组端口通用用途选择配置寄存器 */
512*10465441SEvalZero #define GPIO_PORTC_DATA           (GPIO_BASE+0X030)       /* C组端口通用用途数据配置寄存器 */
513*10465441SEvalZero #define GPIO_PORTD_DIR            (GPIO_BASE+0X034)       /* D组端口输入输出方向配置寄存器 */
514*10465441SEvalZero #define GPIO_PORTD_SEL            (GPIO_BASE+0X038)       /* D组端口通用用途选择配置寄存器 */
515*10465441SEvalZero #define GPIO_PORTD_SPECII         (GPIO_BASE+0X03C)       /* D组端口专用用途2选择配置寄存器 */
516*10465441SEvalZero #define GPIO_PORTD_DATA           (GPIO_BASE+0X040)       /* D组端口通用用途数据配置寄存器 */
517*10465441SEvalZero #define GPIO_PORTE_DIR            (GPIO_BASE+0X044)       /* E组端口输入输出方向配置寄存器 */
518*10465441SEvalZero #define GPIO_PORTE_SEL            (GPIO_BASE+0X048)       /* E组端口通用用途选择配置寄存器 */
519*10465441SEvalZero #define GPIO_PORTE_DATA           (GPIO_BASE+0X04C)       /* E组端口通用用途数据配置寄存器 */
520*10465441SEvalZero #define GPIO_PORTF_DIR            (GPIO_BASE+0X050)       /* F组端口输入输出方向配置寄存器 */
521*10465441SEvalZero #define GPIO_PORTF_SEL            (GPIO_BASE+0X054)       /* F组端口通用用途选择配置寄存器 */
522*10465441SEvalZero #define GPIO_PORTF_INCTL          (GPIO_BASE+0X058)       /* F组端口通用用途输入时类型配置寄存器 */
523*10465441SEvalZero #define GPIO_PORTF_INTRCTL        (GPIO_BASE+0X05C)       /* F组端口中断触发类型配置寄存器 */
524*10465441SEvalZero #define GPIO_PORTF_INTRCLR        (GPIO_BASE+0X060)       /* F组端口通用用途中断清除配置寄存器 */
525*10465441SEvalZero #define GPIO_PORTF_DATA           (GPIO_BASE+0X064)       /* F组端口通用用途数据配置寄存器 */
526*10465441SEvalZero #define GPIO_PORTG_DIR            (GPIO_BASE+0X068)       /* G组端口输入输出方向配置寄存器 */
527*10465441SEvalZero #define GPIO_PORTG_SEL            (GPIO_BASE+0X06C)       /* G组端口通用用途选择配置寄存器 */
528*10465441SEvalZero #define GPIO_PORTG_DATA           (GPIO_BASE+0X070)       /* G组端口通用用途数据配置寄存器 */
529*10465441SEvalZero #define GPIO_PORTH_DIR            (GPIO_BASE+0X07C)       /* H组端口输入输出方向配置寄存器 */
530*10465441SEvalZero #define GPIO_PORTH_SEL            (GPIO_BASE+0X078)       /* H组端口通用用途选择配置寄存器 */
531*10465441SEvalZero #define GPIO_PORTH_DATA           (GPIO_BASE+0X07C)       /* H组端口通用用途数据配置寄存器 */
532*10465441SEvalZero #define GPIO_PORTI_DIR            (GPIO_BASE+0X080)       /* I组端口输入输出方向配置寄存器 */
533*10465441SEvalZero #define GPIO_PORTI_SEL            (GPIO_BASE+0X084)       /* I组端口通用用途选择配置寄存器 */
534*10465441SEvalZero #define GPIO_PORTI_DATA           (GPIO_BASE+0X088)       /* I组端口通用用途数据配置寄存器 */
535*10465441SEvalZero 
536*10465441SEvalZero 
537*10465441SEvalZero 
538*10465441SEvalZero /*
539*10465441SEvalZero  *  EMI模块
540*10465441SEvalZero  *  基址: 0x11000000
541*10465441SEvalZero  */
542*10465441SEvalZero 
543*10465441SEvalZero #define EMI_CSACONF               (EMI_BASE+0X000)        /* CSA参数配置寄存器 */
544*10465441SEvalZero #define EMI_CSBCONF               (EMI_BASE+0X004)        /* CSB参数配置寄存器 */
545*10465441SEvalZero #define EMI_CSCCONF               (EMI_BASE+0X008)        /* CSC参数配置寄存器 */
546*10465441SEvalZero #define EMI_CSDCONF               (EMI_BASE+0X00C)        /* CSD参数配置寄存器 */
547*10465441SEvalZero #define EMI_CSECONF               (EMI_BASE+0X010)        /* CSE参数配置寄存器 */
548*10465441SEvalZero #define EMI_CSFCONF               (EMI_BASE+0X014)        /* CSF参数配置寄存器 */
549*10465441SEvalZero #define EMI_SDCONF1               (EMI_BASE+0X018)        /* SDRAM时序配置寄存器1 */
550*10465441SEvalZero #define EMI_SDCONF2               (EMI_BASE+0X01C)        /* SDRAM时序配置寄存器2, SDRAM初始化用到的配置信息 */
551*10465441SEvalZero #define EMI_REMAPCONF             (EMI_BASE+0X020)        /* 片选空间及地址映射REMAP配置寄存器 */
552*10465441SEvalZero #define EMI_NAND_ADDR1            (EMI_BASE+0X100)        /* NAND FLASH的地址寄存器1 */
553*10465441SEvalZero #define EMI_NAND_COM              (EMI_BASE+0X104)        /* NAND FLASH的控制字寄存器 */
554*10465441SEvalZero #define EMI_NAND_STA              (EMI_BASE+0X10C)        /* NAND FLASH的状态寄存器 */
555*10465441SEvalZero #define EMI_ERR_ADDR1             (EMI_BASE+0X110)        /* 读操作出错的地址寄存器1 */
556*10465441SEvalZero #define EMI_ERR_ADDR2             (EMI_BASE+0X114)        /* 读操作出错的地址寄存器2 */
557*10465441SEvalZero #define EMI_NAND_CONF1            (EMI_BASE+0X118)        /* NAND FLASH的配置器存器1 */
558*10465441SEvalZero #define EMI_NAND_INTR             (EMI_BASE+0X11C)        /* NAND FLASH中断寄存器 */
559*10465441SEvalZero #define EMI_NAND_ECC              (EMI_BASE+0X120)        /* ECC校验完成寄存器 */
560*10465441SEvalZero #define EMI_NAND_IDLE             (EMI_BASE+0X124)        /* NAND FLASH空闲寄存器 */
561*10465441SEvalZero #define EMI_NAND_CONF2            (EMI_BASE+0X128)        /* NAND FLASH的配置器存器2 */
562*10465441SEvalZero #define EMI_NAND_ADDR2            (EMI_BASE+0X12C)        /* NAND FLASH的地址寄存器2 */
563*10465441SEvalZero #define EMI_NAND_DATA             (EMI_BASE+0X200)        /* NAND FLASH的数据寄存器 */
564*10465441SEvalZero 
565*10465441SEvalZero 
566*10465441SEvalZero /*
567*10465441SEvalZero  *  DMAC模块
568*10465441SEvalZero  *  基址: 0x11001000
569*10465441SEvalZero  */
570*10465441SEvalZero 
571*10465441SEvalZero #define DMAC_INTSTATUS            (DMAC_BASE+0X020)       /* DAMC中断状态寄存器。 */
572*10465441SEvalZero #define DMAC_INTTCSTATUS          (DMAC_BASE+0X050)       /* DMAC传输完成中断状态寄存器 */
573*10465441SEvalZero #define DMAC_INTTCCLEAR           (DMAC_BASE+0X060)       /* DMAC传输完成中断状态清除寄存器 */
574*10465441SEvalZero #define DMAC_INTERRORSTATUS       (DMAC_BASE+0X080)       /* DMAC传输错误中断状态寄存器 */
575*10465441SEvalZero #define DMAC_INTINTERRCLR         (DMAC_BASE+0X090)       /* DMAC传输错误中断状态清除寄存器 */
576*10465441SEvalZero #define DMAC_ENBLDCHNS            (DMAC_BASE+0X0B0)       /* DMAC通道使能状态寄存器 */
577*10465441SEvalZero #define DMAC_C0SRCADDR            (DMAC_BASE+0X000)       /* DMAC道0源地址寄存器 */
578*10465441SEvalZero #define DMAC_C0DESTADD            (DMAC_BASE+0X004)       /* DMAC道0目的地址寄存器 */
579*10465441SEvalZero #define DMAC_C0CONTROL            (DMAC_BASE+0X00C)       /* DMAC道0控制寄存器 */
580*10465441SEvalZero #define DMAC_C0CONFIGURATION      (DMAC_BASE+0X010)       /* DMAC道0配置寄存器 */
581*10465441SEvalZero #define DMAC_C0DESCRIPTOR         (DMAC_BASE+0X01C)       /* DMAC道0链表地址寄存器 */
582*10465441SEvalZero #define DMAC_C1SRCADDR            (DMAC_BASE+0X100)       /* DMAC道1源地址寄存器 */
583*10465441SEvalZero #define DMAC_C1DESTADDR           (DMAC_BASE+0X104)       /* DMAC道1目的地址寄存器 */
584*10465441SEvalZero #define DMAC_C1CONTROL            (DMAC_BASE+0X10C)       /* DMAC道1控制寄存器 */
585*10465441SEvalZero #define DMAC_C1CONFIGURATION      (DMAC_BASE+0X110)       /* DMAC道1配置寄存器 */
586*10465441SEvalZero #define DMAC_C1DESCRIPTOR         (DMAC_BASE+0X114)       /* DMAC道1链表地址寄存器 */
587*10465441SEvalZero #define DMAC_C2SRCADDR            (DMAC_BASE+0X200)       /* DMAC道2源地址寄存器 */
588*10465441SEvalZero #define DMAC_C2DESTADDR           (DMAC_BASE+0X204)       /* DMAC道2目的地址寄存器 */
589*10465441SEvalZero #define DMAC_C2CONTROL            (DMAC_BASE+0X20C)       /* DMAC道2控制寄存器 */
590*10465441SEvalZero #define DMAC_C2CONFIGURATION      (DMAC_BASE+0X210)       /* DMAC道2配置寄存器 */
591*10465441SEvalZero #define DMAC_C2DESCRIPTOR         (DMAC_BASE+0X214)       /* DMAC道2链表地址寄存器 */
592*10465441SEvalZero #define DMAC_C3SRCADDR            (DMAC_BASE+0X300)       /* DMAC道3源地址寄存器 */
593*10465441SEvalZero #define DMAC_C3DESTADDR           (DMAC_BASE+0X304)       /* DMAC道3目的地址寄存器 */
594*10465441SEvalZero #define DMAC_C3CONTROL            (DMAC_BASE+0X30C)       /* DMAC道3控制寄存器 */
595*10465441SEvalZero #define DMAC_C3CONFIGURATION      (DMAC_BASE+0X310)       /* DMAC道3配置寄存器 */
596*10465441SEvalZero #define DMAC_C3DESCRIPTOR         (DMAC_BASE+0X314)       /* DMAC道3链表地址寄存器 */
597*10465441SEvalZero #define DMAC_C4SRCADDR            (DMAC_BASE+0X400)       /* DMAC道4源地址寄存器 */
598*10465441SEvalZero #define DMAC_C4DESTADDR           (DMAC_BASE+0X404)       /* DMAC道4目的地址寄存器 */
599*10465441SEvalZero #define DMAC_C4CONTROL            (DMAC_BASE+0X40C)       /* DMAC道4控制寄存器 */
600*10465441SEvalZero #define DMAC_C4CONFIGURATION      (DMAC_BASE+0X410)       /* DMAC道4配置寄存器 */
601*10465441SEvalZero #define DMAC_C4DESCRIPTOR         (DMAC_BASE+0X414)       /* DMAC道4链表地址寄存器 */
602*10465441SEvalZero #define DMAC_C5SRCADDR            (DMAC_BASE+0X500)       /* DMAC道5源地址寄存器 */
603*10465441SEvalZero #define DMAC_C5DESTADDR           (DMAC_BASE+0X504)       /* DMAC道5目的地址寄存器 */
604*10465441SEvalZero #define DMAC_C5CONTROL            (DMAC_BASE+0X50C)       /* DMAC道5控制寄存器 */
605*10465441SEvalZero #define DMAC_C5CONFIGURATION      (DMAC_BASE+0X510)       /* DMAC道5配置寄存器 */
606*10465441SEvalZero #define DMAC_C5DESCRIPTOR         (DMAC_BASE+0X514)       /* DMAC道5链表地址寄存器 */
607*10465441SEvalZero 
608*10465441SEvalZero 
609*10465441SEvalZero /*
610*10465441SEvalZero  *  LCDC模块
611*10465441SEvalZero  *  基址: 0x11002000
612*10465441SEvalZero  */
613*10465441SEvalZero 
614*10465441SEvalZero #define LCDC_SSA                  (LCDC_BASE+0X000)       /* 屏幕起始地址寄存器 */
615*10465441SEvalZero #define LCDC_SIZE                 (LCDC_BASE+0X004)       /* 屏幕尺寸寄存器 */
616*10465441SEvalZero #define LCDC_PCR                  (LCDC_BASE+0X008)       /* 面板配置寄存器 */
617*10465441SEvalZero #define LCDC_HCR                  (LCDC_BASE+0X00C)       /* 水平配置寄存器 */
618*10465441SEvalZero #define LCDC_VCR                  (LCDC_BASE+0X010)       /* 垂直配置寄存器 */
619*10465441SEvalZero #define LCDC_PWMR                 (LCDC_BASE+0X014)       /* PWM对比度控制寄存器 */
620*10465441SEvalZero #define LCDC_LECR                 (LCDC_BASE+0X018)       /* 使能控制寄存器 */
621*10465441SEvalZero #define LCDC_DMACR                (LCDC_BASE+0X01C)       /* DMA控制寄存器 */
622*10465441SEvalZero #define LCDC_LCDISREN             (LCDC_BASE+0X020)       /* 中断使能寄存器 */
623*10465441SEvalZero #define LCDC_LCDISR               (LCDC_BASE+0X024)       /* 中断状态寄存器 */
624*10465441SEvalZero #define LCDC_LGPMR                (LCDC_BASE+0X040)       /* 灰度调色映射寄存器组 (16个32bit寄存器) */
625*10465441SEvalZero 
626*10465441SEvalZero 
627*10465441SEvalZero /*
628*10465441SEvalZero  *  MAC模块
629*10465441SEvalZero  *  基址: 0x11003000
630*10465441SEvalZero  */
631*10465441SEvalZero 
632*10465441SEvalZero #define MAC_CTRL                  (MAC_BASE+0X000)        /* MAC控制寄存器 */
633*10465441SEvalZero #define MAC_INTSRC                (MAC_BASE+0X004)        /* MAC中断源寄存器 */
634*10465441SEvalZero #define MAC_INTMASK               (MAC_BASE+0X008)        /* MAC中断屏蔽寄存器 */
635*10465441SEvalZero #define MAC_IPGT                  (MAC_BASE+0X00C)        /* 连续帧间隔寄存器 */
636*10465441SEvalZero #define MAC_IPGR1                 (MAC_BASE+0X010)        /* 等待窗口寄存器 */
637*10465441SEvalZero #define MAC_IPGR2                 (MAC_BASE+0X014)        /* 等待窗口寄存器 */
638*10465441SEvalZero #define MAC_PACKETLEN             (MAC_BASE+0X018)        /* 帧长度寄存器 */
639*10465441SEvalZero #define MAC_COLLCONF              (MAC_BASE+0X01C)        /* 碰撞重发寄存器 */
640*10465441SEvalZero #define MAC_TXBD_NUM              (MAC_BASE+0X020)        /* 发送描述符寄存器 */
641*10465441SEvalZero #define MAC_FLOWCTRL              (MAC_BASE+0X024)        /* 流控寄存器 */
642*10465441SEvalZero #define MAC_MII_CTRL              (MAC_BASE+0X028)        /* PHY控制寄存器 */
643*10465441SEvalZero #define MAC_MII_CMD               (MAC_BASE+0X02C)        /* PHY命令寄存器 */
644*10465441SEvalZero #define MAC_MII_ADDRESS           (MAC_BASE+0X030)        /* PHY地址寄存器 */
645*10465441SEvalZero #define MAC_MII_TXDATA            (MAC_BASE+0X034)        /* PHY写数据寄存器 */
646*10465441SEvalZero #define MAC_MII_RXDATA            (MAC_BASE+0X038)        /* PHY读数据寄存器 */
647*10465441SEvalZero #define MAC_MII_STATUS            (MAC_BASE+0X03C)        /* PHY状态寄存器 */
648*10465441SEvalZero #define MAC_ADDR0                 (MAC_BASE+0X040)        /* MAC地址寄存器 */
649*10465441SEvalZero #define MAC_ADDR1                 (MAC_BASE+0X044)        /* MAC地址寄存器 */
650*10465441SEvalZero #define MAC_HASH0                 (MAC_BASE+0X048)        /* MAC HASH寄存器 */
651*10465441SEvalZero #define MAC_HASH1                 (MAC_BASE+0X04C)        /* MAC HASH寄存器 */
652*10465441SEvalZero #define MAC_TXPAUSE               (MAC_BASE+0X050)        /* MAC控制帧寄存器 */
653*10465441SEvalZero #define MAC_TX_BD                 (MAC_BASE+0X400)
654*10465441SEvalZero #define MAC_RX_BD                 (MAC_BASE+0X600)
655*10465441SEvalZero 
656*10465441SEvalZero 
657*10465441SEvalZero /*
658*10465441SEvalZero  **************************************
659*10465441SEvalZero  * Error Codes:
660*10465441SEvalZero  *    IF SUCCESS RETURN 0, ELSE RETURN OTHER ERROR CODE,
661*10465441SEvalZero  *    parameter error return (-33)/E_PAR,
662*10465441SEvalZero  *    hardware error reture (-99)/E_HA
663*10465441SEvalZero  **************************************
664*10465441SEvalZero  */
665*10465441SEvalZero 
666*10465441SEvalZero #define    E_OK          0        /* Normal completion */
667*10465441SEvalZero #define    E_SYS         (-5)     /* System error */
668*10465441SEvalZero #define    E_NOMEM       (-10)    /* Insufficient memory */
669*10465441SEvalZero #define    E_NOSPT       (-17)    /* Feature not supported */
670*10465441SEvalZero #define    E_INOSPT      (-18)    /* Feature not supported by ITRON/FILE specification */
671*10465441SEvalZero #define    E_RSFN        (-20)    /* Reserved function code number */
672*10465441SEvalZero #define    E_RSATR       (-24)    /* Reserved attribute */
673*10465441SEvalZero #define    E_PAR         (-33)    /* Parameter error */
674*10465441SEvalZero #define    E_ID          (-35)    /* Invalid ID number */
675*10465441SEvalZero #define    E_NOEXS       (-52)    /* Object does not exist */
676*10465441SEvalZero #define    E_OBJ         (-63)    /* Invalid object state */
677*10465441SEvalZero #define    E_MACV        (-65)    /* Memory access disabled or memory access violation */
678*10465441SEvalZero #define    E_OACV        (-66)    /* Object access violation */
679*10465441SEvalZero #define    E_CTX         (-69)    /* Context error */
680*10465441SEvalZero #define    E_QOVR        (-73)    /* Queuing or nesting overflow */
681*10465441SEvalZero #define    E_DLT         (-81)    /* Object being waited for was deleted */
682*10465441SEvalZero #define    E_TMOUT       (-85)    /* Polling failure or timeout exceeded */
683*10465441SEvalZero #define    E_RLWAI       (-86)    /* WAIT state was forcibly released */
684*10465441SEvalZero 
685*10465441SEvalZero #define    E_HA          (-99)    /* HARD WARE ERROR */
686*10465441SEvalZero 
687*10465441SEvalZero 
688*10465441SEvalZero /*
689*10465441SEvalZero  **************************************
690*10465441SEvalZero  * PMU 模块时钟
691*10465441SEvalZero  **************************************
692*10465441SEvalZero  */
693*10465441SEvalZero 
694*10465441SEvalZero #define    CLK_SGPT      (1 << 16)
695*10465441SEvalZero #define    CLK_SI2S      (1 << 15)
696*10465441SEvalZero #define    CLK_SSMC      (1 << 14)
697*10465441SEvalZero #define    CLK_SMAC      (1 << 13)
698*10465441SEvalZero #define    CLK_SUSB      (1 << 12)
699*10465441SEvalZero #define    CLK_SUART3    (1 << 11)
700*10465441SEvalZero #define    CLK_SUART2    (1 << 10)
701*10465441SEvalZero #define    CLK_SUART1    (1 << 9)
702*10465441SEvalZero #define    CLK_SUART0    (1 << 8)
703*10465441SEvalZero #define    CLK_SSSI      (1 << 7)
704*10465441SEvalZero #define    CLK_SAC97     (1 << 6)
705*10465441SEvalZero #define    CLK_SMMCSD    (1 << 5)
706*10465441SEvalZero #define    CLK_SEMI      (1 << 4)
707*10465441SEvalZero #define    CLK_SDMAC     (1 << 3)
708*10465441SEvalZero #define    CLK_SPWM      (1 << 2)
709*10465441SEvalZero #define    CLK_SLCDC     (1 << 1)
710*10465441SEvalZero #define    CLK_SESRAM    (1)
711*10465441SEvalZero 
712*10465441SEvalZero 
713*10465441SEvalZero /*Interrupt Sources*/
714*10465441SEvalZero 
715*10465441SEvalZero 
716*10465441SEvalZero #define  INTSRC_RTC        31
717*10465441SEvalZero #define  INTSRC_DMAC       30
718*10465441SEvalZero #define  INTSRC_EMI        29
719*10465441SEvalZero #define  INTSRC_MAC        28
720*10465441SEvalZero #define  INTSRC_TIMER1     27
721*10465441SEvalZero #define  INTSRC_TIMER2     26
722*10465441SEvalZero #define  INTSRC_TIMER3     25
723*10465441SEvalZero #define  INTSRC_UART0      24
724*10465441SEvalZero #define  INTSRC_UART1      23
725*10465441SEvalZero #define  INTSRC_UART2      22
726*10465441SEvalZero #define  INTSRC_UART3      21
727*10465441SEvalZero #define  INTSRC_PWM        20
728*10465441SEvalZero #define  INTSRC_LCDC       19
729*10465441SEvalZero #define  INTSRC_I2S        18
730*10465441SEvalZero #define  INTSRC_SSI        17
731*10465441SEvalZero 
732*10465441SEvalZero #define  INTSRC_USB        15
733*10465441SEvalZero #define  INTSRC_SMC0       14
734*10465441SEvalZero #define  INTSRC_SMC1       13
735*10465441SEvalZero #define  INTSRC_SDIO       12
736*10465441SEvalZero #define  INTSRC_EXINT10    11
737*10465441SEvalZero #define  INTSRC_EXINT9     10
738*10465441SEvalZero #define  INTSRC_EXINT8     9
739*10465441SEvalZero #define  INTSRC_EXINT7     8
740*10465441SEvalZero #define  INTSRC_EXINT6     7
741*10465441SEvalZero #define  INTSRC_EXINT5     6
742*10465441SEvalZero #define  INTSRC_EXINT4     5
743*10465441SEvalZero #define  INTSRC_EXINT3     4
744*10465441SEvalZero #define  INTSRC_EXINT2     3
745*10465441SEvalZero #define  INTSRC_EXINT1     2
746*10465441SEvalZero #define  INTSRC_EXINT0     1
747*10465441SEvalZero #define  INTSRC_NULL       0
748*10465441SEvalZero 
749*10465441SEvalZero 
750*10465441SEvalZero /*Sereral useful macros*/
751*10465441SEvalZero #define set_plevel(plevel)          *(RP)INTC_IPLR = plevel                      //设置普通中断的优先级门限,只有优先级大于此值的中断才能通过
752*10465441SEvalZero #define set_int_force(intnum)       *(RP)INTC_IFR = (1 << intnum)                //置1后,软件强制该位对应的中断源发出中断信号
753*10465441SEvalZero #define enable_irq(intnum)          *(RP)INTC_IER |= (1 << intnum)               //置1后,允许中断源的IRQ 中断信号
754*10465441SEvalZero #define disable_irq( intnum)        *(RP)INTC_IER &= ~(1<< intnum)               //置0后,不允许中断源的IRQ 中断信号
755*10465441SEvalZero #define mask_irq(intnum)            *(RP)INTC_IMR |= (1 << intnum)               //置1后,屏蔽对应的IRQ 中断信号
756*10465441SEvalZero #define unmask_irq(intnum)          *(RP)INTC_IMR &= ~(1 << intnum)              //置0后,通过对应的IRQ 中断信号
757*10465441SEvalZero #define mask_all_irq()              *(RP)INTC_IMR = 0xFFFFFFFF                   //屏蔽对应的IRQ 中断信号
758*10465441SEvalZero #define unmask_all_irq()            *(RP)INTC_IMR = 0x00000000                   //通过对应的IRQ 中断信号
759*10465441SEvalZero #define enable_all_irq()            *(RP)INTC_IER = 0XFFFFFFFF                   //允许中断源的IRQ 中断信号
760*10465441SEvalZero #define disable_all_irq()           *(RP)INTC_IER = 0X00000000                   //不允许中断源的IRQ 中断信号
761*10465441SEvalZero #define InitInt()                  do{mask_all_irq(); enable_all_irq();}while(0)
762*10465441SEvalZero 
763*10465441SEvalZero /*
764*10465441SEvalZero  **************************************
765*10465441SEvalZero  * 所有程序中用到的Typedef
766*10465441SEvalZero  **************************************
767*10465441SEvalZero  */
768*10465441SEvalZero 
769*10465441SEvalZero typedef    char                 S8;        /* signed 8-bit integer */
770*10465441SEvalZero typedef    short                S16;       /* signed 16-bit integer */
771*10465441SEvalZero typedef    long                 S32;       /* signed 32-bit integer */
772*10465441SEvalZero typedef    unsigned char        U8;        /* unsigned 8-bit integer */
773*10465441SEvalZero typedef    unsigned short       U16;       /* unsigned 16-bit integer */
774*10465441SEvalZero typedef    unsigned long        U32;       /* unsigned 32-bit integer */
775*10465441SEvalZero 
776*10465441SEvalZero typedef    volatile U32 *       RP;
777*10465441SEvalZero typedef    volatile U16 *       RP16;
778*10465441SEvalZero typedef    volatile U8  *       RP8;
779*10465441SEvalZero 
780*10465441SEvalZero typedef    void                 *VP;       /* pointer to an unpredictable data type */
781*10465441SEvalZero typedef    void                 (*FP)();   /* program start address */
782*10465441SEvalZero 
783*10465441SEvalZero #ifndef    _BOOL_TYPE_
784*10465441SEvalZero #define    _BOOL_TYPE_
785*10465441SEvalZero typedef    int                  BOOL;	     /* Boolean value.  TRUE (1) or FALSE (0). */
786*10465441SEvalZero #endif
787*10465441SEvalZero 
788*10465441SEvalZero typedef    int                  ER;         /* Error code.  A signed integer. */
789*10465441SEvalZero 
790*10465441SEvalZero /**
791*10465441SEvalZero  * IO definitions
792*10465441SEvalZero  *
793*10465441SEvalZero  * define access restrictions to peripheral registers
794*10465441SEvalZero  */
795*10465441SEvalZero 
796*10465441SEvalZero #define     __I     volatile const            /*!< defines 'read only' permissions      */
797*10465441SEvalZero #define     __O     volatile                  /*!< defines 'write only' permissions     */
798*10465441SEvalZero #define     __IO    volatile                  /*!< defines 'read / write' permissions   */
799*10465441SEvalZero #define     __iomem volatile
800*10465441SEvalZero 
801*10465441SEvalZero 
802*10465441SEvalZero /*Macros for debug*/
803*10465441SEvalZero 
804*10465441SEvalZero #define EOUT(fmt,...) \
805*10465441SEvalZero 	do \
806*10465441SEvalZero 	{ 	\
807*10465441SEvalZero 		rt_kprintf("EOUT:(%s:%i)  ",__FILE__,__LINE__); \
808*10465441SEvalZero 		rt_kprintf(fmt,##__VA_ARGS__); \
809*10465441SEvalZero 	}while(0)
810*10465441SEvalZero 
811*10465441SEvalZero #define RT_DEBUG
812*10465441SEvalZero #ifdef RT_DEBUG
813*10465441SEvalZero 	#define DBOUT(fmt,...) \
814*10465441SEvalZero 	do \
815*10465441SEvalZero 	{ 	\
816*10465441SEvalZero 		rt_kprintf("DBOUT:(%s:%i)  ",__FILE__,__LINE__); \
817*10465441SEvalZero 		rt_kprintf(fmt,##__VA_ARGS__); \
818*10465441SEvalZero 	}while(0)
819*10465441SEvalZero #else
820*10465441SEvalZero 	#define DBOUT(fmt,...) \
821*10465441SEvalZero 	do{}while(0)
822*10465441SEvalZero #endif
823*10465441SEvalZero 
824*10465441SEvalZero #ifdef	RT_DEBUG
825*10465441SEvalZero 	#define ASSERT(arg) \
826*10465441SEvalZero 	if((arg) == 0) \
827*10465441SEvalZero 	{		\
828*10465441SEvalZero 		while(1) \
829*10465441SEvalZero 		{		  \
830*10465441SEvalZero 			rt_kprintf("have a assert failure\n"); \
831*10465441SEvalZero 		}										 \
832*10465441SEvalZero 	}
833*10465441SEvalZero #else
834*10465441SEvalZero 	#define ASSERT(arg) \
835*10465441SEvalZero 	do		\
836*10465441SEvalZero 	{		 \
837*10465441SEvalZero 	}while(0)
838*10465441SEvalZero #endif
839*10465441SEvalZero 
840*10465441SEvalZero 
841*10465441SEvalZero #define write_reg(reg,value) \
842*10465441SEvalZero 	do \
843*10465441SEvalZero 	{ \
844*10465441SEvalZero 		*(RP)(reg) = value; \
845*10465441SEvalZero 	}while(0)
846*10465441SEvalZero 
847*10465441SEvalZero #define read_reg(reg) (*(RP)reg)
848*10465441SEvalZero 
849*10465441SEvalZero 
850*10465441SEvalZero struct rt_hw_register
851*10465441SEvalZero {
852*10465441SEvalZero 	rt_uint32_t r0;
853*10465441SEvalZero 	rt_uint32_t r1;
854*10465441SEvalZero 	rt_uint32_t r2;
855*10465441SEvalZero 	rt_uint32_t r3;
856*10465441SEvalZero 	rt_uint32_t r4;
857*10465441SEvalZero 	rt_uint32_t r5;
858*10465441SEvalZero 	rt_uint32_t r6;
859*10465441SEvalZero 	rt_uint32_t r7;
860*10465441SEvalZero 	rt_uint32_t r8;
861*10465441SEvalZero 	rt_uint32_t r9;
862*10465441SEvalZero 	rt_uint32_t r10;
863*10465441SEvalZero 	rt_uint32_t fp;
864*10465441SEvalZero 	rt_uint32_t ip;
865*10465441SEvalZero 	rt_uint32_t sp;
866*10465441SEvalZero 	rt_uint32_t lr;
867*10465441SEvalZero 	rt_uint32_t pc;
868*10465441SEvalZero 	rt_uint32_t cpsr;
869*10465441SEvalZero 	rt_uint32_t ORIG_r0;
870*10465441SEvalZero };
871*10465441SEvalZero 
872*10465441SEvalZero 
873*10465441SEvalZero /*@}*/
874*10465441SEvalZero 
875*10465441SEvalZero #endif
876