summaryrefslogtreecommitdiff
path: root/arch/arm/mach-mx28/include/mach/mx28.h
blob: 097253266709c077e0af089611b678d798b27b49 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
/*
 * Copyright (C) 2009-2010 Freescale Semiconductor, Inc. All Rights Reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */

#ifndef __ASM_ARCH_MACH_MX28_H__
#define __ASM_ARCH_MACH_MX28_H__

#include <asm/sizes.h>

#define MX28_SOC_IO_PHYS_BASE	0x80000000
#define MX28_SOC_IO_VIRT_BASE	0xF0000000
#define MX28_SOC_IO_AREA_SIZE	SZ_1M

/* Virtual address where OCRAM is mapped */
#define MX28_OCRAM_PHBASE   0x00000000
#ifdef __ASSEMBLER__
#define MX28_OCRAM_BASE     0xf1000000
#else
#define MX28_OCRAM_BASE     (void __iomem *)0xf1000000
#endif
#define MX28_OCRAM_SIZE     (128 * SZ_1K)


#define ICOLL_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x000000)
#define HSADC_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x002000)
#define APBH_DMA_PHYS_ADDR	(MX28_SOC_IO_PHYS_BASE + 0x004000)
#define PERFMON_PHYS_ADDR	(MX28_SOC_IO_PHYS_BASE + 0x006000)
#define BCH_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x00A000)
#define GPMI_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x00C000)
#define SSP0_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x010000)
#define SSP1_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x012000)
#define SSP2_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x014000)
#define SSP3_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x016000)
#define PINCTRL_PHYS_ADDR	(MX28_SOC_IO_PHYS_BASE + 0x018000)
#define DIGCTL_PHYS_ADDR	(MX28_SOC_IO_PHYS_BASE + 0x01C000)
#define ETM_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x022000)
#define APBX_DMA_PHYS_ADDR	(MX28_SOC_IO_PHYS_BASE + 0x024000)
#define DCP_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x028000)
#define PXP_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x02A000)
#define OCOTP_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x02C000)
#define AXI_AHB0_PHYS_ADDR	(MX28_SOC_IO_PHYS_BASE + 0x02E000)
#define LCDIF_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x030000)
#define CAN0_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x032000)
#define CAN1_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x034000)
#define SIMDBG_PHYS_ADDR	(MX28_SOC_IO_PHYS_BASE + 0x03C000)
#define SIMGPMISEL_PHYS_ADDR	(MX28_SOC_IO_PHYS_BASE + 0x03C200)
#define SIMSSPSEL_PHYS_ADDR	(MX28_SOC_IO_PHYS_BASE + 0x03C300)
#define SIMMEMSEL_PHYS_ADDR	(MX28_SOC_IO_PHYS_BASE + 0x03C400)
#define GPIOMON_PHYS_ADDR	(MX28_SOC_IO_PHYS_BASE + 0x03C500)
#define SIMENET_PHYS_ADDR	(MX28_SOC_IO_PHYS_BASE + 0x03C700)
#define ARMJTAG_PHYS_ADDR	(MX28_SOC_IO_PHYS_BASE + 0x03C800)
#define CLKCTRL_PHYS_ADDR	(MX28_SOC_IO_PHYS_BASE + 0x040000)
#define SAIF0_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x042000)
#define POWER_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x044000)
#define SAIF1_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x046000)
#define LRADC_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x050000)
#define SPDIF_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x054000)
#define RTC_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x056000)
#define I2C0_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x058000)
#define I2C1_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x05A000)
#define PWM_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x064000)
#define TIMROT_PHYS_ADDR	(MX28_SOC_IO_PHYS_BASE + 0x068000)
#define AUART0_PHYS_ADDR	(MX28_SOC_IO_PHYS_BASE + 0x06A000)
#define AUART1_PHYS_ADDR	(MX28_SOC_IO_PHYS_BASE + 0x06C000)
#define AUART2_PHYS_ADDR	(MX28_SOC_IO_PHYS_BASE + 0x06E000)
#define AUART3_PHYS_ADDR	(MX28_SOC_IO_PHYS_BASE + 0x070000)
#define AUART4_PHYS_ADDR	(MX28_SOC_IO_PHYS_BASE + 0x072000)
#define DUART_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x074000)
#define USBPHY0_PHYS_ADDR	(MX28_SOC_IO_PHYS_BASE + 0x07C000)
#define USBPHY1_PHYS_ADDR	(MX28_SOC_IO_PHYS_BASE + 0x07E000)
#define USBCTRL0_PHYS_ADDR	(MX28_SOC_IO_PHYS_BASE + 0x080000)
#define USBCTRL1_PHYS_ADDR	(MX28_SOC_IO_PHYS_BASE + 0x090000)
#define DFLPT_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x0C0000)
#define DRAM_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x0E0000)
#define ENET_PHYS_ADDR		(MX28_SOC_IO_PHYS_BASE + 0x0F0000)

