xref: /OK3568_Linux_fs/kernel/arch/arm/mach-s3c/bast.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Copyright (c) 2003-2004 Simtec Electronics
4*4882a593Smuzhiyun  *	Ben Dooks <ben@simtec.co.uk>
5*4882a593Smuzhiyun  *
6*4882a593Smuzhiyun  * BAST - CPLD control constants
7*4882a593Smuzhiyun  * BAST - IRQ Number definitions
8*4882a593Smuzhiyun  * BAST - Memory map definitions
9*4882a593Smuzhiyun  */
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun #ifndef __MACH_S3C24XX_BAST_H
12*4882a593Smuzhiyun #define __MACH_S3C24XX_BAST_H __FILE__
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun /* CTRL1 - Audio LR routing */
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun #define BAST_CPLD_CTRL1_LRCOFF		(0x00)
17*4882a593Smuzhiyun #define BAST_CPLD_CTRL1_LRCADC		(0x01)
18*4882a593Smuzhiyun #define BAST_CPLD_CTRL1_LRCDAC		(0x02)
19*4882a593Smuzhiyun #define BAST_CPLD_CTRL1_LRCARM		(0x03)
20*4882a593Smuzhiyun #define BAST_CPLD_CTRL1_LRMASK		(0x03)
21*4882a593Smuzhiyun 
22*4882a593Smuzhiyun /* CTRL2 - NAND WP control, IDE Reset assert/check */
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun #define BAST_CPLD_CTRL2_WNAND		(0x04)
25*4882a593Smuzhiyun #define BAST_CPLD_CTLR2_IDERST		(0x08)
26*4882a593Smuzhiyun 
27*4882a593Smuzhiyun /* CTRL3 - rom write control, CPLD identity */
28*4882a593Smuzhiyun 
29*4882a593Smuzhiyun #define BAST_CPLD_CTRL3_IDMASK		(0x0e)
30*4882a593Smuzhiyun #define BAST_CPLD_CTRL3_ROMWEN		(0x01)
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun /* CTRL4 - 8bit LCD interface control/status */
33*4882a593Smuzhiyun 
34*4882a593Smuzhiyun #define BAST_CPLD_CTRL4_LLAT		(0x01)
35*4882a593Smuzhiyun #define BAST_CPLD_CTRL4_LCDRW		(0x02)
36*4882a593Smuzhiyun #define BAST_CPLD_CTRL4_LCDCMD		(0x04)
37*4882a593Smuzhiyun #define BAST_CPLD_CTRL4_LCDE2		(0x01)
38*4882a593Smuzhiyun 
39*4882a593Smuzhiyun /* CTRL5 - DMA routing */
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun #define BAST_CPLD_DMA0_PRIIDE		(0)
42*4882a593Smuzhiyun #define BAST_CPLD_DMA0_SECIDE		(1)
43*4882a593Smuzhiyun #define BAST_CPLD_DMA0_ISA15		(2)
44*4882a593Smuzhiyun #define BAST_CPLD_DMA0_ISA36		(3)
45*4882a593Smuzhiyun 
46*4882a593Smuzhiyun #define BAST_CPLD_DMA1_PRIIDE		(0 << 2)
47*4882a593Smuzhiyun #define BAST_CPLD_DMA1_SECIDE		(1 << 2)
48*4882a593Smuzhiyun #define BAST_CPLD_DMA1_ISA15		(2 << 2)
49*4882a593Smuzhiyun #define BAST_CPLD_DMA1_ISA36		(3 << 2)
50*4882a593Smuzhiyun 
51*4882a593Smuzhiyun /* irq numbers to onboard peripherals */
52*4882a593Smuzhiyun 
53*4882a593Smuzhiyun #define BAST_IRQ_USBOC			IRQ_EINT18
54*4882a593Smuzhiyun #define BAST_IRQ_IDE0			IRQ_EINT16
55*4882a593Smuzhiyun #define BAST_IRQ_IDE1			IRQ_EINT17
56*4882a593Smuzhiyun #define BAST_IRQ_PCSERIAL1		IRQ_EINT15
57*4882a593Smuzhiyun #define BAST_IRQ_PCSERIAL2		IRQ_EINT14
58*4882a593Smuzhiyun #define BAST_IRQ_PCPARALLEL		IRQ_EINT13
59*4882a593Smuzhiyun #define BAST_IRQ_ASIX			IRQ_EINT11
60*4882a593Smuzhiyun #define BAST_IRQ_DM9000			IRQ_EINT10
61*4882a593Smuzhiyun #define BAST_IRQ_ISA			IRQ_EINT9
62*4882a593Smuzhiyun #define BAST_IRQ_SMALERT		IRQ_EINT8
63*4882a593Smuzhiyun 
64*4882a593Smuzhiyun /* map */
65*4882a593Smuzhiyun 
66*4882a593Smuzhiyun /*
67*4882a593Smuzhiyun  * ok, we've used up to 0x13000000, now we need to find space for the
68*4882a593Smuzhiyun  * peripherals that live in the nGCS[x] areas, which are quite numerous
69*4882a593Smuzhiyun  * in their space. We also have the board's CPLD to find register space
70*4882a593Smuzhiyun  * for.
71*4882a593Smuzhiyun  */
72*4882a593Smuzhiyun 
73*4882a593Smuzhiyun #define BAST_IOADDR(x)			(S3C2410_ADDR((x) + 0x01300000))
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun /* we put the CPLD registers next, to get them out of the way */
76*4882a593Smuzhiyun 
77*4882a593Smuzhiyun #define BAST_VA_CTRL1			BAST_IOADDR(0x00000000)
78*4882a593Smuzhiyun #define BAST_PA_CTRL1			(S3C2410_CS5 | 0x7800000)
79*4882a593Smuzhiyun 
80*4882a593Smuzhiyun #define BAST_VA_CTRL2			BAST_IOADDR(0x00100000)
81*4882a593Smuzhiyun #define BAST_PA_CTRL2			(S3C2410_CS1 | 0x6000000)
82*4882a593Smuzhiyun 
83*4882a593Smuzhiyun #define BAST_VA_CTRL3			BAST_IOADDR(0x00200000)
84*4882a593Smuzhiyun #define BAST_PA_CTRL3			(S3C2410_CS1 | 0x6800000)
85*4882a593Smuzhiyun 
86*4882a593Smuzhiyun #define BAST_VA_CTRL4			BAST_IOADDR(0x00300000)
87*4882a593Smuzhiyun #define BAST_PA_CTRL4			(S3C2410_CS1 | 0x7000000)
88*4882a593Smuzhiyun 
89*4882a593Smuzhiyun /* next, we have the PC104 ISA interrupt registers */
90*4882a593Smuzhiyun 
91*4882a593Smuzhiyun #define BAST_PA_PC104_IRQREQ		(S3C2410_CS5 | 0x6000000)
92*4882a593Smuzhiyun #define BAST_VA_PC104_IRQREQ		BAST_IOADDR(0x00400000)
93*4882a593Smuzhiyun 
94*4882a593Smuzhiyun #define BAST_PA_PC104_IRQRAW		(S3C2410_CS5 | 0x6800000)
95*4882a593Smuzhiyun #define BAST_VA_PC104_IRQRAW		BAST_IOADDR(0x00500000)
96*4882a593Smuzhiyun 
97*4882a593Smuzhiyun #define BAST_PA_PC104_IRQMASK		(S3C2410_CS5 | 0x7000000)
98*4882a593Smuzhiyun #define BAST_VA_PC104_IRQMASK		BAST_IOADDR(0x00600000)
99*4882a593Smuzhiyun 
100*4882a593Smuzhiyun #define BAST_PA_LCD_RCMD1		(0x8800000)
101*4882a593Smuzhiyun #define BAST_VA_LCD_RCMD1		BAST_IOADDR(0x00700000)
102*4882a593Smuzhiyun 
103*4882a593Smuzhiyun #define BAST_PA_LCD_WCMD1		(0x8000000)
104*4882a593Smuzhiyun #define BAST_VA_LCD_WCMD1		BAST_IOADDR(0x00800000)
105*4882a593Smuzhiyun 
106*4882a593Smuzhiyun #define BAST_PA_LCD_RDATA1		(0x9800000)
107*4882a593Smuzhiyun #define BAST_VA_LCD_RDATA1		BAST_IOADDR(0x00900000)
108*4882a593Smuzhiyun 
109*4882a593Smuzhiyun #define BAST_PA_LCD_WDATA1		(0x9000000)
110*4882a593Smuzhiyun #define BAST_VA_LCD_WDATA1		BAST_IOADDR(0x00A00000)
111*4882a593Smuzhiyun 
112*4882a593Smuzhiyun #define BAST_PA_LCD_RCMD2		(0xA800000)
113*4882a593Smuzhiyun #define BAST_VA_LCD_RCMD2		BAST_IOADDR(0x00B00000)
114*4882a593Smuzhiyun 
115*4882a593Smuzhiyun #define BAST_PA_LCD_WCMD2		(0xA000000)
116*4882a593Smuzhiyun #define BAST_VA_LCD_WCMD2		BAST_IOADDR(0x00C00000)
117*4882a593Smuzhiyun 
118*4882a593Smuzhiyun #define BAST_PA_LCD_RDATA2		(0xB800000)
119*4882a593Smuzhiyun #define BAST_VA_LCD_RDATA2		BAST_IOADDR(0x00D00000)
120*4882a593Smuzhiyun 
121*4882a593Smuzhiyun #define BAST_PA_LCD_WDATA2		(0xB000000)
122*4882a593Smuzhiyun #define BAST_VA_LCD_WDATA2		BAST_IOADDR(0x00E00000)
123*4882a593Smuzhiyun 
124*4882a593Smuzhiyun 
125*4882a593Smuzhiyun /*
126*4882a593Smuzhiyun  * 0xE0000000 contains the IO space that is split by speed and
127*4882a593Smuzhiyun  * whether the access is for 8 or 16bit IO... this ensures that
128*4882a593Smuzhiyun  * the correct access is made
129*4882a593Smuzhiyun  *
130*4882a593Smuzhiyun  * 0x10000000 of space, partitioned as so:
131*4882a593Smuzhiyun  *
132*4882a593Smuzhiyun  * 0x00000000 to 0x04000000  8bit,  slow
133*4882a593Smuzhiyun  * 0x04000000 to 0x08000000  16bit, slow
134*4882a593Smuzhiyun  * 0x08000000 to 0x0C000000  16bit, net
135*4882a593Smuzhiyun  * 0x0C000000 to 0x10000000  16bit, fast
136*4882a593Smuzhiyun  *
137*4882a593Smuzhiyun  * each of these spaces has the following in:
138*4882a593Smuzhiyun  *
139*4882a593Smuzhiyun  * 0x00000000 to 0x01000000 16MB ISA IO space
140*4882a593Smuzhiyun  * 0x01000000 to 0x02000000 16MB ISA memory space
141*4882a593Smuzhiyun  * 0x02000000 to 0x02100000 1MB  IDE primary channel
142*4882a593Smuzhiyun  * 0x02100000 to 0x02200000 1MB  IDE primary channel aux
143*4882a593Smuzhiyun  * 0x02200000 to 0x02400000 1MB  IDE secondary channel
144*4882a593Smuzhiyun  * 0x02300000 to 0x02400000 1MB  IDE secondary channel aux
145*4882a593Smuzhiyun  * 0x02400000 to 0x02500000 1MB  ASIX ethernet controller
146*4882a593Smuzhiyun  * 0x02500000 to 0x02600000 1MB  Davicom DM9000 ethernet controller
147*4882a593Smuzhiyun  * 0x02600000 to 0x02700000 1MB  PC SuperIO controller
148*4882a593Smuzhiyun  *
149*4882a593Smuzhiyun  * the phyiscal layout of the zones are:
150*4882a593Smuzhiyun  *  nGCS2 - 8bit, slow
151*4882a593Smuzhiyun  *  nGCS3 - 16bit, slow
152*4882a593Smuzhiyun  *  nGCS4 - 16bit, net
153*4882a593Smuzhiyun  *  nGCS5 - 16bit, fast
154*4882a593Smuzhiyun  */
155*4882a593Smuzhiyun 
156*4882a593Smuzhiyun #define BAST_VA_MULTISPACE		(0xE0000000)
157*4882a593Smuzhiyun 
158*4882a593Smuzhiyun #define BAST_VA_ISAIO			(BAST_VA_MULTISPACE + 0x00000000)
159*4882a593Smuzhiyun #define BAST_VA_ISAMEM			(BAST_VA_MULTISPACE + 0x01000000)
160*4882a593Smuzhiyun #define BAST_VA_IDEPRI			(BAST_VA_MULTISPACE + 0x02000000)
161*4882a593Smuzhiyun #define BAST_VA_IDEPRIAUX		(BAST_VA_MULTISPACE + 0x02100000)
162*4882a593Smuzhiyun #define BAST_VA_IDESEC			(BAST_VA_MULTISPACE + 0x02200000)
163*4882a593Smuzhiyun #define BAST_VA_IDESECAUX		(BAST_VA_MULTISPACE + 0x02300000)
164*4882a593Smuzhiyun #define BAST_VA_ASIXNET			(BAST_VA_MULTISPACE + 0x02400000)
165*4882a593Smuzhiyun #define BAST_VA_DM9000			(BAST_VA_MULTISPACE + 0x02500000)
166*4882a593Smuzhiyun #define BAST_VA_SUPERIO			(BAST_VA_MULTISPACE + 0x02600000)
167*4882a593Smuzhiyun 
168*4882a593Smuzhiyun #define BAST_VAM_CS2			(0x00000000)
169*4882a593Smuzhiyun #define BAST_VAM_CS3			(0x04000000)
170*4882a593Smuzhiyun #define BAST_VAM_CS4			(0x08000000)
171*4882a593Smuzhiyun #define BAST_VAM_CS5			(0x0C000000)
172*4882a593Smuzhiyun 
173*4882a593Smuzhiyun /* physical offset addresses for the peripherals */
174*4882a593Smuzhiyun 
175*4882a593Smuzhiyun #define BAST_PA_ISAIO			(0x00000000)
176*4882a593Smuzhiyun #define BAST_PA_ASIXNET			(0x01000000)
177*4882a593Smuzhiyun #define BAST_PA_SUPERIO			(0x01800000)
178*4882a593Smuzhiyun #define BAST_PA_IDEPRI			(0x02000000)
179*4882a593Smuzhiyun #define BAST_PA_IDEPRIAUX		(0x02800000)
180*4882a593Smuzhiyun #define BAST_PA_IDESEC			(0x03000000)
181*4882a593Smuzhiyun #define BAST_PA_IDESECAUX		(0x03800000)
182*4882a593Smuzhiyun #define BAST_PA_ISAMEM			(0x04000000)
183*4882a593Smuzhiyun #define BAST_PA_DM9000			(0x05000000)
184*4882a593Smuzhiyun 
185*4882a593Smuzhiyun /* some configurations for the peripherals */
186*4882a593Smuzhiyun 
187*4882a593Smuzhiyun #define BAST_PCSIO			(BAST_VA_SUPERIO + BAST_VAM_CS2)
188*4882a593Smuzhiyun 
189*4882a593Smuzhiyun #define BAST_ASIXNET_CS			BAST_VAM_CS5
190*4882a593Smuzhiyun #define BAST_DM9000_CS			BAST_VAM_CS4
191*4882a593Smuzhiyun 
192*4882a593Smuzhiyun #define BAST_IDE_CS	S3C2410_CS5
193*4882a593Smuzhiyun 
194*4882a593Smuzhiyun #endif /* __MACH_S3C24XX_BAST_H */
195