Merge commit 'v2.6.37-rc1' into for-2.6.37
[pandora-kernel.git] / arch / arm / mach-u300 / include / mach / u300-regs.h
1 /*
2  *
3  * arch/arm/mach-u300/include/mach/u300-regs.h
4  *
5  *
6  * Copyright (C) 2006-2009 ST-Ericsson AB
7  * License terms: GNU General Public License (GPL) version 2
8  * Basic register address definitions in physical memory and
9  * some block definitions for core devices like the timer.
10  * Author: Linus Walleij <linus.walleij@stericsson.com>
11  */
12
13 #ifndef __MACH_U300_REGS_H
14 #define __MACH_U300_REGS_H
15
16 /*
17  * These are the large blocks of memory allocated for I/O.
18  * the defines are used for setting up the I/O memory mapping.
19  */
20
21 /* NAND Flash CS0 */
22 #define U300_NAND_CS0_PHYS_BASE         0x80000000
23
24 /* NFIF */
25 #define U300_NAND_IF_PHYS_BASE          0x9f800000
26
27 /* AHB Peripherals */
28 #define U300_AHB_PER_PHYS_BASE          0xa0000000
29 #define U300_AHB_PER_VIRT_BASE          0xff010000
30
31 /* FAST Peripherals */
32 #define U300_FAST_PER_PHYS_BASE         0xc0000000
33 #define U300_FAST_PER_VIRT_BASE         0xff020000
34
35 /* SLOW Peripherals */
36 #define U300_SLOW_PER_PHYS_BASE         0xc0010000
37 #define U300_SLOW_PER_VIRT_BASE         0xff000000
38
39 /* Boot ROM */
40 #define U300_BOOTROM_PHYS_BASE          0xffff0000
41 #define U300_BOOTROM_VIRT_BASE          0xffff0000
42
43 /* SEMI config base */
44 #ifdef CONFIG_MACH_U300_BS335
45 #define U300_SEMI_CONFIG_BASE           0x2FFE0000
46 #else
47 #define U300_SEMI_CONFIG_BASE           0x30000000
48 #endif
49
50 /*
51  * All the following peripherals are specified at their PHYSICAL address,
52  * so if you need to access them (in the kernel), you MUST use the macros
53  * defined in <asm/io.h> to map to the IO_ADDRESS_AHB() IO_ADDRESS_FAST()
54  * etc.
55  */
56
57 /*
58  * AHB peripherals
59  */
60
61 /* AHB Peripherals Bridge Controller */
62 #define U300_AHB_BRIDGE_BASE            (U300_AHB_PER_PHYS_BASE+0x0000)
63
64 /* Vectored Interrupt Controller 0, servicing 32 interrupts */
65 #define U300_INTCON0_BASE               (U300_AHB_PER_PHYS_BASE+0x1000)
66 #define U300_INTCON0_VBASE              (U300_AHB_PER_VIRT_BASE+0x1000)
67
68 /* Vectored Interrupt Controller 1, servicing 32 interrupts */
69 #define U300_INTCON1_BASE               (U300_AHB_PER_PHYS_BASE+0x2000)
70 #define U300_INTCON1_VBASE              (U300_AHB_PER_VIRT_BASE+0x2000)
71
72 /* Memory Stick Pro (MSPRO) controller */
73 #define U300_MSPRO_BASE                 (U300_AHB_PER_PHYS_BASE+0x3000)
74
75 /* EMIF Configuration Area */
76 #define U300_EMIF_CFG_BASE              (U300_AHB_PER_PHYS_BASE+0x4000)
77
78
79 /*
80  * FAST peripherals
81  */
82
83 /* FAST bridge control */
84 #define U300_FAST_BRIDGE_BASE           (U300_FAST_PER_PHYS_BASE+0x0000)
85
86 /* MMC/SD controller */
87 #define U300_MMCSD_BASE                 (U300_FAST_PER_PHYS_BASE+0x1000)
88
89 /* PCM I2S0 controller */
90 #define U300_PCM_I2S0_BASE              (U300_FAST_PER_PHYS_BASE+0x2000)
91
92 /* PCM I2S1 controller */
93 #define U300_PCM_I2S1_BASE              (U300_FAST_PER_PHYS_BASE+0x3000)
94
95 /* I2C0 controller */
96 #define U300_I2C0_BASE                  (U300_FAST_PER_PHYS_BASE+0x4000)
97
98 /* I2C1 controller */
99 #define U300_I2C1_BASE                  (U300_FAST_PER_PHYS_BASE+0x5000)
100
101 /* SPI controller */
102 #define U300_SPI_BASE                   (U300_FAST_PER_PHYS_BASE+0x6000)
103
104 #ifdef CONFIG_MACH_U300_BS335
105 /* Fast UART1 on U335 only */
106 #define U300_UART1_BASE                 (U300_SLOW_PER_PHYS_BASE+0x7000)
107 #endif
108
109 /*
110  * SLOW peripherals
111  */
112
113 /* SLOW bridge control */
114 #define U300_SLOW_BRIDGE_BASE           (U300_SLOW_PER_PHYS_BASE)
115
116 /* SYSCON */
117 #define U300_SYSCON_BASE                (U300_SLOW_PER_PHYS_BASE+0x1000)
118 #define U300_SYSCON_VBASE               (U300_SLOW_PER_VIRT_BASE+0x1000)
119
120 /* Watchdog */
121 #define U300_WDOG_BASE                  (U300_SLOW_PER_PHYS_BASE+0x2000)
122
123 /* UART0 */
124 #define U300_UART0_BASE                 (U300_SLOW_PER_PHYS_BASE+0x3000)
125
126 /* APP side special timer */
127 #define U300_TIMER_APP_BASE             (U300_SLOW_PER_PHYS_BASE+0x4000)
128 #define U300_TIMER_APP_VBASE            (U300_SLOW_PER_VIRT_BASE+0x4000)
129
130 /* Keypad */
131 #define U300_KEYPAD_BASE                (U300_SLOW_PER_PHYS_BASE+0x5000)
132
133 /* GPIO */
134 #define U300_GPIO_BASE                  (U300_SLOW_PER_PHYS_BASE+0x6000)
135
136 /* RTC */
137 #define U300_RTC_BASE                   (U300_SLOW_PER_PHYS_BASE+0x7000)
138
139 /* Bus tracer */
140 #define U300_BUSTR_BASE                 (U300_SLOW_PER_PHYS_BASE+0x8000)
141
142 /* Event handler (hardware queue) */
143 #define U300_EVHIST_BASE                (U300_SLOW_PER_PHYS_BASE+0x9000)
144
145 /* Genric Timer */
146 #define U300_TIMER_BASE                 (U300_SLOW_PER_PHYS_BASE+0xa000)
147
148 /* PPM */
149 #define U300_PPM_BASE                   (U300_SLOW_PER_PHYS_BASE+0xb000)
150
151
152 /*
153  * REST peripherals
154  */
155
156 /* ISP (image signal processor) is only available in U335 */
157 #ifdef CONFIG_MACH_U300_BS335
158 #define U300_ISP_BASE                   (0xA0008000)
159 #endif
160
161 /* DMA Controller base */
162 #define U300_DMAC_BASE                  (0xC0020000)
163
164 /* MSL Base */
165 #define U300_MSL_BASE                   (0xc0022000)
166
167 /* APEX Base */
168 #define U300_APEX_BASE                  (0xc0030000)
169
170 /* Video Encoder Base */
171 #ifdef CONFIG_MACH_U300_BS335
172 #define U300_VIDEOENC_BASE              (0xc0080000)
173 #else
174 #define U300_VIDEOENC_BASE              (0xc0040000)
175 #endif
176
177 /* XGAM Base */
178 #define U300_XGAM_BASE                  (0xd0000000)
179
180 /*
181  * Virtual accessor macros for static devices
182  */
183
184
185 #endif