s3c24x0reg.h revision 1.6 1 1.6 bsh /* $NetBSD: s3c24x0reg.h,v 1.6 2004/02/12 03:47:29 bsh Exp $ */
2 1.1 bsh
3 1.1 bsh /*
4 1.1 bsh * Copyright (c) 2003 Genetec corporation All rights reserved.
5 1.1 bsh * Written by Hiroyuki Bessho for Genetec corporation.
6 1.1 bsh *
7 1.1 bsh * Redistribution and use in source and binary forms, with or without
8 1.1 bsh * modification, are permitted provided that the following conditions
9 1.1 bsh * are met:
10 1.1 bsh * 1. Redistributions of source code must retain the above copyright
11 1.1 bsh * notice, this list of conditions and the following disclaimer.
12 1.1 bsh * 2. Redistributions in binary form must reproduce the above copyright
13 1.1 bsh * notice, this list of conditions and the following disclaimer in the
14 1.1 bsh * documentation and/or other materials provided with the distribution.
15 1.1 bsh * 3. The name of Genetec corporation may not be used to endorse
16 1.1 bsh * or promote products derived from this software without specific prior
17 1.1 bsh * written permission.
18 1.1 bsh *
19 1.1 bsh * THIS SOFTWARE IS PROVIDED BY GENETEC CORP. ``AS IS'' AND
20 1.1 bsh * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21 1.1 bsh * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 1.1 bsh * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENETEC CORP.
23 1.1 bsh * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 1.1 bsh * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 1.1 bsh * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 1.1 bsh * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 1.1 bsh * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 1.1 bsh * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 1.1 bsh * POSSIBILITY OF SUCH DAMAGE.
30 1.1 bsh */
31 1.1 bsh
32 1.1 bsh
33 1.1 bsh /*
34 1.1 bsh * Samsung S3C2410X/2400 processor is ARM920T based integrated CPU
35 1.1 bsh *
36 1.1 bsh * Reference:
37 1.1 bsh * S3C2410X User's Manual
38 1.1 bsh * S3C2400 User's Manual
39 1.1 bsh */
40 1.1 bsh #ifndef _ARM_S3C2XX0_S3C24X0REG_H_
41 1.6 bsh #define _ARM_S3C2XX0_S3C24X0REG_H_
42 1.1 bsh
43 1.1 bsh /* Memory controller */
44 1.1 bsh #define MEMCTL_BWSCON 0x00 /* Bus width and wait status */
45 1.1 bsh #define BWSCON_DW0_SHIFT 1 /* bank0 is odd */
46 1.6 bsh #define BWSCON_BANK_SHIFT(n) (4*(n)) /* for bank 1..7 */
47 1.1 bsh #define BWSCON_DW_MASK 0x03
48 1.1 bsh #define BWSCON_DW_8 0
49 1.6 bsh #define BWSCON_DW_16 1
50 1.1 bsh #define BWSCON_DW_32 2
51 1.1 bsh #define BWSCON_WS 0x04 /* WAIT enable for the bank */
52 1.1 bsh #define BWSCON_ST 0x08 /* SRAM use UB/LB for the bank */
53 1.1 bsh
54 1.1 bsh #define MEMCTL_BANKCON0 0x04 /* Boot ROM control */
55 1.3 bsh #define MEMCTL_BANKCON(n) (0x04+4*(n)) /* BANKn control */
56 1.1 bsh #define BANKCON_MT_SHIFT 15
57 1.1 bsh #define BANKCON_MT_ROM (0<<BANKCON_MT_SHIFT)
58 1.1 bsh #define BANKCON_MT_DRAM (3<<BANKCON_MT_SHIFT)
59 1.1 bsh #define BANKCON_TACS_SHIFT 13 /* address set-up time to nGCS */
60 1.1 bsh #define BANKCON_TCOS_SHIFT 11 /* CS set-up to nOE */
61 1.1 bsh #define BANKCON_TACC_SHIFT 8 /* CS set-up to nOE */
62 1.1 bsh #define BANKCON_TOCH_SHIFT 6 /* CS hold time from OE */
63 1.1 bsh #define BANKCON_TCAH_SHIFT 4 /* address hold time from OE */
64 1.1 bsh #define BANKCON_TACP_SHIFT 2 /* page mode access cycle */
65 1.1 bsh #define BANKCON_TACP_2 (0<<BANKCON_TACP_SHIFT)
66 1.1 bsh #define BANKCON_TACP_3 (1<<BANKCON_TACP_SHIFT)
67 1.1 bsh #define BANKCON_TACP_4 (2<<BANKCON_TACP_SHIFT)
68 1.1 bsh #define BANKCON_TACP_6 (3<<BANKCON_TACP_SHIFT)
69 1.1 bsh #define BANKCON_PMC_4 (1<<0)
70 1.1 bsh #define BANKCON_PMC_8 (2<<0)
71 1.1 bsh #define BANKCON_PMC_16 (3<<0)
72 1.5 mycroft #define BANKCON_TRCD_SHIFT 2 /* RAS to CAS delay */
73 1.5 mycroft #define BANKCON_TRCD_2 (0<<2)
74 1.1 bsh #define BANKCON_TRCD_3 (1<<2)
75 1.1 bsh #define BANKCON_TRCD_4 (2<<2)
76 1.1 bsh #define BANKCON_SCAN_8 (0<<0) /* Column address number */
77 1.1 bsh #define BANKCON_SCAN_9 (1<<0)
78 1.1 bsh #define BANKCON_SCAN_10 (2<<0)
79 1.1 bsh #define MEMCTL_REFRESH 0x24 /* DRAM?SDRAM Refresh */
80 1.1 bsh #define REFRESH_REFEN (1<<23)
81 1.1 bsh #define REFRESH_TREFMD (1<<22) /* 1=self refresh */
82 1.1 bsh #define REFRESH_TRP_2 (0<<20)
83 1.1 bsh #define REFRESH_TRP_3 (1<<20)
84 1.1 bsh #define REFRESH_TRP_4 (2<<20)
85 1.1 bsh #define REFRESH_TRC_4 (0<<18)
86 1.1 bsh #define REFRESH_TRC_5 (1<<18)
87 1.1 bsh #define REFRESH_TRC_6 (2<<18)
88 1.1 bsh #define REFRESH_TRC_7 (3<<18)
89 1.1 bsh #define REFRESH_COUNTER_MASK 0x3ff
90 1.1 bsh #define MEMCTL_BANKSIZE 0x28 /* Flexible Bank size */
91 1.1 bsh #define MEMCTL_MRSRB6 0x2c /* SDRAM Mode register */
92 1.1 bsh #define MEMCTL_MRSRB7 0x30
93 1.1 bsh #define MRSR_CL_SHIFT 4 /* CAS Latency */
94 1.1 bsh
95 1.6 bsh #define S3C24X0_MEMCTL_SIZE 0x34
96 1.3 bsh
97 1.1 bsh /* USB Host controller */
98 1.3 bsh #define S3C24X0_USBHC_SIZE 0x5c
99 1.1 bsh
100 1.1 bsh /* Interrupt controller */
101 1.1 bsh #define INTCTL_PRIORITY 0x0c /* IRQ Priority control */
102 1.6 bsh #define INTCTL_INTPND 0x10 /* Interrupt request status */
103 1.6 bsh #define INTCTL_INTOFFSET 0x14 /* Interrupt request source */
104 1.1 bsh
105 1.1 bsh /* Interrupt source */
106 1.1 bsh #define S3C24X0_INT_ADCTC 31 /* ADC (and TC for 2410 */
107 1.6 bsh #define S3C24X0_INT_RTC 30 /* RTC alarm */
108 1.1 bsh #define S3C2400_INT_UTXD1 29 /* UART1 Tx INT (2400 only) */
109 1.1 bsh #define S3C2410_INT_SPI1 29 /* SPI 1 (2410 only) */
110 1.1 bsh #define S3C2400_INT_UTXD0 28 /* UART0 Tx INT (2400 only) */
111 1.1 bsh #define S3C2410_INT_UART0 28 /* UART0 (2410 only) */
112 1.6 bsh #define S3C24X0_INT_IIC 27
113 1.6 bsh #define S3C24X0_INT_USBH 26 /* USB Host */
114 1.6 bsh #define S3C24X0_INT_USBD 25 /* USB Device */
115 1.6 bsh #define S3C2400_INT_URXD1 24 /* UART1 Rx INT (2400 only) */
116 1.6 bsh #define S3C2400_INT_URXD0 23 /* UART0 Rx INT (2400 only) */
117 1.6 bsh #define S3C2410_INT_UART1 23 /* UART0 (2410 only) */
118 1.6 bsh #define S3C24X0_INT_SPI0 22 /* SPI 0 */
119 1.6 bsh #define S3C2400_INT_MMC 21
120 1.6 bsh #define S3C2410_INT_SDI 21
121 1.6 bsh #define S3C24X0_INT_DMA3 20
122 1.6 bsh #define S3C24X0_INT_DMA2 19
123 1.6 bsh #define S3C24X0_INT_DMA1 18
124 1.6 bsh #define S3C24X0_INT_DMA0 17
125 1.6 bsh #define S3C2410_INT_LCD 16
126 1.1 bsh
127 1.1 bsh #define S3C2400_INT_UERR 15 /* UART 0/1 Error int (2400) */
128 1.1 bsh #define S3C2410_INT_UART2 15 /* UART2 int (2410) */
129 1.6 bsh #define S3C24X0_INT_TIMER4 14
130 1.6 bsh #define S3C24X0_INT_TIMER3 13
131 1.6 bsh #define S3C24X0_INT_TIMER2 12
132 1.6 bsh #define S3C24X0_INT_TIMER1 11
133 1.6 bsh #define S3C24X0_INT_TIMER0 10
134 1.6 bsh #define S3C24X0_INT_TIMER(n) (10+(n)) /* timer interrupt [4:0] */
135 1.6 bsh #define S3C24X0_INT_WDT 9 /* Watch dog timer */
136 1.1 bsh #define S3C24X0_INT_TICK 8
137 1.1 bsh #define S3C2410_INT_BFLT 7 /* Battery fault */
138 1.6 bsh #define S3C2410_INT_8_23 5 /* Ext int 8..23 */
139 1.6 bsh #define S3C2410_INT_4_7 4 /* Ext int 4..7 */
140 1.6 bsh #define S3C24X0_INT_EXT(n) (n) /* External interrupt [7:0] for 2400,
141 1.1 bsh * [3:0] for 2410 */
142 1.1 bsh /* DMA controller */
143 1.1 bsh /* XXX */
144 1.1 bsh
145 1.1 bsh /* Clock & power manager */
146 1.6 bsh #define CLKMAN_LOCKTIME 0x00 /* PLL lock time */
147 1.1 bsh #define CLKMAN_MPLLCON 0x04 /* MPLL control */
148 1.1 bsh #define CLKMAN_UPLLCON 0x08 /* UPLL control */
149 1.6 bsh #define PLLCON_MDIV_SHIFT 12
150 1.6 bsh #define PLLCON_MDIV_MASK (0xff<<PLLCON_MDIV_SHIFT)
151 1.6 bsh #define PLLCON_PDIV_SHIFT 4
152 1.6 bsh #define PLLCON_PDIV_MASK (0x3f<<PLLCON_PDIV_SHIFT)
153 1.6 bsh #define PLLCON_SDIV_SHIFT 0
154 1.6 bsh #define PLLCON_SDIV_MASK (0x03<<PLLCON_SDIV_SHIFT)
155 1.6 bsh #define CLKMAN_CLKCON 0x0c
156 1.1 bsh
157 1.6 bsh #define CLKMAN_CLKSLOW 0x10 /* slow clock controll */
158 1.1 bsh #define CLKSLOW_UCLK (1<<7) /* 1=UPLL off */
159 1.1 bsh #define CLKSLOW_MPLL (1<<5) /* 1=PLL off */
160 1.6 bsh #define CLKSLOW_SLOW (1<<4) /* 1: Enable SLOW mode */
161 1.6 bsh #define CLKSLOW_VAL_MASK 0x0f /* divider value for slow clock */
162 1.1 bsh
163 1.6 bsh #define CLKMAN_CLKDIVN 0x14 /* Software reset control */
164 1.1 bsh #define CLKDIVN_HDIVN (1<<1)
165 1.1 bsh #define CLKDIVN_PDIVN (1<<0)
166 1.1 bsh
167 1.6 bsh #define S3C24X0_CLKMAN_SIZE 0x18
168 1.1 bsh
169 1.1 bsh /* LCD controller */
170 1.1 bsh /* XXX */
171 1.3 bsh #define S3C24X0_LCDC_SIZE 0x64
172 1.1 bsh
173 1.1 bsh /* Timer */
174 1.1 bsh #define TIMER_TCFG0 0x00 /* Timer configuration */
175 1.1 bsh #define TIMER_TCFG1 0x04
176 1.1 bsh #define TCFG1_MUX_SHIFT(n) (4*(n))
177 1.1 bsh #define TCFG1_MUX_MASK(n) (0x0f << TCFG1_MUX_SHIFT(n))
178 1.1 bsh #define TCFG1_MUX_DIV2 0
179 1.1 bsh #define TCFG1_MUX_DIV4 1
180 1.1 bsh #define TCFG1_MUX_DIV8 2
181 1.1 bsh #define TCFG1_MUX_DIV16 3
182 1.1 bsh #define TCFG1_MUX_EXT 4
183 1.1 bsh #define TIMER_TCON 0x08 /* control */
184 1.1 bsh #define TCON_SHIFT(n) (4 * ((n)==0 ? 0 : (n)+1))
185 1.1 bsh #define TCON_START(n) (1 << TCON_SHIFT(n))
186 1.6 bsh #define TCON_MANUALUPDATE(n) (1 << (TCON_SHIFT(n) + 1))
187 1.6 bsh #define TCON_INVERTER(n) (1 << (TCON_SHIFT(n) + 2))
188 1.6 bsh #define __TCON_AUTORELOAD(n) (1 << (TCON_SHIFT(n) + 3)) /* n=0..3 */
189 1.2 bsh #define TCON_AUTORELOAD4 (1<<22) /* stupid hardware design */
190 1.2 bsh #define TCON_AUTORELOAD(n) ((n)==4 ? TCON_AUTORELOAD4 : __TCON_AUTORELOAD(n))
191 1.1 bsh #define TCON_MASK(n) (0x0f << TCON_SHIFT(n))
192 1.4 bsh #define TIMER_TCNTB(n) (0x0c+0x0c*(n)) /* count buffer */
193 1.4 bsh #define TIMER_TCMPB(n) (0x10+0x0c*(n)) /* compare buffer */
194 1.4 bsh #define __TIMER_TCNTO(n) (0x14+0x0c*(n)) /* count observation */
195 1.4 bsh #define TIMER_TCNTO4 0x40
196 1.4 bsh #define TIMER_TCNTO(n) ((n)==4 ? TIMER_TCNTO4 : __TIMER_TCNTO(n))
197 1.2 bsh
198 1.3 bsh #define S3C24X0_TIMER_SIZE 0x44
199 1.3 bsh
200 1.2 bsh /* UART */
201 1.2 bsh /* diffs to s3c2800 */
202 1.6 bsh #define UMCON_AFC (1<<4) /* auto flow control */
203 1.6 bsh #define UMSTAT_DCTS (1<<2) /* CTS change */
204 1.2 bsh #define ULCON_IR (1<<6)
205 1.2 bsh #define ULCON_PARITY_SHIFT 3
206 1.1 bsh
207 1.3 bsh #define S3C24X0_UART_SIZE 0x2c
208 1.3 bsh
209 1.1 bsh /* USB device */
210 1.1 bsh /* XXX */
211 1.1 bsh
212 1.1 bsh /* Watch dog timer */
213 1.1 bsh #define WDT_WTCON 0x00 /* WDT mode */
214 1.6 bsh #define WTCON_PRESCALE_SHIFT 8
215 1.1 bsh #define WTCON_PRESCALE (0xff<<WTCON_PRESCALE_SHIFT)
216 1.1 bsh #define WTCON_ENABLE (1<<5)
217 1.6 bsh #define WTCON_CLKSEL (3<<3)
218 1.1 bsh #define WTCON_CLKSEL_16 (0<<3)
219 1.1 bsh #define WTCON_CLKSEL_32 (1<<3)
220 1.1 bsh #define WTCON_CLKSEL_64 (2<<3)
221 1.1 bsh #define WTCON_CLKSEL_128 (3<<3)
222 1.6 bsh #define WTCON_ENINT (1<<2)
223 1.6 bsh #define WTCON_ENRST (1<<0)
224 1.1 bsh
225 1.6 bsh #define WTCON_WDTSTOP 0
226 1.1 bsh
227 1.1 bsh #define WDT_WTDAT 0x04 /* timer data */
228 1.1 bsh #define WDT_WTCNT 0x08 /* timer count */
229 1.1 bsh
230 1.3 bsh #define S3C24X0_WDT_SIZE 0x0c
231 1.3 bsh
232 1.1 bsh /* IIC */ /* XXX */
233 1.3 bsh #define S3C24X0_IIC_SIZE 0x0c
234 1.3 bsh
235 1.1 bsh
236 1.1 bsh /* IIS */ /* XXX */
237 1.3 bsh #define S3C24X0_IIS_SIZE 0x14
238 1.1 bsh
239 1.1 bsh /* RTC */ /* XXX */
240 1.1 bsh
241 1.1 bsh /* ADC */ /* XXX */
242 1.1 bsh
243 1.1 bsh /* SPI */ /* XXX */
244 1.3 bsh #define S3C24X0_SPI_SIZE 0x18
245 1.1 bsh
246 1.1 bsh
247 1.1 bsh
248 1.1 bsh #endif /* _ARM_S3C2XX0_S3C24X0REG_H_ */
249