]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - include/configs/omap1510.h
* Patches by Xianghua Xiao, 15 Oct 2003:
[karo-tx-uboot.git] / include / configs / omap1510.h
1 /*
2  *
3  * BRIEF MODULE DESCRIPTION
4  *   OMAP hardware map
5  *
6  * Copyright (C) 2001 RidgeRun, Inc. (http://www.ridgerun.com)
7  * Author: RidgeRun, Inc.
8  *         Greg Lonnon (glonnon@ridgerun.com) or info@ridgerun.com
9  *
10  *  This program is free software; you can redistribute  it and/or modify it
11  *  under  the terms of  the GNU General  Public License as published by the
12  *  Free Software Foundation;  either version 2 of the  License, or (at your
13  *  option) any later version.
14  *
15  *  THIS  SOFTWARE  IS PROVIDED   ``AS  IS'' AND   ANY  EXPRESS OR IMPLIED
16  *  WARRANTIES,   INCLUDING, BUT NOT  LIMITED  TO, THE IMPLIED WARRANTIES OF
17  *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
18  *  NO  EVENT  SHALL   THE AUTHOR  BE    LIABLE FOR ANY   DIRECT, INDIRECT,
19  *  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20  *  NOT LIMITED   TO, PROCUREMENT OF  SUBSTITUTE GOODS  OR SERVICES; LOSS OF
21  *  USE, DATA,  OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
22  *  ANY THEORY OF LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT
23  *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24  *  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25  *
26  *  You should have received a copy of the  GNU General Public License along
27  *  with this program; if not, write  to the Free Software Foundation, Inc.,
28  *  675 Mass Ave, Cambridge, MA 02139, USA.
29  */
30
31 #include <asm/arch/sizes.h>
32
33 /*
34   There are 2 sets of general I/O -->
35   1. GPIO (shared between ARM & DSP, configured by ARM)
36   2. MPUIO which can be used only by the ARM.
37
38   Base address FFFB:5000 is where the ARM accesses the MPUIO control registers
39   (see 7.2.2 of the TRM for MPUIO reg definitions).
40
41   Base address E101:5000 is reserved for ARM access of the same MPUIO control
42   regs, but via the DSP I/O map.  This address is unavailable on 1510.
43
44   Base address FFFC:E000 is where the ARM accesses the GPIO config registers
45   directly via its own peripheral bus.
46
47   Base address E101:E000 is where the ARM can access the same GPIO config
48   registers, but the access takes place through the ARM port interface (called
49   API or MPUI) via the DSP's peripheral bus (DSP I/O space).
50
51   Therefore, the ARM should setup the GPIO regs thru the FFFC:E000 addresses
52   instead of the E101:E000 addresses.  The DSP has only read access of the pin
53   control register, so this may explain the inability to write to E101:E018.
54   Try accessing pin control reg at FFFC:E018.
55  */
56 #define OMAP1510_GPIO_BASE       0xfffce000
57 #define OMAP1510_GPIO_START      OMAP1510_GPIO_BASE
58 #define OMAP1510_GPIO_SIZE       SZ_4K
59
60 #define OMAP1510_MCBSP1_BASE     0xE1011000
61 #define OMAP1510_MCBSP1_SIZE     SZ_4K
62 #define OMAP1510_MCBSP1_START    0xE1011000
63
64 #define OMAP1510_MCBSP2_BASE     0xFFFB1000
65
66 #define OMAP1510_MCBSP3_BASE     0xE1017000
67 #define OMAP1510_MCBSP3_SIZE     SZ_4K
68 #define OMAP1510_MCBSP3_START    0xE1017000
69
70 /*
71  * Where's the flush address (for flushing D and I cache?)
72  */
73 #define FLUSH_BASE              0xdf000000
74 #define FLUSH_BASE_PHYS 0x00000000
75
76 #ifndef __ASSEMBLER__
77
78 #define PCIO_BASE               0
79
80 /*
81  * RAM definitions
82  */
83 #define MAPTOPHYS(a)            ((unsigned long)(a) - PAGE_OFFSET)
84 #define KERNTOPHYS(a)           ((unsigned long)(&a))
85 #define KERNEL_BASE             (0x10008000)
86 #endif
87
88 /* macro to get at IO space when running virtually */
89 #define IO_ADDRESS(x) ((x))
90
91 /* ----------------------------------------------------------------------------
92  *  OMAP1510 system registers
93  * ----------------------------------------------------------------------------
94  */
95
96 #define OMAP1510_UART1_BASE         0xfffb0000   /* "BLUETOOTH-UART" */
97 #define OMAP1510_UART2_BASE         0xfffb0800   /* "MODEM-UART" */
98 #define OMAP1510_RTC_BASE           0xfffb4800   /* RTC */
99 #define OMAP1510_UART3_BASE         0xfffb9800   /* Shared MPU/DSP UART */
100 #define OMAP1510_COM_MCBSP2_BASE    0xffff1000   /* Com McBSP2 */
101 #define OMAP1510_AUDIO_MCBSP_BASE   0xffff1800   /* Audio McBSP2 */
102 #define OMAP1510_ARMIO_BASE         0xfffb5000   /* keyboard/gpio */
103
104 /*
105  * OMAP1510 UART3 Registers
106  */
107
108 #define OMAP_MPU_UART3_BASE  0xFFFB9800 /* UART3 through MPU bus */
109
110 /* UART3 Registers Maping through MPU bus */
111
112 #define UART3_RHR        (OMAP_MPU_UART3_BASE + 0)
113 #define UART3_THR        (OMAP_MPU_UART3_BASE + 0)
114 #define UART3_DLL        (OMAP_MPU_UART3_BASE + 0)
115 #define UART3_IER        (OMAP_MPU_UART3_BASE + 4)
116 #define UART3_DLH        (OMAP_MPU_UART3_BASE + 4)
117 #define UART3_IIR        (OMAP_MPU_UART3_BASE + 8)
118 #define UART3_FCR        (OMAP_MPU_UART3_BASE + 8)
119 #define UART3_EFR        (OMAP_MPU_UART3_BASE + 8)
120 #define UART3_LCR        (OMAP_MPU_UART3_BASE + 0x0C)
121 #define UART3_MCR        (OMAP_MPU_UART3_BASE + 0x10)
122 #define UART3_XON1_ADDR1 (OMAP_MPU_UART3_BASE + 0x10)
123 #define UART3_XON2_ADDR2 (OMAP_MPU_UART3_BASE + 0x14)
124 #define UART3_LSR        (OMAP_MPU_UART3_BASE + 0x14)
125 #define UART3_TCR        (OMAP_MPU_UART3_BASE + 0x18)
126 #define UART3_MSR        (OMAP_MPU_UART3_BASE + 0x18)
127 #define UART3_XOFF1      (OMAP_MPU_UART3_BASE + 0x18)
128 #define UART3_XOFF2      (OMAP_MPU_UART3_BASE + 0x1C)
129 #define UART3_SPR        (OMAP_MPU_UART3_BASE + 0x1C)
130 #define UART3_TLR        (OMAP_MPU_UART3_BASE + 0x1C)
131 #define UART3_MDR1       (OMAP_MPU_UART3_BASE + 0x20)
132 #define UART3_MDR2       (OMAP_MPU_UART3_BASE + 0x24)
133 #define UART3_SFLSR      (OMAP_MPU_UART3_BASE + 0x28)
134 #define UART3_TXFLL      (OMAP_MPU_UART3_BASE + 0x28)
135 #define UART3_RESUME     (OMAP_MPU_UART3_BASE + 0x2C)
136 #define UART3_TXFLH      (OMAP_MPU_UART3_BASE + 0x2C)
137 #define UART3_SFREGL     (OMAP_MPU_UART3_BASE + 0x30)
138 #define UART3_RXFLL      (OMAP_MPU_UART3_BASE + 0x30)
139 #define UART3_SFREGH     (OMAP_MPU_UART3_BASE + 0x34)
140 #define UART3_RXFLH      (OMAP_MPU_UART3_BASE + 0x34)
141 #define UART3_BLR        (OMAP_MPU_UART3_BASE + 0x38)
142 #define UART3_ACREG      (OMAP_MPU_UART3_BASE + 0x3C)
143 #define UART3_DIV16      (OMAP_MPU_UART3_BASE + 0x3C)
144 #define UART3_SCR        (OMAP_MPU_UART3_BASE + 0x40)
145 #define UART3_SSR        (OMAP_MPU_UART3_BASE + 0x44)
146 #define UART3_EBLR       (OMAP_MPU_UART3_BASE + 0x48)
147 #define UART3_OSC_12M_SEL (OMAP_MPU_UART3_BASE + 0x4C)
148 #define UART3_MVR        (OMAP_MPU_UART3_BASE + 0x50)
149
150 /*
151  * Configuration Registers
152  */
153 #define FUNC_MUX_CTRL_0         0xfffe1000
154 #define FUNC_MUX_CTRL_1         0xfffe1004
155 #define FUNC_MUX_CTRL_2         0xfffe1008
156 #define COMP_MODE_CTRL_0        0xfffe100c
157 #define FUNC_MUX_CTRL_3         0xfffe1010
158 #define FUNC_MUX_CTRL_4         0xfffe1014
159 #define FUNC_MUX_CTRL_5         0xfffe1018
160 #define FUNC_MUX_CTRL_6         0xfffe101C
161 #define FUNC_MUX_CTRL_7         0xfffe1020
162 #define FUNC_MUX_CTRL_8         0xfffe1024
163 #define FUNC_MUX_CTRL_9         0xfffe1028
164 #define FUNC_MUX_CTRL_A         0xfffe102C
165 #define FUNC_MUX_CTRL_B         0xfffe1030
166 #define FUNC_MUX_CTRL_C         0xfffe1034
167 #define FUNC_MUX_CTRL_D         0xfffe1038
168 #define PULL_DWN_CTRL_0         0xfffe1040
169 #define PULL_DWN_CTRL_1         0xfffe1044
170 #define PULL_DWN_CTRL_2         0xfffe1048
171 #define PULL_DWN_CTRL_3         0xfffe104c
172 #define GATE_INH_CTRL_0         0xfffe1050
173 #define VOLTAGE_CTRL_0          0xfffe1060
174 #define TEST_DBG_CTRL_0         0xfffe1070
175
176 #define MOD_CONF_CTRL_0         0xfffe1080
177
178 #ifdef CONFIG_OMAP1610 /* 1610 Configuration Register */
179
180 #define USB_OTG_CTRL                    0xFFFB040C
181 #define USB_TRANSCEIVER_CTRL    0xFFFE1064
182 #define PULL_DWN_CTRL_4 0xFFFE10AC
183 #define PU_PD_SEL_0             0xFFFE10B4
184 #define PU_PD_SEL_1             0xFFFE10B8
185 #define PU_PD_SEL_2             0xFFFE10BC
186 #define PU_PD_SEL_3             0xFFFE10C0
187 #define PU_PD_SEL_4             0xFFFE10C4
188
189 #endif
190 /*
191  * Traffic Controller Memory Interface Registers
192  */
193 #define TCMIF_BASE              0xfffecc00
194 #define IMIF_PRIO               (TCMIF_BASE + 0x00)
195 #define EMIFS_PRIO_REG          (TCMIF_BASE + 0x04)
196 #define EMIFF_PRIO_REG          (TCMIF_BASE + 0x08)
197 #define EMIFS_CONFIG_REG        (TCMIF_BASE + 0x0c)
198 #define EMIFS_CS0_CONFIG        (TCMIF_BASE + 0x10)
199 #define EMIFS_CS1_CONFIG        (TCMIF_BASE + 0x14)
200 #define EMIFS_CS2_CONFIG        (TCMIF_BASE + 0x18)
201 #define EMIFS_CS3_CONFIG        (TCMIF_BASE + 0x1c)
202 #define EMIFF_SDRAM_CONFIG      (TCMIF_BASE + 0x20)
203 #define EMIFF_MRS               (TCMIF_BASE + 0x24)
204 #define TC_TIMEOUT1             (TCMIF_BASE + 0x28)
205 #define TC_TIMEOUT2             (TCMIF_BASE + 0x2c)
206 #define TC_TIMEOUT3             (TCMIF_BASE + 0x30)
207 #define TC_ENDIANISM            (TCMIF_BASE + 0x34)
208 #define EMIFF_SDRAM_CONFIG_2    (TCMIF_BASE + 0x3c)
209 #define EMIF_CFG_DYNAMIC_WS     (TCMIF_BASE + 0x40)
210
211 /*
212  * LCD Panel
213  */
214 #define TI925_LCD_BASE          0xFFFEC000
215 #define TI925_LCD_CONTROL       (TI925_LCD_BASE)
216 #define TI925_LCD_TIMING0       (TI925_LCD_BASE+0x4)
217 #define TI925_LCD_TIMING1       (TI925_LCD_BASE+0x8)
218 #define TI925_LCD_TIMING2       (TI925_LCD_BASE+0xc)
219 #define TI925_LCD_STATUS        (TI925_LCD_BASE+0x10)
220 #define TI925_LCD_SUBPANEL      (TI925_LCD_BASE+0x14)
221
222 #define OMAP_LCD_CONTROL        TI925_LCD_CONTROL
223
224 /*
225  * MMC/SD Host Controller Registers
226  */
227
228 #define OMAP_MMC_CMD     0xFFFB7800 /* MMC Command */
229 #define OMAP_MMC_ARGL    0xFFFB7804 /* MMC argument low */
230 #define OMAP_MMC_ARGH    0xFFFB7808 /* MMC argument high */
231 #define OMAP_MMC_CON     0xFFFB780C /* MMC system configuration */
232 #define OMAP_MMC_STAT    0xFFFB7810 /* MMC status */
233 #define OMAP_MMC_IE      0xFFFB7814 /* MMC system interrupt enable */
234 #define OMAP_MMC_CTO     0xFFFB7818 /* MMC command time-out */
235 #define OMAP_MMC_DTO     0xFFFB781C /* MMC data time-out */
236 #define OMAP_MMC_DATA    0xFFFB7820 /* MMC TX/RX FIFO data */
237 #define OMAP_MMC_BLEN    0xFFFB7824 /* MMC block length */
238 #define OMAP_MMC_NBLK    0xFFFB7828 /* MMC number of blocks */
239 #define OMAP_MMC_BUF     0xFFFB782C /* MMC buffer configuration */
240 #define OMAP_MMC_SPI     0xFFFB7830 /* MMC serial port interface */
241 #define OMAP_MMC_SDIO    0xFFFB7834 /* MMC SDIO mode configuration */
242 #define OMAP_MMC_SYST    0xFFFB7838 /* MMC system test */
243 #define OMAP_MMC_REV     0xFFFB783C /* MMC module version */
244 #define OMAP_MMC_RSP0    0xFFFB7840 /* MMC command response 0 */
245 #define OMAP_MMC_RSP1    0xFFFB7844 /* MMC command response 1 */
246 #define OMAP_MMC_RSP2    0xFFFB7848 /* MMC command response 2 */
247 #define OMAP_MMC_RSP3    0xFFFB784C /* MMC command response 3 */
248 #define OMAP_MMC_RSP4    0xFFFB7850 /* MMC command response 4 */
249 #define OMAP_MMC_RSP5    0xFFFB7854 /* MMC command response 5 */
250 #define OMAP_MMC_RSP6    0xFFFB7858 /* MMC command response 6 */
251 #define OMAP_MMC_RSP7    0xFFFB785C /* MMC command response 4 */
252
253 /* MMC masks */
254
255 #define OMAP_MMC_END_OF_CMD     (1 << 0)        /* End of command phase */
256 #define OMAP_MMC_CARD_BUSY      (1 << 2)        /* Card enter busy state */
257 #define OMAP_MMC_BLOCK_RS       (1 << 3)        /* Block received/sent */
258 #define OMAP_MMC_EOF_BUSY       (1 << 4)        /* Card exit busy state */
259 #define OMAP_MMC_DATA_TIMEOUT   (1 << 5)        /* Data response time-out */
260 #define OMAP_MMC_DATA_CRC       (1 << 6)        /* Date CRC error */
261 #define OMAP_MMC_CMD_TIMEOUT    (1 << 7)        /* Command response time-out */
262 #define OMAP_MMC_CMD_CRC        (1 << 8)        /* Command CRC error */
263 #define OMAP_MMC_A_FULL         (1 << 10)       /* Buffer almost full */
264 #define OMAP_MMC_A_EMPTY        (1 << 11)       /* Buffer almost empty */
265 #define OMAP_MMC_OCR_BUSY       (1 << 12)       /* OCR busy */
266 #define OMAP_MMC_CARD_IRQ       (1 << 13)       /* Card IRQ received */
267 #define OMAP_MMC_CARD_ERR       (1 << 14)       /* Card status error in response */
268
269 /* 2.9.2 MPUI Interface Registers FFFE:C900 */
270
271 #define MPUI_CTRL_REG           (volatile __u32 *)(0xfffec900)
272 #define MPUI_DEBUG_ADDR         (volatile __u32 *)(0xfffec904)
273 #define MPUI_DEBUG_DATA         (volatile __u32 *)(0xfffec908)
274 #define MPUI_DEBUG_FLAG         (volatile __u16 *)(0xfffec90c)
275 #define MPUI_STATUS_REG         (volatile __u16 *)(0xfffec910)
276 #define MPUI_DSP_STATUS_REG     (volatile __u16 *)(0xfffec914)
277 #define MPUI_DSP_BOOT_CONFIG    (volatile __u16 *)(0xfffec918)
278 #define MPUI_DSP_API_CONFIG     (volatile __u16 *)(0xfffec91c)
279
280 /* 2.9.6 Traffic Controller Memory Interface Registers: */
281 #define OMAP_IMIF_PRIO_REG              0xfffecc00
282 #define OMAP_EMIFS_PRIO_REG             0xfffecc04
283 #define OMAP_EMIFF_PRIO_REG             0xfffecc08
284 #define OMAP_EMIFS_CONFIG_REG           0xfffecc0c
285 #define OMAP_EMIFS_CS0_CONFIG           0xfffecc10
286 #define OMAP_EMIFS_CS1_CONFIG           0xfffecc14
287 #define OMAP_EMIFS_CS2_CONFIG           0xfffecc18
288 #define OMAP_EMIFS_CS3_CONFIG           0xfffecc1c
289 #define OMAP_EMIFF_SDRAM_CONFIG         0xfffecc20
290 #define OMAP_EMIFF_MRS                  0xfffecc24
291 #define OMAP_TIMEOUT1                   0xfffecc28
292 #define OMAP_TIMEOUT2                   0xfffecc2c
293 #define OMAP_TIMEOUT3                   0xfffecc30
294 #define OMAP_ENDIANISM                  0xfffecc34
295
296 /* 2.9.10 EMIF Slow Interface Configuration Register (EMIFS_CONFIG_REG): */
297 #define OMAP_EMIFS_CONFIG_FR            (1 << 4)
298 #define OMAP_EMIFS_CONFIG_PDE           (1 << 3)
299 #define OMAP_EMIFS_CONFIG_PWD_EN        (1 << 2)
300 #define OMAP_EMIFS_CONFIG_BM            (1 << 1)
301 #define OMAP_EMIFS_CONFIG_WP            (1 << 0)
302
303 /*
304  * Memory chunk set aside for the Framebuffer in SRAM
305  */
306 #define SRAM_FRAMEBUFFER_MEMORY OMAP1510_SRAM_BASE
307
308
309 /*
310  * DMA
311  */
312
313 #define OMAP1510_DMA_BASE 0xFFFED800
314 #define OMAP_DMA_BASE     OMAP1510_DMA_BASE
315
316 /* Global Register selection */
317 #define NO_GLOBAL_DMA_ACCESS 0
318
319 /* Channel select field
320  * NOTE: all other channels are linear, chan0 is 0, chan1 is 1, etc...
321  */
322 #define LCD_CHANNEL 0xc
323
324 /* Register Select Field (LCD) */
325 #define DMA_LCD_CTRL            0
326 #define DMA_LCD_TOP_F1_L        1
327 #define DMA_LCD_TOP_F1_U        2
328 #define DMA_LCD_BOT_F1_L        3
329 #define DMA_LCD_BOT_F1_U        4
330
331 #define LCD_FRAME_MODE          (1<<0)
332 #define LCD_FRAME_IT_IE         (1<<1)
333 #define LCD_BUS_ERROR_IT_IE     (1<<2)
334 #define LCD_FRAME_1_IT_COND     (1<<3)
335 #define LCD_FRAME_2_IT_COND     (1<<4)
336 #define LCD_BUS_ERROR_IT_COND   (1<<5)
337 #define LCD_SOURCE_IMIF         (1<<6)
338
339 /*
340  * Real-Time Clock
341  */
342
343 #define RTC_SECONDS             (volatile __u8 *)(OMAP1510_RTC_BASE + 0x00)
344 #define RTC_MINUTES             (volatile __u8 *)(OMAP1510_RTC_BASE + 0x04)
345 #define RTC_HOURS               (volatile __u8 *)(OMAP1510_RTC_BASE + 0x08)
346 #define RTC_DAYS                (volatile __u8 *)(OMAP1510_RTC_BASE + 0x0C)
347 #define RTC_MONTHS              (volatile __u8 *)(OMAP1510_RTC_BASE + 0x10)
348 #define RTC_YEARS               (volatile __u8 *)(OMAP1510_RTC_BASE + 0x14)
349 #define RTC_CTRL                (volatile __u8 *)(OMAP1510_RTC_BASE + 0x40)
350
351
352 /* ---------------------------------------------------------------------------
353  *  OMAP1510 Interrupt Handlers
354  * ---------------------------------------------------------------------------
355  *
356  */
357 #define OMAP_IH1_BASE           0xfffecb00
358 #define OMAP_IH2_BASE           0xfffe0000
359 #define OMAP1510_ITR            0x0
360 #define OMAP1510_MASK           0x4
361
362 #define INTERRUPT_HANDLER_BASE   OMAP_IH1_BASE
363 #define INTERRUPT_INPUT_REGISTER OMAP1510_ITR
364 #define INTERRUPT_MASK_REGISTER  OMAP1510_MASK
365
366
367 /* ---------------------------------------------------------------------------
368  *  OMAP1510 TIMERS
369  * ---------------------------------------------------------------------------
370  *
371  */
372
373 #define OMAP1510_32kHz_TIMER_BASE 0xfffb9000
374
375 /* 32k Timer Registers */
376 #define TIMER32k_CR     0x08
377 #define TIMER32k_TVR    0x00
378 #define TIMER32k_TCR    0x04
379
380 /* 32k Timer Control Register definition */
381 #define TIMER32k_TSS    (1<<0)
382 #define TIMER32k_TRB    (1<<1)
383 #define TIMER32k_INT    (1<<2)
384 #define TIMER32k_ARL    (1<<3)
385
386 /* MPU Timer base addresses  */
387 #define OMAP1510_MPUTIMER_BASE  0xfffec500
388 #define OMAP1510_MPUTIMER_OFF   0x00000100
389
390 #define OMAP1510_TIMER1_BASE    0xfffec500
391 #define OMAP1510_TIMER2_BASE    0xfffec600
392 #define OMAP1510_TIMER3_BASE    0xfffec700
393
394 /* MPU Timer Registers */
395 #define CNTL_TIMER      0
396 #define LOAD_TIM        4
397 #define READ_TIM        8
398
399 /*  CNTL_TIMER register bits */
400 #define MPUTIM_FREE             (1<<6)
401 #define MPUTIM_CLOCK_ENABLE     (1<<5)
402 #define MPUTIM_PTV_MASK         (0x7<<PTV_BIT)
403 #define MPUTIM_PTV_BIT          2
404 #define MPUTIM_AR               (1<<1)
405 #define MPUTIM_ST               (1<<0)
406
407 /* ---------------------------------------------------------------------------
408  *  OMAP1510 GPIO (SHARED)
409  * ---------------------------------------------------------------------------
410  *
411  */
412 #define GPIO_DATA_INPUT_REG     (OMAP1510_GPIO_BASE + 0x0)
413 #define GPIO_DATA_OUTPUT_REG    (OMAP1510_GPIO_BASE + 0x4)
414 #define GPIO_DIR_CONTROL_REG    (OMAP1510_GPIO_BASE + 0x8)
415 #define GPIO_INT_CONTROL_REG    (OMAP1510_GPIO_BASE + 0xc)
416 #define GPIO_INT_MASK_REG       (OMAP1510_GPIO_BASE + 0x10)
417 #define GPIO_INT_STATUS_REG     (OMAP1510_GPIO_BASE + 0x14)
418 #define GPIO_PIN_CONTROL_REG    (OMAP1510_GPIO_BASE + 0x18)
419
420
421 /* ---------------------------
422  * OMAP1510 MPUIO (ARM only)
423  *----------------------------
424  */
425 #define OMAP1510_MPUIO_BASE     0xFFFB5000
426 #define MPUIO_DATA_INPUT_REG    (OMAP1510_MPUIO_BASE + 0x0)
427 #define MPUIO_DATA_OUTPUT_REG   (OMAP1510_MPUIO_BASE + 0x4)
428 #define MPUIO_DIR_CONTROL_REG   (OMAP1510_MPUIO_BASE + 0x8)
429
430 /* ---------------------------------------------------------------------------
431  *  OMAP1510 TIPB (only)
432  * ---------------------------------------------------------------------------
433  *
434  */
435 #define TIPB_PUBLIC_CNTL_BASE           0xfffed300
436 #define MPU_PUBLIC_TIPB_CNTL_REG        (TIPB_PUBLIC_CNTL_BASE + 0x8)
437 #define TIPB_PRIVATE_CNTL_BASE          0xfffeca00
438 #define MPU_PRIVATE_TIPB_CNTL_REG       (TIPB_PRIVATE_CNTL_BASE + 0x8)
439
440 /*
441  * ---------------------------------------------------------------------------
442  *  OMAP1510 Camera Interface
443  * ---------------------------------------------------------------------------
444  */
445 #define CAMERA_BASE             (IO_BASE + 0x6800)
446 #define CAM_CTRLCLOCK_REG       (CAMERA_BASE + 0x00)
447 #define CAM_IT_STATUS_REG       (CAMERA_BASE + 0x04)
448 #define CAM_MODE_REG            (CAMERA_BASE + 0x08)
449 #define CAM_STATUS_REG          (CAMERA_BASE + 0x0C)
450 #define CAM_CAMDATA_REG         (CAMERA_BASE + 0x10)
451 #define CAM_GPIO_REG            (CAMERA_BASE + 0x14)
452 #define CAM_PEAK_CTR_REG        (CAMERA_BASE + 0x18)
453
454 #if 0
455 #ifndef __ASSEMBLY__
456 typedef struct {
457         __u32 ctrlclock;
458         __u32 it_status;
459         __u32 mode;
460         __u32 status;
461         __u32 camdata;
462         __u32 gpio;
463         __u32 peak_counter;
464 } camera_regs_t;
465 #endif
466 #endif
467
468 /* CTRLCLOCK bit shifts */
469 #define FOSCMOD_BIT     0
470 #define FOSCMOD_MASK    (0x7 << FOSCMOD_BIT)
471 #define  FOSCMOD_12MHz  0x0
472 #define  FOSCMOD_6MHz   0x2
473 #define  FOSCMOD_9_6MHz 0x4
474 #define  FOSCMOD_24MHz  0x5
475 #define  FOSCMOD_8MHz   0x6
476 #define POLCLK          (1<<3)
477 #define CAMEXCLK_EN     (1<<4)
478 #define MCLK_EN         (1<<5)
479 #define DPLL_EN         (1<<6)
480 #define LCLK_EN         (1<<7)
481
482 /* IT_STATUS bit shifts */
483 #define V_UP            (1<<0)
484 #define V_DOWN          (1<<1)
485 #define H_UP            (1<<2)
486 #define H_DOWN          (1<<3)
487 #define FIFO_FULL       (1<<4)
488 #define DATA_XFER       (1<<5)
489
490 /* MODE bit shifts */
491 #define CAMOSC          (1<<0)
492 #define IMGSIZE_BIT     1
493 #define IMGSIZE_MASK    (0x3 << IMGSIZE_BIT)
494 #define  IMGSIZE_CIF    (0x0 << IMGSIZE_BIT)    /* 352x288 */
495 #define  IMGSIZE_QCIF   (0x1 << IMGSIZE_BIT)    /* 176x144 */
496 #define  IMGSIZE_VGA    (0x2 << IMGSIZE_BIT)    /* 640x480 */
497 #define  IMGSIZE_QVGA   (0x3 << IMGSIZE_BIT)    /* 320x240 */
498 #define ORDERCAMD       (1<<3)
499 #define EN_V_UP         (1<<4)
500 #define EN_V_DOWN       (1<<5)
501 #define EN_H_UP         (1<<6)
502 #define EN_H_DOWN       (1<<7)
503 #define EN_DMA          (1<<8)
504 #define THRESHOLD       (1<<9)
505 #define THRESHOLD_BIT   9
506 #define THRESHOLD_MASK  (0x7f<<9)
507 #define EN_NIRQ         (1<<16)
508 #define EN_FIFO_FULL    (1<<17)
509 #define RAZ_FIFO        (1<<18)
510
511 /* STATUS bit shifts */
512 #define VSTATUS         (1<<0)
513 #define HSTATUS         (1<<1)
514
515 /* GPIO bit shifts */
516 #define CAM_RST         (1<<0)
517
518
519 /*********************
520  * Watchdog timer.
521  *********************/
522 #define WDTIM_BASE      0xfffec800
523 #define WDTIM_CONTROL   (WDTIM_BASE+0x00)
524 #define WDTIM_LOAD      (WDTIM_BASE+0x04)
525 #define WDTIM_READ      (WDTIM_BASE+0x04)
526 #define WDTIM_MODE      (WDTIM_BASE+0x08)
527
528 /* Values to write to mode register to disable the watchdog function. */
529 #define DISABLE_SEQ1    0xF5
530 #define DISABLE_SEQ2    0xA0
531
532 /* WDTIM_CONTROL bit definitions. */
533 #define WDTIM_CONTROL_ST        BIT7
534
535
536 /* ---------------------------------------------------------------------------
537  *  Differentiating processor versions for those who care.
538  * ---------------------------------------------------------------------------
539  *
540  */
541 #define OMAP1509 0
542 #define OMAP1510 1
543
544 #define OMAP1510_ID_CODE_REG 0xfffed404
545
546 #ifndef __ASSEMBLY__
547 int cpu_type(void);
548 #endif
549
550 /*
551  * EVM Implementation Specifics.
552  *
553  * *** NOTE ***
554  * Any definitions in these files should be prefixed by an identifier -
555  * eg. OMAP1510P1_FLASH0_BASE .
556  *
557  */
558 #ifdef CONFIG_OMAP_INNOVATOR
559 #include "innovator.h"
560 #endif
561
562 #ifdef CONFIG_OMAP_1510P1
563 #include "omap1510p1.h"
564 #endif
565
566 /*****************************************************************************/
567
568 #define CLKGEN_RESET_BASE (0xfffece00)
569 #define ARM_CKCTL       (volatile __u16 *)(CLKGEN_RESET_BASE + 0x0)
570 #define ARM_IDLECT1     (volatile __u16 *)(CLKGEN_RESET_BASE + 0x4)
571 #define ARM_IDLECT2     (volatile __u16 *)(CLKGEN_RESET_BASE + 0x8)
572 #define ARM_EWUPCT      (volatile __u16 *)(CLKGEN_RESET_BASE + 0xC)
573 #define ARM_RSTCT1      (volatile __u16 *)(CLKGEN_RESET_BASE + 0x10)
574 #define ARM_RSTCT2      (volatile __u16 *)(CLKGEN_RESET_BASE + 0x14)
575 #define ARM_SYSST       (volatile __u16 *)(CLKGEN_RESET_BASE + 0x18)
576
577
578 #define CK_CLKIN        12 /* MHz */
579 #define CK_RATEF        1
580 #define CK_IDLEF        2
581 #define CK_ENABLEF      4
582 #define CK_SELECTF      8
583 #ifndef __ASSEMBLER__
584 #define CK_DPLL1        ((volatile __u16 *)0xfffecf00)
585 #else
586 #define CK_DPLL1 (0xfffecf00)
587 #endif
588 #define SETARM_IDLE_SHIFT
589
590 /* ARM_CKCTL bit shifts */
591 #define PERDIV          0
592 #define LCDDIV          2
593 #define ARMDIV          4
594 #define DSPDIV          6
595 #define TCDIV           8
596 #define DSPMMUDIV       10
597 #define ARM_TIMXO       12
598 #define EN_DSPCK        13
599 #define ARM_INTHCK_SEL  14 /* REVISIT -- where is this used? */
600
601 #define ARM_CKCTL_RSRVD_BIT15           (1 << 15)
602 #define ARM_CKCTL_ARM_INTHCK_SEL        (1 << 14)
603 #define ARM_CKCTL_EN_DSPCK              (1 << 13)
604 #define ARM_CKCTL_ARM_TIMXO             (1 << 12)
605 #define ARM_CKCTL_DSPMMU_DIV1           (1 << 11)
606 #define ARM_CKCTL_DSPMMU_DIV2           (1 << 10)
607 #define ARM_CKCTL_TCDIV1                (1 << 9)
608 #define ARM_CKCTL_TCDIV2                (1 << 8)
609 #define ARM_CKCTL_DSPDIV1               (1 << 7)
610 #define ARM_CKCTL_DSPDIV0               (1 << 6)
611 #define ARM_CKCTL_ARMDIV1               (1 << 5)
612 #define ARM_CKCTL_ARMDIV0               (1 << 4)
613 #define ARM_CKCTL_LCDDIV1               (1 << 3)
614 #define ARM_CKCTL_LCDDIV0               (1 << 2)
615 #define ARM_CKCTL_PERDIV1               (1 << 1)
616 #define ARM_CKCTL_PERDIV0               (1 << 0)
617
618 /* ARM_IDLECT1 bit shifts */
619 #define IDLWDT_ARM      0
620 #define IDLXORP_ARM     1
621 #define IDLPER_ARM      2
622 #define IDLLCD_ARM      3
623 #define IDLLB_ARM       4
624 #define IDLHSAB_ARM     5
625 #define IDLIF_ARM       6
626 #define IDLDPLL_ARM     7
627 #define IDLAPI_ARM      8
628 #define IDLTIM_ARM      9
629 #define SETARM_IDLE     11
630
631 /* ARM_IDLECT2 bit shifts */
632 #define EN_WDTCK        0
633 #define EN_XORPCK       1
634 #define EN_PERCK        2
635 #define EN_LCDCK        3
636 #define EN_LBCK         4
637 #define EN_HSABCK       5
638 #define EN_APICK        6
639 #define EN_TIMCK        7
640 #define DMACK_REQ       8
641 #define EN_GPIOCK       9
642 #define EN_LBFREECK     10
643
644 #define ARM_RSTCT1_SW_RST       (1 << 3)
645 #define ARM_RSTCT1_DSP_RST      (1 << 2)
646 #define ARM_RSTCT1_DSP_EN       (1 << 1)
647 #define ARM_RSTCT1_ARM_RST      (1 << 0)
648
649 /* ARM_RSTCT2 bit shifts */
650 #define EN_PER          0
651
652 #define ARM_SYSST_RSRVD_BIT15   (1 << 15)
653 #define ARM_SYSST_RSRVD_BIT14   (1 << 14)
654 #define ARM_SYSST_CLOCK_SELECT2 (1 << 13)
655 #define ARM_SYSST_CLOCK_SELECT1 (1 << 12)
656 #define ARM_SYSST_CLOCK_SELECT0 (1 << 11)
657 #define ARM_SYSST_RSRVD_BIT10   (1 << 10)
658 #define ARM_SYSST_RSRVD_BIT9    (1 << 9)
659 #define ARM_SYSST_RSRVD_BIT8    (1 << 8)
660 #define ARM_SYSST_RSRVD_BIT7    (1 << 7)
661 #define ARM_SYSST_IDLE_DSP      (1 << 6)
662 #define ARM_SYSST_POR           (1 << 5)
663 #define ARM_SYSST_EXT_RST       (1 << 4)
664 #define ARM_SYSST_ARM_MCRST     (1 << 3)
665 #define ARM_SYSST_ARM_WDRST     (1 << 2)
666 #define ARM_SYSST_GLOB_SWRST    (1 << 1)
667 #define ARM_SYSST_DSP_WDRST     (1 << 0)
668
669 /* Table 15-23. DPLL Control Registers: */
670 #define DPLL_CTL_REG            (volatile __u16 *)(0xfffecf00)
671
672 /* Table 15-24. Control Register (CTL_REG): */
673
674 #define DPLL_CTL_REG_IOB                (1 << 13)
675 #define DPLL_CTL_REG_PLL_MULT           Fld(5,0)
676
677 /*****************************************************************************/
678
679 /* OMAP INTERRUPT REGISTERS */
680 #define IRQ_ITR                 0x00
681 #define IRQ_MIR                 0x04
682 #define IRQ_SIR_IRQ             0x10
683 #define IRQ_SIR_FIQ             0x14
684 #define IRQ_CONTROL_REG         0x18
685 #define IRQ_ISR                 0x9c
686 #define IRQ_ILR0                0x1c
687
688 #define REG_IHL1_MIR  (OMAP_IH1_BASE+IRQ_MIR)
689 #define REG_IHL2_MIR  (OMAP_IH2_BASE+IRQ_MIR)
690
691 /* INTERRUPT LEVEL REGISTER BITS */
692 #define ILR_PRIORITY_MASK       (0x3c)
693 #define ILR_PRIORITY_SHIFT      (2)
694 #define ILR_LEVEL_TRIGGER       (1<<1)
695 #define ILR_FIQ                 (1<<0)
696
697 #define IRQ_LEVEL_INT           1
698 #define IRQ_EDGE_INT            0