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