Annotation of sys/arch/arm/xscale/pxa2x0reg.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: pxa2x0reg.h,v 1.30 2007/05/25 21:27:15 krw Exp $ */
2: /* $NetBSD: pxa2x0reg.h,v 1.4 2003/06/11 20:43:01 scw Exp $ */
3:
4: /*
5: * Copyright (c) 2002 Genetec Corporation. All rights reserved.
6: * Written by Hiroyuki Bessho for Genetec Corporation.
7: *
8: * Redistribution and use in source and binary forms, with or without
9: * modification, are permitted provided that the following conditions
10: * are met:
11: * 1. Redistributions of source code must retain the above copyright
12: * notice, this list of conditions and the following disclaimer.
13: * 2. Redistributions in binary form must reproduce the above copyright
14: * notice, this list of conditions and the following disclaimer in the
15: * documentation and/or other materials provided with the distribution.
16: * 3. All advertising materials mentioning features or use of this software
17: * must display the following acknowledgement:
18: * This product includes software developed for the NetBSD Project by
19: * Genetec Corporation.
20: * 4. The name of Genetec Corporation may not be used to endorse or
21: * promote products derived from this software without specific prior
22: * written permission.
23: *
24: * THIS SOFTWARE IS PROVIDED BY GENETEC CORPORATION ``AS IS'' AND
25: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
26: * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
27: * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GENETEC CORPORATION
28: * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34: * POSSIBILITY OF SUCH DAMAGE.
35: */
36:
37:
38: /*
39: * Intel PXA2[15]0 processor is XScale based integrated CPU
40: *
41: * Reference:
42: * Intel(r) PXA250 and PXA210 Application Processors
43: * Developer's Manual
44: * (278522-001.pdf)
45: *
46: * Intel PXA 27x Processor Family Developers Manual (280000-002)
47: */
48: #ifndef _ARM_XSCALE_PXA2X0REG_H_
49: #define _ARM_XSCALE_PXA2X0REG_H_
50:
51: /* Borrow some register definitions from sa11x0 */
52: #include <arm/sa11x0/sa11x0_reg.h>
53:
54: #ifndef _LOCORE
55: #include <sys/types.h> /* for uint32_t */
56: #endif
57:
58: /*
59: * Chip select domains
60: */
61: #define PXA2X0_CS0_START 0x00000000
62: #define PXA2X0_CS1_START 0x04000000
63: #define PXA2X0_CS2_START 0x08000000
64: #define PXA2X0_CS3_START 0x0c000000
65: #define PXA2X0_CS4_START 0x10000000
66: #define PXA2X0_CS5_START 0x14000000
67:
68: #define PXA2X0_PCMCIA_SLOT0 0x20000000
69: #define PXA2X0_PCMCIA_SLOT1 0x30000000
70:
71: #define PXA2X0_PERIPH_START 0x40000000
72: /* #define PXA2X0_MEMCTL_START 0x48000000 */
73: #define PXA2X0_PERIPH_END 0x480fffff
74:
75: #define PXA2X0_SDRAM0_START 0xa0000000
76: #define PXA2X0_SDRAM1_START 0xa4000000
77: #define PXA2X0_SDRAM2_START 0xa8000000
78: #define PXA2X0_SDRAM3_START 0xac000000
79: #define PXA2X0_SDRAM_BANKS 4
80: #define PXA2X0_SDRAM_BANK_SIZE 0x04000000
81:
82: /*
83: * Physical address of integrated peripherals
84: */
85:
86: #define PXA2X0_DMAC_BASE 0x40000000
87: #define PXA2X0_DMAC_SIZE 0x300
88: #define PXA27X_DMAC_SIZE 0x0400
89: #define PXA2X0_FFUART_BASE 0x40100000 /* Full Function UART */
90: #define PXA2X0_BTUART_BASE 0x40200000 /* Bluetooth UART */
91: #define PXA2X0_I2C_BASE 0x40300000 /* I2C Bus Interface Unit */
92: #define PXA2X0_I2C_SIZE 0x16a4
93: #define PXA2X0_I2S_BASE 0x40400000 /* Inter-IC Sound Controller */
94: #define PXA2X0_I2S_SIZE 0x0084
95: #define PXA2X0_AC97_BASE 0x40500000 /* AC '97 Controller */
96: #define PXA2X0_AC97_SIZE 0x0600
97: #define PXA2X0_USBDC_BASE 0x40600000 /* USB Client Controller */
98: #define PXA2X0_USBDC_SIZE 0x0460
99: #define PXA2X0_STUART_BASE 0x40700000 /* Standard UART */
100: #define PXA2X0_ICP_BASE 0x40800000
101: #define PXA2X0_RTC_BASE 0x40900000
102: #define PXA2X0_RTC_SIZE 0x10
103: #define PXA2X0_OST_BASE 0x40a00000 /* OS Timer */
104: #define PXA2X0_OST_SIZE 0x24
105: #define PXA2X0_PWM0_BASE 0x40b00000
106: #define PXA2X0_PWM1_BASE 0x40c00000
107: #define PXA2X0_INTCTL_BASE 0x40d00000 /* Interrupt controller */
108: #define PXA2X0_INTCTL_SIZE 0x20
109: #define PXA2X0_GPIO_BASE 0x40e00000
110: #define PXA2X0_GPIO_SIZE 0x70
111: #define PXA2X0_POWMAN_BASE 0x40f00000 /* Power management */
112: #define PXA2X0_POWMAN_SIZE 0x1a4 /* incl. PI2C unit */
113: #define PXA2X0_SSP_BASE 0x41000000 /* SSP serial port */
114: #define PXA2X0_SSP1_BASE 0x41700000 /* PXA270 */
115: #define PXA2X0_SSP2_BASE 0x41900000 /* PXA270 */
116: #define PXA2X0_SSP_SIZE 0x40
117: #define PXA2X0_MMC_BASE 0x41100000 /* MultiMediaCard/SD/SDIO */
118: #define PXA2X0_MMC_SIZE 0x50
119: #define PXA2X0_CLKMAN_BASE 0x41300000 /* Clock Manager */
120: #define PXA2X0_CLKMAN_SIZE 12
121: #define PXA2X0_LCDC_BASE 0x44000000 /* LCD Controller */
122: #define PXA2X0_LCDC_SIZE 0x220
123: #define PXA2X0_MEMCTL_BASE 0x48000000 /* Memory Controller */
124: #define PXA2X0_MEMCTL_SIZE 0x84
125: #define PXA2X0_USBHC_BASE 0x4c000000 /* USB Host Controller */
126: #define PXA2X0_USBHC_SIZE 0x70
127:
128: /* width of interrupt controller */
129: #define ICU_LEN 32 /* but some are not used */
130: #define ICU_INT_HWMASK 0xffffff0f
131: #define PXA2X0_IRQ_MIN 1
132:
133: /*
134: * [0..1,15..16] are used as soft intrs by SI_TO_IRQBIT,
135: * and [4..6] are not likely to be used by us.
136: */
137: #define PXA2X0_INT_USBH2 2 /* USB host (all other events) */
138: #define PXA2X0_INT_USBH1 3 /* USB host (OHCI) */
139: #define PXA2X0_INT_OST 7 /* OS timers */
140: #define PXA2X0_INT_GPIO0 8
141: #define PXA2X0_INT_GPIO1 9
142: #define PXA2X0_INT_GPION 10 /* IRQ from GPIO[2..80] */
143: #define PXA2X0_INT_USB 11
144: #define PXA2X0_INT_PMU 12
145: #define PXA2X0_INT_I2S 13
146: #define PXA2X0_INT_AC97 14
147: #define PXA2X0_INT_LCD 17
148: #define PXA2X0_INT_I2C 18
149: #define PXA2X0_INT_ICP 19
150: #define PXA2X0_INT_STUART 20
151: #define PXA2X0_INT_BTUART 21
152: #define PXA2X0_INT_FFUART 22
153: #define PXA2X0_INT_MMC 23
154: #define PXA2X0_INT_SSP 24
155: #define PXA2X0_INT_DMA 25
156: #define PXA2X0_INT_OST0 26
157: #define PXA2X0_INT_OST1 27
158: #define PXA2X0_INT_OST2 28
159: #define PXA2X0_INT_OST3 29
160: #define PXA2X0_INT_RTCHZ 30
161: #define PXA2X0_INT_ALARM 31 /* RTC Alarm interrupt */
162:
163: /* Interrupt Controller similar to SA11x0's, but not exactly the same. */
164: #define INTCTL_ICIP 0x00
165: #define INTCTL_ICMR 0x04
166: #define INTCTL_ICLR 0x08
167: #define INTCTL_ICFP 0x0c
168: #define INTCTL_ICPR 0x10
169: #define INTCTL_ICCR 0x14
170: #define ICCR_DIM (1<<0)
171:
172: /* DMAC */
173: #define DMAC_N_CHANNELS 16
174: #define DMAC_N_CHANNELS_PXA27X 32
175: #define DMAC_N_PRIORITIES 3
176: #define DMAC_N_PRIORITIES_PXA27X 4
177:
178: #define DMAC_DCSR(n) ((n)*4)
179: #define DCSR_BUSERRINTR (1<<0) /* bus error interrupt */
180: #define DCSR_STARTINR (1<<1) /* start interrupt */
181: #define DCSR_ENDINTR (1<<2) /* end interrupt */
182: #define DCSR_STOPSTATE (1<<3) /* channel is not running */
183: #define DCSR_REQPEND (1<<8) /* request pending */
184: #define DCSR_STOPIRQEN (1<<29) /* stop interrupt enable */
185: #define DCSR_NODESCFETCH (1<<30) /* no-descriptor fetch mode */
186: #define DCSR_RUN (1<<31)
187: #define DMAC_DINT 0x00f0 /* DMA interrupt */
188: #define DMAC_DINT_MASK 0xffffu
189: #define DMAC_DRCMR(n) (0x100+(n)*4) /* Channel map register */
190: #define DRCMR_CHLNUM 0x0f /* channel number */
191: #define DRCMR_MAPVLD (1<<7) /* map valid */
192: #define DMAC_DDADR(n) (0x0200+(n)*16)
193: #define DDADR_STOP (1<<0)
194: #define DMAC_DSADR(n) (0x0204+(n)*16)
195: #define DMAC_DTADR(n) (0x0208+(n)*16)
196: #define DMAC_DCMD(n) (0x020c+(n)*16)
197: #define DCMD_LENGTH_MASK 0x1fff
198: #define DCMD_WIDTH_SHIFT 14
199: #define DCMD_WIDTH_0 (0<<DCMD_WIDTH_SHIFT) /* for mem-to-mem transfer*/
200: #define DCMD_WIDTH_1 (1<<DCMD_WIDTH_SHIFT)
201: #define DCMD_WIDTH_2 (2<<DCMD_WIDTH_SHIFT)
202: #define DCMD_WIDTH_4 (3<<DCMD_WIDTH_SHIFT)
203: #define DCMD_SIZE_SHIFT 16
204: #define DCMD_SIZE_8 (1<<DCMD_SIZE_SHIFT)
205: #define DCMD_SIZE_16 (2<<DCMD_SIZE_SHIFT)
206: #define DCMD_SIZE_32 (3<<DCMD_SIZE_SHIFT)
207: #define DCMD_LITTLE_ENDIAN (0<<18)
208: #define DCMD_ENDIRQEN (1<<21)
209: #define DCMD_STARTIRQEN (1<<22)
210: #define DCMD_FLOWTRG (1<<28) /* flow control by target */
211: #define DCMD_FLOWSRC (1<<29) /* flow control by source */
212: #define DCMD_INCTRGADDR (1<<30) /* increment target address */
213: #define DCMD_INCSRCADDR (1<<31) /* increment source address */
214:
215: #ifndef __ASSEMBLER__
216: /* DMA descriptor */
217: struct pxa2x0_dma_desc {
218: volatile uint32_t dd_ddadr;
219: #define DMAC_DESC_LAST 0x1
220: volatile uint32_t dd_dsadr;
221: volatile uint32_t dd_dtadr;
222: volatile uint32_t dd_dcmd; /* command and length */
223: };
224: #endif
225:
226: /* UART */
227: #define PXA2X0_COM_FREQ 14745600L
228:
229: /* I2C */
230: #define I2C_IBMR 0x1680 /* Bus monitor register */
231: #define I2C_IDBR 0x1688 /* Data buffer */
232: #define I2C_ICR 0x1690 /* Control register */
233: #define ICR_START (1<<0)
234: #define ICR_STOP (1<<1)
235: #define ICR_ACKNAK (1<<2)
236: #define ICR_TB (1<<3)
237: #define ICR_MA (1<<4)
238: #define ICR_SCLE (1<<5) /* PXA270? */
239: #define ICR_IUE (1<<6) /* PXA270? */
240: #define ICR_UR (1<<14) /* PXA270? */
241: #define ICR_FM (1<<15) /* PXA270? */
242: #define I2C_ISR 0x1698 /* Status register */
243: #define ISR_ACKNAK (1<<1)
244: #define ISR_ITE (1<<6)
245: #define ISR_IRF (1<<7)
246: #define I2C_ISAR 0x16a0 /* Slave address */
247:
248: /* Power Manager */
249: #define POWMAN_PMCR 0x00
250: #define POWMAN_PSSR 0x04 /* Sleep Status register */
251: #define PSSR_SSS (1<<0) /* Software Sleep Status */
252: #define PSSR_BFS (1<<1) /* Battery Fault Status */
253: #define PSSR_VFS (1<<2) /* VCC Fault Status */
254: #define PSSR_STS (1<<3) /* Standby Mode Status */
255: #define PSSR_PH (1<<4) /* Peripheral Control Hold */
256: #define PSSR_RDH (1<<5) /* Read Disable Hold */
257: #define PSSR_OTGPH (1<<6) /* OTG Peripheral Control Hold */
258: #define POWMAN_PSPR 0x08
259: #define POWMAN_PWER 0x0c
260: #define POWMAN_PRER 0x10
261: #define POWMAN_PFER 0x14
262: #define POWMAN_PEDR 0x18
263: #define POWMAN_PCFR 0x1c /* General Configuration register */
264: #define PCFR_OPDE (1<<0)
265: #define PCFR_GPR_EN (1<<4) /* PXA270 */
266: #define PCFR_PI2C_EN (1<<6) /* PXA270 */
267: #define PCFR_GP_ROD (1<<8) /* PXA270 */
268: #define PCFR_FVC (1<<10) /* PXA270 */
269: #define POWMAN_PGSR0 0x20 /* GPIO Sleep State register */
270: #define POWMAN_PGSR1 0x24
271: #define POWMAN_PGSR2 0x28
272: #define POWMAN_PGSR3 0x2c /* PXA270 */
273: #define POWMAN_RCSR 0x30 /* Reset Controller Status register */
274: #define RCSR_HWR (1<<0)
275: #define RCSR_WDR (1<<1)
276: #define RCSR_SMR (1<<2)
277: #define RCSR_GPR (1<<3)
278: #define POWMAN_PSLR 0x34 /* PXA270 */
279: #define POWMAN_PKWR 0x50 /* PXA270 */
280: #define POWMAN_PKSR 0x54 /* PXA270 */
281:
282: /* Power Manager I2C unit */
283: #define POWMAN_PIDBR 0x188
284: #define POWMAN_PICR 0x190
285: #define PICR_START ICR_START
286: #define PICR_STOP ICR_STOP
287: #define PICR_ACKNAK ICR_ACKNAK
288: #define PICR_TB ICR_TB
289: #define PICR_SCLE (1<<5) /* PXA270? */
290: #define PICR_IUE (1<<6) /* PXA270? */
291: #define PICR_UR (1<<14) /* PXA270? */
292: #define POWMAN_PISR 0x198
293: #define PISR_ACKNAK (1<<1)
294: #define PISR_ITE (1<<6)
295: #define PISR_IRF (1<<7)
296: #define POWMAN_PISAR 0x1a0
297:
298: /* Clock Manager */
299: #define CLKMAN_CCCR 0x00 /* Core Clock Configuration */
300: #define CCCR_CPDIS (1<<31) /* PXA270 */
301: #define CCCR_A (1<<25) /* PXA270 */
302: #define CCCR_TURBO_X1 (2<<7)
303: #define CCCR_TURBO_X15 (3<<7) /* x 1.5 */
304: #define CCCR_TURBO_X2 (4<<7)
305: #define CCCR_TURBO_X25 (5<<7) /* x 2.5 */
306: #define CCCR_TURBO_X3 (6<<7) /* x 3.0 */
307: /* PXA255 */
308: #define CCCR_RUN_X1 (1<<5)
309: #define CCCR_RUN_X2 (2<<5)
310: #define CCCR_RUN_X4 (3<<5)
311: #define CCCR_MEM_X27 (1<<0) /* x27, 99.53MHz */
312: #define CCCR_MEM_X32 (2<<0) /* x32, 117,96MHz */
313: #define CCCR_MEM_X36 (3<<0) /* x26, 132.71MHz */
314: #define CCCR_MEM_X40 (4<<0) /* x27, 99.53MHz */
315: #define CCCR_MEM_X45 (5<<0) /* x27, 99.53MHz */
316: #define CCCR_MEM_X9 (0x1f<<0) /* x9, 33.2MHz */
317: /* PXA27x: L is the core run frequency to 13MHz oscillator ratio. */
318: #define CCCR_RUN_X7 (7<<0) /* 91MHz, 91MHz mem, 91MHz LCD */
319: #define CCCR_RUN_X8 (8<<0) /* 104MHz, 104MHz mem, 52MHz LCD */
320: #define CCCR_RUN_X16 (16<<0) /* 208MHz, 104/208MHz mem, 104MHz LCD */
321:
322: #define CLKMAN_CKEN 0x04 /* Clock Enable Register */
323: #define CLKMAN_OSCC 0x08 /* Oscillator Configuration Register */
324:
325: #define CCCR_N_SHIFT 7
326: #define CCCR_N_MASK (0x07<<CCCR_N_SHIFT)
327: #define CCCR_M_SHIFT 5
328: #define CCCR_M_MASK (0x03<<CCCR_M_SHIFT)
329: #define CCCR_L_MASK 0x1f
330:
331: #define CKEN_PWM0 (1<<0)
332: #define CKEN_PWM1 (1<<1)
333: #define CKEN_AC97 (1<<2)
334: #define CKEN_SSP (1<<3)
335: #define CKEN_STUART (1<<5)
336: #define CKEN_FFUART (1<<6)
337: #define CKEN_BTUART (1<<7)
338: #define CKEN_I2S (1<<8)
339: #define CKEN_USBHC (1<<10)
340: #define CKEN_USBDC (1<<11)
341: #define CKEN_MMC (1<<12)
342: #define CKEN_FICP (1<<13)
343: #define CKEN_I2C (1<<14)
344: #define CKEN_PI2C (1<<15) /* PXA270? */
345: #define CKEN_LCD (1<<16)
346: #define CKEN_KEY (1<<19) /* PXA270? */
347: #define CKEN_MEM (1<<22) /* PXA270? */
348: #define CKEN_AC97CC (1<<31) /* PXA27x */
349:
350: #define OSCC_OOK (1<<0) /* 32.768KHz oscillator status */
351: #define OSCC_OON (1<<1) /* 32.768KHz oscillator */
352:
353: /*
354: * RTC
355: */
356: #define RTC_RCNR 0x0000 /* count register */
357: #define RTC_RTAR 0x0004 /* alarm register */
358: #define RTC_RTSR 0x0008 /* status register */
359: #define RTSR_AL (1<<0)
360: #define RTSR_HZ (1<<1)
361: #define RTSR_ALE (1<<2)
362: #define RTC_RTTR 0x000c /* trim register */
363: /*
364: * GPIO
365: */
366: #define GPIO_GPLR0 0x00 /* Level reg [31:0] */
367: #define GPIO_GPLR1 0x04 /* Level reg [63:32] */
368: #define GPIO_GPLR2 0x08 /* Level reg [80:64] PXA 270 [95:64] */
369:
370: #define GPIO_GPDR0 0x0c /* dir reg [31:0] */
371: #define GPIO_GPDR1 0x10 /* dir reg [63:32] */
372: #define GPIO_GPDR2 0x14 /* dir reg [80:64] PXA 270 [95:64] */
373:
374: #define GPIO_GPSR0 0x18 /* set reg [31:0] */
375: #define GPIO_GPSR1 0x1c /* set reg [63:32] */
376: #define GPIO_GPSR2 0x20 /* set reg [80:64] PXA 270 [95:64] */
377:
378: #define GPIO_GPCR0 0x24 /* clear reg [31:0] */
379: #define GPIO_GPCR1 0x28 /* clear reg [63:32] */
380: #define GPIO_GPCR2 0x2c /* clear reg [80:64] PXA 270 [95:64] */
381:
382: #define GPIO_GPER0 0x30 /* rising edge [31:0] */
383: #define GPIO_GPER1 0x34 /* rising edge [63:32] */
384: #define GPIO_GPER2 0x38 /* rising edge [80:64] PXA 270 [95:64] */
385:
386: #define GPIO_GRER0 0x30 /* rising edge [31:0] */
387: #define GPIO_GRER1 0x34 /* rising edge [63:32] */
388: #define GPIO_GRER2 0x38 /* rising edge [80:64] PXA 270 [95:64] */
389:
390: #define GPIO_GFER0 0x3c /* falling edge [31:0] */
391: #define GPIO_GFER1 0x40 /* falling edge [63:32] */
392: #define GPIO_GFER2 0x44 /* falling edge [80:64] PXA 270 [95:64] */
393:
394: #define GPIO_GEDR0 0x48 /* edge detect [31:0] */
395: #define GPIO_GEDR1 0x4c /* edge detect [63:32] */
396: #define GPIO_GEDR2 0x50 /* edge detect [80:64] PXA 270 [95:64] */
397:
398: #define GPIO_GAFR0_L 0x54 /* alternate function [15:0] */
399: #define GPIO_GAFR0_U 0x58 /* alternate function [31:16] */
400: #define GPIO_GAFR1_L 0x5c /* alternate function [47:32] */
401: #define GPIO_GAFR1_U 0x60 /* alternate function [63:48] */
402: #define GPIO_GAFR2_L 0x64 /* alternate function [79:64] */
403: #define GPIO_GAFR2_U 0x68 /* alternate function [80] PXA 270 [95:80] */
404:
405: #define GPIO_GAFR3_L 0x6C /* alternate function PXA 270 [111:96] */
406: #define GPIO_GAFR3_U 0x70 /* alternate function PXA 270 [120:112] */
407:
408: #define GPIO_GPLR3 0x100 /* Level PXA 270 [120:96] */
409: #define GPIO_GPDR3 0x10C /* dir reg PXA 270 [120:96] */
410: #define GPIO_GPSR3 0x118 /* set reg PXA 270 [120:96] */
411: #define GPIO_GPCR3 0x124 /* clear reg PXA 270 [120:96] */
412: #define GPIO_GRER3 0x130 /* rising edge PXA 270 [120:96] */
413: #define GPIO_GFER3 0x13c /* falling edge PXA 270 [120:96] */
414: #define GPIO_GEDR3 0x148 /* edge detect PXA270 [120:96] */
415:
416: #define GPIO_REG(r, pin) ((r) + \
417: ((pin > 95) ? GPIO_GPLR3 : (((pin) / 32) * 4)))
418: #define GPIO_BANK(pin) ((pin) / 32)
419: #define GPIO_BIT(pin) (1u << ((pin) & 0x1f))
420: #define GPIO_FN_REG(pin) (GPIO_GAFR0_L + (((pin) / 16) * 4))
421: #define GPIO_FN_SHIFT(pin) ((pin & 0xf) * 2)
422:
423: #define GPIO_IN 0x00 /* Regular GPIO input pin */
424: #define GPIO_OUT 0x10 /* Regular GPIO output pin */
425: #define GPIO_ALT_FN_1_IN 0x01 /* Alternate function 1 input */
426: #define GPIO_ALT_FN_1_OUT 0x11 /* Alternate function 1 output */
427: #define GPIO_ALT_FN_2_IN 0x02 /* Alternate function 2 input */
428: #define GPIO_ALT_FN_2_OUT 0x12 /* Alternate function 2 output */
429: #define GPIO_ALT_FN_3_IN 0x03 /* Alternate function 3 input */
430: #define GPIO_ALT_FN_3_OUT 0x13 /* Alternate function 3 output */
431: #define GPIO_SET 0x20 /* Initial state is Set */
432: #define GPIO_CLR 0x00 /* Initial state is Clear */
433:
434: #define GPIO_FN_MASK 0x03
435: #define GPIO_FN_IS_OUT(n) ((n) & GPIO_OUT)
436: #define GPIO_FN_IS_SET(n) ((n) & GPIO_SET)
437: #define GPIO_FN(n) ((n) & GPIO_FN_MASK)
438: #define GPIO_IS_GPIO(n) (GPIO_FN(n) == 0)
439: #define GPIO_IS_GPIO_IN(n) (((n) & (GPIO_FN_MASK|GPIO_OUT)) == GPIO_IN)
440: #define GPIO_IS_GPIO_OUT(n) (((n) & (GPIO_FN_MASK|GPIO_OUT)) == GPIO_OUT)
441:
442: #define GPIO_NPINS_25x 85
443: #define GPIO_NPINS 121
444:
445: /*
446: * memory controller
447: */
448:
449: #define MEMCTL_MDCNFG 0x0000
450: #define MDCNFG_DE0 (1<<0)
451: #define MDCNFG_DE1 (1<<1)
452: #define MDCNFD_DWID01_SHIFT 2
453: #define MDCNFD_DCAC01_SHIFT 3
454: #define MDCNFD_DRAC01_SHIFT 5
455: #define MDCNFD_DNB01_SHIFT 7
456: #define MDCNFG_DE2 (1<<16)
457: #define MDCNFG_DE3 (1<<17)
458: #define MDCNFD_DWID23_SHIFT 18
459: #define MDCNFD_DCAC23_SHIFT 19
460: #define MDCNFD_DRAC23_SHIFT 21
461: #define MDCNFD_DNB23_SHIFT 23
462:
463: #define MDCNFD_DWID_MASK 0x1
464: #define MDCNFD_DCAC_MASK 0x3
465: #define MDCNFD_DRAC_MASK 0x3
466: #define MDCNFD_DNB_MASK 0x1
467:
468: #define MEMCTL_MDREFR 0x04 /* refresh control register */
469: #define MDREFR_DRI 0xfff
470: #define MDREFR_E0PIN (1<<12)
471: #define MDREFR_K0RUN (1<<13) /* SDCLK0 enable */
472: #define MDREFR_K0DB2 (1<<14) /* SDCLK0 1/2 freq */
473: #define MDREFR_E1PIN (1<<15)
474: #define MDREFR_K1RUN (1<<16) /* SDCLK1 enable */
475: #define MDREFR_K1DB2 (1<<17) /* SDCLK1 1/2 freq */
476: #define MDREFR_K2RUN (1<<18) /* SDCLK2 enable */
477: #define MDREFR_K2DB2 (1<<19) /* SDCLK2 1/2 freq */
478: #define MDREFR_APD (1<<20) /* Auto Power Down */
479: #define MDREFR_SLFRSH (1<<22) /* Self Refresh */
480: #define MDREFR_K0FREE (1<<23) /* SDCLK0 free run */
481: #define MDREFR_K1FREE (1<<24) /* SDCLK1 free run */
482: #define MDREFR_K2FREE (1<<25) /* SDCLK2 free run */
483:
484: #define MEMCTL_MSC0 0x08 /* Asynchronous Static memory Control CS[01] */
485: #define MEMCTL_MSC1 0x0c /* Asynchronous Static memory Control CS[23] */
486: #define MEMCTL_MSC2 0x10 /* Asynchronous Static memory Control CS[45] */
487: #define MSC_RBUFF_SHIFT 15 /* return data buffer */
488: #define MSC_RBUFF (1<<MSC_RBUFF_SHIFT)
489: #define MSC_RRR_SHIFT 12 /* recovery time */
490: #define MSC_RRR (7<<MSC_RRR_SHIFT)
491: #define MSC_RDN_SHIFT 8 /* ROM delay next access */
492: #define MSC_RDN (0x0f<<MSC_RDN_SHIFT)
493: #define MSC_RDF_SHIFT 4 /* ROM delay first access*/
494: #define MSC_RDF (0x0f<<MSC_RDF_SHIFT)
495: #define MSC_RBW_SHIFT 3 /* 32/16 bit bus */
496: #define MSC_RBW (1<<MSC_RBW_SHIFT)
497: #define MSC_RT_SHIFT 0 /* type */
498: #define MSC_RT (7<<MSC_RT_SHIFT)
499: #define MSC_RT_NONBURST 0
500: #define MSC_RT_SRAM 1
501: #define MSC_RT_BURST4 2
502: #define MSC_RT_BURST8 3
503: #define MSC_RT_VLIO 4
504:
505: /* expansion memory timing configuration */
506: #define MEMCTL_MCMEM(n) (0x28+4*(n))
507: #define MEMCTL_MCATT(n) (0x30+4*(n))
508: #define MEMCTL_MCIO(n) (0x38+4*(n))
509:
510: #define MC_HOLD_SHIFT 14
511: #define MC_ASST_SHIFT 7
512: #define MC_SET_SHIFT 0
513: #define MC_TIMING_VAL(hold,asst,set) (((hold)<<MC_HOLD_SHIFT)| \
514: ((asst)<<MC_ASST_SHIFT)|((set)<<MC_SET_SHIFT))
515:
516: #define MEMCTL_MECR 0x14 /* Expansion memory configuration */
517: #define MECR_NOS (1<<0) /* Number of sockets */
518: #define MECR_CIT (1<<1) /* Card-is-there */
519:
520: #define MEMCTL_MDMRS 0x0040
521:
522: #define MEMCTL_ARB_CNTRL 0x0048 /* System Bus Arbiter */
523:
524: /*
525: * LCD Controller
526: */
527: #define LCDC_LCCR0 0x000 /* Controller Control Register 0 */
528: #define LCCR0_ENB (1U<<0) /* LCD Controller Enable */
529: #define LCCR0_CMS (1U<<1) /* Color/Mono select */
530: #define LCCR0_SDS (1U<<2) /* Single/Dual -panel */
531: #define LCCR0_LDM (1U<<3) /* LCD Disable Done Mask */
532: #define LCCR0_SFM (1U<<4) /* Start of Frame Mask */
533: #define LCCR0_IUM (1U<<5) /* Input FIFO Underrun Mask */
534: #define LCCR0_EFM (1U<<6) /* End of Frame Mask */
535: #define LCCR0_PAS (1U<<7) /* Passive/Active Display select */
536: #define LCCR0_DPD (1U<<9) /* Double-Pixel Data pin mode */
537: #define LCCR0_DIS (1U<<10) /* LCD Disable */
538: #define LCCR0_QDM (1U<<11) /* LCD Quick Disable Mask */
539: #define LCCR0_BM (1U<<20) /* Branch Mask */
540: #define LCCR0_OUM (1U<<21) /* Output FIFO Underrun Mask */
541: /* PXA270 */
542: #define LCCR0_LCDT (1U<<22) /* LCD Panel Type */
543: #define LCCR0_RDSTM (1U<<23) /* Read Status Interrupt Mask */
544: #define LCCR0_CMDIM (1U<<24) /* Command Interrupt Mask */
545: #define LCCR0_OUC (1U<<25) /* Overlay Underlay Control */
546: #define LCCR0_LDDALT (1U<<26) /* LDD Alternate Mapping Control Bit */
547:
548: #define LCCR0_IMASK (LCCR0_LDM|LCCR0_SFM|LCCR0_IUM|LCCR0_EFM|LCCR0_QDM|LCCR0_BM|LCCR0_OUM)
549:
550:
551: #define LCDC_LCCR1 0x004 /* Controller Control Register 1 */
552: #define LCDC_LCCR2 0x008 /* Controller Control Register 2 */
553: #define LCDC_LCCR3 0x00c /* Controller Control Register 2 */
554: #define LCCR3_BPP_SHIFT 24 /* Bits per pixel */
555: #define LCCR3_BPP (0x07<<LCCR3_BPP_SHIFT)
556: #define LCDC_FBR0 0x020 /* DMA ch0 frame branch register */
557: #define LCDC_FBR1 0x024 /* DMA ch1 frame branch register */
558: #define LCDC_LCSR 0x038 /* controller status register */
559: #define LCSR_LDD (1U<<0) /* LCD disable done */
560: #define LCSR_SOF (1U<<1) /* Start of frame */
561: #define LCDC_LIIDR 0x03c /* controller interrupt ID Register */
562: #define LCDC_TRGBR 0x040 /* TMED RGB Speed Register */
563: #define LCDC_TCR 0x044 /* TMED Control Register */
564: #define LCDC_FDADR0 0x200 /* DMA ch0 frame descriptor address */
565: #define LCDC_FSADR0 0x204 /* DMA ch0 frame source address */
566: #define LCDC_FIDR0 0x208 /* DMA ch0 frame ID register */
567: #define LCDC_LDCMD0 0x20c /* DMA ch0 command register */
568: #define LCDC_FDADR1 0x210 /* DMA ch1 frame descriptor address */
569: #define LCDC_FSADR1 0x214 /* DMA ch1 frame source address */
570: #define LCDC_FIDR1 0x218 /* DMA ch1 frame ID register */
571: #define LCDC_LDCMD1 0x21c /* DMA ch1 command register */
572:
573: /*
574: * MMC/SD controller
575: */
576: #define MMC_STRPCL 0x00 /* start/stop MMC clock */
577: #define STRPCL_NOOP 0
578: #define STRPCL_STOP 1 /* stop MMC clock */
579: #define STRPCL_START 2 /* start MMC clock */
580: #define MMC_STAT 0x04 /* status register */
581: #define STAT_READ_TIME_OUT (1<<0)
582: #define STAT_TIMEOUT_RESPONSE (1<<1)
583: #define STAT_CRC_WRITE_ERROR (1<<2)
584: #define STAT_CRC_READ_ERROR (1<<3)
585: #define STAT_SPI_READ_ERROR_TOKEN (1<<4)
586: #define STAT_RES_CRC_ERR (1<<5)
587: #define STAT_XMIT_FIFO_EMPTY (1<<6) /* (PXA27x: reserved) */
588: #define STAT_RECV_FIFO_FULL (1<<7) /* (PXA27x: reserved) */
589: #define STAT_CLK_EN (1<<8)
590: #define STAT_DATA_TRAN_DONE (1<<11)
591: #define STAT_PRG_DONE (1<<12)
592: #define STAT_END_CMD_RES (1<<13)
593: #define MMC_CLKRT 0x08 /* MMC clock rate */
594: #define CLKRT_20M 0
595: #define CLKRT_10M 1
596: #define CLKRT_5M 2
597: #define CLKRT_2_5M 3
598: #define CLKRT_1_25M 4
599: #define CLKRT_625K 5
600: #define CLKRT_312K 6
601: #define MMC_SPI 0x0c /* SPI mode control */
602: #define SPI_EN (1<<0) /* enable SPI mode */
603: #define SPI_CRC_ON (1<<1) /* enable CRC generation */
604: #define SPI_CS_EN (1<<2) /* Enable CS[01] */
605: #define SPI_CS_ADDRESS (1<<3) /* CS0/CS1 */
606: #define MMC_CMDAT 0x10 /* command/response/data */
607: #define CMDAT_RESPONSE_FORMAT 0x03
608: #define CMDAT_RESPONSE_FORMAT_NO 0 /* no response */
609: #define CMDAT_RESPONSE_FORMAT_R1 1 /* R1, R1b, R4, R5, R5b, R6 */
610: #define CMDAT_RESPONSE_FORMAT_R2 2
611: #define CMDAT_RESPONSE_FORMAT_R3 3
612: #define CMDAT_DATA_EN (1<<2)
613: #define CMDAT_WRITE (1<<3) /* 1=write 0=read operation */
614: #define CMDAT_STREAM_BLOCK (1<<4) /* stream mode */
615: #define CMDAT_BUSY (1<<5) /* busy signal is expected */
616: #define CMDAT_INIT (1<<6) /* precede command with 80 clocks */
617: #define CMDAT_MMC_DMA_EN (1<<7) /* DMA enable */
618: #define MMC_RESTO 0x14 /* expected response time out */
619: #define MMC_RDTO 0x18 /* expected data read time out */
620: #define MMC_BLKLEN 0x1c /* block length of data transaction */
621: #define MMC_NUMBLK 0x20 /* number of blocks (block mode) */
622: #define MMC_PRTBUF 0x24 /* partial MMC_TXFIFO written */
623: #define PRTBUF_BUF_PART_FULL (1<<0) /* buffer partially full */
624: #define MMC_I_MASK 0x28 /* interrupt mask */
625: #define MMC_I_REG 0x2c /* interrupt register */
626: #define MMC_I_DATA_TRAN_DONE (1<<0)
627: #define MMC_I_PRG_DONE (1<<1)
628: #define MMC_I_END_CMD_RES (1<<2)
629: #define MMC_I_STOP_CMD (1<<3)
630: #define MMC_I_CLK_IS_OFF (1<<4)
631: #define MMC_I_RXFIFO_RD_REQ (1<<5)
632: #define MMC_I_TXFIFO_WR_REQ (1<<6)
633: #define MMC_I_DAT_ERR (1<<8) /* PXA27x */
634: #define MMC_I_RES_ERR (1<<9) /* PXA27x */
635: #define MMC_I_SDIO_INT (1<<11) /* PXA27x */
636: #define MMC_CMD 0x30 /* index of current command */
637: #define MMC_ARGH 0x34 /* MSW part of the current command arg */
638: #define MMC_ARGL 0x38 /* LSW part of the current command arg */
639: #define MMC_RES 0x3c /* response FIFO */
640: #define MMC_RXFIFO 0x40 /* receive FIFO */
641: #define MMC_TXFIFO 0x44 /* transmit FIFO */
642:
643:
644: /*
645: * Inter-IC Sound (I2S) Controller
646: */
647: #define I2S_SACR0 0x0000 /* Serial Audio Global Control */
648: #define SACR0_ENB (1<<0) /* Enable I2S Function */
649: #define SACR0_BCKD (1<<2) /* I/O Direction of I2S_BITCLK */
650: #define SACR0_RST (1<<3) /* FIFO Reset */
651: #define SACR0_EFWR (1<<4) /* Special-Purpose FIFO W/R Func */
652: #define SACR0_STRF (1<<5) /* Select TX or RX FIFO */
653: #define SACR0_TFTH_MASK (0xf<<8) /* Trans FIFO Intr/DMA Trig Thresh */
654: #define SACR0_RFTH_MASK (0xf<<12) /* Recv FIFO Intr/DMA Trig Thresh */
655: #define SACR0_SET_TFTH(x) (((x) & 0xf)<<8)
656: #define SACR0_SET_RFTH(x) (((x) & 0xf)<<12)
657: #define I2S_SACR1 0x0004 /* Serial Audio I2S/MSB-Justified Control */
658: #define SACR1_AMSL (1<<0) /* Specify Alt Mode (I2S or MSB) */
659: #define SACR1_DREC (1<<3) /* Disable Recording Func */
660: #define SACR1_DRPL (1<<4) /* Disable Replay Func */
661: #define SACR1_ENLBF (1<<5) /* Enable Interface Loopback Func */
662: #define I2S_SASR0 0x000c /* Serial Audio I2S/MSB-Justified Status */
663: #define SASR0_TNF (1<<0) /* Transmit FIFO Not Full */
664: #define SASR0_RNE (1<<1) /* Recv FIFO Not Empty */
665: #define SASR0_BSY (1<<2) /* I2S Busy */
666: #define SASR0_TFS (1<<3) /* Trans FIFO Service Request */
667: #define SASR0_RFS (1<<4) /* Recv FIFO Service Request */
668: #define SASR0_TUR (1<<5) /* Trans FIFO Underrun */
669: #define SASR0_ROR (1<<6) /* Recv FIFO Overrun */
670: #define SASR0_I2SOFF (1<<7) /* I2S Controller Off */
671: #define SASR0_TFL_MASK (0xf<<8) /* Trans FIFO Level */
672: #define SASR0_RFL_MASK (0xf<<12) /* Recv FIFO Level */
673: #define SASR0_GET_TFL(x) (((x) & 0xf) >> 8)
674: #define SASR0_GET_RFL(x) (((x) & 0xf) >> 12)
675: #define I2S_SAIMR 0x0014 /* Serial Audio Interrupt Mask */
676: #define SAIMR_TFS (1<<3) /* Enable TX FIFO Service Req Intr */
677: #define SAIMR_RFS (1<<4) /* Enable RX FIFO Service Req Intr */
678: #define SAIMR_TUR (1<<5) /* Enable TX FIFO Underrun Intr */
679: #define SAIMR_ROR (1<<6) /* Enable RX FIFO Overrun Intr */
680: #define I2S_SAICR 0x0018 /* Serial Audio Interrupt Clear */
681: #define SAICR_TUR (1<<5) /* Clear Intr and SASR0_TUR */
682: #define SAICR_ROR (1<<6) /* Clear Intr and SASR0_ROR */
683: #define I2S_SADIV 0x0060 /* Audio Clock Divider */
684: #define SADIV_MASK 0x7f
685: #define SADIV_3_058MHz 0x0c /* 3.058 MHz */
686: #define SADIV_2_836MHz 0x0d /* 2.836 MHz */
687: #define SADIV_1_405MHz 0x1a /* 1.405 MHz */
688: #define SADIV_1_026MHz 0x24 /* 1.026 MHz */
689: #define SADIV_702_75kHz 0x34 /* 702.75 kHz */
690: #define SADIV_513_25kHz 0x48 /* 513.25 kHz */
691: #define I2S_SADR 0x0080 /* Serial Audio Data Register */
692: #define SADR_DTL (0xffff<<0) /* Left Data Sample */
693: #define SADR_DTH (0xffff<<16) /* Right Data Sample */
694:
695: /*
696: * AC '97 Controller
697: */
698: #define AC97_POCR 0x0000 /* PCM Out Control Register */
699: #define POCR_FSRIE (1<<1) /* FIFO Service Request Intr Enable */
700: #define POCR_FEIE (1<<3) /* FIFO Error Intr Enable */
701: #define AC97_PCMICR 0x0004 /* PCM In Control Register */
702: #define PCMICR_FSRIE (1<<1) /* FIFO Service Request Intr Enable */
703: #define PCMICR_FEIE (1<<3) /* FIFO Error Intr Enable */
704: #define AC97_MCCR 0x0008 /* Microphone In Control Register */
705: #define MCCR_FSRIE (1<<1) /* FIFO Service Request Intr Enable */
706: #define MCCR_FEIE (1<<3) /* FIFO Error Intr Enable */
707: #define AC97_GCR 0x000c /* Global Control Register */
708: #define GCR_GPI_IE (1<<0) /* Codec GPI Interrupt Enable */
709: #define GCR_nCRST (1<<1) /* AC '97 Cold Reset */
710: #define GCR_WRST (1<<2) /* AC '97 Warm Reset */
711: #define GCR_ACOFF (1<<3) /* AC-Link Shut Off */
712: #define GCR_PRES_IE (1<<4) /* Primary Resume Intr Enable */
713: #define GCR_SRES_IE (1<<5) /* Secondary Resume Intr Enable */
714: #define GCR_PRDY_IE (1<<8) /* Primary Ready Intr Enable */
715: #define GCR_SRDY_IE (1<<9) /* Secondary Ready Intr Enable */
716: #define GCR_SDONE_IE (1<<18) /* Status Done Intr Enable */
717: #define GCR_CDONE_IE (1<<19) /* Command Done Intr Enable */
718: #define GCR_nDMAEN (1<<24) /* DMA Enable (PXA27x) */
719: #define AC97_POSR 0x0010 /* PCM Out Status Register */
720: #define POSR_FSR (1<<2) /* FIFO Service Request */
721: #define POSR_FIFOE (1<<4) /* FIFO Error */
722: #define AC97_PCMISR 0x0014 /* PCM In Status Register */
723: #define PCMISR_FSR (1<<2) /* FIFO Service Request */
724: #define PCMISR_ECC (1<<3) /* DMA End of Chain Intr */
725: #define PCMISR_FIFOE (1<<4) /* FIFO Error */
726: #define AC97_MCSR 0x0018 /* Microphone In Status Register */
727: #define MCSR_FSR (1<<2) /* FIFO Service Request */
728: #define MCSR_ECC (1<<3) /* DMA End of Chain Intr */
729: #define MCSR_FIFOE (1<<4) /* FIFO Error */
730: #define AC97_GSR 0x001c /* Global Status Register */
731: #define GSR_GSCI (1<<0) /* Codec GPI Status Change Intr */
732: #define GSR_MIINT (1<<1) /* Modem-In Intr */
733: #define GSR_MOINT (1<<2) /* Modem-Out Intr */
734: #define GSR_ACOFFD (1<<3) /* AC-link Shut Off Done */
735: #define GSR_PIINT (1<<5) /* PCM-In Intr */
736: #define GSR_POINT (1<<6) /* PCM-Out Intr */
737: #define GSR_MCINT (1<<7) /* Mic-In Intr */
738: #define GSR_PCRDY (1<<8) /* Primay Codec Ready */
739: #define GSR_SCRDY (1<<9) /* Secondary Codec Ready */
740: #define GSR_PRESINT (1<<10) /* Primary Resume Intr */
741: #define GSR_SRESINT (1<<11) /* Secondary Resume Intr */
742: #define GSR_B1S12 (1<<12) /* Bit 1 of Slot 12 */
743: #define GSR_B2S12 (1<<13) /* Bit 2 of Slot 12 */
744: #define GSR_B3S12 (1<<14) /* Bit 3 of Slot 12 */
745: #define GSR_RCS (1<<15) /* Read Completion Status */
746: #define GSR_SDONE (1<<18) /* Status Done */
747: #define GSR_CDONE (1<<19) /* Command Done */
748: #define AC97_CAR 0x0020 /* Codec Access Register */
749: #define CAR_CAIP (1<<0) /* Codec Access In Progress */
750: /* 0x0024 to 0x003c is reserved */
751: #define AC97_PCDR 0x0040 /* PCM Data Register */
752: #define PCDR_PCML (0xffff<<0) /* PCM Left Channel Data */
753: #define PCDR_PCMR (0xffff<<16) /* PCM Right Channel Data */
754: /* 0x0044 to 0x005c is reserved */
755: #define AC97_MCDR 0x0060 /* Microphone In Data Register */
756: #define MCDR_MCDAT (0xffff<<0) /* Mic-In Data */
757: /* 0x0064 to 0x00fc is reserved */
758: #define AC97_MOCR 0x0100 /* Modem Out Control Register */
759: #define MOCR_FSRIE (1<<1) /* FIFO Service Request Intr Enable */
760: #define MOCR_FEIE (1<<3) /* FIFO Error Intr Enable */
761: /* 0x0104 is reserved */
762: #define AC97_MICR 0x0108 /* Modem In Control Register */
763: #define MICR_FSRIE (1<<1) /* FIFO Service Request Intr Enable */
764: #define MICR_FEIE (1<<3) /* FIFO Error Intr Enable */
765: /* 0x010c is reserved */
766: #define AC97_MOSR 0x0110 /* Modem Out Status Register */
767: #define MOSR_FSR (1<<2) /* FIFO Service Request */
768: #define MOSR_FIFOE (1<<2) /* FIFO Error */
769: /* 0x0114 is reserved */
770: #define AC97_MISR 0x0118 /* Modem In Status Register */
771: #define MOSR_FSR (1<<2) /* FIFO Service Request */
772: #define MOSR_EOC (1<<2) /* DMA End of Chain Intr */
773: #define MOSR_FIFOE (1<<2) /* FIFO Error */
774: /* 0x011c to 0x013c is reserved */
775: #define AC97_MODR 0x0140 /* Modem Data Register */
776: #define MODR_MODAT (0xffff<<0) /* Modem Data */
777: /* 0x0144 to 0x01fc is reserved */
778:
779: #define AC97_PRIAUDIO 0x0200 /* Primary Audio Codec Registers */
780: #define AC97_SECAUDIO 0x0300 /* Secondary Audio Codec Registers */
781: #define AC97_PRIMODEM 0x0400 /* Primary Modem Codec Registers */
782: #define AC97_SECMODEM 0x0500 /* Secondary modem Codec Registers */
783:
784: /*
785: * USB device controller differs between pxa255 and pxa27x, defined separately
786: */
787:
788: /*
789: * USB Host Controller
790: */
791: #define USBHC_STAT 0x0060 /* UHC Status Register */
792: #define USBHC_STAT_RWUE (1<<7) /* HCI Remote Wake-Up Event */
793: #define USBHC_STAT_HBA (1<<8) /* HCI Buffer Active */
794: #define USBHC_STAT_HTA (1<<10) /* HCI Transfer Abort */
795: #define USBHC_STAT_UPS1 (1<<11) /* USB Power Sense Port 1 */
796: #define USBHC_STAT_UPS2 (1<<12) /* USB Power Sense Port 2 */
797: #define USBHC_STAT_UPRI (1<<13) /* USB Port Resume Interrupt */
798: #define USBHC_STAT_SBTAI (1<<14) /* System Bus Target Abort Interrupt */
799: #define USBHC_STAT_SBMAI (1<<15) /* System Bus Master Abort Interrupt */
800: #define USBHC_STAT_UPS3 (1<<16) /* USB Power Sense Port 3 */
801: #define USBHC_STAT_MASK (USBHC_STAT_RWUE | USBHC_STAT_HBA | \
802: USBHC_STAT_HTA | USBHC_STAT_UPS1 | USBHC_STAT_UPS2 | USBHC_STAT_UPRI | \
803: USBHC_STAT_SBTAI | USBHC_STAT_SBMAI | USBHC_STAT_UPS3)
804: #define USBHC_HR 0x0064 /* UHC Reset Register */
805: #define USBHC_HR_FSBIR (1<<0) /* Force System Bus Interface Reset */
806: #define USBHC_HR_FHR (1<<1) /* Force Host Controller Reset */
807: #define USBHC_HR_CGR (1<<2) /* Clock Generation Reset */
808: #define USBHC_HR_SSDC (1<<3) /* Simulation Scale Down Clock */
809: #define USBHC_HR_UIT (1<<4) /* USB Interrupt Test */
810: #define USBHC_HR_SSE (1<<5) /* Sleep Standby Enable */
811: #define USBHC_HR_PSPL (1<<6) /* Power Sense Polarity Low */
812: #define USBHC_HR_PCPL (1<<7) /* Power Control Polarity Low */
813: #define USBHC_HR_SSEP1 (1<<9) /* Sleep Standby Enable for Port 1 */
814: #define USBHC_HR_SSEP2 (1<<10) /* Sleep Standby Enable for Port 2 */
815: #define USBHC_HR_SSEP3 (1<<11) /* Sleep Standby Enable for Port 3 */
816: #define USBHC_HR_MASK (USBHC_HR_FSBIR | USBHC_HR_FHR | \
817: USBHC_HR_CGR | USBHC_HR_SSDC | USBHC_HR_UIT | USBHC_HR_SSE | \
818: USBHC_HR_PSPL | USBHC_HR_PCPL | USBHC_HR_SSEP1 | USBHC_HR_SSEP2 | \
819: USBHC_HR_SSEP3)
820: #define USBHC_HIE 0x0068 /* UHC Interrupt Enable Register */
821: #define USBHC_HIE_RWIE (1<<7) /* HCI Remote Wake-Up */
822: #define USBHC_HIE_HBAIE (1<<8) /* HCI Buffer Active */
823: #define USBHC_HIE_TAIE (1<<10) /* HCI Interface Transfer Abort */
824: #define USBHC_HIE_UPS1IE (1<<11) /* USB Power Sense Port 1 */
825: #define USBHC_HIE_UPS2IE (1<<12) /* USB Power Sense Port 2 */
826: #define USBHC_HIE_UPRIE (1<<13) /* USB Port Resume */
827: #define USBHC_HIE_UPS3IE (1<<14) /* USB Power Sense Port 3 */
828: #define USBHC_HIE_MASK (USBHC_HIE_RWIE | USBHC_HIE_HBAIE | \
829: USBHC_HIE_TAIE | USBHC_HIE_UPS1IE | USBHC_HIE_UPS2IE | USBHC_HIE_UPRIE | \
830: USBHC_HIE_UPS3IE)
831: #define USBHC_HIT 0x006C /* UHC Interrupt Test Register */
832: #define USBHC_HIT_RWUT (1<<7) /* HCI Remote Wake-Up */
833: #define USBHC_HIT_BAT (1<<8) /* HCI Buffer Active */
834: #define USBHC_HIT_IRQT (1<<9) /* Normal OHC */
835: #define USBHC_HIT_TAT (1<<10) /* HCI Interface Transfer Abort */
836: #define USBHC_HIT_UPS1T (1<<11) /* USB Power Sense Port 1 */
837: #define USBHC_HIT_UPS2T (1<<12) /* USB Power Sense Port 2 */
838: #define USBHC_HIT_UPRT (1<<13) /* USB Port Resume */
839: #define USBHC_HIT_STAT (1<<14) /* System Bus Target Abort */
840: #define USBHC_HIT_SMAT (1<<15) /* System Bus Master Abort */
841: #define USBHC_HIT_UPS3T (1<<16) /* USB Power Sense Port 3 */
842: #define USBHC_HIT_MASK (USBHC_HIT_RWUT | USBHC_HIT_BAT | \
843: USBHC_HIT_IRQT | USBHC_HIT_TAT | USBHC_HIT_UPS1T | USBHC_HIT_UPS2T | \
844: USBHC_HIT_UPRT | USBHC_HIT_STAT | USBHC_HIT_SMAT | USBHC_HIT_UPS3T)
845: #define USBHC_RST_WAIT 10000 /* usecs to wait for reset */
846:
847: /* OS Timer */
848: #define OST_OSMR0 0x0000 /* Match 0 */
849: #define OST_OSMR1 0x0004 /* Match 1 */
850: #define OST_OSMR2 0x0008 /* Match 2 */
851: #define OST_OSMR3 0x000c /* Match 3 */
852: #define OST_OSCR0 0x0010 /* Counter 0 */
853:
854: #define OST_OSCR4 0x0040 /* Counter 4 */
855: #define OST_OMCR4 0x00c0 /* Counter 4 match control */
856: #define OST_OSMR4 0x0080 /* Counter 4 match */
857: #define OST_OSCR5 0x0044 /* Counter 5 */
858: #define OST_OMCR5 0x00c4 /* Counter 5 match control */
859: #define OST_OSMR5 0x0084 /* Counter 4 match */
860:
861: #define OST_OSSR 0x0014 /* Status (all counters) */
862: #define OST_OWER 0x0018 /* Watchdog Enable */
863: #define OWER_WME (1<<0)
864: #define OST_OIER 0x001c /* Interrupt Enable */
865: #define OIER_E3 (1<<3)
866:
867: /* Synchronous Serial Protocol (SSP) serial ports */
868: #define SSP_SSCR0 0x00
869: #define SSP_SSCR1 0x04
870: #define SSP_SSSR 0x08
871: #define SSSR_TNF (1<<2)
872: #define SSSR_RNE (1<<3)
873: #define SSP_SSDR 0x10
874:
875: #endif /* _ARM_XSCALE_PXA2X0REG_H_ */
CVSweb