From 5d8b46b6df95028c48fcbadc36fed2929fabb20e Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Fri, 21 Jan 2011 17:04:07 -0800 Subject: [PATCH] ARM: tegra: Statically map all device io memory Change-Id: I0c750b766dcdd166ddff6317b93556f9f5cce899 Signed-off-by: Colin Cross --- .../arm/mach-tegra/include/mach/entry-macro.S | 2 +- arch/arm/mach-tegra/include/mach/io.h | 22 +++++++++++++++++-- arch/arm/mach-tegra/io.c | 18 +++++++++++++++ 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/arch/arm/mach-tegra/include/mach/entry-macro.S b/arch/arm/mach-tegra/include/mach/entry-macro.S index 2ba9e5c9d2f6..17a42dac3b01 100644 --- a/arch/arm/mach-tegra/include/mach/entry-macro.S +++ b/arch/arm/mach-tegra/include/mach/entry-macro.S @@ -20,7 +20,7 @@ #include /* 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 diff --git a/arch/arm/mach-tegra/include/mach/io.h b/arch/arm/mach-tegra/include/mach/io.h index 16f16189b5eb..9a7f8b93ea10 100644 --- a/arch/arm/mach-tegra/include/mach/io.h +++ b/arch/arm/mach-tegra/include/mach/io.h @@ -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 @@ -49,6 +49,18 @@ #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))) @@ -61,6 +73,12 @@ 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__ diff --git a/arch/arm/mach-tegra/io.c b/arch/arm/mach-tegra/io.c index 31848a9592f8..0856818e92da 100644 --- a/arch/arm/mach-tegra/io.c +++ b/arch/arm/mach-tegra/io.c @@ -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) -- 2.34.1