/* IRQ Definitions */
#define IRQ_BATT_BRNOUT			0
#define IRQ_VDDD_BRNOUT			1
#define IRQ_VDDIO_BRNOUT		2
#define IRQ_VDDA_BRNOUT			3
#define IRQ_VDD5V_DROOP			4
#define IRQ_DCDC4P2_BRNOUT		5
#define IRQ_VDD5V			6
#define IRQ_RESV7			7
#define IRQ_CAN0			8
#define IRQ_CAN1			9
#define IRQ_LRADC_TOUCH			10
#define IRQ_RESV11			11
#define IRQ_RESV12			12
#define IRQ_HSADC			13
#define IRQ_IRADC_THRESH0		14
#define IRQ_IRADC_THRESH1		15
#define IRQ_LRADC_CH0			16
#define IRQ_LRADC_CH1			17
#define IRQ_LRADC_CH2			18
#define IRQ_LRADC_CH3			19
#define IRQ_LRADC_CH4			20
#define IRQ_LRADC_CH5			21
#define IRQ_LRADC_CH6			22
#define IRQ_LRADC_CH7			23
#define IRQ_LRADC_BUTTON0		24
#define IRQ_LRADC_BUTTON1		25
#define IRQ_RESV26			26
#define IRQ_PERFMON			27
#define IRQ_RTC_1MSEC			28
#define IRQ_RTC_ALARM			29
#define IRQ_RESV30			30
#define IRQ_COMMS			31
#define IRQ_EMI_ERR			32
#define IRQ_RESV33			33
#define IRQ_RESV34			34
#define IRQ_RESV35			35
#define IRQ_RESV36			36
#define IRQ_RESV37			37
#define IRQ_LCDIF			38
#define IRQ_PXP				39
#define IRQ_RESV40			40
#define IRQ_BCH				41
#define IRQ_GPMI			42
#define IRQ_RESV43			43
#define IRQ_RESV44			44
#define IRQ_SPDIF_ERROR			45
#define IRQ_RESV46			46
#define IRQ_DUART			47
#define IRQ_TIMER0			48
#define IRQ_TIMER1			49
#define IRQ_TIMER2			50
#define IRQ_TIMER3			51
#define IRQ_DCP_VMI			52
#define IRQ_DCP				53
#define IRQ_DCP_SECURE			54
#define IRQ_RESV55			55
#define IRQ_RESV56			56
#define IRQ_RESV57			57
#define IRQ_SAIF1			58
#define IRQ_SAIF0			59
#define IRQ_RESV60			60
#define IRQ_RESV61			61
#define IRQ_RESV62			62
#define IRQ_RESV63			63
#define IRQ_RESV64			64
#define IRQ_RESV65			65
#define IRQ_SPDIF_DMA			66
#define IRQ_RESV67			67
#define IRQ_I2C0_DMA			68
#define IRQ_I2C1_DMA			69
#define IRQ_AUART0_RX_DMA		70
#define IRQ_AUART0_TX_DMA		71
#define IRQ_AUART1_RX_DMA		72
#define IRQ_AUART1_TX_DMA		73
#define IRQ_AUART2_RX_DMA		74
#define IRQ_AUART2_TX_DMA		75
#define IRQ_AUART3_RX_DMA		76
#define IRQ_AUART3_TX_DMA		77
#define IRQ_AUART4_RX_DMA		78
#define IRQ_AUART4_TX_DMA		79
#define IRQ_SAIF0_DMA			80
#define IRQ_SAIF1_DMA			81
#define IRQ_SSP0_DMA			82
#define IRQ_SSP1_DMA			83
#define IRQ_SSP2_DMA			84
#define IRQ_SSP3_DMA			85
#define IRQ_LCDIF_DMA			86
#define IRQ_HSADC_DMA			87
#define IRQ_GPMI_DMA			88
#define IRQ_DIGCTL_DEBUG_TRAP		89
#define IRQ_RESV90			90
#define IRQ_RESV91			91
#define IRQ_USB1			92
#define IRQ_USB0			93
#define IRQ_USB1_WAKEUP			94
#define IRQ_USB0_WAKEUP			95
#define IRQ_SSP0			96
#define IRQ_SSP1			97
#define IRQ_SSP2			98
#define IRQ_SSP3			99
#define IRQ_ENET_SWI			100
#define IRQ_ENET_MAC0			101
#define IRQ_ENET_MAC1			102
#define IRQ_ENET_MAC0_1588		103
#define IRQ_ENET_MAC1_1588		104
#define IRQ_RESV105			105
#define IRQ_RESV106			106
#define IRQ_RESV107			107
#define IRQ_RESV108			108
#define IRQ_RESV109			109
#define IRQ_I2C1_ERROR			110
#define IRQ_I2C0_ERROR			111
#define IRQ_AUART0			112
#define IRQ_AUART1			113
#define IRQ_AUART2			114
#define IRQ_AUART3			115
#define IRQ_AUART4			116
#define IRQ_RESV117			117
#define IRQ_RESV118			118
#define IRQ_RESV119			119
#define IRQ_RESV120			120
#define IRQ_RESV121			121
#define IRQ_RESV122			122
#define IRQ_GPIO4			123
#define IRQ_GPIO3			124
#define IRQ_GPIO2			125
#define IRQ_GPIO1			126
#define IRQ_GPIO0			127

#define ARCH_NR_IRQS		128

/* On i.MX28, all interrupt sources can be configured as FIQ */
#define FIQ_START		IRQ_BATT_BRNOUT

#define MX28_SOC_IO_ADDRESS(x) \
	((x) - MX28_SOC_IO_PHYS_BASE + MX28_SOC_IO_VIRT_BASE)

#ifdef __ASSEMBLER__
#define IO_ADDRESS(x)		\
		MX28_SOC_IO_ADDRESS(x)
#else
#define IO_ADDRESS(x)		\
	(void __force __iomem *) 	\
	(((x) >= (unsigned long)MX28_SOC_IO_PHYS_BASE) && \
	 ((x) < (unsigned long)MX28_SOC_IO_PHYS_BASE + \
				MX28_SOC_IO_AREA_SIZE) ? \
		MX28_SOC_IO_ADDRESS(x) : 0xDEADBEEF)
#endif

#ifdef CONFIG_MXS_EARLY_CONSOLE
#define MXS_DEBUG_CONSOLE_PHYS DUART_PHYS_ADDR
#define MXS_DEBUG_CONSOLE_VIRT IO_ADDRESS(DUART_PHYS_ADDR)
#endif
#endif /* __ASM_ARCH_MACH_MX28_H__ */