ed08dc30504332578c006fa94c7f619ee4084fa7
[linux-3.10.git] / arch / arm / mach-tegra / iomap.h
1 /*
2  * Copyright (C) 2010 Google, Inc.
3  * Copyright (C) 2011 NVIDIA Corporation.
4  *
5  * Author:
6  *      Colin Cross <ccross@google.com>
7  *      Erik Gilling <konkers@google.com>
8  *
9  * Copyright (C) 2010-2011 NVIDIA Corporation
10  *
11  * This software is licensed under the terms of the GNU General Public
12  * License version 2, as published by the Free Software Foundation, and
13  * may be copied, distributed, and modified under those terms.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU General Public License for more details.
19  *
20  */
21
22 #ifndef __MACH_TEGRA_IOMAP_H
23 #define __MACH_TEGRA_IOMAP_H
24
25 #include <asm/sizes.h>
26
27 #if defined(CONFIG_ARCH_TEGRA_2x_SOC)
28 #define TEGRA_NOR_FLASH_BASE            0xD0000000
29 #define TEGRA_NOR_FLASH_SIZE            SZ_256M
30 #else
31 #define TEGRA_NOR_FLASH_BASE            0x48000000
32 #define TEGRA_NOR_FLASH_SIZE            SZ_128M
33 #endif
34
35 #if defined(CONFIG_ARCH_TEGRA_2x_SOC)
36 #define TEGRA_DRAM_BASE                 0x00000000
37 #define TEGRA_DRAM_SIZE                 SZ_1G           /* Maximum size */
38 #else
39 #define TEGRA_DRAM_BASE                 0x80000000
40 #define TEGRA_DRAM_SIZE                 (SZ_2G - SZ_1M) /* Maximum size */
41 #endif
42
43 #define TEGRA_IRAM_BASE                 0x40000000
44 #define TEGRA_IRAM_SIZE                 SZ_256K
45
46 /* First 1K of IRAM is reserved for cpu reset handler. */
47 #define TEGRA_RESET_HANDLER_BASE        TEGRA_IRAM_BASE
48 #define TEGRA_RESET_HANDLER_SIZE        SZ_1K
49
50 #define TEGRA_HOST1X_BASE               0x50000000
51 #define TEGRA_HOST1X_SIZE               0x24000
52
53 #define TEGRA_ARM_PERIF_BASE            0x50040000
54 #define TEGRA_ARM_PERIF_SIZE            SZ_8K
55
56 #define TEGRA_MSELECT_BASE              0x50042000
57 #define TEGRA_MSELECT_SIZE              80
58
59 #if defined(CONFIG_ARCH_TEGRA_2x_SOC) || defined(CONFIG_ARCH_TEGRA_3x_SOC)
60
61 #define TEGRA_ARM_PL310_BASE            0x50043000
62 #define TEGRA_ARM_PL310_SIZE            SZ_4K
63
64 #endif
65
66 #define TEGRA_ARM_INT_DIST_BASE         0x50041000
67 #define TEGRA_ARM_INT_DIST_SIZE         SZ_4K
68
69 #define TEGRA_MPE_BASE                  0x54040000
70 #define TEGRA_MPE_SIZE                  SZ_256K
71
72 #define TEGRA_VI_BASE                   0x54080000
73 #define TEGRA_VI_SIZE                   SZ_256K
74
75 #define TEGRA_ISP_BASE                  0x54100000
76 #define TEGRA_ISP_SIZE                  SZ_256K
77
78 #define TEGRA_DISPLAY_BASE              0x54200000
79 #define TEGRA_DISPLAY_SIZE              SZ_256K
80
81 #define TEGRA_DISPLAY2_BASE             0x54240000
82 #define TEGRA_DISPLAY2_SIZE             SZ_256K
83
84 #define TEGRA_HDMI_BASE                 0x54280000
85 #define TEGRA_HDMI_SIZE                 SZ_256K
86
87 #define TEGRA_DSI_BASE                  0x54300000
88 #define TEGRA_DSI_SIZE                  SZ_256K
89
90 #define TEGRA_DSIB_BASE                 0x54400000
91 #define TEGRA_DSIB_SIZE                 SZ_256K
92
93 #if defined(CONFIG_ARCH_TEGRA_2x_SOC)
94
95 #define TEGRA_GART_BASE                 0x58000000
96 #define TEGRA_GART_SIZE                 SZ_32M
97
98 #else
99
100 #define TEGRA_SMMU_BASE_TEGRA3_A01      0xe0000000
101 #define TEGRA_SMMU_SIZE_TEGRA3_A01      SZ_256M
102 #define TEGRA_SMMU_BASE                 0x00001000
103 #define TEGRA_SMMU_SIZE                 (SZ_1G - SZ_4K * 2)
104
105 #endif
106
107 #define TEGRA_RES_SEMA_SIZE             SZ_4K
108 #define TEGRA_RES_SEMA_BASE             0x60001000
109
110 #define TEGRA_ARB_SEMA_BASE             0x60002000
111 #define TEGRA_ARB_SEMA_SIZE             SZ_4K
112
113 #define TEGRA_PRIMARY_ICTLR_BASE        0x60004000
114 #define TEGRA_PRIMARY_ICTLR_SIZE        64
115
116 #define TEGRA_ARBGNT_ICTLR_BASE         0x60004040
117 #define TEGRA_ARBGNT_ICTLR_SIZE         192
118
119 #define TEGRA_SECONDARY_ICTLR_BASE      0x60004100
120 #define TEGRA_SECONDARY_ICTLR_SIZE      64
121
122 #define TEGRA_TERTIARY_ICTLR_BASE       0x60004200
123 #define TEGRA_TERTIARY_ICTLR_SIZE       64
124
125 #define TEGRA_QUATERNARY_ICTLR_BASE     0x60004300
126 #define TEGRA_QUATERNARY_ICTLR_SIZE     64
127
128 #define TEGRA_QUINARY_ICTLR_BASE        0x60004400
129 #define TEGRA_QUINARY_ICTLR_SIZE        SZ_64
130
131 #define TEGRA_TMR1_BASE                 0x60005000
132 #define TEGRA_TMR1_SIZE                 SZ_8
133
134 #define TEGRA_TMR2_BASE                 0x60005008
135 #define TEGRA_TMR2_SIZE                 SZ_8
136
137 #define TEGRA_TMRUS_BASE                0x60005010
138 #define TEGRA_TMRUS_SIZE                64
139
140 #define TEGRA_TMR3_BASE                 0x60005050
141 #define TEGRA_TMR3_SIZE                 SZ_8
142
143 #define TEGRA_TMR4_BASE                 0x60005058
144 #define TEGRA_TMR4_SIZE                 SZ_8
145
146 #ifndef CONFIG_ARCH_TEGRA_2x_SOC
147
148 #define TEGRA_TMR5_BASE                 0x60005060
149 #define TEGRA_TMR5_SIZE                 8
150
151 #define TEGRA_TMR6_BASE                 0x60005068
152 #define TEGRA_TMR6_SIZE                 8
153
154 #define TEGRA_TMR7_BASE                 0x60005070
155 #define TEGRA_TMR7_SIZE                 8
156
157 #define TEGRA_TMR8_BASE                 0x60005078
158 #define TEGRA_TMR8_SIZE                 8
159
160 #define TEGRA_TMR9_BASE                 0x60005080
161 #define TEGRA_TMR9_SIZE                 8
162
163 #define TEGRA_TMR10_BASE                0x60005088
164 #define TEGRA_TMR10_SIZE                8
165
166 #define TEGRA_WDT0_BASE                 0x60005100
167 #define TEGRA_WDT0_SIZE                 32
168
169 #define TEGRA_WDT1_BASE                 0x60005120
170 #define TEGRA_WDT1_SIZE                 32
171
172 #define TEGRA_WDT2_BASE                 0x60005140
173 #define TEGRA_WDT2_SIZE                 32
174
175 #define TEGRA_WDT3_BASE                 0x60005160
176 #define TEGRA_WDT3_SIZE                 32
177
178 #define TEGRA_WDT4_BASE                 0x60005180
179 #define TEGRA_WDT4_SIZE                 32
180
181 #endif
182
183 #define TEGRA_CLK_RESET_BASE            0x60006000
184 #define TEGRA_CLK_RESET_SIZE            SZ_4K
185
186 #define TEGRA_FLOW_CTRL_BASE            0x60007000
187 #define TEGRA_FLOW_CTRL_SIZE            20
188
189 #define TEGRA_AHB_DMA_BASE              0x60008000
190 #define TEGRA_AHB_DMA_SIZE              SZ_4K
191
192 #define TEGRA_AHB_DMA_CH0_BASE          0x60009000
193 #define TEGRA_AHB_DMA_CH0_SIZE          32
194
195 #define TEGRA_APB_DMA_BASE              0x6000A000
196 #define TEGRA_APB_DMA_SIZE              SZ_4K
197
198 #define TEGRA_APB_DMA_CH0_BASE          0x6000B000
199 #define TEGRA_APB_DMA_CH0_SIZE          32
200
201 #ifndef CONFIG_ARCH_TEGRA_2x_SOC
202
203 #define TEGRA_AHB_ARB_BASE              0x6000C000
204 #define TEGRA_AHB_ARB_SIZE              768     /* Overlaps with GISMO */
205
206 #endif
207
208 #define TEGRA_AHB_GIZMO_BASE            0x6000C004
209 #define TEGRA_AHB_GIZMO_SIZE            0x10C
210
211 #define TEGRA_SB_BASE                   0x6000C200
212 #define TEGRA_SB_SIZE                   256
213
214 #define TEGRA_STATMON_BASE              0x6000C400
215 #define TEGRA_STATMON_SIZE              SZ_1K
216
217 #if !defined(CONFIG_ARCH_TEGRA_2x_SOC)
218
219 #define TEGRA_ACTMON_BASE               0x6000C800
220 #define TEGRA_ACTMON_SIZE               SZ_1K
221
222 #endif
223
224 #define TEGRA_GPIO_BASE                 0x6000D000
225 #define TEGRA_GPIO_SIZE                 SZ_4K
226
227 #define TEGRA_EXCEPTION_VECTORS_BASE    0x6000F000
228 #define TEGRA_EXCEPTION_VECTORS_SIZE    SZ_4K
229
230 #define TEGRA_BSEA_BASE                 0x60010000
231 #define TEGRA_BSEA_SIZE                 (SZ_4K + SZ_512)
232
233 #define TEGRA_VDE_BASE                  0x6001A000
234 #define TEGRA_VDE_SIZE                  0x3c00
235
236 #define TEGRA_APB_MISC_BASE             0x70000000
237 #define TEGRA_APB_MISC_SIZE             SZ_4K
238
239 #define TEGRA_APB_MISC_DAS_BASE         0x70000c00
240 #define TEGRA_APB_MISC_DAS_SIZE         SZ_128
241
242 #if defined(CONFIG_ARCH_TEGRA_2x_SOC)
243
244 #define TEGRA_AC97_BASE                 0x70002000
245 #define TEGRA_AC97_SIZE                 SZ_512
246
247 #define TEGRA_SPDIF_BASE                0x70002400
248 #define TEGRA_SPDIF_SIZE                SZ_512
249
250 #define TEGRA_I2S1_BASE                 0x70002800
251 #define TEGRA_I2S1_SIZE                 SZ_256
252
253 #define TEGRA_I2S2_BASE                 0x70002A00
254 #define TEGRA_I2S2_SIZE                 SZ_256
255
256 #define TEGRA_PCIE_BASE                 0x80000000
257 #define TEGRA_PCIE_SIZE                 SZ_1G
258
259 #else
260
261 #define TEGRA_PCIE_BASE                 0x00000000
262 #define TEGRA_PCIE_SIZE                 SZ_1G
263
264 #if defined(CONFIG_ARCH_TEGRA_3x_SOC)
265
266 #define TEGRA_TSENSOR_BASE              0x70014000
267 #define TEGRA_TSENSOR_SIZE              SZ_4K
268
269 #endif
270
271 #define TEGRA_HDA_BASE                  0x70030000
272 #define TEGRA_HDA_SIZE                  SZ_64K
273
274 #define TEGRA_AUDIO_CLUSTER_BASE        0x70080000
275 #define TEGRA_AUDIO_CLUSTER_SIZE        SZ_4K
276
277 #define TEGRA_APBIF0_BASE               TEGRA_AUDIO_CLUSTER_BASE
278 #define TEGRA_APBIF0_SIZE               32
279
280 #define TEGRA_APBIF1_BASE               0x70080020
281 #define TEGRA_APBIF1_SIZE               32
282
283 #define TEGRA_APBIF2_BASE               0x70080040
284 #define TEGRA_APBIF2_SIZE               32
285
286 #define TEGRA_APBIF3_BASE               0x70080060
287 #define TEGRA_APBIF3_SIZE               32
288
289 #define TEGRA_AHUB_BASE                 0x70080200
290 #define TEGRA_AHUB_SIZE                 SZ_256
291
292 #define TEGRA_I2S0_BASE                 0x70080300
293 #define TEGRA_I2S0_SIZE                 SZ_256
294
295 #define TEGRA_I2S1_BASE                 0x70080400
296 #define TEGRA_I2S1_SIZE                 SZ_256
297
298 #define TEGRA_I2S2_BASE                 0x70080500
299 #define TEGRA_I2S2_SIZE                 SZ_256
300
301 #define TEGRA_I2S3_BASE                 0x70080600
302 #define TEGRA_I2S3_SIZE                 SZ_256
303
304 #define TEGRA_I2S4_BASE                 0x70080700
305 #define TEGRA_I2S4_SIZE                 SZ_256
306
307 #define TEGRA_DAM0_BASE                 0x70080800
308 #define TEGRA_DAM0_SIZE                 SZ_256
309
310 #define TEGRA_DAM1_BASE                 0x70080900
311 #define TEGRA_DAM1_SIZE                 SZ_256
312
313 #define TEGRA_DAM2_BASE                 0x70080A00
314 #define TEGRA_DAM2_SIZE                 SZ_256
315
316 #define TEGRA_SPDIF_BASE                0x70080B00
317 #define TEGRA_SPDIF_SIZE                SZ_256
318
319 #define TEGRA_PCIE_BASE                 0x00000000
320 #define TEGRA_PCIE_SIZE                 SZ_1G
321
322 #endif
323
324 #define TEGRA_UARTA_BASE                0x70006000
325 #define TEGRA_UARTA_SIZE                64
326
327 #define TEGRA_UARTB_BASE                0x70006040
328 #define TEGRA_UARTB_SIZE                64
329
330 #define TEGRA_UARTC_BASE                0x70006200
331 #define TEGRA_UARTC_SIZE                SZ_256
332
333 #define TEGRA_UARTD_BASE                0x70006300
334 #define TEGRA_UARTD_SIZE                SZ_256
335
336 #define TEGRA_UARTE_BASE                0x70006400
337 #define TEGRA_UARTE_SIZE                SZ_256
338
339 #define TEGRA_NAND_BASE                 0x70008000
340 #define TEGRA_NAND_SIZE                 SZ_256
341
342 #define TEGRA_HSMMC_BASE                0x70008500
343 #define TEGRA_HSMMC_SIZE                SZ_256
344
345 #define TEGRA_SNOR_BASE                 0x70009000
346 #define TEGRA_SNOR_SIZE                 SZ_4K
347
348 #define TEGRA_PWFM_BASE                 0x7000A000
349 #define TEGRA_PWFM_SIZE                 SZ_256
350
351 #define TEGRA_PWFM0_BASE                0x7000A000
352 #define TEGRA_PWFM0_SIZE                4
353
354 #define TEGRA_PWFM1_BASE                0x7000A010
355 #define TEGRA_PWFM1_SIZE                4
356
357 #define TEGRA_PWFM2_BASE                0x7000A020
358 #define TEGRA_PWFM2_SIZE                4
359
360 #define TEGRA_PWFM3_BASE                0x7000A030
361 #define TEGRA_PWFM3_SIZE                4
362
363 #define TEGRA_MIPI_BASE                 0x7000B000
364 #define TEGRA_MIPI_SIZE                 SZ_256
365
366 #define TEGRA_I2C_BASE                  0x7000C000
367 #define TEGRA_I2C_SIZE                  SZ_256
368
369 #define TEGRA_TWC_BASE                  0x7000C100
370 #define TEGRA_TWC_SIZE                  SZ_256
371
372 #if defined(CONFIG_ARCH_TEGRA_2x_SOC)
373
374 #define TEGRA_SPI_BASE                  0x7000C380
375 #define TEGRA_SPI_SIZE                  48
376
377 #else
378
379 #define TEGRA_DTV_BASE                  0x7000C300
380 #define TEGRA_DTV_SIZE                  SZ_256
381
382 #endif
383
384 #define TEGRA_I2C2_BASE                 0x7000C400
385 #define TEGRA_I2C2_SIZE                 SZ_256
386
387 #define TEGRA_I2C3_BASE                 0x7000C500
388 #define TEGRA_I2C3_SIZE                 SZ_256
389
390 #define TEGRA_OWR_BASE                  0x7000C600
391 #define TEGRA_OWR_SIZE                  80
392
393 #if defined(CONFIG_ARCH_TEGRA_2x_SOC)
394
395 #define TEGRA_DVC_BASE                  0x7000D000
396 #define TEGRA_DVC_SIZE                  SZ_512
397
398 #else
399
400 #define TEGRA_I2C4_BASE                 0x7000C700
401 #define TEGRA_I2C4_SIZE                 SZ_512
402
403 #define TEGRA_I2C5_BASE                 0x7000D000
404 #define TEGRA_I2C5_SIZE                 SZ_512
405
406 #endif
407
408 #define TEGRA_SPI1_BASE                 0x7000D400
409 #define TEGRA_SPI1_SIZE                 SZ_512
410
411 #define TEGRA_SPI2_BASE                 0x7000D600
412 #define TEGRA_SPI2_SIZE                 SZ_512
413
414 #define TEGRA_SPI3_BASE                 0x7000D800
415 #define TEGRA_SPI3_SIZE                 SZ_512
416
417 #define TEGRA_SPI4_BASE                 0x7000DA00
418 #define TEGRA_SPI4_SIZE                 SZ_512
419
420 #ifndef CONFIG_ARCH_TEGRA_2x_SOC
421
422 #define TEGRA_SPI5_BASE                 0x7000DC00
423 #define TEGRA_SPI5_SIZE                 SZ_512
424
425 #define TEGRA_SPI6_BASE                 0x7000DE00
426 #define TEGRA_SPI6_SIZE                 SZ_512
427
428 #endif
429
430 #define TEGRA_RTC_BASE                  0x7000E000
431 #define TEGRA_RTC_SIZE                  SZ_256
432
433 #define TEGRA_KBC_BASE                  0x7000E200
434 #define TEGRA_KBC_SIZE                  SZ_256
435
436 #define TEGRA_PMC_BASE                  0x7000E400
437 #define TEGRA_PMC_SIZE                  SZ_256
438
439 #if defined(CONFIG_ARCH_TEGRA_2x_SOC) || defined(CONFIG_ARCH_TEGRA_3x_SOC)
440
441 #define TEGRA_MC_BASE                   0x7000F000
442 #define TEGRA_MC_SIZE                   SZ_1K
443
444 #define TEGRA_EMC_BASE                  0x7000F400
445 #define TEGRA_EMC_SIZE                  SZ_1K
446
447 #else
448
449 #define TEGRA_MC0_BASE                  0x70018000
450 #define TEGRA_MC0_SIZE                  SZ_2K
451
452 #define TEGRA_MC1_BASE                  0x70018800
453 #define TEGRA_MC1_SIZE                  SZ_2K
454
455 #define TEGRA_MC_BASE                   0x70019000
456 #define TEGRA_MC_SIZE                   SZ_2K
457
458 #define TEGRA_EMC0_BASE                 0x7001A000
459 #define TEGRA_EMC0_SIZE                 SZ_2K
460
461 #define TEGRA_EMC1_BASE                 0x7001A800
462 #define TEGRA_EMC1_SIZE                 SZ_2K
463
464 #define TEGRA_EMC_BASE                  0x7001B000
465 #define TEGRA_EMC_SIZE                  SZ_2K
466
467 #define TEGRA_XUSB_HOST_BASE            0x70090000
468 #define TEGRA_XUSB_HOST_SIZE            (SZ_32K + SZ_8K)
469
470 #define TEGRA_XUSB_PADCTL_BASE          0x7009F000
471 #define TEGRA_XUSB_PADCTL_SIZE          SZ_4K
472
473 #define TEGRA_XUSB_DEV_BASE             0x700D0000
474 #define TEGRA_XUSB_DEV_SIZE             (SZ_32K + SZ_4K)
475
476 #endif
477
478 #define TEGRA_FUSE_BASE                 0x7000F800
479 #define TEGRA_FUSE_SIZE                 SZ_1K
480
481 #define TEGRA_KFUSE_BASE                0x7000FC00
482 #define TEGRA_KFUSE_SIZE                SZ_1K
483
484 #define TEGRA_CSITE_BASE                0x70040000
485 #define TEGRA_CSITE_SIZE                SZ_256K
486
487 #if defined(CONFIG_ARCH_TEGRA_2x_SOC)
488
489 #define TEGRA_USB_BASE                  0xC5000000
490 #define TEGRA_USB_SIZE                  SZ_16K
491
492 #define TEGRA_USB2_BASE                 0xC5004000
493 #define TEGRA_USB2_SIZE                 SZ_16K
494
495 #define TEGRA_USB3_BASE                 0xC5008000
496 #define TEGRA_USB3_SIZE                 SZ_16K
497
498 #define TEGRA_SDMMC1_BASE               0xC8000000
499 #define TEGRA_SDMMC1_SIZE               SZ_512
500
501 #define TEGRA_SDMMC2_BASE               0xC8000200
502 #define TEGRA_SDMMC2_SIZE               SZ_512
503
504 #define TEGRA_SDMMC3_BASE               0xC8000400
505 #define TEGRA_SDMMC3_SIZE               SZ_512
506
507 #define TEGRA_SDMMC4_BASE               0xC8000600
508 #define TEGRA_SDMMC4_SIZE               SZ_512
509
510 #else
511
512 #define TEGRA_SATA_BASE                 0x70020000
513 #define TEGRA_SATA_SIZE                 SZ_64K
514
515 #define TEGRA_SATA_CONFIG_BASE          0x70021000
516 #define TEGRA_SATA_CONFIG_SIZE          SZ_4K
517
518 #define TEGRA_SATA_BAR5_BASE            0x70027000
519 #define TEGRA_SATA_BAR5_SIZE            SZ_8K
520
521 #define TEGRA_SDMMC1_BASE               0x78000000
522 #define TEGRA_SDMMC1_SIZE               SZ_512
523
524 #define TEGRA_SDMMC2_BASE               0x78000200
525 #define TEGRA_SDMMC2_SIZE               SZ_512
526
527 #define TEGRA_SDMMC3_BASE               0x78000400
528 #define TEGRA_SDMMC3_SIZE               SZ_512
529
530 #define TEGRA_SDMMC4_BASE               0x78000600
531 #define TEGRA_SDMMC4_SIZE               SZ_512
532
533 #define TEGRA_USB_BASE                  0x7D000000
534 #define TEGRA_USB_SIZE                  SZ_16K
535
536 #define TEGRA_USB2_BASE                 0x7D004000
537 #define TEGRA_USB2_SIZE                 SZ_16K
538
539 #define TEGRA_USB3_BASE                 0x7D008000
540 #define TEGRA_USB3_SIZE                 SZ_16K
541
542 #define TEGRA_SE_BASE                   0x70012000
543 #define TEGRA_SE_SIZE                   SZ_8K
544
545 #endif
546
547 /* On TEGRA, many peripherals are very closely packed in
548  * two 256MB io windows (that actually only use about 64KB
549  * at the start of each).
550  *
551  * We will just map the first 1MB of each window (to minimize
552  * pt entries needed) and provide a macro to transform physical
553  * io addresses to an appropriate void __iomem *.
554  *
555  */
556
557 #define IO_IRAM_PHYS    0x40000000
558 #define IO_IRAM_VIRT    IOMEM(0xFE400000)
559 #define IO_IRAM_SIZE    SZ_256K
560
561 #define IO_CPU_PHYS     0x50000000
562 #define IO_CPU_VIRT     IOMEM(0xFE000000)
563 #define IO_CPU_SIZE     SZ_1M
564
565 #define IO_PPSB_PHYS    0x60000000
566 #define IO_PPSB_VIRT    IOMEM(0xFE200000)
567 #define IO_PPSB_SIZE    SZ_1M
568
569 #define IO_APB_PHYS     0x70000000
570 #define IO_APB_VIRT     IOMEM(0xFE300000)
571 #define IO_APB_SIZE     SZ_1M
572
573 #ifdef CONFIG_ARCH_TEGRA_2x_SOC
574 #define IO_USB_PHYS     0xC5000000
575 #else
576 #define IO_USB_PHYS     0x7D000000
577 #endif
578 #define IO_USB_VIRT     IOMEM(0xFE500000)
579 #define IO_USB_SIZE     SZ_1M
580
581 #ifdef CONFIG_ARCH_TEGRA_2x_SOC
582 #define IO_SDMMC_PHYS   0xC8000000
583 #else
584 #define IO_SDMMC_PHYS   0x78000000
585 #endif
586 #define IO_SDMMC_VIRT   IOMEM(0xFE600000)
587 #define IO_SDMMC_SIZE   SZ_1M
588
589 #define IO_HOST1X_PHYS  0x54000000
590 #define IO_HOST1X_VIRT  IOMEM(0xFE700000)
591 #define IO_HOST1X_SIZE  SZ_8M
592
593 #ifdef CONFIG_ARCH_TEGRA_2x_SOC
594 #define IO_PPCS_PHYS    0xC4000000
595 #else
596 #define IO_PPCS_PHYS    0x7C000000
597 #endif
598 #define IO_PPCS_VIRT    IOMEM(0xFE100000)
599 #define IO_PPCS_SIZE    SZ_1M
600
601 #ifdef CONFIG_ARCH_TEGRA_2x_SOC
602 #define IO_PCIE_PHYS    0x80000000
603 #else
604 #define IO_PCIE_PHYS    0x00000000
605 #endif
606 #define IO_PCIE_VIRT    IOMEM(0xFB0000000)
607 #define IO_PCIE_SIZE    (SZ_16M * 3)
608
609 #define IO_TO_VIRT_BETWEEN(p, st, sz)   ((p) >= (st) && (p) < ((st) + (sz)))
610 #define IO_TO_VIRT_XLATE(p, pst, vst)   (((p) - (pst) + (vst)))
611
612 #define IO_TO_VIRT(n) ( \
613         IO_TO_VIRT_BETWEEN((n), IO_PPSB_PHYS, IO_PPSB_SIZE) ?           \
614                 IO_TO_VIRT_XLATE((n), IO_PPSB_PHYS, IO_PPSB_VIRT) :     \
615         IO_TO_VIRT_BETWEEN((n), IO_APB_PHYS, IO_APB_SIZE) ?             \
616                 IO_TO_VIRT_XLATE((n), IO_APB_PHYS, IO_APB_VIRT) :       \
617         IO_TO_VIRT_BETWEEN((n), IO_CPU_PHYS, IO_CPU_SIZE) ?             \
618                 IO_TO_VIRT_XLATE((n), IO_CPU_PHYS, IO_CPU_VIRT) :       \
619         IO_TO_VIRT_BETWEEN((n), IO_IRAM_PHYS, IO_IRAM_SIZE) ?           \
620                 IO_TO_VIRT_XLATE((n), IO_IRAM_PHYS, IO_IRAM_VIRT) :     \
621         IO_TO_VIRT_BETWEEN((n), IO_HOST1X_PHYS, IO_HOST1X_SIZE) ?       \
622                 IO_TO_VIRT_XLATE((n), IO_HOST1X_PHYS, IO_HOST1X_VIRT) : \
623         IO_TO_VIRT_BETWEEN((n), IO_USB_PHYS, IO_USB_SIZE) ?             \
624                 IO_TO_VIRT_XLATE((n), IO_USB_PHYS, IO_USB_VIRT) :       \
625         IO_TO_VIRT_BETWEEN((n), IO_SDMMC_PHYS, IO_SDMMC_SIZE) ?         \
626                 IO_TO_VIRT_XLATE((n), IO_SDMMC_PHYS, IO_SDMMC_VIRT) :   \
627         IO_TO_VIRT_BETWEEN((n), IO_PPCS_PHYS, IO_PPCS_SIZE) ?           \
628                 IO_TO_VIRT_XLATE((n), IO_PPCS_PHYS, IO_PPCS_VIRT) :     \
629         IO_TO_VIRT_BETWEEN((n), IO_PCIE_PHYS, IO_PCIE_SIZE) ?           \
630                 IO_TO_VIRT_XLATE((n), IO_PCIE_PHYS, IO_PCIE_VIRT) :     \
631         NULL)
632
633 #define IO_ADDRESS(n) (IO_TO_VIRT(n))
634
635 #endif