blob: 035fdc9dbdb03ebb50e88873a67232707d4fbc50 [file] [log] [blame]
Linus Walleijfa594402009-04-23 10:19:58 +01001/*
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
Adam Buchbinder6070d812009-12-04 15:47:01 -05009 * some block definitions for core devices like the timer.
Linus Walleijfa594402009-04-23 10:19:58 +010010 * 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
Linus Walleij6075e9d2011-06-07 09:40:51 +010021#ifdef __ASSEMBLER__
22#define IOMEM(a) (a)
23#else
24#define IOMEM(a) (void __iomem *) a
25#endif
26
Linus Walleijfa594402009-04-23 10:19:58 +010027/* NAND Flash CS0 */
28#define U300_NAND_CS0_PHYS_BASE 0x80000000
Linus Walleijfa594402009-04-23 10:19:58 +010029
30/* NFIF */
31#define U300_NAND_IF_PHYS_BASE 0x9f800000
Linus Walleijfa594402009-04-23 10:19:58 +010032
33/* AHB Peripherals */
34#define U300_AHB_PER_PHYS_BASE 0xa0000000
35#define U300_AHB_PER_VIRT_BASE 0xff010000
36
37/* FAST Peripherals */
38#define U300_FAST_PER_PHYS_BASE 0xc0000000
39#define U300_FAST_PER_VIRT_BASE 0xff020000
40
41/* SLOW Peripherals */
42#define U300_SLOW_PER_PHYS_BASE 0xc0010000
43#define U300_SLOW_PER_VIRT_BASE 0xff000000
44
45/* Boot ROM */
46#define U300_BOOTROM_PHYS_BASE 0xffff0000
47#define U300_BOOTROM_VIRT_BASE 0xffff0000
48
49/* SEMI config base */
50#ifdef CONFIG_MACH_U300_BS335
51#define U300_SEMI_CONFIG_BASE 0x2FFE0000
52#else
53#define U300_SEMI_CONFIG_BASE 0x30000000
54#endif
55
56/*
Linus Walleijfa594402009-04-23 10:19:58 +010057 * AHB peripherals
58 */
59
60/* AHB Peripherals Bridge Controller */
61#define U300_AHB_BRIDGE_BASE (U300_AHB_PER_PHYS_BASE+0x0000)
62
63/* Vectored Interrupt Controller 0, servicing 32 interrupts */
64#define U300_INTCON0_BASE (U300_AHB_PER_PHYS_BASE+0x1000)
Linus Walleij6075e9d2011-06-07 09:40:51 +010065#define U300_INTCON0_VBASE IOMEM(U300_AHB_PER_VIRT_BASE+0x1000)
Linus Walleijfa594402009-04-23 10:19:58 +010066
67/* Vectored Interrupt Controller 1, servicing 32 interrupts */
68#define U300_INTCON1_BASE (U300_AHB_PER_PHYS_BASE+0x2000)
Linus Walleij6075e9d2011-06-07 09:40:51 +010069#define U300_INTCON1_VBASE IOMEM(U300_AHB_PER_VIRT_BASE+0x2000)
Linus Walleijfa594402009-04-23 10:19:58 +010070
71/* Memory Stick Pro (MSPRO) controller */
72#define U300_MSPRO_BASE (U300_AHB_PER_PHYS_BASE+0x3000)
73
74/* EMIF Configuration Area */
75#define U300_EMIF_CFG_BASE (U300_AHB_PER_PHYS_BASE+0x4000)
76
77
78/*
79 * FAST peripherals
80 */
81
82/* FAST bridge control */
83#define U300_FAST_BRIDGE_BASE (U300_FAST_PER_PHYS_BASE+0x0000)
84
85/* MMC/SD controller */
86#define U300_MMCSD_BASE (U300_FAST_PER_PHYS_BASE+0x1000)
87
88/* PCM I2S0 controller */
89#define U300_PCM_I2S0_BASE (U300_FAST_PER_PHYS_BASE+0x2000)
90
91/* PCM I2S1 controller */
92#define U300_PCM_I2S1_BASE (U300_FAST_PER_PHYS_BASE+0x3000)
93
94/* I2C0 controller */
95#define U300_I2C0_BASE (U300_FAST_PER_PHYS_BASE+0x4000)
96
97/* I2C1 controller */
98#define U300_I2C1_BASE (U300_FAST_PER_PHYS_BASE+0x5000)
99
100/* SPI controller */
101#define U300_SPI_BASE (U300_FAST_PER_PHYS_BASE+0x6000)
102
103#ifdef CONFIG_MACH_U300_BS335
104/* Fast UART1 on U335 only */
105#define U300_UART1_BASE (U300_SLOW_PER_PHYS_BASE+0x7000)
106#endif
107
108/*
109 * SLOW peripherals
110 */
111
112/* SLOW bridge control */
113#define U300_SLOW_BRIDGE_BASE (U300_SLOW_PER_PHYS_BASE)
114
115/* SYSCON */
116#define U300_SYSCON_BASE (U300_SLOW_PER_PHYS_BASE+0x1000)
Linus Walleij6075e9d2011-06-07 09:40:51 +0100117#define U300_SYSCON_VBASE IOMEM(U300_SLOW_PER_VIRT_BASE+0x1000)
Linus Walleijfa594402009-04-23 10:19:58 +0100118
119/* Watchdog */
120#define U300_WDOG_BASE (U300_SLOW_PER_PHYS_BASE+0x2000)
121
122/* UART0 */
123#define U300_UART0_BASE (U300_SLOW_PER_PHYS_BASE+0x3000)
124
125/* APP side special timer */
126#define U300_TIMER_APP_BASE (U300_SLOW_PER_PHYS_BASE+0x4000)
Linus Walleij6075e9d2011-06-07 09:40:51 +0100127#define U300_TIMER_APP_VBASE IOMEM(U300_SLOW_PER_VIRT_BASE+0x4000)
Linus Walleijfa594402009-04-23 10:19:58 +0100128
129/* Keypad */
130#define U300_KEYPAD_BASE (U300_SLOW_PER_PHYS_BASE+0x5000)
131
132/* GPIO */
133#define U300_GPIO_BASE (U300_SLOW_PER_PHYS_BASE+0x6000)
134
135/* RTC */
136#define U300_RTC_BASE (U300_SLOW_PER_PHYS_BASE+0x7000)
137
138/* Bus tracer */
139#define U300_BUSTR_BASE (U300_SLOW_PER_PHYS_BASE+0x8000)
140
141/* Event handler (hardware queue) */
142#define U300_EVHIST_BASE (U300_SLOW_PER_PHYS_BASE+0x9000)
143
144/* Genric Timer */
145#define U300_TIMER_BASE (U300_SLOW_PER_PHYS_BASE+0xa000)
146
147/* PPM */
148#define U300_PPM_BASE (U300_SLOW_PER_PHYS_BASE+0xb000)
149
150
151/*
152 * REST peripherals
153 */
154
155/* ISP (image signal processor) is only available in U335 */
156#ifdef CONFIG_MACH_U300_BS335
157#define U300_ISP_BASE (0xA0008000)
158#endif
159
160/* DMA Controller base */
161#define U300_DMAC_BASE (0xC0020000)
162
163/* MSL Base */
164#define U300_MSL_BASE (0xc0022000)
165
166/* APEX Base */
167#define U300_APEX_BASE (0xc0030000)
168
169/* Video Encoder Base */
170#ifdef CONFIG_MACH_U300_BS335
171#define U300_VIDEOENC_BASE (0xc0080000)
172#else
173#define U300_VIDEOENC_BASE (0xc0040000)
174#endif
175
176/* XGAM Base */
177#define U300_XGAM_BASE (0xd0000000)
178
179/*
180 * Virtual accessor macros for static devices
181 */
182
Linus Walleijfa594402009-04-23 10:19:58 +0100183#endif