diff options
Diffstat (limited to 'arch/arm/mach-omap2/io.c')
-rw-r--r-- | arch/arm/mach-omap2/io.c | 126 |
1 files changed, 105 insertions, 21 deletions
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c index 03c6ab1a3b1f..71a9de382d2d 100644 --- a/arch/arm/mach-omap2/io.c +++ b/arch/arm/mach-omap2/io.c | |||
@@ -43,7 +43,9 @@ | |||
43 | * The machine specific code may provide the extra mapping besides the | 43 | * The machine specific code may provide the extra mapping besides the |
44 | * default mapping provided here. | 44 | * default mapping provided here. |
45 | */ | 45 | */ |
46 | static struct map_desc omap2_io_desc[] __initdata = { | 46 | |
47 | #ifdef CONFIG_ARCH_OMAP24XX | ||
48 | static struct map_desc omap24xx_io_desc[] __initdata = { | ||
47 | { | 49 | { |
48 | .virtual = L3_24XX_VIRT, | 50 | .virtual = L3_24XX_VIRT, |
49 | .pfn = __phys_to_pfn(L3_24XX_PHYS), | 51 | .pfn = __phys_to_pfn(L3_24XX_PHYS), |
@@ -51,12 +53,39 @@ static struct map_desc omap2_io_desc[] __initdata = { | |||
51 | .type = MT_DEVICE | 53 | .type = MT_DEVICE |
52 | }, | 54 | }, |
53 | { | 55 | { |
54 | .virtual = L4_24XX_VIRT, | 56 | .virtual = L4_24XX_VIRT, |
55 | .pfn = __phys_to_pfn(L4_24XX_PHYS), | 57 | .pfn = __phys_to_pfn(L4_24XX_PHYS), |
56 | .length = L4_24XX_SIZE, | 58 | .length = L4_24XX_SIZE, |
57 | .type = MT_DEVICE | 59 | .type = MT_DEVICE |
60 | }, | ||
61 | }; | ||
62 | |||
63 | #ifdef CONFIG_ARCH_OMAP2420 | ||
64 | static struct map_desc omap242x_io_desc[] __initdata = { | ||
65 | { | ||
66 | .virtual = DSP_MEM_24XX_VIRT, | ||
67 | .pfn = __phys_to_pfn(DSP_MEM_24XX_PHYS), | ||
68 | .length = DSP_MEM_24XX_SIZE, | ||
69 | .type = MT_DEVICE | ||
70 | }, | ||
71 | { | ||
72 | .virtual = DSP_IPI_24XX_VIRT, | ||
73 | .pfn = __phys_to_pfn(DSP_IPI_24XX_PHYS), | ||
74 | .length = DSP_IPI_24XX_SIZE, | ||
75 | .type = MT_DEVICE | ||
58 | }, | 76 | }, |
77 | { | ||
78 | .virtual = DSP_MMU_24XX_VIRT, | ||
79 | .pfn = __phys_to_pfn(DSP_MMU_24XX_PHYS), | ||
80 | .length = DSP_MMU_24XX_SIZE, | ||
81 | .type = MT_DEVICE | ||
82 | }, | ||
83 | }; | ||
84 | |||
85 | #endif | ||
86 | |||
59 | #ifdef CONFIG_ARCH_OMAP2430 | 87 | #ifdef CONFIG_ARCH_OMAP2430 |
88 | static struct map_desc omap243x_io_desc[] __initdata = { | ||
60 | { | 89 | { |
61 | .virtual = L4_WK_243X_VIRT, | 90 | .virtual = L4_WK_243X_VIRT, |
62 | .pfn = __phys_to_pfn(L4_WK_243X_PHYS), | 91 | .pfn = __phys_to_pfn(L4_WK_243X_PHYS), |
@@ -69,30 +98,90 @@ static struct map_desc omap2_io_desc[] __initdata = { | |||
69 | .length = OMAP243X_GPMC_SIZE, | 98 | .length = OMAP243X_GPMC_SIZE, |
70 | .type = MT_DEVICE | 99 | .type = MT_DEVICE |
71 | }, | 100 | }, |
101 | { | ||
102 | .virtual = OMAP243X_SDRC_VIRT, | ||
103 | .pfn = __phys_to_pfn(OMAP243X_SDRC_PHYS), | ||
104 | .length = OMAP243X_SDRC_SIZE, | ||
105 | .type = MT_DEVICE | ||
106 | }, | ||
107 | { | ||
108 | .virtual = OMAP243X_SMS_VIRT, | ||
109 | .pfn = __phys_to_pfn(OMAP243X_SMS_PHYS), | ||
110 | .length = OMAP243X_SMS_SIZE, | ||
111 | .type = MT_DEVICE | ||
112 | }, | ||
113 | }; | ||
72 | #endif | 114 | #endif |
115 | #endif | ||
116 | |||
117 | #ifdef CONFIG_ARCH_OMAP34XX | ||
118 | static struct map_desc omap34xx_io_desc[] __initdata = { | ||
73 | { | 119 | { |
74 | .virtual = DSP_MEM_24XX_VIRT, | 120 | .virtual = L3_34XX_VIRT, |
75 | .pfn = __phys_to_pfn(DSP_MEM_24XX_PHYS), | 121 | .pfn = __phys_to_pfn(L3_34XX_PHYS), |
76 | .length = DSP_MEM_24XX_SIZE, | 122 | .length = L3_34XX_SIZE, |
77 | .type = MT_DEVICE | 123 | .type = MT_DEVICE |
78 | }, | 124 | }, |
79 | { | 125 | { |
80 | .virtual = DSP_IPI_24XX_VIRT, | 126 | .virtual = L4_34XX_VIRT, |
81 | .pfn = __phys_to_pfn(DSP_IPI_24XX_PHYS), | 127 | .pfn = __phys_to_pfn(L4_34XX_PHYS), |
82 | .length = DSP_IPI_24XX_SIZE, | 128 | .length = L4_34XX_SIZE, |
83 | .type = MT_DEVICE | 129 | .type = MT_DEVICE |
84 | }, | 130 | }, |
85 | { | 131 | { |
86 | .virtual = DSP_MMU_24XX_VIRT, | 132 | .virtual = L4_WK_34XX_VIRT, |
87 | .pfn = __phys_to_pfn(DSP_MMU_24XX_PHYS), | 133 | .pfn = __phys_to_pfn(L4_WK_34XX_PHYS), |
88 | .length = DSP_MMU_24XX_SIZE, | 134 | .length = L4_WK_34XX_SIZE, |
135 | .type = MT_DEVICE | ||
136 | }, | ||
137 | { | ||
138 | .virtual = OMAP34XX_GPMC_VIRT, | ||
139 | .pfn = __phys_to_pfn(OMAP34XX_GPMC_PHYS), | ||
140 | .length = OMAP34XX_GPMC_SIZE, | ||
141 | .type = MT_DEVICE | ||
142 | }, | ||
143 | { | ||
144 | .virtual = OMAP343X_SMS_VIRT, | ||
145 | .pfn = __phys_to_pfn(OMAP343X_SMS_PHYS), | ||
146 | .length = OMAP343X_SMS_SIZE, | ||
147 | .type = MT_DEVICE | ||
148 | }, | ||
149 | { | ||
150 | .virtual = OMAP343X_SDRC_VIRT, | ||
151 | .pfn = __phys_to_pfn(OMAP343X_SDRC_PHYS), | ||
152 | .length = OMAP343X_SDRC_SIZE, | ||
89 | .type = MT_DEVICE | 153 | .type = MT_DEVICE |
90 | } | 154 | }, |
155 | { | ||
156 | .virtual = L4_PER_34XX_VIRT, | ||
157 | .pfn = __phys_to_pfn(L4_PER_34XX_PHYS), | ||
158 | .length = L4_PER_34XX_SIZE, | ||
159 | .type = MT_DEVICE | ||
160 | }, | ||
161 | { | ||
162 | .virtual = L4_EMU_34XX_VIRT, | ||
163 | .pfn = __phys_to_pfn(L4_EMU_34XX_PHYS), | ||
164 | .length = L4_EMU_34XX_SIZE, | ||
165 | .type = MT_DEVICE | ||
166 | }, | ||
91 | }; | 167 | }; |
168 | #endif | ||
92 | 169 | ||
93 | void __init omap2_map_common_io(void) | 170 | void __init omap2_map_common_io(void) |
94 | { | 171 | { |
95 | iotable_init(omap2_io_desc, ARRAY_SIZE(omap2_io_desc)); | 172 | #if defined(CONFIG_ARCH_OMAP2420) |
173 | iotable_init(omap24xx_io_desc, ARRAY_SIZE(omap24xx_io_desc)); | ||
174 | iotable_init(omap242x_io_desc, ARRAY_SIZE(omap242x_io_desc)); | ||
175 | #endif | ||
176 | |||
177 | #if defined(CONFIG_ARCH_OMAP2430) | ||
178 | iotable_init(omap24xx_io_desc, ARRAY_SIZE(omap24xx_io_desc)); | ||
179 | iotable_init(omap243x_io_desc, ARRAY_SIZE(omap243x_io_desc)); | ||
180 | #endif | ||
181 | |||
182 | #if defined(CONFIG_ARCH_OMAP34XX) | ||
183 | iotable_init(omap34xx_io_desc, ARRAY_SIZE(omap34xx_io_desc)); | ||
184 | #endif | ||
96 | 185 | ||
97 | /* Normally devicemaps_init() would flush caches and tlb after | 186 | /* Normally devicemaps_init() would flush caches and tlb after |
98 | * mdesc->map_io(), but we must also do it here because of the CPU | 187 | * mdesc->map_io(), but we must also do it here because of the CPU |
@@ -112,11 +201,6 @@ void __init omap2_init_common_hw(void) | |||
112 | pwrdm_init(powerdomains_omap); | 201 | pwrdm_init(powerdomains_omap); |
113 | clkdm_init(clockdomains_omap, clkdm_pwrdm_autodeps); | 202 | clkdm_init(clockdomains_omap, clkdm_pwrdm_autodeps); |
114 | omap2_clk_init(); | 203 | omap2_clk_init(); |
115 | /* | ||
116 | * Need to Fix this for 2430 | ||
117 | */ | ||
118 | #ifndef CONFIG_ARCH_OMAP2430 | ||
119 | omap2_init_memory(); | 204 | omap2_init_memory(); |
120 | #endif | ||
121 | gpmc_init(); | 205 | gpmc_init(); |
122 | } | 206 | } |