7d58bdc2240889941f9f893d87a770925400b639
[linux-3.10.git] / arch / arm / mach-tegra / iomap.h
1 /*
2  * Copyright (C) 2010 Google, Inc.
3  * Copyright (C) 2011-2013, NVIDIA Corporation.
4  *
5  * Author:
6  *      Colin Cross <ccross@google.com>
7  *      Erik Gilling <konkers@google.com>
8  *
9  * This software is licensed under the terms of the GNU General Public
10  * License version 2, as published by the Free Software Foundation, and
11  * may be copied, distributed, and modified under those terms.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  */
19
20 #ifndef __MACH_TEGRA_IOMAP_H
21 #define __MACH_TEGRA_IOMAP_H
22
23 #include <asm/sizes.h>
24
25 #if defined(CONFIG_ARCH_TEGRA_2x_SOC)
26 #define TEGRA_NOR_FLASH_BASE            0xD0000000
27 #define TEGRA_NOR_FLASH_SIZE            SZ_256M
28 #else
29 #define TEGRA_NOR_FLASH_BASE            0x48000000
30 #define TEGRA_NOR_FLASH_SIZE            SZ_128M
31 #endif
32
33 #if defined(CONFIG_ARCH_TEGRA_2x_SOC)
34 #define TEGRA_DRAM_BASE                 0x00000000
35 #define TEGRA_DRAM_SIZE                 SZ_1G           /* Maximum size */
36 #else
37 #define TEGRA_DRAM_BASE                 0x80000000
38 #define TEGRA_DRAM_SIZE                 (SZ_2G - SZ_1M) /* Maximum size */
39 #endif
40
41 #define TEGRA_IRAM_BASE                 0x40000000
42 #if defined(CONFIG_ARCH_TEGRA_14x_SOC)
43 #define TEGRA_IRAM_SIZE                 (192 * SZ_1K)
44 #else
45 #define TEGRA_IRAM_SIZE                 SZ_256K
46 #endif
47
48 /* First 1K of IRAM is reserved for cpu reset handler. */
49 #define TEGRA_RESET_HANDLER_BASE        TEGRA_IRAM_BASE
50 #define TEGRA_RESET_HANDLER_SIZE        SZ_1K
51
52 #define TEGRA_HOST1X_BASE               0x50000000
53 #define TEGRA_HOST1X_SIZE               0x28000
54
55 #define TEGRA_ARM_PERIF_BASE            0x50040000
56 #define TEGRA_ARM_PERIF_SIZE            SZ_8K
57
58 #define TEGRA_MSELECT_BASE              0x50042000
59 #define TEGRA_MSELECT_SIZE              80
60
61 #if defined(CONFIG_ARCH_TEGRA_2x_SOC) || defined(CONFIG_ARCH_TEGRA_3x_SOC)
62
63 #define TEGRA_ARM_PL310_BASE            0x50043000
64 #define TEGRA_ARM_PL310_SIZE            SZ_4K
65
66 #endif
67
68 #if defined(CONFIG_ARCH_TEGRA_14x_SOC)
69
70 #define TEGRA_ARM_PL310_BASE            0x50061000
71 #define TEGRA_ARM_PL310_SIZE            SZ_4K
72
73 #endif
74
75
76 #define TEGRA_ARM_INT_DIST_BASE         0x50041000
77 #define TEGRA_ARM_INT_DIST_SIZE         SZ_4K
78
79 #define TEGRA_MPE_BASE                  0x54040000
80 #define TEGRA_MPE_SIZE                  SZ_256K
81
82 #define TEGRA_VI_BASE                   0x54080000
83 #define TEGRA_VI_SIZE                   SZ_256K
84
85 #if defined(CONFIG_ARCH_TEGRA_2x_SOC) || \
86         defined(CONFIG_ARCH_TEGRA_3x_SOC) || \
87         defined(CONFIG_ARCH_TEGRA_11x_SOC) || \
88         defined(CONFIG_ARCH_TEGRA_14x_SOC)
89 #define TEGRA_ISP_BASE                  0x54100000
90 #define TEGRA_ISP_SIZE                  SZ_256K
91 #else
92 #define TEGRA_ISP_BASE                  0x54600000
93 #define TEGRA_ISP_SIZE                  SZ_256K
94
95 #define TEGRA_ISPB_BASE                 0x54680000
96 #define TEGRA_ISPB_SIZE                 SZ_256K
97 #endif
98
99
100 #define TEGRA_GR2D_BASE                 0x54140000
101 #define TEGRA_GR2D_SIZE                 SZ_256K
102
103 #define TEGRA_GR3D_BASE                 0x54180000
104 #define TEGRA_GR3D_SIZE                 SZ_256K
105
106 #define TEGRA_DISPLAY_BASE              0x54200000
107 #define TEGRA_DISPLAY_SIZE              SZ_256K
108
109 #define TEGRA_DISPLAY2_BASE             0x54240000
110 #define TEGRA_DISPLAY2_SIZE             SZ_256K
111
112 #define TEGRA_HDMI_BASE                 0x54280000
113 #define TEGRA_HDMI_SIZE                 SZ_256K
114
115 #define TEGRA_DSI_BASE                  0x54300000
116 #define TEGRA_DSI_SIZE                  SZ_256K
117
118 #if defined(CONFIG_ARCH_TEGRA_VIC)
119 #define TEGRA_VIC_BASE                  0x54340000
120 #define TEGRA_VIC_SIZE                  SZ_256K
121 #endif
122
123 #define TEGRA_DSIB_BASE                 0x54400000
124 #define TEGRA_DSIB_SIZE                 SZ_256K
125
126 #define TEGRA_MSENC_BASE                0x544c0000
127 #define TEGRA_MSENC_SIZE                SZ_256K
128
129 #define TEGRA_TSEC_BASE                 0x54500000
130 #define TEGRA_TSEC_SIZE                 SZ_256K
131
132 #define TEGRA_SOR_BASE                  0x54540000
133 #define TEGRA_SOR_SIZE                  SZ_256K
134
135 #define TEGRA_DPAUX_BASE                0x545c0000
136 #define TEGRA_DPAUX_SIZE                SZ_256K
137
138 #if defined(CONFIG_ARCH_TEGRA_2x_SOC)
139
140 #define TEGRA_GART_BASE                 0x58000000
141 #define TEGRA_GART_SIZE                 SZ_32M
142 #define TEGRA_IOMMU_BASE                TEGRA_GART_BASE
143 #define TEGRA_IOMMU_SIZE                TEGRA_GART_SIZE
144
145 #else
146
147 #define TEGRA_SMMU_BASE_TEGRA3_A01      0xe0000000
148 #define TEGRA_SMMU_SIZE_TEGRA3_A01      SZ_256M
149
150 #if defined(CONFIG_ARCH_TEGRA_3x_SOC)
151 #define TEGRA_SMMU_BASE                 0x00001000
152 #define TEGRA_SMMU_SIZE                 (SZ_1G - SZ_4K * 2)
153 #else
154 #define TEGRA_SMMU_BASE                 0x01000000
155 #define TEGRA_SMMU_SIZE                 (SZ_1G - SZ_16M - SZ_4K)
156 #endif
157
158 #define TEGRA_IOMMU_BASE                TEGRA_SMMU_BASE
159 #define TEGRA_IOMMU_SIZE                TEGRA_SMMU_SIZE
160 #endif
161
162 #define TEGRA_RES_SEMA_SIZE             SZ_4K
163 #define TEGRA_RES_SEMA_BASE             0x60001000
164
165 #define TEGRA_ARB_SEMA_BASE             0x60002000
166 #define TEGRA_ARB_SEMA_SIZE             SZ_4K
167
168 #define TEGRA_PRIMARY_ICTLR_BASE        0x60004000
169 #define TEGRA_PRIMARY_ICTLR_SIZE        64
170
171 #define TEGRA_ARBGNT_ICTLR_BASE         0x60004040
172 #define TEGRA_ARBGNT_ICTLR_SIZE         192
173
174 #define TEGRA_SECONDARY_ICTLR_BASE      0x60004100
175 #define TEGRA_SECONDARY_ICTLR_SIZE      64
176
177 #define TEGRA_TERTIARY_ICTLR_BASE       0x60004200
178 #define TEGRA_TERTIARY_ICTLR_SIZE       64
179
180 #define TEGRA_QUATERNARY_ICTLR_BASE     0x60004300
181 #define TEGRA_QUATERNARY_ICTLR_SIZE     64
182
183 #ifndef CONFIG_ARCH_TEGRA_2x_SOC
184
185 #define TEGRA_QUINARY_ICTLR_BASE        0x60004400
186 #define TEGRA_QUINARY_ICTLR_SIZE        SZ_64
187
188 #endif
189
190 #define TEGRA_TMR1_BASE                 0x60005000
191 #define TEGRA_TMR1_SIZE                 SZ_8
192
193 #define TEGRA_TMR2_BASE                 0x60005008
194 #define TEGRA_TMR2_SIZE                 SZ_8
195
196 #define TEGRA_TMRUS_BASE                0x60005010
197 #define TEGRA_TMRUS_SIZE                64
198
199 #define TEGRA_TMR3_BASE                 0x60005050
200 #define TEGRA_TMR3_SIZE                 SZ_8
201
202 #define TEGRA_TMR4_BASE                 0x60005058
203 #define TEGRA_TMR4_SIZE                 SZ_8
204
205 #ifndef CONFIG_ARCH_TEGRA_2x_SOC
206
207 #define TEGRA_TMR5_BASE                 0x60005060
208 #define TEGRA_TMR5_SIZE                 8
209
210 #define TEGRA_TMR6_BASE                 0x60005068
211 #define TEGRA_TMR6_SIZE                 8
212
213 #define TEGRA_TMR7_BASE                 0x60005070
214 #define TEGRA_TMR7_SIZE                 8
215
216 #define TEGRA_TMR8_BASE                 0x60005078
217 #define TEGRA_TMR8_SIZE                 8
218
219 #define TEGRA_TMR9_BASE                 0x60005080
220 #define TEGRA_TMR9_SIZE                 8
221
222 #define TEGRA_TMR10_BASE                0x60005088
223 #define TEGRA_TMR10_SIZE                8
224
225 #define TEGRA_WDT0_BASE                 0x60005100
226 #define TEGRA_WDT0_SIZE                 32
227
228 #define TEGRA_WDT1_BASE                 0x60005120
229 #define TEGRA_WDT1_SIZE                 32
230
231 #define TEGRA_WDT2_BASE                 0x60005140
232 #define TEGRA_WDT2_SIZE                 32
233
234 #define TEGRA_WDT3_BASE                 0x60005160
235 #define TEGRA_WDT3_SIZE                 32
236
237 #define TEGRA_WDT4_BASE                 0x60005180
238 #define TEGRA_WDT4_SIZE                 32
239
240 #endif
241
242 #define TEGRA_CLK_RESET_BASE            0x60006000
243 #define TEGRA_CLK_RESET_SIZE            SZ_4K
244
245 #define TEGRA_FLOW_CTRL_BASE            0x60007000
246 #define TEGRA_FLOW_CTRL_SIZE            20
247
248 #define TEGRA_AHB_DMA_BASE              0x60008000
249 #define TEGRA_AHB_DMA_SIZE              SZ_4K
250
251 #define TEGRA_AHB_DMA_CH0_BASE          0x60009000
252 #define TEGRA_AHB_DMA_CH0_SIZE          32
253
254 #if !defined(CONFIG_ARCH_TEGRA_2x_SOC) && !defined(CONFIG_ARCH_TEGRA_3x_SOC) \
255         && !defined(CONFIG_ARCH_TEGRA_11x_SOC)
256
257 #define TEGRA_APB_DMA_BASE              0x60020000
258 #define TEGRA_APB_DMA_SIZE              SZ_4K
259
260 #define TEGRA_APB_DMA_CH0_BASE          0x60021000
261 #define TEGRA_APB_DMA_CH0_SIZE          64
262
263 #else
264
265 #define TEGRA_APB_DMA_BASE              0x6000A000
266 #define TEGRA_APB_DMA_SIZE              SZ_4K
267
268 #define TEGRA_APB_DMA_CH0_BASE          0x6000B000
269 #define TEGRA_APB_DMA_CH0_SIZE          32
270
271 #endif
272
273 #ifndef CONFIG_ARCH_TEGRA_2x_SOC
274
275 #define TEGRA_AHB_ARB_BASE              0x6000C000
276 #define TEGRA_AHB_ARB_SIZE              768     /* Overlaps with GISMO */
277
278 #endif
279
280 #define TEGRA_AHB_GIZMO_BASE            0x6000C004
281 #define TEGRA_AHB_GIZMO_SIZE            0x10C
282
283 #define TEGRA_SB_BASE                   0x6000C200
284 #define TEGRA_SB_SIZE                   256
285
286 #define TEGRA_STATMON_BASE              0x6000C400
287 #define TEGRA_STATMON_SIZE              SZ_1K
288
289 #if !defined(CONFIG_ARCH_TEGRA_2x_SOC)
290
291 #define TEGRA_ACTMON_BASE               0x6000C800
292 #define TEGRA_ACTMON_SIZE               SZ_1K
293
294 #endif
295
296 #define TEGRA_GPIO_BASE                 0x6000D000
297 #define TEGRA_GPIO_SIZE                 SZ_4K
298
299 #define TEGRA_EXCEPTION_VECTORS_BASE    0x6000F000
300 #define TEGRA_EXCEPTION_VECTORS_SIZE    SZ_4K
301
302 #define TEGRA_BSEA_BASE                 0x60010000
303 #define TEGRA_BSEA_SIZE                 SZ_4K
304
305 #define TEGRA_VDE_BASE                  0x6001A000
306 #define TEGRA_VDE_SIZE                  0x3c00
307
308 #define TEGRA_APB_MISC_BASE             0x70000000
309 #define TEGRA_APB_MISC_SIZE             SZ_4K
310
311 #define TEGRA_APB_MISC_DAS_BASE         0x70000c00
312 #define TEGRA_APB_MISC_DAS_SIZE         SZ_128
313
314 #if defined(CONFIG_ARCH_TEGRA_2x_SOC)
315
316 #define TEGRA_AC97_BASE                 0x70002000
317 #define TEGRA_AC97_SIZE                 SZ_512
318
319 #define TEGRA_SPDIF_BASE                0x70002400
320 #define TEGRA_SPDIF_SIZE                SZ_512
321
322 #define TEGRA_I2S1_BASE                 0x70002800
323 #define TEGRA_I2S1_SIZE                 SZ_256
324
325 #define TEGRA_I2S2_BASE                 0x70002A00
326 #define TEGRA_I2S2_SIZE                 SZ_256
327
328 #define TEGRA_PCIE_BASE                 0x80000000
329 #define TEGRA_PCIE_SIZE                 SZ_1G
330
331 #else
332
333 #if defined(CONFIG_ARCH_TEGRA_3x_SOC)
334
335 #define TEGRA_PCIE_BASE                 0x00000000
336 #define TEGRA_PCIE_SIZE                 SZ_1G
337
338 #define TEGRA_TSENSOR_BASE              0x70014000
339 #define TEGRA_TSENSOR_SIZE              SZ_4K
340 #endif
341
342 #define TEGRA_CEC_BASE                  0x70015000
343 #define TEGRA_CEC_SIZE                  SZ_4K
344
345 #define TEGRA_HDA_BASE                  0x70030000
346 #define TEGRA_HDA_SIZE                  SZ_64K
347
348 #if (defined(CONFIG_ARCH_TEGRA_14x_SOC) || \
349 defined(CONFIG_ARCH_TEGRA_12x_SOC))
350 #define TEGRA_AUDIO_CLUSTER_BASE        0x70300000
351 #define TEGRA_AUDIO_CLUSTER_SIZE        SZ_64K
352
353 #define TEGRA_APBIF0_BASE               TEGRA_AUDIO_CLUSTER_BASE
354 #define TEGRA_APBIF0_SIZE               32
355
356 #define TEGRA_APBIF1_BASE               0x70300020
357 #define TEGRA_APBIF1_SIZE               32
358
359 #define TEGRA_APBIF2_BASE               0x70300040
360 #define TEGRA_APBIF2_SIZE               32
361
362 #define TEGRA_APBIF3_BASE               0x70300060
363 #define TEGRA_APBIF3_SIZE               32
364
365 #define TEGRA_AHUB_BASE                 0x70300800
366 #define TEGRA_AHUB_SIZE                 SZ_2K
367
368 #define TEGRA_I2S0_BASE                 0x70301000
369 #define TEGRA_I2S0_SIZE                 SZ_256
370
371 #define TEGRA_I2S1_BASE                 0x70301100
372 #define TEGRA_I2S1_SIZE                 SZ_256
373
374 #define TEGRA_I2S2_BASE                 0x70301200
375 #define TEGRA_I2S2_SIZE                 SZ_256
376
377 #define TEGRA_I2S3_BASE                 0x70301300
378 #define TEGRA_I2S3_SIZE                 SZ_256
379
380 #define TEGRA_I2S4_BASE                 0x70301400
381 #define TEGRA_I2S4_SIZE                 SZ_256
382
383 #define TEGRA_DAM0_BASE                 0x70302000
384 #define TEGRA_DAM0_SIZE                 SZ_512
385
386 #define TEGRA_DAM1_BASE                 0x70302200
387 #define TEGRA_DAM1_SIZE                 SZ_512
388
389 #define TEGRA_DAM2_BASE                 0x70302400
390 #define TEGRA_DAM2_SIZE                 SZ_512
391
392 #define TEGRA_SPDIF_BASE                0x70306000
393 #define TEGRA_SPDIF_SIZE                SZ_256
394
395 #define TEGRA_APBIF4_BASE               0x70300200
396 #define TEGRA_APBIF4_SIZE               32
397
398 #define TEGRA_APBIF5_BASE               0x70300220
399 #define TEGRA_APBIF5_SIZE               32
400
401 #define TEGRA_APBIF6_BASE               0x70300240
402 #define TEGRA_APBIF6_SIZE               32
403
404 #define TEGRA_APBIF7_BASE               0x70300260
405 #define TEGRA_APBIF7_SIZE               32
406
407 #define TEGRA_APBIF8_BASE               0x70300280
408 #define TEGRA_APBIF8_SIZE               32
409
410 #define TEGRA_APBIF9_BASE               0x703002A0
411 #define TEGRA_APBIF9_SIZE               32
412
413 #define TEGRA_AMX0_BASE                 0x70303000
414 #define TEGRA_AMX0_SIZE                 SZ_256
415
416 #define TEGRA_AMX1_BASE                 0x70303100
417 #define TEGRA_AMX1_SIZE                 SZ_256
418
419 #define TEGRA_ADX0_BASE                 0x70303800
420 #define TEGRA_ADX0_SIZE                 SZ_256
421
422 #define TEGRA_ADX1_BASE                 0x70303900
423 #define TEGRA_ADX1_SIZE                 SZ_256
424 #ifndef CONFIG_ARCH_TEGRA_12x_SOC
425 #define TEGRA_DMIC0_BASE                0x70304000
426 #define TEGRA_DMIC0_SIZE                SZ_256
427
428 #define TEGRA_DMIC1_BASE                0x70304100
429 #define TEGRA_DMIC1_SIZE                SZ_256
430 #endif
431 #else
432
433 #define TEGRA_AUDIO_CLUSTER_BASE        0x70080000
434 #define TEGRA_AUDIO_CLUSTER_SIZE        SZ_4K
435
436 #define TEGRA_APBIF0_BASE               TEGRA_AUDIO_CLUSTER_BASE
437 #define TEGRA_APBIF0_SIZE               32
438
439 #define TEGRA_APBIF1_BASE               0x70080020
440 #define TEGRA_APBIF1_SIZE               32
441
442 #define TEGRA_APBIF2_BASE               0x70080040
443 #define TEGRA_APBIF2_SIZE               32
444
445 #define TEGRA_APBIF3_BASE               0x70080060
446 #define TEGRA_APBIF3_SIZE               32
447
448 #define TEGRA_AHUB_BASE                 0x70080200
449 #define TEGRA_AHUB_SIZE                 SZ_256
450
451 #define TEGRA_I2S0_BASE                 0x70080300
452 #define TEGRA_I2S0_SIZE                 SZ_256
453
454 #define TEGRA_I2S1_BASE                 0x70080400
455 #define TEGRA_I2S1_SIZE                 SZ_256
456
457 #define TEGRA_I2S2_BASE                 0x70080500
458 #define TEGRA_I2S2_SIZE                 SZ_256
459
460 #define TEGRA_I2S3_BASE                 0x70080600
461 #define TEGRA_I2S3_SIZE                 SZ_256
462
463 #define TEGRA_I2S4_BASE                 0x70080700
464 #define TEGRA_I2S4_SIZE                 SZ_256
465
466 #define TEGRA_DAM0_BASE                 0x70080800
467 #define TEGRA_DAM0_SIZE                 SZ_256
468
469 #define TEGRA_DAM1_BASE                 0x70080900
470 #define TEGRA_DAM1_SIZE                 SZ_256
471
472 #define TEGRA_DAM2_BASE                 0x70080A00
473 #define TEGRA_DAM2_SIZE                 SZ_256
474
475 #define TEGRA_SPDIF_BASE                0x70080B00
476 #define TEGRA_SPDIF_SIZE                SZ_256
477
478 #ifndef CONFIG_ARCH_TEGRA_3x_SOC
479
480 #define TEGRA_AMX0_BASE                 0x70080C00
481 #define TEGRA_AMX0_SIZE                 SZ_256
482
483 #define TEGRA_ADX0_BASE                 0x70080E00
484 #define TEGRA_ADX0_SIZE                 SZ_256
485
486 #define TEGRA_APBIF4_BASE               0x70081000
487 #define TEGRA_APBIF4_SIZE               32
488
489 #define TEGRA_APBIF5_BASE               0x70081020
490 #define TEGRA_APBIF5_SIZE               32
491
492 #define TEGRA_APBIF6_BASE               0x70081040
493 #define TEGRA_APBIF6_SIZE               32
494
495 #define TEGRA_APBIF7_BASE               0x70081060
496 #define TEGRA_APBIF7_SIZE               32
497
498 #define TEGRA_APBIF8_BASE               0x70081080
499 #define TEGRA_APBIF8_SIZE               32
500
501 #define TEGRA_APBIF9_BASE               0x700810A0
502 #define TEGRA_APBIF9_SIZE               32
503 #endif
504 #endif
505
506 #endif
507
508 #define TEGRA_UARTA_BASE                0x70006000
509 #define TEGRA_UARTA_SIZE                64
510
511 #define TEGRA_UARTB_BASE                0x70006040
512 #define TEGRA_UARTB_SIZE                64
513
514 #define TEGRA_UARTC_BASE                0x70006200
515 #define TEGRA_UARTC_SIZE                SZ_256
516
517 #define TEGRA_UARTD_BASE                0x70006300
518 #define TEGRA_UARTD_SIZE                SZ_256
519
520 #define TEGRA_UARTE_BASE                0x70006400
521 #define TEGRA_UARTE_SIZE                SZ_256
522
523 #define TEGRA_NAND_BASE                 0x70008000
524 #define TEGRA_NAND_SIZE                 SZ_256
525
526 #define TEGRA_HSMMC_BASE                0x70008500
527 #define TEGRA_HSMMC_SIZE                SZ_256
528
529 #define TEGRA_SNOR_BASE                 0x70009000
530 #define TEGRA_SNOR_SIZE                 SZ_4K
531
532 #define TEGRA_PWFM_BASE                 0x7000A000
533 #define TEGRA_PWFM_SIZE                 SZ_256
534
535 #define TEGRA_PWFM0_BASE                0x7000A000
536 #define TEGRA_PWFM0_SIZE                4
537
538 #define TEGRA_PWFM1_BASE                0x7000A010
539 #define TEGRA_PWFM1_SIZE                4
540
541 #define TEGRA_PWFM2_BASE                0x7000A020
542 #define TEGRA_PWFM2_SIZE                4
543
544 #define TEGRA_PWFM3_BASE                0x7000A030
545 #define TEGRA_PWFM3_SIZE                4
546
547 #define TEGRA_MIPI_BASE                 0x7000B000
548 #define TEGRA_MIPI_SIZE                 SZ_256
549
550 #define TEGRA_I2C_BASE                  0x7000C000
551 #define TEGRA_I2C_SIZE                  SZ_256
552
553 #define TEGRA_TWC_BASE                  0x7000C100
554 #define TEGRA_TWC_SIZE                  SZ_256
555
556 #if defined(CONFIG_ARCH_TEGRA_2x_SOC)
557
558 #define TEGRA_SPI_BASE                  0x7000C380
559 #define TEGRA_SPI_SIZE                  48
560
561 #else
562
563 #define TEGRA_DTV_BASE                  0x7000C300
564 #define TEGRA_DTV_SIZE                  SZ_256
565
566 #endif
567
568 #define TEGRA_I2C2_BASE                 0x7000C400
569 #define TEGRA_I2C2_SIZE                 SZ_256
570
571 #define TEGRA_I2C3_BASE                 0x7000C500
572 #define TEGRA_I2C3_SIZE                 SZ_256
573
574 #define TEGRA_OWR_BASE                  0x7000C600
575 #define TEGRA_OWR_SIZE                  80
576
577 #if defined(CONFIG_ARCH_TEGRA_2x_SOC)
578
579 #define TEGRA_DVC_BASE                  0x7000D000
580 #define TEGRA_DVC_SIZE                  SZ_512
581
582 #else
583
584 #define TEGRA_I2C4_BASE                 0x7000C700
585 #define TEGRA_I2C4_SIZE                 SZ_512
586
587 #define TEGRA_I2C5_BASE                 0x7000D000
588 #define TEGRA_I2C5_SIZE                 SZ_256
589
590 #endif
591
592 #define TEGRA_SPI1_BASE                 0x7000D400
593 #define TEGRA_SPI1_SIZE                 SZ_512
594
595 #define TEGRA_SPI2_BASE                 0x7000D600
596 #define TEGRA_SPI2_SIZE                 SZ_512
597
598 #define TEGRA_SPI3_BASE                 0x7000D800
599 #define TEGRA_SPI3_SIZE                 SZ_512
600
601 #define TEGRA_SPI4_BASE                 0x7000DA00
602 #define TEGRA_SPI4_SIZE                 SZ_512
603
604 #ifndef CONFIG_ARCH_TEGRA_2x_SOC
605
606 #define TEGRA_SPI5_BASE                 0x7000DC00
607 #define TEGRA_SPI5_SIZE                 SZ_512
608
609 #define TEGRA_SPI6_BASE                 0x7000DE00
610 #define TEGRA_SPI6_SIZE                 SZ_512
611
612 #endif
613
614 #define TEGRA_RTC_BASE                  0x7000E000
615 #define TEGRA_RTC_SIZE                  SZ_256
616
617 #define TEGRA_KBC_BASE                  0x7000E200
618 #define TEGRA_KBC_SIZE                  SZ_256
619
620 #define TEGRA_PMC_BASE                  0x7000E400
621 #define TEGRA_PMC_SIZE                  SZ_256
622
623 #if defined(CONFIG_ARCH_TEGRA_2x_SOC) || defined(CONFIG_ARCH_TEGRA_3x_SOC)
624
625 #define TEGRA_MC_BASE                   0x7000F000
626 #define TEGRA_MC_SIZE                   SZ_1K
627
628 #define TEGRA_EMC_BASE                  0x7000F400
629 #define TEGRA_EMC_SIZE                  SZ_1K
630
631 #else
632
633 #define TEGRA_MC_BASE                   0x70019000
634 #define TEGRA_MC_SIZE                   SZ_2K
635
636 #define TEGRA_EMC_BASE                  0x7001B000
637 #define TEGRA_EMC_SIZE                  SZ_2K
638
639 #ifndef CONFIG_ARCH_TEGRA_14x_SOC
640 #define TEGRA_MC0_BASE                  0x70018000
641 #define TEGRA_MC0_SIZE                  SZ_2K
642
643 #define TEGRA_MC1_BASE                  0x7001C000
644 #define TEGRA_MC1_SIZE                  SZ_2K
645
646 #define TEGRA_EMC0_BASE                 0x7001A000
647 #define TEGRA_EMC0_SIZE                 SZ_2K
648
649 #define TEGRA_EMC1_BASE                 0x7001A800
650 #define TEGRA_EMC1_SIZE                 SZ_2K
651 #endif
652
653 #define TEGRA_XUSB_HOST_BASE            0x70090000
654 #define TEGRA_XUSB_HOST_SIZE            SZ_32K
655 #define TEGRA_XUSB_FPCI_BASE            0x70098000
656 #define TEGRA_XUSB_FPCI_SIZE            SZ_4K
657 #define TEGRA_XUSB_IPFS_BASE            0x70099000
658 #define TEGRA_XUSB_IPFS_SIZE            SZ_4K
659
660
661 #define TEGRA_XUSB_PADCTL_BASE          0x7009F000
662 #define TEGRA_XUSB_PADCTL_SIZE          SZ_4K
663
664 #define TEGRA_XUSB_DEV_BASE             0x700D0000
665 #define TEGRA_XUSB_DEV_SIZE             (SZ_32K + SZ_4K)
666
667 #ifdef CONFIG_ARM_ARCH_TIMER
668 #define TEGRA_TSC_BASE                  0x700F0000
669 #define TEGRA_TSC_SIZE                  (SZ_64K)
670 #endif
671
672 #define TEGRA_CL_DVFS_BASE              0x70110000
673 #define TEGRA_CL_DVFS_SIZE              SZ_1K
674
675 #endif
676
677 #define TEGRA_FUSE_BASE                 0x7000F800
678 #define TEGRA_FUSE_SIZE                 SZ_1K
679
680 #define TEGRA_KFUSE_BASE                0x7000FC00
681 #define TEGRA_KFUSE_SIZE                SZ_1K
682
683 #define TEGRA_CSITE_BASE                0x70040000
684 #define TEGRA_CSITE_SIZE                SZ_256K
685
686 #if !defined(CONFIG_ARCH_TEGRA_2x_SOC) && !defined(CONFIG_ARCH_TEGRA_3x_SOC)
687 #define TEGRA_SOCTHERM_BASE             0x700E2000
688 #define TEGRA_SOCTHERM_SIZE             SZ_4K
689
690 #define TEGRA_MIPI_CAL_BASE             0x700E3000
691 #define TEGRA_MIPI_CAL_SIZE             SZ_256
692 #endif
693
694 #if defined(CONFIG_ARCH_TEGRA_2x_SOC)
695
696 #define TEGRA_USB_BASE                  0xC5000000
697 #define TEGRA_USB_SIZE                  SZ_16K
698
699 #define TEGRA_USB2_BASE                 0xC5004000
700 #define TEGRA_USB2_SIZE                 SZ_16K
701
702 #define TEGRA_USB3_BASE                 0xC5008000
703 #define TEGRA_USB3_SIZE                 SZ_16K
704
705 #define TEGRA_SDMMC1_BASE               0xC8000000
706 #define TEGRA_SDMMC1_SIZE               SZ_512
707
708 #define TEGRA_SDMMC2_BASE               0xC8000200
709 #define TEGRA_SDMMC2_SIZE               SZ_512
710
711 #define TEGRA_SDMMC3_BASE               0xC8000400
712 #define TEGRA_SDMMC3_SIZE               SZ_512
713
714 #define TEGRA_SDMMC4_BASE               0xC8000600
715 #define TEGRA_SDMMC4_SIZE               SZ_512
716
717 #else
718
719 #define TEGRA_SATA_BASE                 0x70020000
720 #define TEGRA_SATA_SIZE                 SZ_64K
721
722 #define TEGRA_SATA_CONFIG_BASE          0x70021000
723 #define TEGRA_SATA_CONFIG_SIZE          SZ_4K
724
725 #define TEGRA_SATA_BAR5_BASE            0x70027000
726 #define TEGRA_SATA_BAR5_SIZE            SZ_8K
727
728 #ifdef CONFIG_TEGRA_PRE_SILICON_SUPPORT
729 #define TEGRA_SIM_ETH_BASE              0x77000000
730 #define TEGRA_SIM_ETH_SIZE              SZ_64K
731 #endif
732
733 #ifdef CONFIG_TEGRA_SIMULATION_SPLIT_MEM
734 #define TEGRA_ASIM_QT_FRONT_DOOR_MEM_START      0x81000000
735 #define TEGRA_ASIM_QT_FRONT_DOOR_MEM_SIZE       (SZ_256M - SZ_16M)
736 #define TEGRA_ASIM_QT_FB_START          TEGRA_ASIM_QT_FRONT_DOOR_MEM_START
737 #define TEGRA_ASIM_QT_FB_SIZE           SZ_4M
738 #define TEGRA_ASIM_QT_CARVEOUT_VPR_DISABLED_START \
739                                 (TEGRA_ASIM_QT_FB_START + TEGRA_ASIM_QT_FB_SIZE)
740 #define TEGRA_ASIM_QT_CARVEOUT_VPR_DISABLED_SIZE \
741                 (TEGRA_ASIM_QT_FRONT_DOOR_MEM_SIZE - TEGRA_ASIM_QT_FB_SIZE)
742 #define TEGRA_ASIM_QT_CARVEOUT_MIN_SIZE         SZ_128M
743 #endif
744
745 #if defined(CONFIG_ARCH_TEGRA_2x_SOC)  || defined(CONFIG_ARCH_TEGRA_3x_SOC) || \
746     defined(CONFIG_ARCH_TEGRA_11x_SOC) || defined(CONFIG_ARCH_TEGRA_14x_SOC)
747
748 #define TEGRA_SDMMC1_BASE               0x78000000
749 #define TEGRA_SDMMC1_SIZE               SZ_512
750
751 #define TEGRA_SDMMC2_BASE               0x78000200
752 #define TEGRA_SDMMC2_SIZE               SZ_512
753
754 #define TEGRA_SDMMC3_BASE               0x78000400
755 #define TEGRA_SDMMC3_SIZE               SZ_512
756
757 #define TEGRA_SDMMC4_BASE               0x78000600
758 #define TEGRA_SDMMC4_SIZE               SZ_512
759
760 #else
761
762 #define TEGRA_SDMMC1_BASE               0x700b0000
763 #define TEGRA_SDMMC1_SIZE               SZ_512
764
765 #define TEGRA_SDMMC2_BASE               0x700b0200
766 #define TEGRA_SDMMC2_SIZE               SZ_512
767
768 #define TEGRA_SDMMC3_BASE               0x700b0400
769 #define TEGRA_SDMMC3_SIZE               SZ_512
770
771 #define TEGRA_SDMMC4_BASE               0x700b0600
772 #define TEGRA_SDMMC4_SIZE               SZ_512
773
774 #endif
775
776 #define TEGRA_USB_BASE                  0x7D000000
777 #define TEGRA_USB_SIZE                  SZ_16K
778
779 #define TEGRA_USB2_BASE                 0x7D004000
780 #define TEGRA_USB2_SIZE                 SZ_16K
781
782 #define TEGRA_USB3_BASE                 0x7D008000
783 #define TEGRA_USB3_SIZE                 SZ_16K
784
785 #define TEGRA_SE_BASE                   0x70012000
786 #define TEGRA_SE_SIZE                   SZ_8K
787
788 #endif
789
790 #if !defined(CONFIG_ARCH_TEGRA_2x_SOC) && !defined(CONFIG_ARCH_TEGRA_3x_SOC) \
791         && !defined(CONFIG_ARCH_TEGRA_11x_SOC)
792
793 #define TEGRA_I2C6_BASE                 0x7000d100
794 #define TEGRA_I2C6_SIZE                 SZ_512
795 #endif
796
797 #if defined(CONFIG_ARCH_TEGRA_14x_SOC)
798
799 #define TEGRA_MIPI_BIF_BASE             0x70120000
800 #define TEGRA_MIPI_BIF_SIZE             SZ_1K
801 #endif
802
803 /* On TEGRA, many peripherals are very closely packed in
804  * two 256 MB io windows (that actually only use about 64 KB
805  * at the start of each).
806  *
807  * We will just map the first 1 MB of each window (to minimize
808  * pt entries needed) and provide a macro to transform physical
809  * io addresses to an appropriate void __iomem *.
810  *
811  * Always map simulation specific devices to lowest address.
812  *
813  * The base address of each aperture must be aligned to a PMD
814  * (2 MB boundary).
815  *
816  */
817
818 #ifdef CONFIG_ARM_LPAE
819 #define ROUND_UP(x, n)          (((x) + (n) - 1) & ~((n) - 1))
820 #define IO_VIRT_ROUND_UP(x)     ROUND_UP(x, SZ_2M)
821 #else
822 #define IO_VIRT_ROUND_UP(x)     (x)
823 #endif
824
825 /* Define physical aperture limits */
826 #ifdef CONFIG_TEGRA_GK20A
827 #define IO_GK20A_B0_PHYS        0x57000000
828 #define IO_GK20A_B0_SIZE        0x01000000
829
830 #define IO_GK20A_B1_PHYS        0x58000000
831 #define IO_GK20A_B1_SIZE        0x01000000
832 #endif
833
834 #ifdef CONFIG_TEGRA_PRE_SILICON_SUPPORT
835 #define IO_SMC_PHYS     0x77000000
836 #define IO_SMC_SIZE     SZ_1M
837
838 #define IO_SIM_ESCAPE_PHYS      0x538f0000
839 #define IO_SIM_ESCAPE_SIZE      SZ_4K
840 #endif
841
842 #define IO_IRAM_PHYS    0x40000000
843 #define IO_IRAM_SIZE    SZ_256K
844
845 #define IO_CPU_PHYS     0x50000000
846 #define IO_CPU_SIZE     SZ_1M
847
848 #define IO_PPSB_PHYS    0x60000000
849 #define IO_PPSB_SIZE    SZ_1M
850
851 #define IO_APB_PHYS     0x70000000
852 #define IO_APB_SIZE     SZ_4M
853
854 #ifdef CONFIG_ARCH_TEGRA_2x_SOC
855 #define IO_USB_PHYS     0xC5000000
856 #else
857 #define IO_USB_PHYS     0x7D000000
858 #endif
859 #define IO_USB_SIZE     SZ_1M
860
861 #ifdef CONFIG_ARCH_TEGRA_2x_SOC
862 #define IO_SDMMC_PHYS   0xC8000000
863 #else
864 #define IO_SDMMC_PHYS   0x78000000
865 #endif
866 #define IO_SDMMC_SIZE   SZ_1M
867
868 #define IO_HOST1X_PHYS  0x54000000
869 #define IO_HOST1X_SIZE  SZ_8M
870
871 #ifdef CONFIG_ARCH_TEGRA_2x_SOC
872 #define IO_PPCS_PHYS    0xC4000000
873 #else
874 #define IO_PPCS_PHYS    0x7C000000
875 #endif
876 #define IO_PPCS_SIZE    SZ_1M
877
878 #if defined(CONFIG_ARCH_TEGRA_2x_SOC)
879 #define IO_PCIE_PHYS    0x80000000
880 #elif defined(CONFIG_ARCH_TEGRA_3x_SOC)
881 #define IO_PCIE_PHYS    0x00000000
882 #else
883 #define IO_PCIE_PHYS    0x01000000
884 #endif
885 #if defined(CONFIG_TEGRA_PCI)
886 #define IO_PCIE_SIZE    (SZ_16M * 2)
887 #else
888 #define IO_PCIE_SIZE    0
889 #endif
890
891 #if defined(CONFIG_MTD_NOR_TEGRA) || defined(CONFIG_TEGRA_GMI)
892 #ifdef CONFIG_ARCH_TEGRA_2x_SOC
893 #define IO_NOR_PHYS     0xD0000000
894 #define IO_NOR_SIZE     (SZ_64M)
895 #else
896 #define IO_NOR_PHYS     0x48000000
897 #if defined(CONFIG_TEGRA_GMI)
898 #define IO_NOR_SIZE     (SZ_128M)
899 #else
900 #define IO_NOR_SIZE     (SZ_64M)
901 #endif
902 #endif
903 #else
904 #define IO_NOR_PHYS     0x0
905 #define IO_NOR_SIZE     0
906 #endif
907
908
909
910 /* Virtual aperture limits are packed into the I/O space from the higest
911    address to lowest with each aperture base address adjusted as necessary
912    for proper section mapping boundary (2 MB) rounding. */
913
914 #define IO_LAST_ADDR            IOMEM(0xFEE00000)
915 #define IO_HOST1X_VIRT          IOMEM((IO_LAST_ADDR - IO_VIRT_ROUND_UP(IO_HOST1X_SIZE)))
916 #define IO_SDMMC_VIRT           IOMEM((IO_HOST1X_VIRT - IO_VIRT_ROUND_UP(IO_SDMMC_SIZE)))
917 #define IO_USB_VIRT             IOMEM((IO_SDMMC_VIRT - IO_VIRT_ROUND_UP(IO_USB_SIZE)))
918 #define IO_APB_VIRT             IOMEM((IO_USB_VIRT - IO_VIRT_ROUND_UP(IO_APB_SIZE)))
919 #define IO_PPSB_VIRT            IOMEM((IO_APB_VIRT - IO_VIRT_ROUND_UP(IO_PPSB_SIZE)))
920 #define IO_CPU_VIRT             IOMEM((IO_PPSB_VIRT - IO_VIRT_ROUND_UP(IO_CPU_SIZE)))
921 #define IO_IRAM_VIRT            IOMEM((IO_CPU_VIRT - IO_VIRT_ROUND_UP(IO_IRAM_SIZE)))
922 #define IO_PPCS_VIRT            IOMEM((IO_IRAM_VIRT - IO_VIRT_ROUND_UP(IO_PPCS_SIZE)))
923 #define IO_PCIE_VIRT            IOMEM((IO_PPCS_VIRT - IO_VIRT_ROUND_UP(IO_PCIE_SIZE)))
924 #define IO_NOR_VIRT             IOMEM((IO_PCIE_VIRT - IO_VIRT_ROUND_UP(IO_NOR_SIZE)))
925 #ifdef CONFIG_TEGRA_GK20A
926 #define IO_GK20A_B0_VIRT        (IO_NOR_VIRT - IO_VIRT_ROUND_UP(IO_GK20A_B0_SIZE))
927 #define IO_GK20A_B1_VIRT        (IO_GK20A_B0_VIRT - IO_VIRT_ROUND_UP(IO_GK20A_B1_SIZE))
928 #else
929 #define IO_GK20A_B0_VIRT        IO_NOR_VIRT
930 #define IO_GK20A_B1_VIRT        IO_NOR_VIRT
931 #endif
932 #ifdef CONFIG_TEGRA_PRE_SILICON_SUPPORT
933 #define IO_SIM_ESCAPE_VIRT      IOMEM((IO_GK20A_B1_VIRT - IO_VIRT_ROUND_UP(IO_SIM_ESCAPE_SIZE)))
934 #define IO_SMC_VIRT             IOMEM((IO_SIM_ESCAPE_VIRT - IO_VIRT_ROUND_UP(IO_SMC_SIZE)))
935 #endif
936
937 #define IO_TO_VIRT_BETWEEN(p, st, sz)   ((p) >= (st) && (p) < ((st) + (sz)))
938 #define IO_TO_VIRT_XLATE(p, pst, vst)   ((void *)((p) - (pst) + (vst)))
939
940 #ifdef CONFIG_TEGRA_GK20A
941 #define IO_TO_VIRT_GK20A_B0(n) \
942         IO_TO_VIRT_BETWEEN((n), IO_GK20A_B0_PHYS, IO_GK20A_B0_SIZE) ?   \
943                 IO_TO_VIRT_XLATE((n), IO_GK20A_B0_PHYS, IO_GK20A_B0_VIRT) :
944 #define IO_TO_VIRT_GK20A_B1(n) \
945         IO_TO_VIRT_BETWEEN((n), IO_GK20A_B1_PHYS, IO_GK20A_B1_SIZE) ?   \
946                 IO_TO_VIRT_XLATE((n), IO_GK20A_B1_PHYS, IO_GK20A_B1_VIRT) :
947 #else
948 #define IO_TO_VIRT_GK20A_B0(n)
949 #define IO_TO_VIRT_GK20A_B1(n)
950 #endif
951
952 #ifdef CONFIG_TEGRA_PRE_SILICON_SUPPORT
953 #define IO_TO_VIRT_SMC(n) \
954         IO_TO_VIRT_BETWEEN((n), IO_SMC_PHYS, IO_SMC_SIZE) ?             \
955                 IO_TO_VIRT_XLATE((n), IO_SMC_PHYS, IO_SMC_VIRT) :
956 #define IO_TO_VIRT_SIM_ESCAPE(n) \
957         IO_TO_VIRT_BETWEEN((n), IO_SIM_ESCAPE_PHYS, IO_SIM_ESCAPE_SIZE) ? \
958                 IO_TO_VIRT_XLATE((n), IO_SIM_ESCAPE_PHYS, IO_SIM_ESCAPE_VIRT) :
959 #else
960 #define IO_TO_VIRT_SMC(n)
961 #define IO_TO_VIRT_SIM_ESCAPE(n)
962 #endif
963
964 #define IO_TO_VIRT(n) ( \
965         IO_TO_VIRT_BETWEEN((n), IO_PPSB_PHYS, IO_PPSB_SIZE) ?           \
966                 IO_TO_VIRT_XLATE((n), IO_PPSB_PHYS, IO_PPSB_VIRT) :     \
967         IO_TO_VIRT_BETWEEN((n), IO_APB_PHYS, IO_APB_SIZE) ?             \
968                 IO_TO_VIRT_XLATE((n), IO_APB_PHYS, IO_APB_VIRT) :       \
969         IO_TO_VIRT_BETWEEN((n), IO_CPU_PHYS, IO_CPU_SIZE) ?             \
970                 IO_TO_VIRT_XLATE((n), IO_CPU_PHYS, IO_CPU_VIRT) :       \
971         IO_TO_VIRT_BETWEEN((n), IO_IRAM_PHYS, IO_IRAM_SIZE) ?           \
972                 IO_TO_VIRT_XLATE((n), IO_IRAM_PHYS, IO_IRAM_VIRT) :     \
973         IO_TO_VIRT_BETWEEN((n), IO_HOST1X_PHYS, IO_HOST1X_SIZE) ?       \
974                 IO_TO_VIRT_XLATE((n), IO_HOST1X_PHYS, IO_HOST1X_VIRT) : \
975         IO_TO_VIRT_GK20A_B0(n) \
976         IO_TO_VIRT_GK20A_B1(n) \
977         IO_TO_VIRT_BETWEEN((n), IO_USB_PHYS, IO_USB_SIZE) ?             \
978                 IO_TO_VIRT_XLATE((n), IO_USB_PHYS, IO_USB_VIRT) :       \
979         IO_TO_VIRT_BETWEEN((n), IO_SDMMC_PHYS, IO_SDMMC_SIZE) ?         \
980                 IO_TO_VIRT_XLATE((n), IO_SDMMC_PHYS, IO_SDMMC_VIRT) :   \
981         IO_TO_VIRT_BETWEEN((n), IO_PPCS_PHYS, IO_PPCS_SIZE) ?           \
982                 IO_TO_VIRT_XLATE((n), IO_PPCS_PHYS, IO_PPCS_VIRT) :     \
983         IO_TO_VIRT_BETWEEN((n), IO_PCIE_PHYS, IO_PCIE_SIZE) ?           \
984                 IO_TO_VIRT_XLATE((n), IO_PCIE_PHYS, IO_PCIE_VIRT) :     \
985         IO_TO_VIRT_SMC((n))             \
986         IO_TO_VIRT_SIM_ESCAPE((n))      \
987         IO_TO_VIRT_BETWEEN((n), IO_NOR_PHYS, IO_NOR_SIZE) ?             \
988                 IO_TO_VIRT_XLATE((n), IO_NOR_PHYS, IO_NOR_VIRT) :       \
989         NULL)
990
991 #define IO_ADDRESS(n) (IO_TO_VIRT(n))
992
993 #endif