xref: /NextBSD/sys/mips/rt305x/rt305xreg.h (revision 4557fabb34e865d7f40be64b39c9e34fa41dbb60)
1 /*-
2  * Copyright (c) 2015 Stanislav Galabov.
3  * Copyright (c) 2010 Aleksandr Rybalko.
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25  * SUCH DAMAGE.
26  *
27  * $FreeBSD$
28  */
29 
30 #ifndef _RT305XREG_H_
31 #define _RT305XREG_H_
32 
33 #include "opt_rt305x.h"
34 
35 #ifdef RT3052F
36 #define PLATFORM_COUNTER_FREQ	(384 * 1000 * 1000)
37 #endif
38 #ifdef RT3050F
39 #define PLATFORM_COUNTER_FREQ	(320 * 1000 * 1000)
40 #endif
41 #ifdef MT7620
42 #define PLATFORM_COUNTER_FREQ	(580 * 1000 * 1000)
43 #endif
44 #ifdef RT5350
45 #define PLATFORM_COUNTER_FREQ	(360 * 1000 * 1000)
46 #endif
47 #ifndef PLATFORM_COUNTER_FREQ
48 #error "No platform selected"
49 #endif
50 
51 #ifndef MT7620
52 
53 #define SYSTEM_CLOCK	(PLATFORM_COUNTER_FREQ/3)
54 
55 #define SDRAM_BASE 	0x00000000
56 #define SDRAM_END 	0x03FFFFFF
57 
58 #define SYSCTL_BASE 	0x10000000
59 #define SYSCTL_END 	0x100000FF
60 #define TIMER_BASE 	0x10000100
61 #define TIMER_END 	0x100001FF
62 #define INTCTL_BASE 	0x10000200
63 #define INTCTL_END 	0x100002FF
64 #define MEMCTRL_BASE	0x10000300
65 #define MEMCTRL_END 	0x100003FF /* SDRAM & Flash/SRAM */
66 #ifndef RT5350
67 #define PCM_BASE 	0x10000400
68 #define PCM_END 	0x100004FF
69 #else
70 #define PCM_BASE	0x10002000
71 #define PCM_END		0x100027FF
72 #endif
73 #define UART_BASE 	0x10000500
74 #define UART_END 	0x100005FF
75 #define PIO_BASE 	0x10000600
76 #define PIO_END 	0x100006FF
77 #ifndef RT5350
78 #define GDMA_BASE 	0x10000700
79 #define GDMA_END 	0x100007FF /* Generic DMA */
80 #define NANDFC_BASE 	0x10000800
81 #define NANDFC_END 	0x100008FF /* NAND Flash Controller */
82 #else
83 #define GDMA_BASE	0x10002800
84 #define GDMA_END	0x10002FFF
85 #endif
86 #define I2C_BASE 	0x10000900
87 #define I2C_END 	0x100009FF
88 #define I2S_BASE 	0x10000A00
89 #define I2S_END 	0x10000AFF
90 #define SPI_BASE 	0x10000B00
91 #define SPI_END 	0x10000BFF
92 #define UARTLITE_BASE 	0x10000C00
93 #define UARTLITE_END 	0x10000CFF
94 
95 #define FRENG_BASE 	0x10100000
96 #define FRENG_END 	0x1010FFFF /* Frame Engine */
97 #define ETHSW_BASE 	0x10110000
98 #define ETHSW_END 	0x10117FFF /* Ethernet Switch */
99 #define ROM_BASE 	0x10118000
100 #define ROM_END 	0x10119FFF
101 #define WLAN_BASE 	0x10180000
102 #define WLAN_END 	0x101BFFFF /* 802.11n MAC/BBP */
103 #ifndef RT5350
104 #define USB_OTG_BASE	0x101C0000
105 #define USB_OTG_END 	0x101FFFFF
106 #else
107 #define USB_OTG_BASE	0x101C0000
108 #define USB_OTG_END	0x101C0FFF
109 #define USB_OHCI_BASE	0x101C1000
110 #define USB_OHCI_END	0x101C1FFF
111 #endif
112 #define EMEM_BASE 	0x1B000000
113 #define EMEM_END 	0x1BFFFFFF /* External SRAM/Flash */
114 #ifdef RT5350
115 #define BOOT_ROM_BASE	0x1C000000
116 #define BOOT_ROM_END	0x1C003FFF
117 #endif
118 #ifndef RT5350
119 #define FLASH_BASE 	0x1F000000
120 #define FLASH_END 	0x1FFFFFFF /* Flash window */
121 #endif
122 
123 #define OBIO_MEM_BASE	SYSCTL_BASE
124 #define OBIO_MEM_START	OBIO_MEM_BASE
125 #ifndef RT5350
126 #define OBIO_MEM_END	FLASH_END
127 #else
128 #define OBIO_MEM_END	BOOT_ROM_END
129 #endif
130 
131 #else /* MT7620 */
132 
133 #define SYSTEM_CLOCK	(40 * 1000 * 1000)
134 
135 #define SDRAM_BASE	0x00000000
136 #define SDRAM_END	0x0FFFFFFF
137 
138 #define SYSCTL_BASE	0x10000000
139 #define SYSCTL_END	0x100000FF
140 #define TIMER_BASE	0x10000100
141 #define TIMER_END	0x100001FF
142 #define INTCTL_BASE	0x10000200
143 #define INTCTL_END	0x100002FF
144 #define MEMCTRL_BASE	0x10000300
145 #define MEMCTRL_END	0x100003FF /* SDRAM & Flash/SRAM */
146 #define PCM_BASE	0x10002000
147 #define PCM_END		0x100027FF
148 #define UART_BASE	0x10000500
149 #define UART_END	0x100005FF
150 #define PIO_BASE	0x10000600
151 #define PIO_END		0x100006FF
152 #define GDMA_BASE	0x10002800
153 #define GDMA_END	0x10002FFF /* Generic DMA */
154 #define NANDFC_BASE	0x10000800
155 #define NANDFC_END	0x100008FF /* NAND Flash Controller */
156 #define I2C_BASE	0x10000900
157 #define I2C_END		0x100009FF
158 #define I2S_BASE	0x10000A00
159 #define I2S_END		0x10000AFF
160 #define SPI_BASE	0x10000B00
161 #define SPI_END		0x10000BFF
162 #define UARTLITE_BASE	0x10000C00
163 #define UARTLITE_END	0x10000CFF
164 
165 #define FRENG_BASE	0x10100000
166 #define FRENG_END	0x1010FFFF /* Frame Engine */
167 #define ETHSW_BASE	0x10110000
168 #define ETHSW_END	0x10117FFF /* Ethernet Switch */
169 #define ROM_BASE	0x10118000
170 #define ROM_END		0x1011FFFF
171 #define WLAN_BASE	0x10180000
172 #define WLAN_END	0x101BFFFF /* 802.11n MAC/BBP */
173 #define USB_OTG_BASE	0x101C0000
174 #define USB_OTG_END	0x101C0FFF
175 #define USB_OHCI_BASE	0x101C1000
176 #define USB_OHCI_END	0x101C1FFF
177 #define PCIE_BASE	0x10140000
178 #define PCIE_END	0x1017FFFF
179 #define SDHC_BASE	0x10130000
180 #define SDHC_END	0x10133FFF
181 
182 #define PCIE_IO_BASE	0x10160000
183 #define PCIE_IO_END	0x1016FFFF
184 #define PCIE_MEM_BASE	0x20000000
185 #define PCIE_MEM_END	0x2FFFFFFF
186 
187 // TODO: fix below mappings?
188 #define EMEM_BASE	0x1B000000
189 #define EMEM_END	0x1BFFFFFF /* External SRAM/Flash */
190 #define FLASH_BASE	0x1F000000
191 #define FLASH_END	0x1FFFFFFF /* Flash window */
192 
193 #define OBIO_MEM_BASE	SYSCTL_BASE
194 #define OBIO_MEM_START	OBIO_MEM_BASE
195 #define OBIO_MEM_END	FLASH_END
196 #endif
197 
198 /* System Control */
199 #define SYSCTL_CHIPID0_3 	0x00
200 #define SYSCTL_CHIPID4_7 	0x04
201 #ifdef RT5350
202 #define SYSCTL_REVID		0x0C
203 #endif
204 
205 #define SYSCTL_SYSCFG		0x10
206 #if !defined(RT5350) && !defined(MT7620)
207 #define SYSCTL_SYSCFG_INIC_EE_SDRAM		(1<<29)
208 #define SYSCTL_SYSCFG_INIC_8MB_SDRAM		(1<<28)
209 #define SYSCTL_SYSCFG_GE0_MODE_MASK		0x03000000
210 #define SYSCTL_SYSCFG_GE0_MODE_SHIFT		24
211 #define SYSCTL_SYSCFG_GE0_MODE_RGMII		0 /* RGMII Mode */
212 #define SYSCTL_SYSCFG_GE0_MODE_MII		1 /* MII Mode */
213 #define SYSCTL_SYSCFG_GE0_MODE_REV_MII		2 /*Reversed MII Mode*/
214 #define SYSCTL_SYSCFG_BOOT_ADDR_1F00		(1<<22)
215 #define SYSCTL_SYSCFG_BYPASS_PLL		(1<<21)
216 #define SYSCTL_SYSCFG_BIG_ENDIAN		(1<<20)
217 #define SYSCTL_SYSCFG_CPU_CLK_SEL_384MHZ	(1<<18)
218 #define SYSCTL_SYSCFG_BOOT_FROM_MASK		0x00030000
219 #define SYSCTL_SYSCFG_BOOT_FROM_SHIFT		16
220 #define SYSCTL_SYSCFG_BOOT_FROM_FLASH16		0
221 #define SYSCTL_SYSCFG_BOOT_FROM_FLASH8		1
222 #define SYSCTL_SYSCFG_BOOT_FROM_NANDFLASH	2
223 #define SYSCTL_SYSCFG_BOOT_FROM_ROM		3
224 #define SYSCTL_SYSCFG_TEST_CODE_MASK		0x0000ff00
225 #define SYSCTL_SYSCFG_TEST_CODE_SHIFT		8
226 #define SYSCTL_SYSCFG_SRAM_CS_MODE_MASK		0x0000000c
227 #define SYSCTL_SYSCFG_SRAM_CS_MODE_SHIFT	2
228 #define SYSCTL_SYSCFG_SRAM_CS_MODE_SRAM		0
229 #define SYSCTL_SYSCFG_SRAM_CS_MODE_WDOG_RST	1
230 #define SYSCTL_SYSCFG_SRAM_CS_MODE_BT_COEX	2
231 #define SYSCTL_SYSCFG_SDRAM_CLK_DRV		(1<<0) /* 8mA/12mA */
232 #endif
233 #ifdef RT5350
234 #define SYSCTL1_SYSCFG_PULL_EN			(1<<26)
235 #define SYSCTL1_SYSCFG_SDR_PAD_DRV_MASK		0x0700000
236 #define SYSCTL1_SYSCFG_SDR_PAD_DRV_SHIFT	20
237 #define SYSCTL1_SYSCFG_SDR_PAD_DRV_0		0
238 #define SYSCTL1_SYSCFG_SDR_PAD_DRV_1		1
239 #define SYSCTL1_SYSCFG_SDR_PAD_DRV_2		2
240 #endif
241 
242 #define SYSCTL_SYSCFG1		0x14
243 #define SYSCTL_SYSCFG1_USB0_HOST_MODE		(1 << 10)
244 
245 #define SYSCTL_TESTSTAT		0x18
246 #define SYSCTL_TESTSTAT2	0x1C
247 
248 #define SYSCTL_CLKCFG0		0x2C
249 #define SYSCTL_CLKCFG0_SDRAM_CLK_SKEW_MASK		0xc0000000
250 #define SYSCTL_CLKCFG0_SDRAM_CLK_SKEW_SHIFT		30
251 #define SYSCTL_CLKCFG0_SDRAM_CLK_SKEW_ZERO_DELAY	0
252 #define SYSCTL_CLKCFG0_SDRAM_CLK_SKEW_1NS_DELAY		1
253 #define SYSCTL_CLKCFG0_SDRAM_CLK_SKEW_2NS_DELAY		2
254 #define SYSCTL_CLKCFG0_SDRAM_CLK_SKEW_3NS_DELAY		3
255 
256 #define SYSCTL_CLKCFG1		0x30
257 #if !defined(RT5350)
258 #define SYSCTL_CLKCFG1_PBUS_DIV_CLK_BY2		(1<<30)
259 #define SYSCTL_CLKCFG1_UPHY0_CLK_EN		(1<<25)
260 #define SYSCTL_CLKCFG1_UPHY1_CLK_EN		(1<<22)
261 #define SYSCTL_CLKCFG1_OTG_CLK_EN		(1<<18)
262 #define SYSCTL_CLKCFG1_I2S_CLK_EN		(1<<15)
263 #define SYSCTL_CLKCFG1_I2S_CLK_SEL_EXT		(1<<14)
264 #define SYSCTL_CLKCFG1_I2S_CLK_DIV_MASK 		0x00003f00
265 #define SYSCTL_CLKCFG1_I2S_CLK_DIV_SHIFT 	8
266 #define SYSCTL_CLKCFG1_PCM_CLK_EN		(1<<7)
267 #define SYSCTL_CLKCFG1_PCM_CLK_SEL_EXT 		(1<<6)
268 #define SYSCTL_CLKCFG1_PCM_CLK_DIV_MASK 		0x0000003f
269 #define SYSCTL_CLKCFG1_PCM_CLK_DIV_SHIFT 	0
270 #endif
271 #ifdef RT5350
272 #define SYSCTL_CLKCFG1_SYSTICK_EN		(1<<29)
273 #define SYSCTL_CLKCFG1_PDMA_CSR_CLK_GATE_BYP	(1<<23)
274 #define SYSCTL_CLKCFG1_UPHY0_CLK_EN		(1<<18)
275 #endif
276 
277 #define SYSCTL_RSTCTRL		0x34
278 #define SYSCTL_RSTCTRL_ETHSW		(1<<23)
279 #if !defined(MT7620) && !defined(RT5350)
280 #define SYSCTL_RSTCTRL_OTG		(1<<22)
281 #else
282 #define SYSCTL_RSTCTRL_UPHY0		(1<<25)
283 #define SYSCTL_RSTCTRL_UPHY1		(1<<22)
284 #endif
285 #define SYSCTL_RSTCTRL_FRENG		(1<<21)
286 #define SYSCTL_RSTCTRL_WLAN		(1<<20)
287 #define SYSCTL_RSTCTRL_UARTL		(1<<19)
288 #define SYSCTL_RSTCTRL_SPI		(1<<18)
289 #define SYSCTL_RSTCTRL_I2S		(1<<17)
290 #define SYSCTL_RSTCTRL_I2C		(1<<16)
291 #define SYSCTL_RSTCTRL_DMA		(1<<14)
292 #define SYSCTL_RSTCTRL_PIO		(1<<13)
293 #define SYSCTL_RSTCTRL_UART		(1<<12)
294 #define SYSCTL_RSTCTRL_PCM		(1<<11)
295 #define SYSCTL_RSTCTRL_MC		(1<<10)
296 #define SYSCTL_RSTCTRL_INTC		(1<<9)
297 #define SYSCTL_RSTCTRL_TIMER		(1<<8)
298 #define SYSCTL_RSTCTRL_SYS		(1<<0)
299 
300 #define SYSCTL_RSTSTAT		0x38
301 #define SYSCTL_RSTSTAT_SWCPURST		(1<<3)
302 #define SYSCTL_RSTSTAT_SWSYSRST		(1<<2)
303 #define SYSCTL_RSTSTAT_WDRST		(1<<1)
304 
305 #define SYSCTL_GPIOMODE		0x60
306 #define SYSCTL_GPIOMODE_RGMII_GPIO_MODE		(1<<9)
307 #define SYSCTL_GPIOMODE_SDRAM_GPIO_MODE  	(1<<8)
308 #define SYSCTL_GPIOMODE_MDIO_GPIO_MODE   	(1<<7)
309 #define SYSCTL_GPIOMODE_JTAG_GPIO_MODE   	(1<<6)
310 #define SYSCTL_GPIOMODE_UARTL_GPIO_MODE  	(1<<5)
311 #define SYSCTL_GPIOMODE_UARTF_SHARE_MODE_UARTF		(0<<2)
312 #define SYSCTL_GPIOMODE_UARTF_SHARE_MODE_PCM_UARTF	(1<<2)
313 #define SYSCTL_GPIOMODE_UARTF_SHARE_MODE_PCM_I2S	(2<<2)
314 #define SYSCTL_GPIOMODE_UARTF_SHARE_MODE_I2S_UARTF	(3<<2)
315 #define SYSCTL_GPIOMODE_UARTF_SHARE_MODE_PCM_GPIO	(4<<2)
316 #define SYSCTL_GPIOMODE_UARTF_SHARE_MODE_GPIO_UARTF	(5<<2)
317 #define SYSCTL_GPIOMODE_UARTF_SHARE_MODE_GPIO_I2S	(6<<2)
318 #define SYSCTL_GPIOMODE_UARTF_SHARE_MODE_GPIO		(7<<2)
319 #define SYSCTL_GPIOMODE_SPI_GPIO_MODE    	(1<<1)
320 #define SYSCTL_GPIOMODE_I2C_GPIO_MODE    	(1<<0)
321 
322 #define SYSCTL_MEMO0		0x68
323 #define SYSCTL_MEMO1		0x6C
324 
325 #define SYSCTL_PPLL_CFG1	0x9C
326 #define SYSCTL_PPLL_DRV		0xA0
327 
328 /* Timer */
329 #define TIMER_TMRSTAT		0x00
330 #define TIMER_TMRSTAT_TMR1RST	(1<<5)
331 #define TIMER_TMRSTAT_TMR0RST	(1<<4)
332 #define TIMER_TMRSTAT_TMR1INT	(1<<1)
333 #define TIMER_TMRSTAT_TMR0INT	(1<<0)
334 #define TIMER_TMR0LOAD		0x10
335 #define TIMER_TMR0VAL		0x14
336 #define TIMER_TMR0CTL		0x18
337 #define TIMER_TMR1LOAD		0x20
338 #define TIMER_TMR1VAL		0x24
339 #define TIMER_TMR1CTL		0x28
340 
341 #define TIMER_TMRLOAD_TMR0LOAD_MASK	0xffff
342 
343 #define TIMER_TMRVAL_TMR0VAL_MASK	0xffff
344 
345 #define TIMER_TMRCTL_ENABLE		(1<<7)
346 #define TIMER_TMRCTL_MODE_MASK		0x00000030
347 #define TIMER_TMRCTL_MODE_SHIFT		4
348 #define TIMER_TMRCTL_MODE_FREE		0
349 #define TIMER_TMRCTL_MODE_PERIODIC	1
350 #define TIMER_TMRCTL_MODE_TIMOUT	2
351 #define TIMER_TMRCTL_MODE_TIMOUT3	3
352 #define TIMER_TMRCTL_PRESCALE_MASK	0x0000000f
353 #define TIMER_TMRCTL_PRESCALE_SHIFT	0
354 #define TIMER_TMRCTL_PRESCALE_NONE	0
355 #define TIMER_TMRCTL_PRESCALE_BY_4	1
356 #define TIMER_TMRCTL_PRESCALE_BY_8	2
357 #define TIMER_TMRCTL_PRESCALE_BY_16	3
358 #define TIMER_TMRCTL_PRESCALE_BY_32	4
359 #define TIMER_TMRCTL_PRESCALE_BY_64	5
360 #define TIMER_TMRCTL_PRESCALE_BY_128	6
361 #define TIMER_TMRCTL_PRESCALE_BY_256	7
362 #define TIMER_TMRCTL_PRESCALE_BY_512	8
363 #define TIMER_TMRCTL_PRESCALE_BY_1K	9
364 #define TIMER_TMRCTL_PRESCALE_BY_2K	10
365 #define TIMER_TMRCTL_PRESCALE_BY_4K	11
366 #define TIMER_TMRCTL_PRESCALE_BY_8K	12
367 #define TIMER_TMRCTL_PRESCALE_BY_16K	13
368 #define TIMER_TMRCTL_PRESCALE_BY_32K	14
369 #define TIMER_TMRCTL_PRESCALE_BY_64K	15
370 
371 /* Interrupt Controller */
372 #define IC_IRQ0STAT		0x00
373 #define IC_IRQ1STAT		0x04
374 #define IC_INTTYPE		0x20
375 #define IC_INTRAW		0x30
376 #define IC_INT_ENA		0x34
377 #define IC_INT_DIS		0x38
378 
379 #define IC_OTG		18
380 #define IC_ETHSW	17
381 #define IC_R2P		15
382 #define IC_SDHC		14
383 #define IC_UARTLITE	12
384 #define IC_SPI		11
385 #define IC_I2S		10
386 #define IC_PERFC	9
387 #define IC_NAND		8
388 #define IC_DMA		7
389 #define IC_PIO		6
390 #define IC_UART		5
391 #define IC_PCM		4
392 #define IC_ILL_ACCESS	3
393 #define IC_WDTIMER	2
394 #define IC_TIMER0	1
395 #define IC_SYSCTL	0
396 
397 #define IC_LINE_GLOBAL		(1<<31) /* Only for DIS/ENA regs */
398 #define IC_LINE_OTG		(1<<18)
399 #define IC_LINE_ETHSW		(1<<17)
400 #define IC_LINE_UARTLITE	(1<<12)
401 #define IC_LINE_I2S		(1<<10)
402 #define IC_LINE_PERFC		(1<<9)
403 #define IC_LINE_NAND		(1<<8)
404 #define IC_LINE_DMA		(1<<7)
405 #define IC_LINE_PIO		(1<<6)
406 #define IC_LINE_UART		(1<<5)
407 #define IC_LINE_PCM		(1<<4)
408 #define IC_LINE_ILL_ACCESS	(1<<3)
409 #define IC_LINE_WDTIMER		(1<<2)
410 #define IC_LINE_TIMER0		(1<<1)
411 #define IC_LINE_SYSCTL		(1<<0)
412 
413 #define IC_INT_MASK		0x000617ff
414 
415 /* GPIO */
416 
417 #define GPIO23_00_INT		0x00 /* Programmed I/O Int Status */
418 #define GPIO23_00_EDGE		0x04 /* Programmed I/O Edge Status */
419 #define GPIO23_00_RENA		0x08 /* Programmed I/O Int on Rising */
420 #define GPIO23_00_FENA		0x0C /* Programmed I/O Int on Falling */
421 #define GPIO23_00_DATA		0x20 /* Programmed I/O Data */
422 #define GPIO23_00_DIR		0x24 /* Programmed I/O Direction */
423 #define GPIO23_00_POL		0x28 /* Programmed I/O Pin Polarity */
424 #define GPIO23_00_SET		0x2C /* Set PIO Data Bit */
425 #define GPIO23_00_RESET		0x30 /* Clear PIO Data bit */
426 #define GPIO23_00_TOG		0x34 /* Toggle PIO Data bit */
427 
428 #define GPIO39_24_INT		0x38
429 #define GPIO39_24_EDGE		0x3c
430 #define GPIO39_24_RENA		0x40
431 #define GPIO39_24_FENA		0x44
432 #define GPIO39_24_DATA		0x48
433 #define GPIO39_24_DIR		0x4c
434 #define GPIO39_24_POL		0x50
435 #define GPIO39_24_SET		0x54
436 #define GPIO39_24_RESET		0x58
437 #define GPIO39_24_TOG		0x5c
438 
439 #define GPIO51_40_INT		0x60
440 #define GPIO51_40_EDGE		0x64
441 #define GPIO51_40_RENA		0x68
442 #define GPIO51_40_FENA		0x6C
443 #define GPIO51_40_DATA		0x70
444 #define GPIO51_40_DIR		0x74
445 #define GPIO51_40_POL		0x78
446 #define GPIO51_40_SET		0x7C
447 #define GPIO51_40_RESET		0x80
448 #define GPIO51_40_TOG		0x84
449 
450 
451 
452 
453 #define GDMA_CHANNEL_REQ0	0
454 #define GDMA_CHANNEL_REQ1	1 /* (NAND-flash) */
455 #define GDMA_CHANNEL_REQ2	2 /* (I2S) */
456 #define GDMA_CHANNEL_REQ3	3 /* (PCM0-RX) */
457 #define GDMA_CHANNEL_REQ4	4 /* (PCM1-RX) */
458 #define GDMA_CHANNEL_REQ5	5 /* (PCM0-TX) */
459 #define GDMA_CHANNEL_REQ6	6 /* (PCM1-TX) */
460 #define GDMA_CHANNEL_REQ7	7
461 #define GDMA_CHANNEL_MEM	8
462 
463 /* Generic DMA Controller */
464 /* GDMA Channel n Source Address */
465 #define GDMASA(n)		(0x00 + 0x10*n)
466  /* GDMA Channel n Destination Address */
467 #define GDMADA(n)		(0x04 + 0x10*n)
468  /* GDMA Channel n Control Register 0 */
469 #define GDMACT0(n)		(0x08 + 0x10*n)
470 
471 #define GDMACT0_TR_COUNT_MASK		0x0fff0000
472 #define GDMACT0_TR_COUNT_SHIFT		16
473 #define GDMACT0_SRC_CHAN_SHIFT		12
474 #define GDMACT0_SRC_CHAN_MASK		0x0000f000
475 #define GDMACT0_DST_CHAN_SHIFT		8
476 #define GDMACT0_DST_CHAN_MASK		0x00000f00
477 #define GDMACT0_SRC_BURST_MODE		(1<<7)
478 #define GDMACT0_DST_BURST_MODE		(1<<6)
479 #define GDMACT0_BURST_SIZE_SHIFT	3
480 #define GDMACT0_BURST_SIZE_MASK		0x00000038
481 #define GDMACT0_BURST_SIZE_1		0
482 #define GDMACT0_BURST_SIZE_2		1
483 #define GDMACT0_BURST_SIZE_4		2
484 #define GDMACT0_BURST_SIZE_8		3
485 #define GDMACT0_BURST_SIZE_16		4
486 
487 #define GDMACT0_DONE_INT_EN		(1<<2)
488 #define GDMACT0_CHAN_EN			(1<<1)
489 /*
490  * In software mode, the data transfer will start when the Channel Enable bit
491  * is set.
492  * In hardware mode, the data transfer will start when the DMA Request is
493  * asserted.
494 */
495 #define GDMACT0_SWMODE			(1<<0)
496 
497 /* SPI controller interface */
498 
499 #define	RT305X_SPISTAT		0x00
500 /* SPIBUSY is alias for SPIBUSY, because SPISTAT have only BUSY bit*/
501 #define	RT305X_SPIBUSY		RT305X_SPISTAT
502 
503 #define	RT305X_SPICFG		0x10
504 #define		MSBFIRST		(1<<8)
505 #define		SPICLKPOL		(1<<6)
506 #define		CAPT_ON_CLK_FALL	(1<<5)
507 #define		TX_ON_CLK_FALL		(1<<4)
508 #define		HIZSPI			(1<<3) /* Set SPI pins to Tri-state */
509 #define		SPI_CLK_SHIFT		0	/* SPI clock divide control */
510 #define		SPI_CLK_MASK		0x00000007
511 #define		SPI_CLK_DIV2		0
512 #define		SPI_CLK_DIV4		1
513 #define		SPI_CLK_DIV8		2
514 #define		SPI_CLK_DIV16		3
515 #define		SPI_CLK_DIV32		4
516 #define		SPI_CLK_DIV64		5
517 #define		SPI_CLK_DIV128		6
518 #define		SPI_CLK_DISABLED	7
519 
520 #define	RT305X_SPICTL		0x14
521 #define		HIZSMOSI		(1<<3)
522 #define		START_WRITE		(1<<2)
523 #define		START_READ		(1<<1)
524 #define		CS_HIGH			(1<<0)
525 
526 #define	RT305X_SPIDATA		0x20
527 #define		SPIDATA_MASK		0x000000ff
528 
529 #define	RT305X_SPI_WRITE	1
530 #define	RT305X_SPI_READ		0
531 
532 #endif /* _RT305XREG_H_ */
533