xref: /nrf52832-nimble/rt-thread/libcpu/arm/s3c44b0/s3c44b0.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  * 2006-09-06     XuXinming    first version
9*10465441SEvalZero  * 2006-09-16     Bernard      modify according to code style
10*10465441SEvalZero  */
11*10465441SEvalZero 
12*10465441SEvalZero #ifndef __S3C44B0_H__
13*10465441SEvalZero #define __S3C44B0_H__
14*10465441SEvalZero 
15*10465441SEvalZero #ifdef __cplusplus
16*10465441SEvalZero extern "C" {
17*10465441SEvalZero #endif
18*10465441SEvalZero 
19*10465441SEvalZero /**
20*10465441SEvalZero  * @addtogroup S3C44B0
21*10465441SEvalZero  */
22*10465441SEvalZero /*@{*/
23*10465441SEvalZero 
24*10465441SEvalZero /*------------------------------------------------------------------------
25*10465441SEvalZero  *	  ASIC Address Definition
26*10465441SEvalZero  *----------------------------------------------------------------------*/
27*10465441SEvalZero #define S3C_REG		*(volatile unsigned int *)
28*10465441SEvalZero #define S3C_REGW	*(volatile unsigned short *)
29*10465441SEvalZero #define S3C_REGB	*(volatile unsigned char *)
30*10465441SEvalZero 
31*10465441SEvalZero /* System */
32*10465441SEvalZero #define SYSCFG		(S3C_REG(0x1c00000))
33*10465441SEvalZero 
34*10465441SEvalZero /* Cache */
35*10465441SEvalZero #define NCACHBE0	(S3C_REG(0x1c00004))
36*10465441SEvalZero #define NCACHBE1	(S3C_REG(0x1c00008))
37*10465441SEvalZero 
38*10465441SEvalZero /* Bus control */
39*10465441SEvalZero #define SBUSCON		(S3C_REG(0x1c40000))
40*10465441SEvalZero 
41*10465441SEvalZero /* Memory control */
42*10465441SEvalZero #define BWSCON		(S3C_REG(0x1c80000))
43*10465441SEvalZero #define BANKCON0	(S3C_REG(0x1c80004))
44*10465441SEvalZero #define BANKCON1	(S3C_REG(0x1c80008))
45*10465441SEvalZero #define BANKCON2	(S3C_REG(0x1c8000c))
46*10465441SEvalZero #define BANKCON3	(S3C_REG(0x1c80010))
47*10465441SEvalZero #define BANKCON4	(S3C_REG(0x1c80014))
48*10465441SEvalZero #define BANKCON5	(S3C_REG(0x1c80018))
49*10465441SEvalZero #define BANKCON6	(S3C_REG(0x1c8001c))
50*10465441SEvalZero #define BANKCON7	(S3C_REG(0x1c80020))
51*10465441SEvalZero #define REFRESH		(S3C_REG(0x1c80024))
52*10465441SEvalZero #define BANKSIZE	(S3C_REG(0x1c80028))
53*10465441SEvalZero #define MRSRB6		(S3C_REG(0x1c8002c))
54*10465441SEvalZero #define MRSRB7		(S3C_REG(0x1c80030))
55*10465441SEvalZero 
56*10465441SEvalZero /* UART */
57*10465441SEvalZero #define ULCON0		(S3C_REG(0x1d00000))
58*10465441SEvalZero #define ULCON1		(S3C_REG(0x1d04000))
59*10465441SEvalZero #define UCON0		(S3C_REG(0x1d00004))
60*10465441SEvalZero #define UCON1		(S3C_REG(0x1d04004))
61*10465441SEvalZero #define UFCON0		(S3C_REG(0x1d00008))
62*10465441SEvalZero #define UFCON1		(S3C_REG(0x1d04008))
63*10465441SEvalZero #define UMCON0		(S3C_REG(0x1d0000c))
64*10465441SEvalZero #define UMCON1		(S3C_REG(0x1d0400c))
65*10465441SEvalZero #define UTRSTAT0	(S3C_REG(0x1d00010))
66*10465441SEvalZero #define UTRSTAT1	(S3C_REG(0x1d04010))
67*10465441SEvalZero #define UERSTAT0	(S3C_REG(0x1d00014))
68*10465441SEvalZero #define UERSTAT1	(S3C_REG(0x1d04014))
69*10465441SEvalZero #define UFSTAT0		(S3C_REG(0x1d00018))
70*10465441SEvalZero #define UFSTAT1		(S3C_REG(0x1d04018))
71*10465441SEvalZero #define UMSTAT0		(S3C_REG(0x1d0001c))
72*10465441SEvalZero #define UMSTAT1		(S3C_REG(0x1d0401c))
73*10465441SEvalZero #define UBRDIV0		(S3C_REG(0x1d00028))
74*10465441SEvalZero #define UBRDIV1		(S3C_REG(0x1d04028))
75*10465441SEvalZero 
76*10465441SEvalZero #define UTXH0		(S3C_REGB(0x1d00020))
77*10465441SEvalZero #define UTXH1		(S3C_REGB(0x1d04020))
78*10465441SEvalZero #define URXH0		(S3C_REGB(0x1d00024))
79*10465441SEvalZero #define URXH1		(S3C_REGB(0x1d04024))
80*10465441SEvalZero 
81*10465441SEvalZero /* SIO */
82*10465441SEvalZero #define SIOCON		(S3C_REG(0x1d14000))
83*10465441SEvalZero #define SIODAT		(S3C_REG(0x1d14004))
84*10465441SEvalZero #define SBRDR		(S3C_REG(0x1d14008))
85*10465441SEvalZero #define IVTCNT		(S3C_REG(0x1d1400c))
86*10465441SEvalZero #define DCNTZ		(S3C_REG(0x1d14010))
87*10465441SEvalZero 
88*10465441SEvalZero /* IIS */
89*10465441SEvalZero #define IISCON		(S3C_REG(0x1d18000))
90*10465441SEvalZero #define IISMOD		(S3C_REG(0x1d18004))
91*10465441SEvalZero #define IISPSR		(S3C_REG(0x1d18008))
92*10465441SEvalZero #define IISFCON		(S3C_REG(0x1d1800c))
93*10465441SEvalZero 
94*10465441SEvalZero #define IISFIF		(S3C_REQW(0x1d18010))
95*10465441SEvalZero 
96*10465441SEvalZero /* I/O Port */
97*10465441SEvalZero #define PCONA		(S3C_REG(0x1d20000))
98*10465441SEvalZero #define PDATA		(S3C_REG(0x1d20004))
99*10465441SEvalZero 
100*10465441SEvalZero #define PCONB		(S3C_REG(0x1d20008))
101*10465441SEvalZero #define PDATB		(S3C_REG(0x1d2000c))
102*10465441SEvalZero 
103*10465441SEvalZero #define PCONC		(S3C_REG(0x1d20010))
104*10465441SEvalZero #define PDATC		(S3C_REG(0x1d20014))
105*10465441SEvalZero #define PUPC		(S3C_REG(0x1d20018))
106*10465441SEvalZero 
107*10465441SEvalZero #define PCOND		(S3C_REG(0x1d2001c))
108*10465441SEvalZero #define PDATD		(S3C_REG(0x1d20020))
109*10465441SEvalZero #define PUPD		(S3C_REG(0x1d20024))
110*10465441SEvalZero 
111*10465441SEvalZero #define PCONE		(S3C_REG(0x1d20028))
112*10465441SEvalZero #define PDATE		(S3C_REG(0x1d2002c))
113*10465441SEvalZero #define PUPE		(S3C_REG(0x1d20030))
114*10465441SEvalZero 
115*10465441SEvalZero #define PCONF		(S3C_REG(0x1d20034))
116*10465441SEvalZero #define PDATF		(S3C_REG(0x1d20038))
117*10465441SEvalZero #define PUPF		(S3C_REG(0x1d2003c))
118*10465441SEvalZero 
119*10465441SEvalZero #define PCONG		(S3C_REG(0x1d20040))
120*10465441SEvalZero #define PDATG		(S3C_REG(0x1d20044))
121*10465441SEvalZero #define PUPG		(S3C_REG(0x1d20048))
122*10465441SEvalZero 
123*10465441SEvalZero #define SPUCR		(S3C_REG(0x1d2004c))
124*10465441SEvalZero #define EXTINT		(S3C_REG(0x1d20050))
125*10465441SEvalZero #define EXTINTPND	(S3C_REG(0x1d20054))
126*10465441SEvalZero 
127*10465441SEvalZero /* Watchdog */
128*10465441SEvalZero #define WTCON		(S3C_REG(0x1d30000))
129*10465441SEvalZero #define WTDAT		(S3C_REG(0x1d30004))
130*10465441SEvalZero #define WTCNT		(S3C_REG(0x1d30008))
131*10465441SEvalZero 
132*10465441SEvalZero /* ADC */
133*10465441SEvalZero #define ADCCON		(S3C_REG(0x1d40000))
134*10465441SEvalZero #define ADCPSR		(S3C_REG(0x1d40004))
135*10465441SEvalZero #define ADCDAT		(S3C_REG(0x1d40008))
136*10465441SEvalZero 
137*10465441SEvalZero /* Timer */
138*10465441SEvalZero #define TCFG0		(S3C_REG(0x1d50000))
139*10465441SEvalZero #define TCFG1		(S3C_REG(0x1d50004))
140*10465441SEvalZero #define TCON		(S3C_REG(0x1d50008))
141*10465441SEvalZero 
142*10465441SEvalZero #define TCNTB0		(S3C_REG(0x1d5000c))
143*10465441SEvalZero #define TCMPB0		(S3C_REG(0x1d50010))
144*10465441SEvalZero #define TCNTO0		(S3C_REG(0x1d50014))
145*10465441SEvalZero 
146*10465441SEvalZero #define TCNTB1		(S3C_REG(0x1d50018))
147*10465441SEvalZero #define TCMPB1		(S3C_REG(0x1d5001c))
148*10465441SEvalZero #define TCNTO1		(S3C_REG(0x1d50020))
149*10465441SEvalZero 
150*10465441SEvalZero #define TCNTB2		(S3C_REG(0x1d50024))
151*10465441SEvalZero #define TCMPB2		(S3C_REG(0x1d50028))
152*10465441SEvalZero #define TCNTO2		(S3C_REG(0x1d5002c))
153*10465441SEvalZero 
154*10465441SEvalZero #define TCNTB3		(S3C_REG(0x1d50030))
155*10465441SEvalZero #define TCMPB3		(S3C_REG(0x1d50034))
156*10465441SEvalZero #define TCNTO3		(S3C_REG(0x1d50038))
157*10465441SEvalZero 
158*10465441SEvalZero #define TCNTB4		(S3C_REG(0x1d5003c))
159*10465441SEvalZero #define TCMPB4		(S3C_REG(0x1d50040))
160*10465441SEvalZero #define TCNTO4		(S3C_REG(0x1d50044))
161*10465441SEvalZero 
162*10465441SEvalZero #define TCNTB5		(S3C_REG(0x1d50048))
163*10465441SEvalZero #define TCNTO5		(S3C_REG(0x1d5004c))
164*10465441SEvalZero 
165*10465441SEvalZero /* IIC */
166*10465441SEvalZero #define IICCON		(S3C_REG(0x1d60000))
167*10465441SEvalZero #define IICSTAT    	(S3C_REG(0x1d60004))
168*10465441SEvalZero #define IICADD     	(S3C_REG(0x1d60008))
169*10465441SEvalZero #define IICDS		(S3C_REG(0x1d6000c))
170*10465441SEvalZero 
171*10465441SEvalZero /* RTC */
172*10465441SEvalZero #define RTCCON		(S3C_REGB(0x1d70040)
173*10465441SEvalZero #define RTCALM		(S3C_REGB(0x1d70050)
174*10465441SEvalZero #define ALMSEC		(S3C_REGB(0x1d70054)
175*10465441SEvalZero #define ALMMIN		(S3C_REGB(0x1d70058)
176*10465441SEvalZero #define ALMHOUR		(S3C_REGB(0x1d7005c)
177*10465441SEvalZero #define ALMDAY		(S3C_REGB(0x1d70060)
178*10465441SEvalZero #define ALMMON		(S3C_REGB(0x1d70064)
179*10465441SEvalZero #define ALMYEAR		(S3C_REGB(0x1d70068)
180*10465441SEvalZero #define RTCRST		(S3C_REGB(0x1d7006c)
181*10465441SEvalZero #define BCDSEC		(S3C_REGB(0x1d70070)
182*10465441SEvalZero #define BCDMIN		(S3C_REGB(0x1d70074)
183*10465441SEvalZero #define BCDHOUR		(S3C_REGB(0x1d70078)
184*10465441SEvalZero #define BCDDAY		(S3C_REGB(0x1d7007c)
185*10465441SEvalZero #define BCDDATE		(S3C_REGB(0x1d70080)
186*10465441SEvalZero #define BCDMON		(S3C_REGB(0x1d70084)
187*10465441SEvalZero #define BCDYEAR		(S3C_REGB(0x1d70088)
188*10465441SEvalZero #define TICINT		(S3C_REGB(0x1d7008c)
189*10465441SEvalZero 
190*10465441SEvalZero /* Clock & Power management */
191*10465441SEvalZero #define PLLCON		(S3C_REG(0x1d80000))
192*10465441SEvalZero #define CLKCON		(S3C_REG(0x1d80004))
193*10465441SEvalZero #define CLKSLOW		(S3C_REG(0x1d80008))
194*10465441SEvalZero #define LOCKTIME	(S3C_REG(0x1d8000c))
195*10465441SEvalZero 
196*10465441SEvalZero /* Interrupt */
197*10465441SEvalZero #define INTCON		(S3C_REG(0x1e00000))
198*10465441SEvalZero #define INTPND		(S3C_REG(0x1e00004))
199*10465441SEvalZero #define INTMOD		(S3C_REG(0x1e00008))
200*10465441SEvalZero #define INTMSK		(S3C_REG(0x1e0000c))
201*10465441SEvalZero 
202*10465441SEvalZero #define I_PSLV		(S3C_REG(0x1e00010))
203*10465441SEvalZero #define I_PMST		(S3C_REG(0x1e00014))
204*10465441SEvalZero #define I_CSLV		(S3C_REG(0x1e00018))
205*10465441SEvalZero #define I_CMST		(S3C_REG(0x1e0001c))
206*10465441SEvalZero #define I_ISPR		(S3C_REG(0x1e00020))
207*10465441SEvalZero #define I_ISPC		(S3C_REG(0x1e00024))
208*10465441SEvalZero 
209*10465441SEvalZero #define F_ISPR		(S3C_REG(0x1e00038))
210*10465441SEvalZero #define F_ISPC		(S3C_REG(0x1e0003c))
211*10465441SEvalZero 
212*10465441SEvalZero /********************************/
213*10465441SEvalZero /* LCD Controller Registers     */
214*10465441SEvalZero /********************************/
215*10465441SEvalZero #define LCDCON1		(S3C_REG(0x300000))
216*10465441SEvalZero #define LCDCON2		(S3C_REG(0x300004))
217*10465441SEvalZero #define LCDSADDR1	(S3C_REG(0x300008))
218*10465441SEvalZero #define LCDSADDR2	(S3C_REG(0x30000c))
219*10465441SEvalZero #define LCDSADDR3	(S3C_REG(0x300010))
220*10465441SEvalZero #define REDLUT		(S3C_REG(0x300014))
221*10465441SEvalZero #define GREENLUT	(S3C_REG(0x300018))
222*10465441SEvalZero #define BLUELUT		(S3C_REG(0x30001c))
223*10465441SEvalZero #define DP1_2		(S3C_REG(0x300020))
224*10465441SEvalZero #define DP4_7		(S3C_REG(0x300024))
225*10465441SEvalZero #define DP3_5		(S3C_REG(0x300028))
226*10465441SEvalZero #define DP2_3		(S3C_REG(0x30002c))
227*10465441SEvalZero #define DP5_7		(S3C_REG(0x300030))
228*10465441SEvalZero #define DP3_4		(S3C_REG(0x300034))
229*10465441SEvalZero #define DP4_5		(S3C_REG(0x300038))
230*10465441SEvalZero #define DP6_7		(S3C_REG(0x30003c))
231*10465441SEvalZero #define LCDCON3		(S3C_REG(0x300040))
232*10465441SEvalZero #define DITHMODE	(S3C_REG(0x300044))
233*10465441SEvalZero 
234*10465441SEvalZero /* ZDMA0 */
235*10465441SEvalZero #define ZDCON0		(S3C_REG(0x1e80000))
236*10465441SEvalZero #define ZDISRC0		(S3C_REG(0x1e80004))
237*10465441SEvalZero #define ZDIDES0		(S3C_REG(0x1e80008))
238*10465441SEvalZero #define ZDICNT0		(S3C_REG(0x1e8000c))
239*10465441SEvalZero #define ZDCSRC0		(S3C_REG(0x1e80010))
240*10465441SEvalZero #define ZDCDES0		(S3C_REG(0x1e80014))
241*10465441SEvalZero #define ZDCCNT0		(S3C_REG(0x1e80018))
242*10465441SEvalZero 
243*10465441SEvalZero /* ZDMA1 */
244*10465441SEvalZero #define ZDCON1		(S3C_REG(0x1e80020))
245*10465441SEvalZero #define ZDISRC1		(S3C_REG(0x1e80024))
246*10465441SEvalZero #define ZDIDES1		(S3C_REG(0x1e80028))
247*10465441SEvalZero #define ZDICNT1		(S3C_REG(0x1e8002c))
248*10465441SEvalZero #define ZDCSRC1		(S3C_REG(0x1e80030))
249*10465441SEvalZero #define ZDCDES1		(S3C_REG(0x1e80034))
250*10465441SEvalZero #define ZDCCNT1		(S3C_REG(0x1e80038))
251*10465441SEvalZero 
252*10465441SEvalZero /* BDMA0 */
253*10465441SEvalZero #define BDCON0		(S3C_REG(0x1f80000))
254*10465441SEvalZero #define BDISRC0		(S3C_REG(0x1f80004))
255*10465441SEvalZero #define BDIDES0		(S3C_REG(0x1f80008))
256*10465441SEvalZero #define BDICNT0		(S3C_REG(0x1f8000c))
257*10465441SEvalZero #define BDCSRC0		(S3C_REG(0x1f80010))
258*10465441SEvalZero #define BDCDES0		(S3C_REG(0x1f80014))
259*10465441SEvalZero #define BDCCNT0		(S3C_REG(0x1f80018))
260*10465441SEvalZero 
261*10465441SEvalZero /* BDMA1 */
262*10465441SEvalZero #define BDCON1		(S3C_REG(0x1f80020))
263*10465441SEvalZero #define BDISRC1		(S3C_REG(0x1f80024))
264*10465441SEvalZero #define BDIDES1		(S3C_REG(0x1f80028))
265*10465441SEvalZero #define BDICNT1		(S3C_REG(0x1f8002c))
266*10465441SEvalZero #define BDCSRC1		(S3C_REG(0x1f80030))
267*10465441SEvalZero #define BDCDES1		(S3C_REG(0x1f80034))
268*10465441SEvalZero #define BDCCNT1		(S3C_REG(0x1f80038))
269*10465441SEvalZero 
270*10465441SEvalZero /*****************************/
271*10465441SEvalZero /* CPU Mode                  */
272*10465441SEvalZero /*****************************/
273*10465441SEvalZero #define USERMODE	0x10		/* User Mode(USR) */
274*10465441SEvalZero #define FIQMODE		0x11		/* Fast Interrupt Mode (FIQ) */
275*10465441SEvalZero #define IRQMODE		0x12		/* Interrupt Mode (IRQ) */
276*10465441SEvalZero #define SVCMODE		0x13		/* Supervisor Mode (SVC) */
277*10465441SEvalZero #define ABORTMODE	0x17		/* Abort Mode(ABT) */
278*10465441SEvalZero #define UNDEFMODE	0x1b		/* Undefine Mode(UDF) */
279*10465441SEvalZero #define MODEMASK	0x1f		/* Processor Mode Mask */
280*10465441SEvalZero #define NOINT		0xc0
281*10465441SEvalZero 
282*10465441SEvalZero /*****************************/
283*10465441SEvalZero /* INT Define                */
284*10465441SEvalZero /*****************************/
285*10465441SEvalZero #define INT_ADC		0x00
286*10465441SEvalZero #define INT_RTC		0x01
287*10465441SEvalZero #define INT_UTXD1	0x02
288*10465441SEvalZero #define INT_UTXD0	0x03
289*10465441SEvalZero #define INT_SIO		0x04
290*10465441SEvalZero #define INT_IIC		0x05
291*10465441SEvalZero #define INT_URXD1	0x06
292*10465441SEvalZero #define INT_URXD0	0x07
293*10465441SEvalZero #define INT_TIMER5	0x08
294*10465441SEvalZero #define INT_TIMER4	0x09
295*10465441SEvalZero #define INT_TIMER3	0x0A
296*10465441SEvalZero #define INT_TIMER2	0x0B
297*10465441SEvalZero #define INT_TIMER1	0x0C
298*10465441SEvalZero #define INT_TIMER0	0x0D
299*10465441SEvalZero #define INT_UERR01	0x0E
300*10465441SEvalZero #define INT_WDT		0x1F
301*10465441SEvalZero #define INT_BDMA1	0x10
302*10465441SEvalZero #define INT_BDMA0	0x11
303*10465441SEvalZero #define INT_ZDMA1	0x12
304*10465441SEvalZero #define INT_ZDMA0	0x13
305*10465441SEvalZero #define INT_TICK	0x14
306*10465441SEvalZero #define INT_EINT4567	0x15
307*10465441SEvalZero #define INT_EINT3	0x16
308*10465441SEvalZero #define INT_EINT2	0x17
309*10465441SEvalZero #define INT_EINT1	0x18
310*10465441SEvalZero #define INT_EINT0	0x19
311*10465441SEvalZero 
312*10465441SEvalZero #define INT_GLOBAL	26
313*10465441SEvalZero 
314*10465441SEvalZero struct rt_hw_register
315*10465441SEvalZero {
316*10465441SEvalZero 	unsigned long r0;
317*10465441SEvalZero 	unsigned long r1;
318*10465441SEvalZero 	unsigned long r2;
319*10465441SEvalZero 	unsigned long r3;
320*10465441SEvalZero 	unsigned long r4;
321*10465441SEvalZero 	unsigned long r5;
322*10465441SEvalZero 	unsigned long r6;
323*10465441SEvalZero 	unsigned long r7;
324*10465441SEvalZero 	unsigned long r8;
325*10465441SEvalZero 	unsigned long r9;
326*10465441SEvalZero 	unsigned long r10;
327*10465441SEvalZero 	unsigned long fp;
328*10465441SEvalZero 	unsigned long ip;
329*10465441SEvalZero 	unsigned long sp;
330*10465441SEvalZero 	unsigned long lr;
331*10465441SEvalZero 	unsigned long pc;
332*10465441SEvalZero 	unsigned long cpsr;
333*10465441SEvalZero 	unsigned long ORIG_r0;
334*10465441SEvalZero };
335*10465441SEvalZero 
336*10465441SEvalZero /*@}*/
337*10465441SEvalZero 
338*10465441SEvalZero #ifdef __cplusplus
339*10465441SEvalZero }
340*10465441SEvalZero #endif
341*10465441SEvalZero 
342*10465441SEvalZero #endif
343