1
2
3
4#ifndef __JZ4740_H__
5#define __JZ4740_H__
6
7#include <asm/addrspace.h>
8#include <asm/cacheops.h>
9
10
11
12#define JZ4740_NORBOOT_8BIT 0x00000000
13#define JZ4740_NORBOOT_16BIT 0x10101010
14#define JZ4740_NORBOOT_32BIT 0x20202020
15
16#define JZ4740_NANDBOOT_B8R3 0xffffffff
17#define JZ4740_NANDBOOT_B8R2 0xf0f0f0f0
18#define JZ4740_NANDBOOT_B16R3 0x0f0f0f0f
19#define JZ4740_NANDBOOT_B16R2 0x00000000
20
21
22#define JZ4740_IRQ_I2C 1
23#define JZ4740_IRQ_UHC 3
24#define JZ4740_IRQ_UART0 9
25#define JZ4740_IRQ_SADC 12
26#define JZ4740_IRQ_MSC 14
27#define JZ4740_IRQ_RTC 15
28#define JZ4740_IRQ_SSI 16
29#define JZ4740_IRQ_CIM 17
30#define JZ4740_IRQ_AIC 18
31#define JZ4740_IRQ_ETH 19
32#define JZ4740_IRQ_DMAC 20
33#define JZ4740_IRQ_TCU2 21
34#define JZ4740_IRQ_TCU1 22
35#define JZ4740_IRQ_TCU0 23
36#define JZ4740_IRQ_UDC 24
37#define JZ4740_IRQ_GPIO3 25
38#define JZ4740_IRQ_GPIO2 26
39#define JZ4740_IRQ_GPIO1 27
40#define JZ4740_IRQ_GPIO0 28
41#define JZ4740_IRQ_IPU 29
42#define JZ4740_IRQ_LCD 30
43
44#define JZ4740_IRQ_DMA_0 32
45#define JZ4740_IRQ_GPIO_0 48
46
47
48#define JZ4740_CPM_BASE 0x10000000
49#define JZ4740_INTC_BASE 0x10001000
50#define JZ4740_TCU_BASE 0x10002000
51#define JZ4740_WDT_BASE 0x10002000
52#define JZ4740_RTC_BASE 0x10003000
53#define JZ4740_GPIO_BASE 0x10010000
54#define JZ4740_AIC_BASE 0x10020000
55#define JZ4740_ICDC_BASE 0x10020000
56#define JZ4740_MSC_BASE 0x10021000
57#define JZ4740_UART0_BASE 0x10030000
58#define JZ4740_I2C_BASE 0x10042000
59#define JZ4740_SSI_BASE 0x10043000
60#define JZ4740_SADC_BASE 0x10070000
61#define JZ4740_EMC_BASE 0x13010000
62#define JZ4740_DMAC_BASE 0x13020000
63#define JZ4740_UHC_BASE 0x13030000
64#define JZ4740_UDC_BASE 0x13040000
65#define JZ4740_LCD_BASE 0x13050000
66#define JZ4740_SLCD_BASE 0x13050000
67#define JZ4740_CIM_BASE 0x13060000
68#define JZ4740_ETH_BASE 0x13100000
69
70
71#define JZ4740_EMC_SDMR0 (JZ4740_EMC_BASE + 0xa000)
72
73
74
75#define GPIO_PXPIN(n) \
76 (JZ4740_GPIO_BASE + (0x00 + (n)*0x100))
77#define GPIO_PXDAT(n) \
78 (JZ4740_GPIO_BASE + (0x10 + (n)*0x100))
79#define GPIO_PXDATS(n) \
80 (JZ4740_GPIO_BASE + (0x14 + (n)*0x100))
81#define GPIO_PXDATC(n) \
82 (JZ4740_GPIO_BASE + (0x18 + (n)*0x100))
83#define GPIO_PXIM(n) \
84 (JZ4740_GPIO_BASE + (0x20 + (n)*0x100))
85#define GPIO_PXIMS(n) \
86 (JZ4740_GPIO_BASE + (0x24 + (n)*0x100))
87#define GPIO_PXIMC(n) \
88 (JZ4740_GPIO_BASE + (0x28 + (n)*0x100))
89#define GPIO_PXPE(n) \
90 (JZ4740_GPIO_BASE + (0x30 + (n)*0x100))
91#define GPIO_PXPES(n) \
92 (JZ4740_GPIO_BASE + (0x34 + (n)*0x100))
93#define GPIO_PXPEC(n) \
94 (JZ4740_GPIO_BASE + (0x38 + (n)*0x100))
95#define GPIO_PXFUN(n) \
96 (JZ4740_GPIO_BASE + (0x40 + (n)*0x100))
97#define GPIO_PXFUNS(n) \
98 (JZ4740_GPIO_BASE + (0x44 + (n)*0x100))
99#define GPIO_PXFUNC(n) \
100 (JZ4740_GPIO_BASE + (0x48 + (n)*0x100))
101#define GPIO_PXSEL(n) \
102 (JZ4740_GPIO_BASE + (0x50 + (n)*0x100))
103#define GPIO_PXSELS(n) \
104 (JZ4740_GPIO_BASE + (0x54 + (n)*0x100))
105#define GPIO_PXSELC(n) \
106 (JZ4740_GPIO_BASE + (0x58 + (n)*0x100))
107#define GPIO_PXDIR(n) \
108 (JZ4740_GPIO_BASE + (0x60 + (n)*0x100))
109#define GPIO_PXDIRS(n) \
110 (JZ4740_GPIO_BASE + (0x64 + (n)*0x100))
111#define GPIO_PXDIRC(n) \
112 (JZ4740_GPIO_BASE + (0x68 + (n)*0x100))
113#define GPIO_PXTRG(n) \
114 (JZ4740_GPIO_BASE + (0x70 + (n)*0x100))
115#define GPIO_PXTRGS(n) \
116 (JZ4740_GPIO_BASE + (0x74 + (n)*0x100))
117#define GPIO_PXTRGC(n) \
118 (JZ4740_GPIO_BASE + (0x78 + (n)*0x100))
119
120
121#define EMC_SMCR_STRV_BIT 24
122#define EMC_SMCR_STRV_MASK (0x0f << EMC_SMCR_STRV_BIT)
123#define EMC_SMCR_TAW_BIT 20
124#define EMC_SMCR_TAW_MASK (0x0f << EMC_SMCR_TAW_BIT)
125#define EMC_SMCR_TBP_BIT 16
126#define EMC_SMCR_TBP_MASK (0x0f << EMC_SMCR_TBP_BIT)
127#define EMC_SMCR_TAH_BIT 12
128#define EMC_SMCR_TAH_MASK (0x07 << EMC_SMCR_TAH_BIT)
129#define EMC_SMCR_TAS_BIT 8
130#define EMC_SMCR_TAS_MASK (0x07 << EMC_SMCR_TAS_BIT)
131#define EMC_SMCR_BW_BIT 6
132#define EMC_SMCR_BW_MASK (0x03 << EMC_SMCR_BW_BIT)
133 #define EMC_SMCR_BW_8BIT (0 << EMC_SMCR_BW_BIT)
134 #define EMC_SMCR_BW_16BIT (1 << EMC_SMCR_BW_BIT)
135 #define EMC_SMCR_BW_32BIT (2 << EMC_SMCR_BW_BIT)
136#define EMC_SMCR_BCM (1 << 3)
137#define EMC_SMCR_BL_BIT 1
138#define EMC_SMCR_BL_MASK (0x03 << EMC_SMCR_BL_BIT)
139 #define EMC_SMCR_BL_4 (0 << EMC_SMCR_BL_BIT)
140 #define EMC_SMCR_BL_8 (1 << EMC_SMCR_BL_BIT)
141 #define EMC_SMCR_BL_16 (2 << EMC_SMCR_BL_BIT)
142 #define EMC_SMCR_BL_32 (3 << EMC_SMCR_BL_BIT)
143#define EMC_SMCR_SMT (1 << 0)
144
145
146#define EMC_SACR_BASE_BIT 8
147#define EMC_SACR_BASE_MASK (0xff << EMC_SACR_BASE_BIT)
148#define EMC_SACR_MASK_BIT 0
149#define EMC_SACR_MASK_MASK (0xff << EMC_SACR_MASK_BIT)
150
151
152#define EMC_NFCSR_NFCE4 (1 << 7)
153#define EMC_NFCSR_NFE4 (1 << 6)
154#define EMC_NFCSR_NFCE3 (1 << 5)
155#define EMC_NFCSR_NFE3 (1 << 4)
156#define EMC_NFCSR_NFCE2 (1 << 3)
157#define EMC_NFCSR_NFE2 (1 << 2)
158#define EMC_NFCSR_NFCE1 (1 << 1)
159#define EMC_NFCSR_NFE1 (1 << 0)
160
161
162#define EMC_NFECR_PRDY (1 << 4)
163#define EMC_NFECR_RS_DECODING (0 << 3)
164#define EMC_NFECR_RS_ENCODING (1 << 3)
165#define EMC_NFECR_HAMMING (0 << 2)
166#define EMC_NFECR_RS (1 << 2)
167#define EMC_NFECR_ERST (1 << 1)
168#define EMC_NFECR_ECCE (1 << 0)
169
170
171#define EMC_NFECC_ECC2_BIT 16
172#define EMC_NFECC_ECC2_MASK (0xff << EMC_NFECC_ECC2_BIT)
173#define EMC_NFECC_ECC1_BIT 8
174#define EMC_NFECC_ECC1_MASK (0xff << EMC_NFECC_ECC1_BIT)
175#define EMC_NFECC_ECC0_BIT 0
176#define EMC_NFECC_ECC0_MASK (0xff << EMC_NFECC_ECC0_BIT)
177
178
179#define EMC_NFINTS_ERRCNT_BIT 29
180#define EMC_NFINTS_ERRCNT_MASK (0x7 << EMC_NFINTS_ERRCNT_BIT)
181#define EMC_NFINTS_PADF (1 << 4)
182#define EMC_NFINTS_DECF (1 << 3)
183#define EMC_NFINTS_ENCF (1 << 2)
184#define EMC_NFINTS_UNCOR (1 << 1)
185#define EMC_NFINTS_ERR (1 << 0)
186
187
188#define EMC_NFINTE_PADFE (1 << 4)
189#define EMC_NFINTE_DECFE (1 << 3)
190#define EMC_NFINTE_ENCFE (1 << 2)
191#define EMC_NFINTE_UNCORE (1 << 1)
192#define EMC_NFINTE_ERRE (1 << 0)
193
194
195#define EMC_NFERR_INDEX_BIT 16
196#define EMC_NFERR_INDEX_MASK (0x1ff << EMC_NFERR_INDEX_BIT)
197#define EMC_NFERR_MASK_BIT 0
198#define EMC_NFERR_MASK_MASK (0x1ff << EMC_NFERR_MASK_BIT)
199
200
201#define EMC_DMCR_BW_BIT 31
202#define EMC_DMCR_BW (1 << EMC_DMCR_BW_BIT)
203#define EMC_DMCR_CA_BIT 26
204#define EMC_DMCR_CA_MASK (0x07 << EMC_DMCR_CA_BIT)
205 #define EMC_DMCR_CA_8 (0 << EMC_DMCR_CA_BIT)
206 #define EMC_DMCR_CA_9 (1 << EMC_DMCR_CA_BIT)
207 #define EMC_DMCR_CA_10 (2 << EMC_DMCR_CA_BIT)
208 #define EMC_DMCR_CA_11 (3 << EMC_DMCR_CA_BIT)
209 #define EMC_DMCR_CA_12 (4 << EMC_DMCR_CA_BIT)
210#define EMC_DMCR_RMODE (1 << 25)
211#define EMC_DMCR_RFSH (1 << 24)
212#define EMC_DMCR_MRSET (1 << 23)
213#define EMC_DMCR_RA_BIT 20
214#define EMC_DMCR_RA_MASK (0x03 << EMC_DMCR_RA_BIT)
215 #define EMC_DMCR_RA_11 (0 << EMC_DMCR_RA_BIT)
216 #define EMC_DMCR_RA_12 (1 << EMC_DMCR_RA_BIT)
217 #define EMC_DMCR_RA_13 (2 << EMC_DMCR_RA_BIT)
218#define EMC_DMCR_BA_BIT 19
219#define EMC_DMCR_BA (1 << EMC_DMCR_BA_BIT)
220#define EMC_DMCR_PDM (1 << 18)
221#define EMC_DMCR_EPIN (1 << 17)
222#define EMC_DMCR_TRAS_BIT 13
223#define EMC_DMCR_TRAS_MASK (0x07 << EMC_DMCR_TRAS_BIT)
224#define EMC_DMCR_RCD_BIT 11
225#define EMC_DMCR_RCD_MASK (0x03 << EMC_DMCR_RCD_BIT)
226#define EMC_DMCR_TPC_BIT 8
227#define EMC_DMCR_TPC_MASK (0x07 << EMC_DMCR_TPC_BIT)
228#define EMC_DMCR_TRWL_BIT 5
229#define EMC_DMCR_TRWL_MASK (0x03 << EMC_DMCR_TRWL_BIT)
230#define EMC_DMCR_TRC_BIT 2
231#define EMC_DMCR_TRC_MASK (0x07 << EMC_DMCR_TRC_BIT)
232#define EMC_DMCR_TCL_BIT 0
233#define EMC_DMCR_TCL_MASK (0x03 << EMC_DMCR_TCL_BIT)
234
235
236#define EMC_RTCSR_CMF (1 << 7)
237#define EMC_RTCSR_CKS_BIT 0
238#define EMC_RTCSR_CKS_MASK (0x07 << EMC_RTCSR_CKS_BIT)
239 #define EMC_RTCSR_CKS_DISABLE (0 << EMC_RTCSR_CKS_BIT)
240 #define EMC_RTCSR_CKS_4 (1 << EMC_RTCSR_CKS_BIT)
241 #define EMC_RTCSR_CKS_16 (2 << EMC_RTCSR_CKS_BIT)
242 #define EMC_RTCSR_CKS_64 (3 << EMC_RTCSR_CKS_BIT)
243 #define EMC_RTCSR_CKS_256 (4 << EMC_RTCSR_CKS_BIT)
244 #define EMC_RTCSR_CKS_1024 (5 << EMC_RTCSR_CKS_BIT)
245 #define EMC_RTCSR_CKS_2048 (6 << EMC_RTCSR_CKS_BIT)
246 #define EMC_RTCSR_CKS_4096 (7 << EMC_RTCSR_CKS_BIT)
247
248
249#define EMC_DMAR_BASE_BIT 8
250#define EMC_DMAR_BASE_MASK (0xff << EMC_DMAR_BASE_BIT)
251#define EMC_DMAR_MASK_BIT 0
252#define EMC_DMAR_MASK_MASK (0xff << EMC_DMAR_MASK_BIT)
253
254
255#define EMC_SDMR_BM (1 << 9)
256#define EMC_SDMR_OM_BIT 7
257#define EMC_SDMR_OM_MASK (3 << EMC_SDMR_OM_BIT)
258 #define EMC_SDMR_OM_NORMAL (0 << EMC_SDMR_OM_BIT)
259#define EMC_SDMR_CAS_BIT 4
260#define EMC_SDMR_CAS_MASK (7 << EMC_SDMR_CAS_BIT)
261 #define EMC_SDMR_CAS_1 (1 << EMC_SDMR_CAS_BIT)
262 #define EMC_SDMR_CAS_2 (2 << EMC_SDMR_CAS_BIT)
263 #define EMC_SDMR_CAS_3 (3 << EMC_SDMR_CAS_BIT)
264#define EMC_SDMR_BT_BIT 3
265#define EMC_SDMR_BT_MASK (1 << EMC_SDMR_BT_BIT)
266 #define EMC_SDMR_BT_SEQ (0 << EMC_SDMR_BT_BIT)
267 #define EMC_SDMR_BT_INT (1 << EMC_SDMR_BT_BIT)
268#define EMC_SDMR_BL_BIT 0
269#define EMC_SDMR_BL_MASK (7 << EMC_SDMR_BL_BIT)
270 #define EMC_SDMR_BL_1 (0 << EMC_SDMR_BL_BIT)
271 #define EMC_SDMR_BL_2 (1 << EMC_SDMR_BL_BIT)
272 #define EMC_SDMR_BL_4 (2 << EMC_SDMR_BL_BIT)
273 #define EMC_SDMR_BL_8 (3 << EMC_SDMR_BL_BIT)
274
275#define EMC_SDMR_CAS2_16BIT \
276 (EMC_SDMR_CAS_2 | EMC_SDMR_BT_SEQ | EMC_SDMR_BL_2)
277#define EMC_SDMR_CAS2_32BIT \
278 (EMC_SDMR_CAS_2 | EMC_SDMR_BT_SEQ | EMC_SDMR_BL_4)
279#define EMC_SDMR_CAS3_16BIT \
280 (EMC_SDMR_CAS_3 | EMC_SDMR_BT_SEQ | EMC_SDMR_BL_2)
281#define EMC_SDMR_CAS3_32BIT \
282 (EMC_SDMR_CAS_3 | EMC_SDMR_BT_SEQ | EMC_SDMR_BL_4)
283
284
285#define RTC_RCR_WRDY (1 << 7)
286#define RTC_RCR_HZ (1 << 6)
287#define RTC_RCR_HZIE (1 << 5)
288#define RTC_RCR_AF (1 << 4)
289#define RTC_RCR_AIE (1 << 3)
290#define RTC_RCR_AE (1 << 2)
291#define RTC_RCR_RTCE (1 << 0)
292
293
294#define RTC_RGR_LOCK (1 << 31)
295#define RTC_RGR_ADJC_BIT 16
296#define RTC_RGR_ADJC_MASK (0x3ff << RTC_RGR_ADJC_BIT)
297#define RTC_RGR_NC1HZ_BIT 0
298#define RTC_RGR_NC1HZ_MASK (0xffff << RTC_RGR_NC1HZ_BIT)
299
300
301#define RTC_HCR_PD (1 << 0)
302
303
304#define RTC_HWFCR_BIT 5
305#define RTC_HWFCR_MASK (0x7ff << RTC_HWFCR_BIT)
306
307
308#define RTC_HRCR_BIT 5
309#define RTC_HRCR_MASK (0x7f << RTC_HRCR_BIT)
310
311
312#define RTC_HWCR_EALM (1 << 0)
313
314
315#define RTC_HWRSR_HR (1 << 5)
316#define RTC_HWRSR_PPR (1 << 4)
317#define RTC_HWRSR_PIN (1 << 1)
318#define RTC_HWRSR_ALM (1 << 0)
319
320
321#define CPM_CPCCR_I2CS (1 << 31)
322#define CPM_CPCCR_CLKOEN (1 << 30)
323#define CPM_CPCCR_UCS (1 << 29)
324#define CPM_CPCCR_UDIV_BIT 23
325#define CPM_CPCCR_UDIV_MASK (0x3f << CPM_CPCCR_UDIV_BIT)
326#define CPM_CPCCR_CE (1 << 22)
327#define CPM_CPCCR_PCS (1 << 21)
328#define CPM_CPCCR_LDIV_BIT 16
329#define CPM_CPCCR_LDIV_MASK (0x1f << CPM_CPCCR_LDIV_BIT)
330#define CPM_CPCCR_MDIV_BIT 12
331#define CPM_CPCCR_MDIV_MASK (0x0f << CPM_CPCCR_MDIV_BIT)
332#define CPM_CPCCR_PDIV_BIT 8
333#define CPM_CPCCR_PDIV_MASK (0x0f << CPM_CPCCR_PDIV_BIT)
334#define CPM_CPCCR_HDIV_BIT 4
335#define CPM_CPCCR_HDIV_MASK (0x0f << CPM_CPCCR_HDIV_BIT)
336#define CPM_CPCCR_CDIV_BIT 0
337#define CPM_CPCCR_CDIV_MASK (0x0f << CPM_CPCCR_CDIV_BIT)
338
339
340#define CPM_I2SCDR_I2SDIV_BIT 0
341#define CPM_I2SCDR_I2SDIV_MASK (0x1ff << CPM_I2SCDR_I2SDIV_BIT)
342
343
344#define CPM_LPCDR_PIXDIV_BIT 0
345#define CPM_LPCDR_PIXDIV_MASK (0x1ff << CPM_LPCDR_PIXDIV_BIT)
346
347
348#define CPM_MSCCDR_MSCDIV_BIT 0
349#define CPM_MSCCDR_MSCDIV_MASK (0x1f << CPM_MSCCDR_MSCDIV_BIT)
350
351
352#define CPM_CPPCR_PLLM_BIT 23
353#define CPM_CPPCR_PLLM_MASK (0x1ff << CPM_CPPCR_PLLM_BIT)
354#define CPM_CPPCR_PLLN_BIT 18
355#define CPM_CPPCR_PLLN_MASK (0x1f << CPM_CPPCR_PLLN_BIT)
356#define CPM_CPPCR_PLLOD_BIT 16
357#define CPM_CPPCR_PLLOD_MASK (0x03 << CPM_CPPCR_PLLOD_BIT)
358#define CPM_CPPCR_PLLS (1 << 10)
359#define CPM_CPPCR_PLLBP (1 << 9)
360#define CPM_CPPCR_PLLEN (1 << 8)
361#define CPM_CPPCR_PLLST_BIT 0
362#define CPM_CPPCR_PLLST_MASK (0xff << CPM_CPPCR_PLLST_BIT)
363
364
365#define CPM_LCR_DOZE_DUTY_BIT 3
366#define CPM_LCR_DOZE_DUTY_MASK (0x1f << CPM_LCR_DOZE_DUTY_BIT)
367#define CPM_LCR_DOZE_ON (1 << 2)
368#define CPM_LCR_LPM_BIT 0
369#define CPM_LCR_LPM_MASK (0x3 << CPM_LCR_LPM_BIT)
370 #define CPM_LCR_LPM_IDLE (0x0 << CPM_LCR_LPM_BIT)
371 #define CPM_LCR_LPM_SLEEP (0x1 << CPM_LCR_LPM_BIT)
372
373
374#define CPM_CLKGR_UART1 (1 << 15)
375#define CPM_CLKGR_UHC (1 << 14)
376#define CPM_CLKGR_IPU (1 << 13)
377#define CPM_CLKGR_DMAC (1 << 12)
378#define CPM_CLKGR_UDC (1 << 11)
379#define CPM_CLKGR_LCD (1 << 10)
380#define CPM_CLKGR_CIM (1 << 9)
381#define CPM_CLKGR_SADC (1 << 8)
382#define CPM_CLKGR_MSC (1 << 7)
383#define CPM_CLKGR_AIC1 (1 << 6)
384#define CPM_CLKGR_AIC2 (1 << 5)
385#define CPM_CLKGR_SSI (1 << 4)
386#define CPM_CLKGR_I2C (1 << 3)
387#define CPM_CLKGR_RTC (1 << 2)
388#define CPM_CLKGR_TCU (1 << 1)
389#define CPM_CLKGR_UART0 (1 << 0)
390
391
392#define CPM_SCR_O1ST_BIT 8
393#define CPM_SCR_O1ST_MASK (0xff << CPM_SCR_O1ST_BIT)
394#define CPM_SCR_UDCPHY_ENABLE (1 << 6)
395#define CPM_SCR_USBPHY_DISABLE (1 << 7)
396#define CPM_SCR_OSC_ENABLE (1 << 4)
397
398
399#define CPM_HCR_PD (1 << 0)
400
401
402#define CPM_HWFCR_TIME_BIT 0
403#define CPM_HWFCR_TIME_MASK (0x3ff << CPM_HWFCR_TIME_BIT)
404
405
406#define CPM_HRCR_TIME_BIT 0
407#define CPM_HRCR_TIME_MASK (0x7f << CPM_HRCR_TIME_BIT)
408
409
410#define CPM_HWCR_WLE_LOW (0 << 2)
411#define CPM_HWCR_WLE_HIGH (1 << 2)
412#define CPM_HWCR_PIN_WAKEUP (1 << 1)
413#define CPM_HWCR_RTC_WAKEUP (1 << 0)
414
415
416#define CPM_HWSR_WSR_PIN (1 << 1)
417#define CPM_HWSR_WSR_RTC (1 << 0)
418
419
420#define CPM_RSR_HR (1 << 2)
421#define CPM_RSR_WR (1 << 1)
422#define CPM_RSR_PR (1 << 0)
423
424
425#define TCU_TCSR_PWM_SD (1 << 9)
426#define TCU_TCSR_PWM_INITL_HIGH (1 << 8)
427#define TCU_TCSR_PWM_EN (1 << 7)
428#define TCU_TCSR_PRESCALE_BIT 3
429#define TCU_TCSR_PRESCALE_MASK (0x7 << TCU_TCSR_PRESCALE_BIT)
430#define TCU_TCSR_PRESCALE1 (0x0 << TCU_TCSR_PRESCALE_BIT)
431#define TCU_TCSR_PRESCALE4 (0x1 << TCU_TCSR_PRESCALE_BIT)
432#define TCU_TCSR_PRESCALE16 (0x2 << TCU_TCSR_PRESCALE_BIT)
433#define TCU_TCSR_PRESCALE64 (0x3 << TCU_TCSR_PRESCALE_BIT)
434#define TCU_TCSR_PRESCALE256 (0x4 << TCU_TCSR_PRESCALE_BIT)
435#define TCU_TCSR_PRESCALE1024 (0x5 << TCU_TCSR_PRESCALE_BIT)
436#define TCU_TCSR_EXT_EN (1 << 2)
437#define TCU_TCSR_RTC_EN (1 << 1)
438#define TCU_TCSR_PCK_EN (1 << 0)
439
440#define TCU_TER_TCEN5 (1 << 5)
441#define TCU_TER_TCEN4 (1 << 4)
442#define TCU_TER_TCEN3 (1 << 3)
443#define TCU_TER_TCEN2 (1 << 2)
444#define TCU_TER_TCEN1 (1 << 1)
445#define TCU_TER_TCEN0 (1 << 0)
446
447#define TCU_TESR_TCST5 (1 << 5)
448#define TCU_TESR_TCST4 (1 << 4)
449#define TCU_TESR_TCST3 (1 << 3)
450#define TCU_TESR_TCST2 (1 << 2)
451#define TCU_TESR_TCST1 (1 << 1)
452#define TCU_TESR_TCST0 (1 << 0)
453
454#define TCU_TECR_TCCL5 (1 << 5)
455#define TCU_TECR_TCCL4 (1 << 4)
456#define TCU_TECR_TCCL3 (1 << 3)
457#define TCU_TECR_TCCL2 (1 << 2)
458#define TCU_TECR_TCCL1 (1 << 1)
459#define TCU_TECR_TCCL0 (1 << 0)
460
461#define TCU_TFR_HFLAG5 (1 << 21)
462#define TCU_TFR_HFLAG4 (1 << 20)
463#define TCU_TFR_HFLAG3 (1 << 19)
464#define TCU_TFR_HFLAG2 (1 << 18)
465#define TCU_TFR_HFLAG1 (1 << 17)
466#define TCU_TFR_HFLAG0 (1 << 16)
467#define TCU_TFR_FFLAG5 (1 << 5)
468#define TCU_TFR_FFLAG4 (1 << 4)
469#define TCU_TFR_FFLAG3 (1 << 3)
470#define TCU_TFR_FFLAG2 (1 << 2)
471#define TCU_TFR_FFLAG1 (1 << 1)
472#define TCU_TFR_FFLAG0 (1 << 0)
473
474#define TCU_TFSR_HFLAG5 (1 << 21)
475#define TCU_TFSR_HFLAG4 (1 << 20)
476#define TCU_TFSR_HFLAG3 (1 << 19)
477#define TCU_TFSR_HFLAG2 (1 << 18)
478#define TCU_TFSR_HFLAG1 (1 << 17)
479#define TCU_TFSR_HFLAG0 (1 << 16)
480#define TCU_TFSR_FFLAG5 (1 << 5)
481#define TCU_TFSR_FFLAG4 (1 << 4)
482#define TCU_TFSR_FFLAG3 (1 << 3)
483#define TCU_TFSR_FFLAG2 (1 << 2)
484#define TCU_TFSR_FFLAG1 (1 << 1)
485#define TCU_TFSR_FFLAG0 (1 << 0)
486
487#define TCU_TFCR_HFLAG5 (1 << 21)
488#define TCU_TFCR_HFLAG4 (1 << 20)
489#define TCU_TFCR_HFLAG3 (1 << 19)
490#define TCU_TFCR_HFLAG2 (1 << 18)
491#define TCU_TFCR_HFLAG1 (1 << 17)
492#define TCU_TFCR_HFLAG0 (1 << 16)
493#define TCU_TFCR_FFLAG5 (1 << 5)
494#define TCU_TFCR_FFLAG4 (1 << 4)
495#define TCU_TFCR_FFLAG3 (1 << 3)
496#define TCU_TFCR_FFLAG2 (1 << 2)
497#define TCU_TFCR_FFLAG1 (1 << 1)
498#define TCU_TFCR_FFLAG0 (1 << 0)
499
500#define TCU_TMR_HMASK5 (1 << 21)
501#define TCU_TMR_HMASK4 (1 << 20)
502#define TCU_TMR_HMASK3 (1 << 19)
503#define TCU_TMR_HMASK2 (1 << 18)
504#define TCU_TMR_HMASK1 (1 << 17)
505#define TCU_TMR_HMASK0 (1 << 16)
506#define TCU_TMR_FMASK5 (1 << 5)
507#define TCU_TMR_FMASK4 (1 << 4)
508#define TCU_TMR_FMASK3 (1 << 3)
509#define TCU_TMR_FMASK2 (1 << 2)
510#define TCU_TMR_FMASK1 (1 << 1)
511#define TCU_TMR_FMASK0 (1 << 0)
512
513#define TCU_TMSR_HMST5 (1 << 21)
514#define TCU_TMSR_HMST4 (1 << 20)
515#define TCU_TMSR_HMST3 (1 << 19)
516#define TCU_TMSR_HMST2 (1 << 18)
517#define TCU_TMSR_HMST1 (1 << 17)
518#define TCU_TMSR_HMST0 (1 << 16)
519#define TCU_TMSR_FMST5 (1 << 5)
520#define TCU_TMSR_FMST4 (1 << 4)
521#define TCU_TMSR_FMST3 (1 << 3)
522#define TCU_TMSR_FMST2 (1 << 2)
523#define TCU_TMSR_FMST1 (1 << 1)
524#define TCU_TMSR_FMST0 (1 << 0)
525
526#define TCU_TMCR_HMCL5 (1 << 21)
527#define TCU_TMCR_HMCL4 (1 << 20)
528#define TCU_TMCR_HMCL3 (1 << 19)
529#define TCU_TMCR_HMCL2 (1 << 18)
530#define TCU_TMCR_HMCL1 (1 << 17)
531#define TCU_TMCR_HMCL0 (1 << 16)
532#define TCU_TMCR_FMCL5 (1 << 5)
533#define TCU_TMCR_FMCL4 (1 << 4)
534#define TCU_TMCR_FMCL3 (1 << 3)
535#define TCU_TMCR_FMCL2 (1 << 2)
536#define TCU_TMCR_FMCL1 (1 << 1)
537#define TCU_TMCR_FMCL0 (1 << 0)
538
539#define TCU_TSR_WDTS (1 << 16)
540#define TCU_TSR_STOP5 (1 << 5)
541#define TCU_TSR_STOP4 (1 << 4)
542#define TCU_TSR_STOP3 (1 << 3)
543#define TCU_TSR_STOP2 (1 << 2)
544#define TCU_TSR_STOP1 (1 << 1)
545#define TCU_TSR_STOP0 (1 << 0)
546
547#define TCU_TSSR_WDTSS (1 << 16)
548#define TCU_TSSR_STPS5 (1 << 5)
549#define TCU_TSSR_STPS4 (1 << 4)
550#define TCU_TSSR_STPS3 (1 << 3)
551#define TCU_TSSR_STPS2 (1 << 2)
552#define TCU_TSSR_STPS1 (1 << 1)
553#define TCU_TSSR_STPS0 (1 << 0)
554
555#define TCU_TSSR_WDTSC (1 << 16)
556#define TCU_TSSR_STPC5 (1 << 5)
557#define TCU_TSSR_STPC4 (1 << 4)
558#define TCU_TSSR_STPC3 (1 << 3)
559#define TCU_TSSR_STPC2 (1 << 2)
560#define TCU_TSSR_STPC1 (1 << 1)
561#define TCU_TSSR_STPC0 (1 << 0)
562
563
564#define WDT_TCSR_PRESCALE_BIT 3
565#define WDT_TCSR_PRESCALE_MASK (0x7 << WDT_TCSR_PRESCALE_BIT)
566 #define WDT_TCSR_PRESCALE1 (0x0 << WDT_TCSR_PRESCALE_BIT)
567 #define WDT_TCSR_PRESCALE4 (0x1 << WDT_TCSR_PRESCALE_BIT)
568 #define WDT_TCSR_PRESCALE16 (0x2 << WDT_TCSR_PRESCALE_BIT)
569 #define WDT_TCSR_PRESCALE64 (0x3 << WDT_TCSR_PRESCALE_BIT)
570 #define WDT_TCSR_PRESCALE256 (0x4 << WDT_TCSR_PRESCALE_BIT)
571 #define WDT_TCSR_PRESCALE1024 (0x5 << WDT_TCSR_PRESCALE_BIT)
572#define WDT_TCSR_EXT_EN (1 << 2)
573#define WDT_TCSR_RTC_EN (1 << 1)
574#define WDT_TCSR_PCK_EN (1 << 0)
575#define WDT_TCER_TCEN (1 << 0)
576
577
578
579
580
581#define UART_IER_RIE (1 << 0)
582#define UART_IER_TIE (1 << 1)
583#define UART_IER_RLIE (1 << 2)
584#define UART_IER_MIE (1 << 3)
585#define UART_IER_RTIE (1 << 4)
586
587
588
589
590
591#define UART_ISR_IP (1 << 0)
592#define UART_ISR_IID (7 << 1)
593#define UART_ISR_IID_MSI (0 << 1)
594#define UART_ISR_IID_THRI (1 << 1)
595#define UART_ISR_IID_RDI (2 << 1)
596#define UART_ISR_IID_RLSI (3 << 1)
597
598#define UART_ISR_FFMS (3 << 6)
599#define UART_ISR_FFMS_NO_FIFO (0 << 6)
600#define UART_ISR_FFMS_FIFO_MODE (3 << 6)
601
602
603
604
605
606#define UART_FCR_FE (1 << 0)
607#define UART_FCR_RFLS (1 << 1)
608#define UART_FCR_TFLS (1 << 2)
609#define UART_FCR_DMS (1 << 3)
610#define UART_FCR_UUE (1 << 4)
611#define UART_FCR_RTRG (3 << 6)
612#define UART_FCR_RTRG_1 (0 << 6)
613#define UART_FCR_RTRG_4 (1 << 6)
614#define UART_FCR_RTRG_8 (2 << 6)
615#define UART_FCR_RTRG_15 (3 << 6)
616
617
618
619
620
621#define UART_LCR_WLEN (3 << 0)
622#define UART_LCR_WLEN_5 (0 << 0)
623#define UART_LCR_WLEN_6 (1 << 0)
624#define UART_LCR_WLEN_7 (2 << 0)
625#define UART_LCR_WLEN_8 (3 << 0)
626#define UART_LCR_STOP (1 << 2)
627
628
629#define UART_LCR_STOP_1 (0 << 2)
630
631
632#define UART_LCR_STOP_2 (1 << 2)
633
634
635
636#define UART_LCR_PE (1 << 3)
637#define UART_LCR_PROE (1 << 4)
638#define UART_LCR_SPAR (1 << 5)
639#define UART_LCR_SBRK (1 << 6)
640
641#define UART_LCR_DLAB (1 << 7)
642
643
644
645
646
647
648#define UART_LSR_DR (1 << 0)
649
650#define UART_LSR_ORER (1 << 1)
651
652#define UART_LSR_PER (1 << 2)
653
654#define UART_LSR_FER (1 << 3)
655
656#define UART_LSR_BRK (1 << 4)
657
658#define UART_LSR_TDRQ (1 << 5)
659
660#define UART_LSR_TEMT (1 << 6)
661
662#define UART_LSR_RFER (1 << 7)
663
664
665
666
667
668#define UART_MCR_DTR (1 << 0)
669#define UART_MCR_RTS (1 << 1)
670
671#define UART_MCR_OUT1 (1 << 2)
672
673#define UART_MCR_OUT2 (1 << 3)
674#define UART_MCR_LOOP (1 << 4)
675#define UART_MCR_MCE (1 << 7)
676
677
678
679
680
681#define UART_MSR_DCTS (1 << 0)
682#define UART_MSR_DDSR (1 << 1)
683#define UART_MSR_DRI (1 << 2)
684#define UART_MSR_DDCD (1 << 3)
685#define UART_MSR_CTS (1 << 4)
686#define UART_MSR_DSR (1 << 5)
687#define UART_MSR_RI (1 << 6)
688#define UART_MSR_DCD (1 << 7)
689
690
691
692
693
694#define SIRCR_TSIRE (1 << 0)
695#define SIRCR_RSIRE (1 << 1)
696#define SIRCR_TPWS (1 << 2)
697
698#define SIRCR_TXPL (1 << 3)
699#define SIRCR_RXPL (1 << 4)
700
701
702#define MSC_STRPCL_EXIT_MULTIPLE (1 << 7)
703#define MSC_STRPCL_EXIT_TRANSFER (1 << 6)
704#define MSC_STRPCL_START_READWAIT (1 << 5)
705#define MSC_STRPCL_STOP_READWAIT (1 << 4)
706#define MSC_STRPCL_RESET (1 << 3)
707#define MSC_STRPCL_START_OP (1 << 2)
708#define MSC_STRPCL_CLOCK_CONTROL_BIT 0
709#define MSC_STRPCL_CLOCK_CONTROL_MASK (0x3 << MSC_STRPCL_CLOCK_CONTROL_BIT)
710#define MSC_STRPCL_CLOCK_CONTROL_STOP (0x1 << MSC_STRPCL_CLOCK_CONTROL_BIT)
711#define MSC_STRPCL_CLOCK_CONTROL_START (0x2 << MSC_STRPCL_CLOCK_CONTROL_BIT)
712
713
714#define MSC_STAT_IS_RESETTING (1 << 15)
715#define MSC_STAT_SDIO_INT_ACTIVE (1 << 14)
716#define MSC_STAT_PRG_DONE (1 << 13)
717#define MSC_STAT_DATA_TRAN_DONE (1 << 12)
718#define MSC_STAT_END_CMD_RES (1 << 11)
719#define MSC_STAT_DATA_FIFO_AFULL (1 << 10)
720#define MSC_STAT_IS_READWAIT (1 << 9)
721#define MSC_STAT_CLK_EN (1 << 8)
722#define MSC_STAT_DATA_FIFO_FULL (1 << 7)
723#define MSC_STAT_DATA_FIFO_EMPTY (1 << 6)
724#define MSC_STAT_CRC_RES_ERR (1 << 5)
725#define MSC_STAT_CRC_READ_ERROR (1 << 4)
726#define MSC_STAT_CRC_WRITE_ERROR_BIT 2
727#define MSC_STAT_CRC_WRITE_ERROR_MASK (0x3 << MSC_STAT_CRC_WRITE_ERROR_BIT)
728
729 #define MSC_STAT_CRC_WRITE_ERROR_NO (0 << MSC_STAT_CRC_WRITE_ERROR_BIT)
730
731 #define MSC_STAT_CRC_WRITE_ERROR (1 << MSC_STAT_CRC_WRITE_ERROR_BIT)
732
733 #define MSC_STAT_CRC_WRITE_ERROR_NOSTS (2 << MSC_STAT_CRC_WRITE_ERROR_BIT)
734#define MSC_STAT_TIME_OUT_RES (1 << 1)
735#define MSC_STAT_TIME_OUT_READ (1 << 0)
736
737
738#define MSC_CLKRT_CLK_RATE_BIT 0
739#define MSC_CLKRT_CLK_RATE_MASK (0x7 << MSC_CLKRT_CLK_RATE_BIT)
740 #define MSC_CLKRT_CLK_RATE_DIV_1 (0x0 << MSC_CLKRT_CLK_RATE_BIT)
741 #define MSC_CLKRT_CLK_RATE_DIV_2 (0x1 << MSC_CLKRT_CLK_RATE_BIT)
742 #define MSC_CLKRT_CLK_RATE_DIV_4 (0x2 << MSC_CLKRT_CLK_RATE_BIT)
743 #define MSC_CLKRT_CLK_RATE_DIV_8 (0x3 << MSC_CLKRT_CLK_RATE_BIT)
744 #define MSC_CLKRT_CLK_RATE_DIV_16 (0x4 << MSC_CLKRT_CLK_RATE_BIT)
745 #define MSC_CLKRT_CLK_RATE_DIV_32 (0x5 << MSC_CLKRT_CLK_RATE_BIT)
746 #define MSC_CLKRT_CLK_RATE_DIV_64 (0x6 << MSC_CLKRT_CLK_RATE_BIT)
747 #define MSC_CLKRT_CLK_RATE_DIV_128 (0x7 << MSC_CLKRT_CLK_RATE_BIT)
748
749
750#define MSC_CMDAT_IO_ABORT (1 << 11)
751#define MSC_CMDAT_BUS_WIDTH_BIT 9
752#define MSC_CMDAT_BUS_WIDTH_MASK (0x3 << MSC_CMDAT_BUS_WIDTH_BIT)
753#define MSC_CMDAT_BUS_WIDTH_1BIT (0x0 << MSC_CMDAT_BUS_WIDTH_BIT)
754#define MSC_CMDAT_BUS_WIDTH_4BIT (0x2 << MSC_CMDAT_BUS_WIDTH_BIT)
755#define MSC_CMDAT_DMA_EN (1 << 8)
756#define MSC_CMDAT_INIT (1 << 7)
757#define MSC_CMDAT_BUSY (1 << 6)
758#define MSC_CMDAT_STREAM_BLOCK (1 << 5)
759#define MSC_CMDAT_WRITE (1 << 4)
760#define MSC_CMDAT_READ (0 << 4)
761#define MSC_CMDAT_DATA_EN (1 << 3)
762#define MSC_CMDAT_RESPONSE_BIT 0
763#define MSC_CMDAT_RESPONSE_MASK (0x7 << MSC_CMDAT_RESPONSE_BIT)
764#define MSC_CMDAT_RESPONSE_NONE (0x0 << MSC_CMDAT_RESPONSE_BIT)
765#define MSC_CMDAT_RESPONSE_R1 (0x1 << MSC_CMDAT_RESPONSE_BIT)
766#define MSC_CMDAT_RESPONSE_R2 (0x2 << MSC_CMDAT_RESPONSE_BIT)
767#define MSC_CMDAT_RESPONSE_R3 (0x3 << MSC_CMDAT_RESPONSE_BIT)
768#define MSC_CMDAT_RESPONSE_R4 (0x4 << MSC_CMDAT_RESPONSE_BIT)
769#define MSC_CMDAT_RESPONSE_R5 (0x5 << MSC_CMDAT_RESPONSE_BIT)
770#define MSC_CMDAT_RESPONSE_R6 (0x6 << MSC_CMDAT_RESPONSE_BIT)
771
772
773#define MSC_IMASK_SDIO (1 << 7)
774#define MSC_IMASK_TXFIFO_WR_REQ (1 << 6)
775#define MSC_IMASK_RXFIFO_RD_REQ (1 << 5)
776#define MSC_IMASK_END_CMD_RES (1 << 2)
777#define MSC_IMASK_PRG_DONE (1 << 1)
778#define MSC_IMASK_DATA_TRAN_DONE (1 << 0)
779
780#ifndef __ASSEMBLY__
781
782struct jz4740_intc {
783 uint32_t isr;
784 uint32_t imr;
785 uint32_t imsr;
786 uint32_t imcr;
787 uint32_t ipr;
788};
789
790
791struct jz4740_rtc {
792 uint32_t rcr;
793 uint32_t rsr;
794 uint32_t rsar;
795 uint32_t rgr;
796 uint32_t hcr;
797 uint32_t hwfcr;
798 uint32_t hrcr;
799 uint32_t hwcr;
800 uint32_t hwrsr;
801 uint32_t hspr;
802};
803
804
805struct jz4740_cpm {
806 uint32_t cpccr;
807 uint32_t lcr;
808 uint32_t rsr;
809 uint32_t pad00;
810 uint32_t cppcr;
811 uint32_t pad01[3];
812 uint32_t clkgr;
813 uint32_t scr;
814 uint32_t pad02[14];
815 uint32_t i2scd;
816 uint32_t lpcdr;
817 uint32_t msccdr;
818 uint32_t uhccdr;
819 uint32_t uhcts;
820 uint32_t ssicd;
821};
822
823
824struct jz4740_tcu {
825 uint32_t pad00[4];
826 uint32_t ter;
827 uint32_t tesr;
828 uint32_t tecr;
829 uint32_t tsr;
830 uint32_t tfr;
831 uint32_t tfsr;
832 uint32_t tfcr;
833 uint32_t tssr;
834 uint32_t tmr;
835 uint32_t tmsr;
836 uint32_t tmcr;
837 uint32_t tscr;
838 uint32_t tdfr0;
839 uint32_t tdhr0;
840 uint32_t tcnt0;
841 uint32_t tcsr0;
842 uint32_t tdfr1;
843 uint32_t tdhr1;
844 uint32_t tcnt1;
845 uint32_t tcsr1;
846 uint32_t tdfr2;
847 uint32_t tdhr2;
848 uint32_t tcnt2;
849 uint32_t tcsr2;
850 uint32_t tdfr3;
851 uint32_t tdhr3;
852 uint32_t tcnt3;
853 uint32_t tcsr3;
854 uint32_t tdfr4;
855 uint32_t tdhr4;
856 uint32_t tcnt4;
857 uint32_t tcsr4;
858 uint32_t tdfr5;
859 uint32_t tdhr5;
860 uint32_t tcnt5;
861 uint32_t tcsr5;
862};
863
864
865struct jz4740_wdt {
866 uint16_t tdr;
867 uint16_t pad00;
868 uint8_t tcer;
869 uint8_t pad01[3];
870 uint16_t tcnt;
871 uint16_t pad02;
872 uint16_t tcsr;
873 uint16_t pad03;
874};
875
876struct jz4740_uart {
877 uint8_t rbr_thr_dllr;
878
879
880
881 uint8_t pad00[3];
882 uint8_t dlhr_ier;
883
884
885 uint8_t pad01[3];
886 uint8_t iir_fcr;
887
888
889 uint8_t pad02[3];
890 uint8_t lcr;
891 uint8_t pad03[3];
892 uint8_t mcr;
893 uint8_t pad04[3];
894 uint8_t lsr;
895 uint8_t pad05[3];
896 uint8_t msr;
897 uint8_t pad06[3];
898 uint8_t spr;
899 uint8_t pad07[3];
900 uint8_t isr;
901 uint8_t pad08[3];
902 uint8_t umr;
903};
904
905
906struct jz4740_msc {
907 uint16_t strpcl;
908 uint32_t stat;
909 uint16_t clkrt;
910 uint32_t cmdat;
911 uint16_t resto;
912 uint16_t rdto;
913 uint16_t blklen;
914 uint16_t nob;
915 uint16_t snob;
916 uint16_t imask;
917 uint16_t ireg;
918 uint8_t cmd;
919 uint32_t arg;
920 uint16_t res;
921 uint32_t rxfifo;
922 uint32_t txfifo;
923};
924
925
926struct jz4740_emc {
927 uint32_t bcr;
928 uint32_t pad00[3];
929 uint32_t smcr[5];
930
931
932
933
934
935 uint32_t pad01[3];
936 uint32_t sacr[5];
937
938
939
940
941
942 uint32_t pad02[3];
943 uint32_t nfcsr;
944
945 uint32_t pad03[11];
946 uint32_t dmcr;
947 uint16_t rtcsr;
948 uint16_t pad04;
949 uint16_t rtcnt;
950 uint16_t pad05;
951 uint16_t rtcor;
952 uint16_t pad06;
953 uint32_t dmar0;
954 uint32_t pad07[27];
955 uint32_t nfecr;
956 uint32_t nfecc;
957 uint8_t nfpar[12];
958
959
960
961 uint32_t nfints;
962 uint32_t nfinte;
963 uint32_t nferr[4];
964
965
966
967
968};
969
970#define __gpio_as_nand() \
971do { \
972 writel(0x02018000, GPIO_PXFUNS(1)); \
973 writel(0x02018000, GPIO_PXSELC(1)); \
974 writel(0x02018000, GPIO_PXPES(1)); \
975 writel(0x30000000, GPIO_PXFUNS(2)); \
976 writel(0x30000000, GPIO_PXSELC(2)); \
977 writel(0x30000000, GPIO_PXPES(2)); \
978 writel(0x40000000, GPIO_PXFUNC(2)); \
979 writel(0x40000000, GPIO_PXSELC(2)); \
980 writel(0x40000000, GPIO_PXDIRC(2)); \
981 writel(0x40000000, GPIO_PXPES(2)); \
982 writel(0x00400000, GPIO_PXFUNS(1)); \
983 writel(0x00400000, GPIO_PXSELC(1)); \
984} while (0)
985
986#define __gpio_as_sdram_16bit_4720() \
987do { \
988 writel(0x5442bfaa, GPIO_PXFUNS(0)); \
989 writel(0x5442bfaa, GPIO_PXSELC(0)); \
990 writel(0x5442bfaa, GPIO_PXPES(0)); \
991 writel(0x81f9ffff, GPIO_PXFUNS(1)); \
992 writel(0x81f9ffff, GPIO_PXSELC(1)); \
993 writel(0x81f9ffff, GPIO_PXPES(1)); \
994 writel(0x01000000, GPIO_PXFUNS(2)); \
995 writel(0x01000000, GPIO_PXSELC(2)); \
996 writel(0x01000000, GPIO_PXPES(2)); \
997} while (0)
998
999#define __gpio_as_lcd_18bit() \
1000do { \
1001 writel(0x003fffff, GPIO_PXFUNS(2)); \
1002 writel(0x003fffff, GPIO_PXSELC(2)); \
1003 writel(0x003fffff, GPIO_PXPES(2)); \
1004} while (0)
1005
1006
1007#define __gpio_as_msc() \
1008do { \
1009 writel(0x00003f00, GPIO_PXFUNS(3)); \
1010 writel(0x00003f00, GPIO_PXSELC(3)); \
1011 writel(0x00003f00, GPIO_PXPES(3)); \
1012} while (0)
1013
1014#define __gpio_get_port(p) (readl(GPIO_PXPIN(p)))
1015
1016#define __gpio_disable_pull(n) \
1017do { \
1018 unsigned int p, o; \
1019 p = (n) / 32; \
1020 o = (n) % 32; \
1021 writel((1 << o), GPIO_PXPES(p)); \
1022} while (0)
1023
1024#define __gpio_enable_pull(n) \
1025do { \
1026 unsigned int p, o; \
1027 p = (n) / 32; \
1028 o = (n) % 32; \
1029 writel(1 << (o), GPIO_PXPEC(p)); \
1030} while (0)
1031
1032#define __gpio_port_as_output(p, o) \
1033do { \
1034 writel(1 << (o), GPIO_PXFUNC(p)); \
1035 writel(1 << (o), GPIO_PXSELC(p)); \
1036 writel(1 << (o), GPIO_PXDIRS(p)); \
1037} while (0)
1038
1039#define __gpio_port_as_input(p, o) \
1040do { \
1041 writel(1 << (o), GPIO_PXFUNC(p)); \
1042 writel(1 << (o), GPIO_PXSELC(p)); \
1043 writel(1 << (o), GPIO_PXDIRC(p)); \
1044} while (0)
1045
1046#define __gpio_as_output(n) \
1047do { \
1048 unsigned int p, o; \
1049 p = (n) / 32; \
1050 o = (n) % 32; \
1051 __gpio_port_as_output(p, o); \
1052} while (0)
1053
1054#define __gpio_as_input(n) \
1055do { \
1056 unsigned int p, o; \
1057 p = (n) / 32; \
1058 o = (n) % 32; \
1059 __gpio_port_as_input(p, o); \
1060} while (0)
1061
1062#define __gpio_set_pin(n) \
1063do { \
1064 unsigned int p, o; \
1065 p = (n) / 32; \
1066 o = (n) % 32; \
1067 writel((1 << o), GPIO_PXDATS(p)); \
1068} while (0)
1069
1070#define __gpio_clear_pin(n) \
1071do { \
1072 unsigned int p, o; \
1073 p = (n) / 32; \
1074 o = (n) % 32; \
1075 writel((1 << o), GPIO_PXDATC(p)); \
1076} while (0)
1077
1078#define __gpio_get_pin(n) \
1079({ \
1080 unsigned int p, o, v; \
1081 p = (n) / 32; \
1082 o = (n) % 32; \
1083 if (__gpio_get_port(p) & (1 << o)) \
1084 v = 1; \
1085 else \
1086 v = 0; \
1087 v; \
1088})
1089
1090#define __gpio_as_uart0() \
1091do { \
1092 writel(0x06000000, GPIO_PXFUNS(3)); \
1093 writel(0x06000000, GPIO_PXSELS(3)); \
1094 writel(0x06000000, GPIO_PXPES(3)); \
1095} while (0)
1096
1097#define __gpio_jtag_to_uart0() \
1098do { \
1099 writel(0x80000000, GPIO_PXSELS(2)); \
1100} while (0)
1101
1102
1103#define __cpm_get_pllm() \
1104 ((readl(JZ4740_CPM_BASE + 0x10) & CPM_CPPCR_PLLM_MASK) \
1105 >> CPM_CPPCR_PLLM_BIT)
1106#define __cpm_get_plln() \
1107 ((readl(JZ4740_CPM_BASE + 0x10) & CPM_CPPCR_PLLN_MASK) \
1108 >> CPM_CPPCR_PLLN_BIT)
1109#define __cpm_get_pllod() \
1110 ((readl(JZ4740_CPM_BASE + 0x10) & CPM_CPPCR_PLLOD_MASK) \
1111 >> CPM_CPPCR_PLLOD_BIT)
1112#define __cpm_get_hdiv() \
1113 ((readl(JZ4740_CPM_BASE + 0x00) & CPM_CPCCR_HDIV_MASK) \
1114 >> CPM_CPCCR_HDIV_BIT)
1115#define __cpm_get_pdiv() \
1116 ((readl(JZ4740_CPM_BASE + 0x00) & CPM_CPCCR_PDIV_MASK) \
1117 >> CPM_CPCCR_PDIV_BIT)
1118#define __cpm_get_cdiv() \
1119 ((readl(JZ4740_CPM_BASE + 0x00) & CPM_CPCCR_CDIV_MASK) \
1120 >> CPM_CPCCR_CDIV_BIT)
1121#define __cpm_get_mdiv() \
1122 ((readl(JZ4740_CPM_BASE + 0x00) & CPM_CPCCR_MDIV_MASK) \
1123 >> CPM_CPCCR_MDIV_BIT)
1124
1125static inline unsigned int __cpm_get_pllout(void)
1126{
1127 uint32_t m, n, no, pllout;
1128 uint32_t od[4] = {1, 2, 2, 4};
1129
1130 struct jz4740_cpm *cpm = (struct jz4740_cpm *)JZ4740_CPM_BASE;
1131 uint32_t cppcr = readl(&cpm->cppcr);
1132
1133 if ((cppcr & CPM_CPPCR_PLLEN) && !(cppcr & CPM_CPPCR_PLLBP)) {
1134 m = __cpm_get_pllm() + 2;
1135 n = __cpm_get_plln() + 2;
1136 no = od[__cpm_get_pllod()];
1137 pllout = (CONFIG_SYS_EXTAL / (n * no)) * m;
1138 } else
1139 pllout = CONFIG_SYS_EXTAL;
1140
1141 return pllout;
1142}
1143
1144extern void pll_init(void);
1145extern void sdram_init(void);
1146extern void calc_clocks(void);
1147extern void rtc_init(void);
1148
1149#endif
1150#endif
1151