ARM: tegra: Statically map all device io memory
authorColin Cross <ccross@android.com>
Sat, 22 Jan 2011 01:04:07 +0000 (17:04 -0800)
committerColin Cross <ccross@android.com>
Sat, 22 Jan 2011 01:05:16 +0000 (17:05 -0800)
Change-Id: I0c750b766dcdd166ddff6317b93556f9f5cce899
Signed-off-by: Colin Cross <ccross@android.com>
arch/arm/mach-tegra/include/mach/entry-macro.S
arch/arm/mach-tegra/include/mach/io.h
arch/arm/mach-tegra/io.c

index 2ba9e5c9d2f6f711aecae8bda9506c7008d406a0..17a42dac3b01223a288e2d4a7ac6dc53dcf7c627 100644 (file)
@@ -20,7 +20,7 @@
 #include <asm/hardware/gic.h>
 
        /* Uses the GIC interrupt controller built into the cpu */
-#define ICTRL_BASE (IO_CPU_VIRT + 0x100)
+#define ICTRL_BASE (IO_CPU_VIRT + 0x40100)
 
        .macro  disable_fiq
        .endm
index 16f16189b5eb03ab5a125ec5577a954d37e4a640..9a7f8b93ea10d0646d725c8552fa25b1ae551f42 100644 (file)
@@ -37,9 +37,9 @@
 #define IO_IRAM_VIRT   0xFE400000
 #define IO_IRAM_SIZE   SZ_256K
 
-#define IO_CPU_PHYS     0x50040000
+#define IO_CPU_PHYS     0x50000000
 #define IO_CPU_VIRT     0xFE000000
-#define IO_CPU_SIZE    SZ_16K
+#define IO_CPU_SIZE    SZ_1M
 
 #define IO_PPSB_PHYS   0x60000000
 #define IO_PPSB_VIRT   0xFE200000
 #define IO_APB_VIRT    0xFE300000
 #define IO_APB_SIZE    SZ_1M
 
+#define IO_USB_PHYS    0xC5000000
+#define IO_USB_VIRT    0xFE500000
+#define IO_USB_SIZE    SZ_1M
+
+#define IO_SDMMC_PHYS  0xC8000000
+#define IO_SDMMC_VIRT  0xFE600000
+#define IO_SDMMC_SIZE  SZ_1M
+
+#define IO_HOST1X_PHYS 0x54000000
+#define IO_HOST1X_VIRT 0xFE700000
+#define IO_HOST1X_SIZE SZ_4M
+
 #define IO_TO_VIRT_BETWEEN(p, st, sz)  ((p) >= (st) && (p) < ((st) + (sz)))
 #define IO_TO_VIRT_XLATE(p, pst, vst)  (((p) - (pst) + (vst)))
 
                IO_TO_VIRT_XLATE((n), IO_CPU_PHYS, IO_CPU_VIRT) :       \
        IO_TO_VIRT_BETWEEN((n), IO_IRAM_PHYS, IO_IRAM_SIZE) ?           \
                IO_TO_VIRT_XLATE((n), IO_IRAM_PHYS, IO_IRAM_VIRT) :     \
+       IO_TO_VIRT_BETWEEN((n), IO_HOST1X_PHYS, IO_HOST1X_SIZE) ?               \
+               IO_TO_VIRT_XLATE((n), IO_HOST1X_PHYS, IO_HOST1X_VIRT) : \
+       IO_TO_VIRT_BETWEEN((n), IO_USB_PHYS, IO_USB_SIZE) ?             \
+               IO_TO_VIRT_XLATE((n), IO_USB_PHYS, IO_USB_VIRT) :       \
+       IO_TO_VIRT_BETWEEN((n), IO_SDMMC_PHYS, IO_SDMMC_SIZE) ?         \
+               IO_TO_VIRT_XLATE((n), IO_SDMMC_PHYS, IO_SDMMC_VIRT) :   \
        0)
 
 #ifndef __ASSEMBLER__
index 31848a9592f8770d3df1d28301913b2a8ffb52cc..0856818e92da255017f3344163ebfb0b09f89d2a 100644 (file)
@@ -55,6 +55,24 @@ static struct map_desc tegra_io_desc[] __initdata = {
                .length = IO_IRAM_SIZE,
                .type = MT_DEVICE,
        },
+       {
+               .virtual = IO_HOST1X_VIRT,
+               .pfn = __phys_to_pfn(IO_HOST1X_PHYS),
+               .length = IO_HOST1X_SIZE,
+               .type = MT_DEVICE,
+       },
+       {
+               .virtual = IO_USB_VIRT,
+               .pfn = __phys_to_pfn(IO_USB_PHYS),
+               .length = IO_USB_SIZE,
+               .type = MT_DEVICE,
+       },
+       {
+               .virtual = IO_SDMMC_VIRT,
+               .pfn = __phys_to_pfn(IO_SDMMC_PHYS),
+               .length = IO_SDMMC_SIZE,
+               .type = MT_DEVICE,
+       },
 };
 
 void __init tegra_map_common_io(void)