diff options
Diffstat (limited to 'arch/arm/mach-spear3xx')
-rw-r--r-- | arch/arm/mach-spear3xx/clock.c | 479 | ||||
-rw-r--r-- | arch/arm/mach-spear3xx/include/mach/entry-macro.S | 3 | ||||
-rw-r--r-- | arch/arm/mach-spear3xx/include/mach/generic.h | 22 | ||||
-rw-r--r-- | arch/arm/mach-spear3xx/include/mach/hardware.h | 3 | ||||
-rw-r--r-- | arch/arm/mach-spear3xx/include/mach/irqs.h | 4 | ||||
-rw-r--r-- | arch/arm/mach-spear3xx/include/mach/misc_regs.h | 143 | ||||
-rw-r--r-- | arch/arm/mach-spear3xx/include/mach/spear.h | 135 | ||||
-rw-r--r-- | arch/arm/mach-spear3xx/include/mach/spear300.h | 59 | ||||
-rw-r--r-- | arch/arm/mach-spear3xx/include/mach/spear310.h | 34 | ||||
-rw-r--r-- | arch/arm/mach-spear3xx/include/mach/spear320.h | 67 | ||||
-rw-r--r-- | arch/arm/mach-spear3xx/spear300.c | 82 | ||||
-rw-r--r-- | arch/arm/mach-spear3xx/spear300_evb.c | 15 | ||||
-rw-r--r-- | arch/arm/mach-spear3xx/spear310.c | 21 | ||||
-rw-r--r-- | arch/arm/mach-spear3xx/spear310_evb.c | 13 | ||||
-rw-r--r-- | arch/arm/mach-spear3xx/spear320.c | 41 | ||||
-rw-r--r-- | arch/arm/mach-spear3xx/spear320_evb.c | 15 | ||||
-rw-r--r-- | arch/arm/mach-spear3xx/spear3xx.c | 55 |
17 files changed, 709 insertions, 482 deletions
diff --git a/arch/arm/mach-spear3xx/clock.c b/arch/arm/mach-spear3xx/clock.c index 18febf92f20a..98bc7edc95a6 100644 --- a/arch/arm/mach-spear3xx/clock.c +++ b/arch/arm/mach-spear3xx/clock.c | |||
@@ -13,8 +13,8 @@ | |||
13 | 13 | ||
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <mach/misc_regs.h> | ||
17 | #include <plat/clock.h> | 16 | #include <plat/clock.h> |
17 | #include <mach/misc_regs.h> | ||
18 | 18 | ||
19 | /* root clks */ | 19 | /* root clks */ |
20 | /* 32 KHz oscillator clock */ | 20 | /* 32 KHz oscillator clock */ |
@@ -39,18 +39,43 @@ static struct clk rtc_clk = { | |||
39 | }; | 39 | }; |
40 | 40 | ||
41 | /* clock derived from 24 MHz osc clk */ | 41 | /* clock derived from 24 MHz osc clk */ |
42 | /* pll masks structure */ | ||
43 | static struct pll_clk_masks pll1_masks = { | ||
44 | .mode_mask = PLL_MODE_MASK, | ||
45 | .mode_shift = PLL_MODE_SHIFT, | ||
46 | .norm_fdbk_m_mask = PLL_NORM_FDBK_M_MASK, | ||
47 | .norm_fdbk_m_shift = PLL_NORM_FDBK_M_SHIFT, | ||
48 | .dith_fdbk_m_mask = PLL_DITH_FDBK_M_MASK, | ||
49 | .dith_fdbk_m_shift = PLL_DITH_FDBK_M_SHIFT, | ||
50 | .div_p_mask = PLL_DIV_P_MASK, | ||
51 | .div_p_shift = PLL_DIV_P_SHIFT, | ||
52 | .div_n_mask = PLL_DIV_N_MASK, | ||
53 | .div_n_shift = PLL_DIV_N_SHIFT, | ||
54 | }; | ||
55 | |||
42 | /* pll1 configuration structure */ | 56 | /* pll1 configuration structure */ |
43 | static struct pll_clk_config pll1_config = { | 57 | static struct pll_clk_config pll1_config = { |
44 | .mode_reg = PLL1_CTR, | 58 | .mode_reg = PLL1_CTR, |
45 | .cfg_reg = PLL1_FRQ, | 59 | .cfg_reg = PLL1_FRQ, |
60 | .masks = &pll1_masks, | ||
61 | }; | ||
62 | |||
63 | /* pll rate configuration table, in ascending order of rates */ | ||
64 | struct pll_rate_tbl pll_rtbl[] = { | ||
65 | {.mode = 0, .m = 0x85, .n = 0x0C, .p = 0x1}, /* 266 MHz */ | ||
66 | {.mode = 0, .m = 0xA6, .n = 0x0C, .p = 0x1}, /* 332 MHz */ | ||
46 | }; | 67 | }; |
47 | 68 | ||
48 | /* PLL1 clock */ | 69 | /* PLL1 clock */ |
49 | static struct clk pll1_clk = { | 70 | static struct clk pll1_clk = { |
71 | .flags = ENABLED_ON_INIT, | ||
50 | .pclk = &osc_24m_clk, | 72 | .pclk = &osc_24m_clk, |
51 | .en_reg = PLL1_CTR, | 73 | .en_reg = PLL1_CTR, |
52 | .en_reg_bit = PLL_ENABLE, | 74 | .en_reg_bit = PLL_ENABLE, |
53 | .recalc = &pll1_clk_recalc, | 75 | .calc_rate = &pll_calc_rate, |
76 | .recalc = &pll_clk_recalc, | ||
77 | .set_rate = &pll_clk_set_rate, | ||
78 | .rate_config = {pll_rtbl, ARRAY_SIZE(pll_rtbl), 1}, | ||
54 | .private_data = &pll1_config, | 79 | .private_data = &pll1_config, |
55 | }; | 80 | }; |
56 | 81 | ||
@@ -76,36 +101,83 @@ static struct clk cpu_clk = { | |||
76 | .recalc = &follow_parent, | 101 | .recalc = &follow_parent, |
77 | }; | 102 | }; |
78 | 103 | ||
104 | /* ahb masks structure */ | ||
105 | static struct bus_clk_masks ahb_masks = { | ||
106 | .mask = PLL_HCLK_RATIO_MASK, | ||
107 | .shift = PLL_HCLK_RATIO_SHIFT, | ||
108 | }; | ||
109 | |||
79 | /* ahb configuration structure */ | 110 | /* ahb configuration structure */ |
80 | static struct bus_clk_config ahb_config = { | 111 | static struct bus_clk_config ahb_config = { |
81 | .reg = CORE_CLK_CFG, | 112 | .reg = CORE_CLK_CFG, |
82 | .mask = PLL_HCLK_RATIO_MASK, | 113 | .masks = &ahb_masks, |
83 | .shift = PLL_HCLK_RATIO_SHIFT, | 114 | }; |
115 | |||
116 | /* ahb rate configuration table, in ascending order of rates */ | ||
117 | struct bus_rate_tbl bus_rtbl[] = { | ||
118 | {.div = 3}, /* == parent divided by 4 */ | ||
119 | {.div = 2}, /* == parent divided by 3 */ | ||
120 | {.div = 1}, /* == parent divided by 2 */ | ||
121 | {.div = 0}, /* == parent divided by 1 */ | ||
84 | }; | 122 | }; |
85 | 123 | ||
86 | /* ahb clock */ | 124 | /* ahb clock */ |
87 | static struct clk ahb_clk = { | 125 | static struct clk ahb_clk = { |
88 | .flags = ALWAYS_ENABLED, | 126 | .flags = ALWAYS_ENABLED, |
89 | .pclk = &pll1_clk, | 127 | .pclk = &pll1_clk, |
128 | .calc_rate = &bus_calc_rate, | ||
90 | .recalc = &bus_clk_recalc, | 129 | .recalc = &bus_clk_recalc, |
130 | .set_rate = &bus_clk_set_rate, | ||
131 | .rate_config = {bus_rtbl, ARRAY_SIZE(bus_rtbl), 2}, | ||
91 | .private_data = &ahb_config, | 132 | .private_data = &ahb_config, |
92 | }; | 133 | }; |
93 | 134 | ||
94 | /* uart configurations */ | 135 | /* auxiliary synthesizers masks */ |
95 | static struct aux_clk_config uart_config = { | 136 | static struct aux_clk_masks aux_masks = { |
137 | .eq_sel_mask = AUX_EQ_SEL_MASK, | ||
138 | .eq_sel_shift = AUX_EQ_SEL_SHIFT, | ||
139 | .eq1_mask = AUX_EQ1_SEL, | ||
140 | .eq2_mask = AUX_EQ2_SEL, | ||
141 | .xscale_sel_mask = AUX_XSCALE_MASK, | ||
142 | .xscale_sel_shift = AUX_XSCALE_SHIFT, | ||
143 | .yscale_sel_mask = AUX_YSCALE_MASK, | ||
144 | .yscale_sel_shift = AUX_YSCALE_SHIFT, | ||
145 | }; | ||
146 | |||
147 | /* uart synth configurations */ | ||
148 | static struct aux_clk_config uart_synth_config = { | ||
96 | .synth_reg = UART_CLK_SYNT, | 149 | .synth_reg = UART_CLK_SYNT, |
150 | .masks = &aux_masks, | ||
151 | }; | ||
152 | |||
153 | /* aux rate configuration table, in ascending order of rates */ | ||
154 | struct aux_rate_tbl aux_rtbl[] = { | ||
155 | /* For PLL1 = 332 MHz */ | ||
156 | {.xscale = 1, .yscale = 8, .eq = 1}, /* 41.5 MHz */ | ||
157 | {.xscale = 1, .yscale = 4, .eq = 1}, /* 83 MHz */ | ||
158 | {.xscale = 1, .yscale = 2, .eq = 1}, /* 166 MHz */ | ||
159 | }; | ||
160 | |||
161 | /* uart synth clock */ | ||
162 | static struct clk uart_synth_clk = { | ||
163 | .en_reg = UART_CLK_SYNT, | ||
164 | .en_reg_bit = AUX_SYNT_ENB, | ||
165 | .pclk = &pll1_clk, | ||
166 | .calc_rate = &aux_calc_rate, | ||
167 | .recalc = &aux_clk_recalc, | ||
168 | .set_rate = &aux_clk_set_rate, | ||
169 | .rate_config = {aux_rtbl, ARRAY_SIZE(aux_rtbl), 1}, | ||
170 | .private_data = &uart_synth_config, | ||
97 | }; | 171 | }; |
98 | 172 | ||
99 | /* uart parents */ | 173 | /* uart parents */ |
100 | static struct pclk_info uart_pclk_info[] = { | 174 | static struct pclk_info uart_pclk_info[] = { |
101 | { | 175 | { |
102 | .pclk = &pll1_clk, | 176 | .pclk = &uart_synth_clk, |
103 | .pclk_mask = AUX_CLK_PLL1_MASK, | 177 | .pclk_val = AUX_CLK_PLL1_VAL, |
104 | .scalable = 1, | ||
105 | }, { | 178 | }, { |
106 | .pclk = &pll3_48m_clk, | 179 | .pclk = &pll3_48m_clk, |
107 | .pclk_mask = AUX_CLK_PLL3_MASK, | 180 | .pclk_val = AUX_CLK_PLL3_VAL, |
108 | .scalable = 0, | ||
109 | }, | 181 | }, |
110 | }; | 182 | }; |
111 | 183 | ||
@@ -123,25 +195,35 @@ static struct clk uart_clk = { | |||
123 | .en_reg_bit = UART_CLK_ENB, | 195 | .en_reg_bit = UART_CLK_ENB, |
124 | .pclk_sel = &uart_pclk_sel, | 196 | .pclk_sel = &uart_pclk_sel, |
125 | .pclk_sel_shift = UART_CLK_SHIFT, | 197 | .pclk_sel_shift = UART_CLK_SHIFT, |
126 | .recalc = &aux_clk_recalc, | 198 | .recalc = &follow_parent, |
127 | .private_data = &uart_config, | ||
128 | }; | 199 | }; |
129 | 200 | ||
130 | /* firda configurations */ | 201 | /* firda configurations */ |
131 | static struct aux_clk_config firda_config = { | 202 | static struct aux_clk_config firda_synth_config = { |
132 | .synth_reg = FIRDA_CLK_SYNT, | 203 | .synth_reg = FIRDA_CLK_SYNT, |
204 | .masks = &aux_masks, | ||
205 | }; | ||
206 | |||
207 | /* firda synth clock */ | ||
208 | static struct clk firda_synth_clk = { | ||
209 | .en_reg = FIRDA_CLK_SYNT, | ||
210 | .en_reg_bit = AUX_SYNT_ENB, | ||
211 | .pclk = &pll1_clk, | ||
212 | .calc_rate = &aux_calc_rate, | ||
213 | .recalc = &aux_clk_recalc, | ||
214 | .set_rate = &aux_clk_set_rate, | ||
215 | .rate_config = {aux_rtbl, ARRAY_SIZE(aux_rtbl), 1}, | ||
216 | .private_data = &firda_synth_config, | ||
133 | }; | 217 | }; |
134 | 218 | ||
135 | /* firda parents */ | 219 | /* firda parents */ |
136 | static struct pclk_info firda_pclk_info[] = { | 220 | static struct pclk_info firda_pclk_info[] = { |
137 | { | 221 | { |
138 | .pclk = &pll1_clk, | 222 | .pclk = &firda_synth_clk, |
139 | .pclk_mask = AUX_CLK_PLL1_MASK, | 223 | .pclk_val = AUX_CLK_PLL1_VAL, |
140 | .scalable = 1, | ||
141 | }, { | 224 | }, { |
142 | .pclk = &pll3_48m_clk, | 225 | .pclk = &pll3_48m_clk, |
143 | .pclk_mask = AUX_CLK_PLL3_MASK, | 226 | .pclk_val = AUX_CLK_PLL3_VAL, |
144 | .scalable = 0, | ||
145 | }, | 227 | }, |
146 | }; | 228 | }; |
147 | 229 | ||
@@ -159,73 +241,155 @@ static struct clk firda_clk = { | |||
159 | .en_reg_bit = FIRDA_CLK_ENB, | 241 | .en_reg_bit = FIRDA_CLK_ENB, |
160 | .pclk_sel = &firda_pclk_sel, | 242 | .pclk_sel = &firda_pclk_sel, |
161 | .pclk_sel_shift = FIRDA_CLK_SHIFT, | 243 | .pclk_sel_shift = FIRDA_CLK_SHIFT, |
162 | .recalc = &aux_clk_recalc, | 244 | .recalc = &follow_parent, |
163 | .private_data = &firda_config, | 245 | }; |
246 | |||
247 | /* gpt synthesizer masks */ | ||
248 | static struct gpt_clk_masks gpt_masks = { | ||
249 | .mscale_sel_mask = GPT_MSCALE_MASK, | ||
250 | .mscale_sel_shift = GPT_MSCALE_SHIFT, | ||
251 | .nscale_sel_mask = GPT_NSCALE_MASK, | ||
252 | .nscale_sel_shift = GPT_NSCALE_SHIFT, | ||
253 | }; | ||
254 | |||
255 | /* gpt rate configuration table, in ascending order of rates */ | ||
256 | struct gpt_rate_tbl gpt_rtbl[] = { | ||
257 | /* For pll1 = 332 MHz */ | ||
258 | {.mscale = 4, .nscale = 0}, /* 41.5 MHz */ | ||
259 | {.mscale = 2, .nscale = 0}, /* 55.3 MHz */ | ||
260 | {.mscale = 1, .nscale = 0}, /* 83 MHz */ | ||
261 | }; | ||
262 | |||
263 | /* gpt0 synth clk config*/ | ||
264 | static struct gpt_clk_config gpt0_synth_config = { | ||
265 | .synth_reg = PRSC1_CLK_CFG, | ||
266 | .masks = &gpt_masks, | ||
267 | }; | ||
268 | |||
269 | /* gpt synth clock */ | ||
270 | static struct clk gpt0_synth_clk = { | ||
271 | .flags = ALWAYS_ENABLED, | ||
272 | .pclk = &pll1_clk, | ||
273 | .calc_rate = &gpt_calc_rate, | ||
274 | .recalc = &gpt_clk_recalc, | ||
275 | .set_rate = &gpt_clk_set_rate, | ||
276 | .rate_config = {gpt_rtbl, ARRAY_SIZE(gpt_rtbl), 2}, | ||
277 | .private_data = &gpt0_synth_config, | ||
164 | }; | 278 | }; |
165 | 279 | ||
166 | /* gpt parents */ | 280 | /* gpt parents */ |
167 | static struct pclk_info gpt_pclk_info[] = { | 281 | static struct pclk_info gpt0_pclk_info[] = { |
168 | { | 282 | { |
169 | .pclk = &pll1_clk, | 283 | .pclk = &gpt0_synth_clk, |
170 | .pclk_mask = AUX_CLK_PLL1_MASK, | 284 | .pclk_val = AUX_CLK_PLL1_VAL, |
171 | .scalable = 1, | ||
172 | }, { | 285 | }, { |
173 | .pclk = &pll3_48m_clk, | 286 | .pclk = &pll3_48m_clk, |
174 | .pclk_mask = AUX_CLK_PLL3_MASK, | 287 | .pclk_val = AUX_CLK_PLL3_VAL, |
175 | .scalable = 0, | ||
176 | }, | 288 | }, |
177 | }; | 289 | }; |
178 | 290 | ||
179 | /* gpt parent select structure */ | 291 | /* gpt parent select structure */ |
180 | static struct pclk_sel gpt_pclk_sel = { | 292 | static struct pclk_sel gpt0_pclk_sel = { |
181 | .pclk_info = gpt_pclk_info, | 293 | .pclk_info = gpt0_pclk_info, |
182 | .pclk_count = ARRAY_SIZE(gpt_pclk_info), | 294 | .pclk_count = ARRAY_SIZE(gpt0_pclk_info), |
183 | .pclk_sel_reg = PERIP_CLK_CFG, | 295 | .pclk_sel_reg = PERIP_CLK_CFG, |
184 | .pclk_sel_mask = GPT_CLK_MASK, | 296 | .pclk_sel_mask = GPT_CLK_MASK, |
185 | }; | 297 | }; |
186 | 298 | ||
187 | /* gpt0 configurations */ | ||
188 | static struct aux_clk_config gpt0_config = { | ||
189 | .synth_reg = PRSC1_CLK_CFG, | ||
190 | }; | ||
191 | |||
192 | /* gpt0 timer clock */ | 299 | /* gpt0 timer clock */ |
193 | static struct clk gpt0_clk = { | 300 | static struct clk gpt0_clk = { |
194 | .flags = ALWAYS_ENABLED, | 301 | .flags = ALWAYS_ENABLED, |
195 | .pclk_sel = &gpt_pclk_sel, | 302 | .pclk_sel = &gpt0_pclk_sel, |
196 | .pclk_sel_shift = GPT0_CLK_SHIFT, | 303 | .pclk_sel_shift = GPT0_CLK_SHIFT, |
197 | .recalc = &gpt_clk_recalc, | 304 | .recalc = &follow_parent, |
198 | .private_data = &gpt0_config, | ||
199 | }; | 305 | }; |
200 | 306 | ||
201 | /* gpt1 configurations */ | 307 | /* gpt1 synth clk configurations */ |
202 | static struct aux_clk_config gpt1_config = { | 308 | static struct gpt_clk_config gpt1_synth_config = { |
203 | .synth_reg = PRSC2_CLK_CFG, | 309 | .synth_reg = PRSC2_CLK_CFG, |
310 | .masks = &gpt_masks, | ||
311 | }; | ||
312 | |||
313 | /* gpt1 synth clock */ | ||
314 | static struct clk gpt1_synth_clk = { | ||
315 | .flags = ALWAYS_ENABLED, | ||
316 | .pclk = &pll1_clk, | ||
317 | .calc_rate = &gpt_calc_rate, | ||
318 | .recalc = &gpt_clk_recalc, | ||
319 | .set_rate = &gpt_clk_set_rate, | ||
320 | .rate_config = {gpt_rtbl, ARRAY_SIZE(gpt_rtbl), 2}, | ||
321 | .private_data = &gpt1_synth_config, | ||
322 | }; | ||
323 | |||
324 | static struct pclk_info gpt1_pclk_info[] = { | ||
325 | { | ||
326 | .pclk = &gpt1_synth_clk, | ||
327 | .pclk_val = AUX_CLK_PLL1_VAL, | ||
328 | }, { | ||
329 | .pclk = &pll3_48m_clk, | ||
330 | .pclk_val = AUX_CLK_PLL3_VAL, | ||
331 | }, | ||
332 | }; | ||
333 | |||
334 | /* gpt parent select structure */ | ||
335 | static struct pclk_sel gpt1_pclk_sel = { | ||
336 | .pclk_info = gpt1_pclk_info, | ||
337 | .pclk_count = ARRAY_SIZE(gpt1_pclk_info), | ||
338 | .pclk_sel_reg = PERIP_CLK_CFG, | ||
339 | .pclk_sel_mask = GPT_CLK_MASK, | ||
204 | }; | 340 | }; |
205 | 341 | ||
206 | /* gpt1 timer clock */ | 342 | /* gpt1 timer clock */ |
207 | static struct clk gpt1_clk = { | 343 | static struct clk gpt1_clk = { |
208 | .en_reg = PERIP1_CLK_ENB, | 344 | .en_reg = PERIP1_CLK_ENB, |
209 | .en_reg_bit = GPT1_CLK_ENB, | 345 | .en_reg_bit = GPT1_CLK_ENB, |
210 | .pclk_sel = &gpt_pclk_sel, | 346 | .pclk_sel = &gpt1_pclk_sel, |
211 | .pclk_sel_shift = GPT1_CLK_SHIFT, | 347 | .pclk_sel_shift = GPT1_CLK_SHIFT, |
212 | .recalc = &gpt_clk_recalc, | 348 | .recalc = &follow_parent, |
213 | .private_data = &gpt1_config, | ||
214 | }; | 349 | }; |
215 | 350 | ||
216 | /* gpt2 configurations */ | 351 | /* gpt2 synth clk configurations */ |
217 | static struct aux_clk_config gpt2_config = { | 352 | static struct gpt_clk_config gpt2_synth_config = { |
218 | .synth_reg = PRSC3_CLK_CFG, | 353 | .synth_reg = PRSC3_CLK_CFG, |
354 | .masks = &gpt_masks, | ||
355 | }; | ||
356 | |||
357 | /* gpt1 synth clock */ | ||
358 | static struct clk gpt2_synth_clk = { | ||
359 | .flags = ALWAYS_ENABLED, | ||
360 | .pclk = &pll1_clk, | ||
361 | .calc_rate = &gpt_calc_rate, | ||
362 | .recalc = &gpt_clk_recalc, | ||
363 | .set_rate = &gpt_clk_set_rate, | ||
364 | .rate_config = {gpt_rtbl, ARRAY_SIZE(gpt_rtbl), 2}, | ||
365 | .private_data = &gpt2_synth_config, | ||
366 | }; | ||
367 | |||
368 | static struct pclk_info gpt2_pclk_info[] = { | ||
369 | { | ||
370 | .pclk = &gpt2_synth_clk, | ||
371 | .pclk_val = AUX_CLK_PLL1_VAL, | ||
372 | }, { | ||
373 | .pclk = &pll3_48m_clk, | ||
374 | .pclk_val = AUX_CLK_PLL3_VAL, | ||
375 | }, | ||
376 | }; | ||
377 | |||
378 | /* gpt parent select structure */ | ||
379 | static struct pclk_sel gpt2_pclk_sel = { | ||
380 | .pclk_info = gpt2_pclk_info, | ||
381 | .pclk_count = ARRAY_SIZE(gpt2_pclk_info), | ||
382 | .pclk_sel_reg = PERIP_CLK_CFG, | ||
383 | .pclk_sel_mask = GPT_CLK_MASK, | ||
219 | }; | 384 | }; |
220 | 385 | ||
221 | /* gpt2 timer clock */ | 386 | /* gpt2 timer clock */ |
222 | static struct clk gpt2_clk = { | 387 | static struct clk gpt2_clk = { |
223 | .en_reg = PERIP1_CLK_ENB, | 388 | .en_reg = PERIP1_CLK_ENB, |
224 | .en_reg_bit = GPT2_CLK_ENB, | 389 | .en_reg_bit = GPT2_CLK_ENB, |
225 | .pclk_sel = &gpt_pclk_sel, | 390 | .pclk_sel = &gpt2_pclk_sel, |
226 | .pclk_sel_shift = GPT2_CLK_SHIFT, | 391 | .pclk_sel_shift = GPT2_CLK_SHIFT, |
227 | .recalc = &gpt_clk_recalc, | 392 | .recalc = &follow_parent, |
228 | .private_data = &gpt2_config, | ||
229 | }; | 393 | }; |
230 | 394 | ||
231 | /* clock derived from pll3 clk */ | 395 | /* clock derived from pll3 clk */ |
@@ -245,26 +409,27 @@ static struct clk usbd_clk = { | |||
245 | .recalc = &follow_parent, | 409 | .recalc = &follow_parent, |
246 | }; | 410 | }; |
247 | 411 | ||
248 | /* clcd clock */ | 412 | /* clock derived from ahb clk */ |
249 | static struct clk clcd_clk = { | 413 | /* apb masks structure */ |
250 | .flags = ALWAYS_ENABLED, | 414 | static struct bus_clk_masks apb_masks = { |
251 | .pclk = &pll3_48m_clk, | 415 | .mask = HCLK_PCLK_RATIO_MASK, |
252 | .recalc = &follow_parent, | 416 | .shift = HCLK_PCLK_RATIO_SHIFT, |
253 | }; | 417 | }; |
254 | 418 | ||
255 | /* clock derived from ahb clk */ | ||
256 | /* apb configuration structure */ | 419 | /* apb configuration structure */ |
257 | static struct bus_clk_config apb_config = { | 420 | static struct bus_clk_config apb_config = { |
258 | .reg = CORE_CLK_CFG, | 421 | .reg = CORE_CLK_CFG, |
259 | .mask = HCLK_PCLK_RATIO_MASK, | 422 | .masks = &apb_masks, |
260 | .shift = HCLK_PCLK_RATIO_SHIFT, | ||
261 | }; | 423 | }; |
262 | 424 | ||
263 | /* apb clock */ | 425 | /* apb clock */ |
264 | static struct clk apb_clk = { | 426 | static struct clk apb_clk = { |
265 | .flags = ALWAYS_ENABLED, | 427 | .flags = ALWAYS_ENABLED, |
266 | .pclk = &ahb_clk, | 428 | .pclk = &ahb_clk, |
429 | .calc_rate = &bus_calc_rate, | ||
267 | .recalc = &bus_clk_recalc, | 430 | .recalc = &bus_clk_recalc, |
431 | .set_rate = &bus_clk_set_rate, | ||
432 | .rate_config = {bus_rtbl, ARRAY_SIZE(bus_rtbl), 2}, | ||
268 | .private_data = &apb_config, | 433 | .private_data = &apb_config, |
269 | }; | 434 | }; |
270 | 435 | ||
@@ -325,8 +490,17 @@ static struct clk adc_clk = { | |||
325 | .recalc = &follow_parent, | 490 | .recalc = &follow_parent, |
326 | }; | 491 | }; |
327 | 492 | ||
493 | #if defined(CONFIG_MACH_SPEAR310) || defined(CONFIG_MACH_SPEAR320) | ||
494 | /* emi clock */ | ||
495 | static struct clk emi_clk = { | ||
496 | .flags = ALWAYS_ENABLED, | ||
497 | .pclk = &ahb_clk, | ||
498 | .recalc = &follow_parent, | ||
499 | }; | ||
500 | #endif | ||
501 | |||
328 | /* ssp clock */ | 502 | /* ssp clock */ |
329 | static struct clk ssp_clk = { | 503 | static struct clk ssp0_clk = { |
330 | .pclk = &apb_clk, | 504 | .pclk = &apb_clk, |
331 | .en_reg = PERIP1_CLK_ENB, | 505 | .en_reg = PERIP1_CLK_ENB, |
332 | .en_reg_bit = SSP_CLK_ENB, | 506 | .en_reg_bit = SSP_CLK_ENB, |
@@ -343,14 +517,145 @@ static struct clk gpio_clk = { | |||
343 | 517 | ||
344 | static struct clk dummy_apb_pclk; | 518 | static struct clk dummy_apb_pclk; |
345 | 519 | ||
520 | #if defined(CONFIG_MACH_SPEAR300) || defined(CONFIG_MACH_SPEAR310) || \ | ||
521 | defined(CONFIG_MACH_SPEAR320) | ||
522 | /* fsmc clock */ | ||
523 | static struct clk fsmc_clk = { | ||
524 | .flags = ALWAYS_ENABLED, | ||
525 | .pclk = &ahb_clk, | ||
526 | .recalc = &follow_parent, | ||
527 | }; | ||
528 | #endif | ||
529 | |||
530 | /* common clocks to spear310 and spear320 */ | ||
531 | #if defined(CONFIG_MACH_SPEAR310) || defined(CONFIG_MACH_SPEAR320) | ||
532 | /* uart1 clock */ | ||
533 | static struct clk uart1_clk = { | ||
534 | .flags = ALWAYS_ENABLED, | ||
535 | .pclk = &apb_clk, | ||
536 | .recalc = &follow_parent, | ||
537 | }; | ||
538 | |||
539 | /* uart2 clock */ | ||
540 | static struct clk uart2_clk = { | ||
541 | .flags = ALWAYS_ENABLED, | ||
542 | .pclk = &apb_clk, | ||
543 | .recalc = &follow_parent, | ||
544 | }; | ||
545 | #endif /* CONFIG_MACH_SPEAR310 || CONFIG_MACH_SPEAR320 */ | ||
546 | |||
547 | /* common clocks to spear300 and spear320 */ | ||
548 | #if defined(CONFIG_MACH_SPEAR300) || defined(CONFIG_MACH_SPEAR320) | ||
549 | /* clcd clock */ | ||
550 | static struct clk clcd_clk = { | ||
551 | .flags = ALWAYS_ENABLED, | ||
552 | .pclk = &pll3_48m_clk, | ||
553 | .recalc = &follow_parent, | ||
554 | }; | ||
555 | |||
556 | /* sdhci clock */ | ||
557 | static struct clk sdhci_clk = { | ||
558 | .flags = ALWAYS_ENABLED, | ||
559 | .pclk = &ahb_clk, | ||
560 | .recalc = &follow_parent, | ||
561 | }; | ||
562 | #endif /* CONFIG_MACH_SPEAR300 || CONFIG_MACH_SPEAR320 */ | ||
563 | |||
564 | /* spear300 machine specific clock structures */ | ||
565 | #ifdef CONFIG_MACH_SPEAR300 | ||
566 | /* gpio1 clock */ | ||
567 | static struct clk gpio1_clk = { | ||
568 | .flags = ALWAYS_ENABLED, | ||
569 | .pclk = &apb_clk, | ||
570 | .recalc = &follow_parent, | ||
571 | }; | ||
572 | |||
573 | /* keyboard clock */ | ||
574 | static struct clk kbd_clk = { | ||
575 | .flags = ALWAYS_ENABLED, | ||
576 | .pclk = &apb_clk, | ||
577 | .recalc = &follow_parent, | ||
578 | }; | ||
579 | |||
580 | #endif | ||
581 | |||
582 | /* spear310 machine specific clock structures */ | ||
583 | #ifdef CONFIG_MACH_SPEAR310 | ||
584 | /* uart3 clock */ | ||
585 | static struct clk uart3_clk = { | ||
586 | .flags = ALWAYS_ENABLED, | ||
587 | .pclk = &apb_clk, | ||
588 | .recalc = &follow_parent, | ||
589 | }; | ||
590 | |||
591 | /* uart4 clock */ | ||
592 | static struct clk uart4_clk = { | ||
593 | .flags = ALWAYS_ENABLED, | ||
594 | .pclk = &apb_clk, | ||
595 | .recalc = &follow_parent, | ||
596 | }; | ||
597 | |||
598 | /* uart5 clock */ | ||
599 | static struct clk uart5_clk = { | ||
600 | .flags = ALWAYS_ENABLED, | ||
601 | .pclk = &apb_clk, | ||
602 | .recalc = &follow_parent, | ||
603 | }; | ||
604 | #endif | ||
605 | |||
606 | /* spear320 machine specific clock structures */ | ||
607 | #ifdef CONFIG_MACH_SPEAR320 | ||
608 | /* can0 clock */ | ||
609 | static struct clk can0_clk = { | ||
610 | .flags = ALWAYS_ENABLED, | ||
611 | .pclk = &apb_clk, | ||
612 | .recalc = &follow_parent, | ||
613 | }; | ||
614 | |||
615 | /* can1 clock */ | ||
616 | static struct clk can1_clk = { | ||
617 | .flags = ALWAYS_ENABLED, | ||
618 | .pclk = &apb_clk, | ||
619 | .recalc = &follow_parent, | ||
620 | }; | ||
621 | |||
622 | /* i2c1 clock */ | ||
623 | static struct clk i2c1_clk = { | ||
624 | .flags = ALWAYS_ENABLED, | ||
625 | .pclk = &ahb_clk, | ||
626 | .recalc = &follow_parent, | ||
627 | }; | ||
628 | |||
629 | /* ssp1 clock */ | ||
630 | static struct clk ssp1_clk = { | ||
631 | .flags = ALWAYS_ENABLED, | ||
632 | .pclk = &apb_clk, | ||
633 | .recalc = &follow_parent, | ||
634 | }; | ||
635 | |||
636 | /* ssp2 clock */ | ||
637 | static struct clk ssp2_clk = { | ||
638 | .flags = ALWAYS_ENABLED, | ||
639 | .pclk = &apb_clk, | ||
640 | .recalc = &follow_parent, | ||
641 | }; | ||
642 | |||
643 | /* pwm clock */ | ||
644 | static struct clk pwm_clk = { | ||
645 | .flags = ALWAYS_ENABLED, | ||
646 | .pclk = &apb_clk, | ||
647 | .recalc = &follow_parent, | ||
648 | }; | ||
649 | #endif | ||
650 | |||
346 | /* array of all spear 3xx clock lookups */ | 651 | /* array of all spear 3xx clock lookups */ |
347 | static struct clk_lookup spear_clk_lookups[] = { | 652 | static struct clk_lookup spear_clk_lookups[] = { |
348 | { .con_id = "apb_pclk", .clk = &dummy_apb_pclk}, | 653 | { .con_id = "apb_pclk", .clk = &dummy_apb_pclk}, |
349 | /* root clks */ | 654 | /* root clks */ |
350 | { .con_id = "osc_32k_clk", .clk = &osc_32k_clk}, | 655 | { .con_id = "osc_32k_clk", .clk = &osc_32k_clk}, |
351 | { .con_id = "osc_24m_clk", .clk = &osc_24m_clk}, | 656 | { .con_id = "osc_24m_clk", .clk = &osc_24m_clk}, |
352 | /* clock derived from 32 KHz osc clk */ | 657 | /* clock derived from 32 KHz osc clk */ |
353 | { .dev_id = "rtc", .clk = &rtc_clk}, | 658 | { .dev_id = "rtc-spear", .clk = &rtc_clk}, |
354 | /* clock derived from 24 MHz osc clk */ | 659 | /* clock derived from 24 MHz osc clk */ |
355 | { .con_id = "pll1_clk", .clk = &pll1_clk}, | 660 | { .con_id = "pll1_clk", .clk = &pll1_clk}, |
356 | { .con_id = "pll3_48m_clk", .clk = &pll3_48m_clk}, | 661 | { .con_id = "pll3_48m_clk", .clk = &pll3_48m_clk}, |
@@ -358,18 +663,22 @@ static struct clk_lookup spear_clk_lookups[] = { | |||
358 | /* clock derived from pll1 clk */ | 663 | /* clock derived from pll1 clk */ |
359 | { .con_id = "cpu_clk", .clk = &cpu_clk}, | 664 | { .con_id = "cpu_clk", .clk = &cpu_clk}, |
360 | { .con_id = "ahb_clk", .clk = &ahb_clk}, | 665 | { .con_id = "ahb_clk", .clk = &ahb_clk}, |
666 | { .con_id = "uart_synth_clk", .clk = &uart_synth_clk}, | ||
667 | { .con_id = "firda_synth_clk", .clk = &firda_synth_clk}, | ||
668 | { .con_id = "gpt0_synth_clk", .clk = &gpt0_synth_clk}, | ||
669 | { .con_id = "gpt1_synth_clk", .clk = &gpt1_synth_clk}, | ||
670 | { .con_id = "gpt2_synth_clk", .clk = &gpt2_synth_clk}, | ||
361 | { .dev_id = "uart", .clk = &uart_clk}, | 671 | { .dev_id = "uart", .clk = &uart_clk}, |
362 | { .dev_id = "firda", .clk = &firda_clk}, | 672 | { .dev_id = "firda", .clk = &firda_clk}, |
363 | { .dev_id = "gpt0", .clk = &gpt0_clk}, | 673 | { .dev_id = "gpt0", .clk = &gpt0_clk}, |
364 | { .dev_id = "gpt1", .clk = &gpt1_clk}, | 674 | { .dev_id = "gpt1", .clk = &gpt1_clk}, |
365 | { .dev_id = "gpt2", .clk = &gpt2_clk}, | 675 | { .dev_id = "gpt2", .clk = &gpt2_clk}, |
366 | /* clock derived from pll3 clk */ | 676 | /* clock derived from pll3 clk */ |
367 | { .dev_id = "usbh", .clk = &usbh_clk}, | 677 | { .dev_id = "designware_udc", .clk = &usbd_clk}, |
368 | { .dev_id = "usbd", .clk = &usbd_clk}, | 678 | { .con_id = "usbh_clk", .clk = &usbh_clk}, |
369 | { .dev_id = "clcd", .clk = &clcd_clk}, | ||
370 | /* clock derived from ahb clk */ | 679 | /* clock derived from ahb clk */ |
371 | { .con_id = "apb_clk", .clk = &apb_clk}, | 680 | { .con_id = "apb_clk", .clk = &apb_clk}, |
372 | { .dev_id = "i2c", .clk = &i2c_clk}, | 681 | { .dev_id = "i2c_designware.0", .clk = &i2c_clk}, |
373 | { .dev_id = "dma", .clk = &dma_clk}, | 682 | { .dev_id = "dma", .clk = &dma_clk}, |
374 | { .dev_id = "jpeg", .clk = &jpeg_clk}, | 683 | { .dev_id = "jpeg", .clk = &jpeg_clk}, |
375 | { .dev_id = "gmac", .clk = &gmac_clk}, | 684 | { .dev_id = "gmac", .clk = &gmac_clk}, |
@@ -377,8 +686,50 @@ static struct clk_lookup spear_clk_lookups[] = { | |||
377 | { .dev_id = "c3", .clk = &c3_clk}, | 686 | { .dev_id = "c3", .clk = &c3_clk}, |
378 | /* clock derived from apb clk */ | 687 | /* clock derived from apb clk */ |
379 | { .dev_id = "adc", .clk = &adc_clk}, | 688 | { .dev_id = "adc", .clk = &adc_clk}, |
380 | { .dev_id = "ssp", .clk = &ssp_clk}, | 689 | { .dev_id = "ssp-pl022.0", .clk = &ssp0_clk}, |
381 | { .dev_id = "gpio", .clk = &gpio_clk}, | 690 | { .dev_id = "gpio", .clk = &gpio_clk}, |
691 | #if defined(CONFIG_MACH_SPEAR310) || defined(CONFIG_MACH_SPEAR320) | ||
692 | { .dev_id = "physmap-flash", .clk = &emi_clk}, | ||
693 | #endif | ||
694 | #if defined(CONFIG_MACH_SPEAR300) || defined(CONFIG_MACH_SPEAR310) || \ | ||
695 | defined(CONFIG_MACH_SPEAR320) | ||
696 | { .con_id = "fsmc", .clk = &fsmc_clk}, | ||
697 | #endif | ||
698 | |||
699 | /* common clocks to spear310 and spear320 */ | ||
700 | #if defined(CONFIG_MACH_SPEAR310) || defined(CONFIG_MACH_SPEAR320) | ||
701 | { .dev_id = "uart1", .clk = &uart1_clk}, | ||
702 | { .dev_id = "uart2", .clk = &uart2_clk}, | ||
703 | #endif | ||
704 | |||
705 | /* common clock to spear300 and spear320 */ | ||
706 | #if defined(CONFIG_MACH_SPEAR300) || defined(CONFIG_MACH_SPEAR320) | ||
707 | { .dev_id = "clcd", .clk = &clcd_clk}, | ||
708 | { .dev_id = "sdhci", .clk = &sdhci_clk}, | ||
709 | #endif /* CONFIG_MACH_SPEAR300 || CONFIG_MACH_SPEAR320 */ | ||
710 | |||
711 | /* spear300 machine specific clock structures */ | ||
712 | #ifdef CONFIG_MACH_SPEAR300 | ||
713 | { .dev_id = "gpio1", .clk = &gpio1_clk}, | ||
714 | { .dev_id = "keyboard", .clk = &kbd_clk}, | ||
715 | #endif | ||
716 | |||
717 | /* spear310 machine specific clock structures */ | ||
718 | #ifdef CONFIG_MACH_SPEAR310 | ||
719 | { .dev_id = "uart3", .clk = &uart3_clk}, | ||
720 | { .dev_id = "uart4", .clk = &uart4_clk}, | ||
721 | { .dev_id = "uart5", .clk = &uart5_clk}, | ||
722 | |||
723 | #endif | ||
724 | /* spear320 machine specific clock structures */ | ||
725 | #ifdef CONFIG_MACH_SPEAR320 | ||
726 | { .dev_id = "c_can_platform.0", .clk = &can0_clk}, | ||
727 | { .dev_id = "c_can_platform.1", .clk = &can1_clk}, | ||
728 | { .dev_id = "i2c_designware.1", .clk = &i2c1_clk}, | ||
729 | { .dev_id = "ssp-pl022.1", .clk = &ssp1_clk}, | ||
730 | { .dev_id = "ssp-pl022.2", .clk = &ssp2_clk}, | ||
731 | { .dev_id = "pwm", .clk = &pwm_clk}, | ||
732 | #endif | ||
382 | }; | 733 | }; |
383 | 734 | ||
384 | void __init clk_init(void) | 735 | void __init clk_init(void) |
diff --git a/arch/arm/mach-spear3xx/include/mach/entry-macro.S b/arch/arm/mach-spear3xx/include/mach/entry-macro.S index 947625d6b48d..53da4224ba3d 100644 --- a/arch/arm/mach-spear3xx/include/mach/entry-macro.S +++ b/arch/arm/mach-spear3xx/include/mach/entry-macro.S | |||
@@ -11,9 +11,8 @@ | |||
11 | * warranty of any kind, whether express or implied. | 11 | * warranty of any kind, whether express or implied. |
12 | */ | 12 | */ |
13 | 13 | ||
14 | #include <mach/hardware.h> | ||
15 | #include <mach/spear.h> | ||
16 | #include <asm/hardware/vic.h> | 14 | #include <asm/hardware/vic.h> |
15 | #include <mach/hardware.h> | ||
17 | 16 | ||
18 | .macro disable_fiq | 17 | .macro disable_fiq |
19 | .endm | 18 | .endm |
diff --git a/arch/arm/mach-spear3xx/include/mach/generic.h b/arch/arm/mach-spear3xx/include/mach/generic.h index af7e02c909a3..8e30636909ef 100644 --- a/arch/arm/mach-spear3xx/include/mach/generic.h +++ b/arch/arm/mach-spear3xx/include/mach/generic.h | |||
@@ -14,11 +14,11 @@ | |||
14 | #ifndef __MACH_GENERIC_H | 14 | #ifndef __MACH_GENERIC_H |
15 | #define __MACH_GENERIC_H | 15 | #define __MACH_GENERIC_H |
16 | 16 | ||
17 | #include <asm/mach/time.h> | ||
18 | #include <asm/mach/map.h> | ||
19 | #include <linux/init.h> | 17 | #include <linux/init.h> |
20 | #include <linux/platform_device.h> | 18 | #include <linux/platform_device.h> |
21 | #include <linux/amba/bus.h> | 19 | #include <linux/amba/bus.h> |
20 | #include <asm/mach/time.h> | ||
21 | #include <asm/mach/map.h> | ||
22 | #include <plat/padmux.h> | 22 | #include <plat/padmux.h> |
23 | 23 | ||
24 | /* spear3xx declarations */ | 24 | /* spear3xx declarations */ |
@@ -33,14 +33,14 @@ | |||
33 | /* Add spear3xx family device structure declarations here */ | 33 | /* Add spear3xx family device structure declarations here */ |
34 | extern struct amba_device gpio_device; | 34 | extern struct amba_device gpio_device; |
35 | extern struct amba_device uart_device; | 35 | extern struct amba_device uart_device; |
36 | extern struct sys_timer spear_sys_timer; | 36 | extern struct sys_timer spear3xx_timer; |
37 | 37 | ||
38 | /* Add spear3xx family function declarations here */ | 38 | /* Add spear3xx family function declarations here */ |
39 | void __init clk_init(void); | 39 | void __init clk_init(void); |
40 | void __init spear_setup_timer(void); | ||
40 | void __init spear3xx_map_io(void); | 41 | void __init spear3xx_map_io(void); |
41 | void __init spear3xx_init_irq(void); | 42 | void __init spear3xx_init_irq(void); |
42 | void __init spear3xx_init(void); | 43 | void __init spear3xx_init(void); |
43 | void spear_pmx_init(struct pmx_driver *pmx_driver, uint base, uint size); | ||
44 | 44 | ||
45 | /* pad mux declarations */ | 45 | /* pad mux declarations */ |
46 | #define PMX_FIRDA_MASK (1 << 14) | 46 | #define PMX_FIRDA_MASK (1 << 14) |
@@ -129,12 +129,10 @@ extern struct pmx_dev pmx_telecom_camera; | |||
129 | extern struct pmx_dev pmx_telecom_dac; | 129 | extern struct pmx_dev pmx_telecom_dac; |
130 | extern struct pmx_dev pmx_telecom_i2s; | 130 | extern struct pmx_dev pmx_telecom_i2s; |
131 | extern struct pmx_dev pmx_telecom_boot_pins; | 131 | extern struct pmx_dev pmx_telecom_boot_pins; |
132 | extern struct pmx_dev pmx_telecom_sdio_4bit; | 132 | extern struct pmx_dev pmx_telecom_sdhci_4bit; |
133 | extern struct pmx_dev pmx_telecom_sdio_8bit; | 133 | extern struct pmx_dev pmx_telecom_sdhci_8bit; |
134 | extern struct pmx_dev pmx_gpio1; | 134 | extern struct pmx_dev pmx_gpio1; |
135 | 135 | ||
136 | void spear300_pmx_init(void); | ||
137 | |||
138 | /* Add spear300 machine function declarations here */ | 136 | /* Add spear300 machine function declarations here */ |
139 | void __init spear300_init(void); | 137 | void __init spear300_init(void); |
140 | 138 | ||
@@ -154,8 +152,6 @@ extern struct pmx_dev pmx_fsmc; | |||
154 | extern struct pmx_dev pmx_rs485_0_1; | 152 | extern struct pmx_dev pmx_rs485_0_1; |
155 | extern struct pmx_dev pmx_tdm0; | 153 | extern struct pmx_dev pmx_tdm0; |
156 | 154 | ||
157 | void spear310_pmx_init(void); | ||
158 | |||
159 | /* Add spear310 machine function declarations here */ | 155 | /* Add spear310 machine function declarations here */ |
160 | void __init spear310_init(void); | 156 | void __init spear310_init(void); |
161 | 157 | ||
@@ -176,14 +172,14 @@ extern struct pmx_dev pmx_clcd; | |||
176 | extern struct pmx_dev pmx_emi; | 172 | extern struct pmx_dev pmx_emi; |
177 | extern struct pmx_dev pmx_fsmc; | 173 | extern struct pmx_dev pmx_fsmc; |
178 | extern struct pmx_dev pmx_spp; | 174 | extern struct pmx_dev pmx_spp; |
179 | extern struct pmx_dev pmx_sdio; | 175 | extern struct pmx_dev pmx_sdhci; |
180 | extern struct pmx_dev pmx_i2s; | 176 | extern struct pmx_dev pmx_i2s; |
181 | extern struct pmx_dev pmx_uart1; | 177 | extern struct pmx_dev pmx_uart1; |
182 | extern struct pmx_dev pmx_uart1_modem; | 178 | extern struct pmx_dev pmx_uart1_modem; |
183 | extern struct pmx_dev pmx_uart2; | 179 | extern struct pmx_dev pmx_uart2; |
184 | extern struct pmx_dev pmx_touchscreen; | 180 | extern struct pmx_dev pmx_touchscreen; |
185 | extern struct pmx_dev pmx_can; | 181 | extern struct pmx_dev pmx_can; |
186 | extern struct pmx_dev pmx_sdio_led; | 182 | extern struct pmx_dev pmx_sdhci_led; |
187 | extern struct pmx_dev pmx_pwm0; | 183 | extern struct pmx_dev pmx_pwm0; |
188 | extern struct pmx_dev pmx_pwm1; | 184 | extern struct pmx_dev pmx_pwm1; |
189 | extern struct pmx_dev pmx_pwm2; | 185 | extern struct pmx_dev pmx_pwm2; |
@@ -195,8 +191,6 @@ extern struct pmx_dev pmx_smii0; | |||
195 | extern struct pmx_dev pmx_smii1; | 191 | extern struct pmx_dev pmx_smii1; |
196 | extern struct pmx_dev pmx_i2c1; | 192 | extern struct pmx_dev pmx_i2c1; |
197 | 193 | ||
198 | void spear320_pmx_init(void); | ||
199 | |||
200 | /* Add spear320 machine function declarations here */ | 194 | /* Add spear320 machine function declarations here */ |
201 | void __init spear320_init(void); | 195 | void __init spear320_init(void); |
202 | 196 | ||
diff --git a/arch/arm/mach-spear3xx/include/mach/hardware.h b/arch/arm/mach-spear3xx/include/mach/hardware.h index 4a86e6a3c444..4660c0d8ec0d 100644 --- a/arch/arm/mach-spear3xx/include/mach/hardware.h +++ b/arch/arm/mach-spear3xx/include/mach/hardware.h | |||
@@ -14,6 +14,9 @@ | |||
14 | #ifndef __MACH_HARDWARE_H | 14 | #ifndef __MACH_HARDWARE_H |
15 | #define __MACH_HARDWARE_H | 15 | #define __MACH_HARDWARE_H |
16 | 16 | ||
17 | #include <plat/hardware.h> | ||
18 | #include <mach/spear.h> | ||
19 | |||
17 | /* Vitual to physical translation of statically mapped space */ | 20 | /* Vitual to physical translation of statically mapped space */ |
18 | #define IO_ADDRESS(x) (x | 0xF0000000) | 21 | #define IO_ADDRESS(x) (x | 0xF0000000) |
19 | 22 | ||
diff --git a/arch/arm/mach-spear3xx/include/mach/irqs.h b/arch/arm/mach-spear3xx/include/mach/irqs.h index 7f940b818473..a1a7f481866d 100644 --- a/arch/arm/mach-spear3xx/include/mach/irqs.h +++ b/arch/arm/mach-spear3xx/include/mach/irqs.h | |||
@@ -69,7 +69,7 @@ | |||
69 | #define IRQ_CLCD IRQ_GEN_RAS_3 | 69 | #define IRQ_CLCD IRQ_GEN_RAS_3 |
70 | 70 | ||
71 | /* IRQs sharing IRQ_INTRCOMM_RAS_ARM */ | 71 | /* IRQs sharing IRQ_INTRCOMM_RAS_ARM */ |
72 | #define IRQ_SDIO IRQ_INTRCOMM_RAS_ARM | 72 | #define IRQ_SDHCI IRQ_INTRCOMM_RAS_ARM |
73 | 73 | ||
74 | /* GPIO pins virtual irqs */ | 74 | /* GPIO pins virtual irqs */ |
75 | #define SPEAR_GPIO_INT_BASE (VIRQ_START + 9) | 75 | #define SPEAR_GPIO_INT_BASE (VIRQ_START + 9) |
@@ -115,7 +115,7 @@ | |||
115 | #define VIRQ_SPP (VIRQ_START + 2) | 115 | #define VIRQ_SPP (VIRQ_START + 2) |
116 | 116 | ||
117 | /* IRQs sharing IRQ_GEN_RAS_2 */ | 117 | /* IRQs sharing IRQ_GEN_RAS_2 */ |
118 | #define IRQ_SDIO IRQ_GEN_RAS_2 | 118 | #define IRQ_SDHCI IRQ_GEN_RAS_2 |
119 | 119 | ||
120 | /* IRQs sharing IRQ_GEN_RAS_3 */ | 120 | /* IRQs sharing IRQ_GEN_RAS_3 */ |
121 | #define VIRQ_PLGPIO (VIRQ_START + 3) | 121 | #define VIRQ_PLGPIO (VIRQ_START + 3) |
diff --git a/arch/arm/mach-spear3xx/include/mach/misc_regs.h b/arch/arm/mach-spear3xx/include/mach/misc_regs.h index 38d767a1aba0..5bd8cd8d4852 100644 --- a/arch/arm/mach-spear3xx/include/mach/misc_regs.h +++ b/arch/arm/mach-spear3xx/include/mach/misc_regs.h | |||
@@ -14,16 +14,16 @@ | |||
14 | #ifndef __MACH_MISC_REGS_H | 14 | #ifndef __MACH_MISC_REGS_H |
15 | #define __MACH_MISC_REGS_H | 15 | #define __MACH_MISC_REGS_H |
16 | 16 | ||
17 | #include <mach/spear.h> | 17 | #include <mach/hardware.h> |
18 | 18 | ||
19 | #define MISC_BASE VA_SPEAR3XX_ICM3_MISC_REG_BASE | 19 | #define MISC_BASE IOMEM(VA_SPEAR3XX_ICM3_MISC_REG_BASE) |
20 | 20 | ||
21 | #define SOC_CFG_CTR ((unsigned int *)(MISC_BASE + 0x000)) | 21 | #define SOC_CFG_CTR (MISC_BASE + 0x000) |
22 | #define DIAG_CFG_CTR ((unsigned int *)(MISC_BASE + 0x004)) | 22 | #define DIAG_CFG_CTR (MISC_BASE + 0x004) |
23 | #define PLL1_CTR ((unsigned int *)(MISC_BASE + 0x008)) | 23 | #define PLL1_CTR (MISC_BASE + 0x008) |
24 | #define PLL1_FRQ ((unsigned int *)(MISC_BASE + 0x00C)) | 24 | #define PLL1_FRQ (MISC_BASE + 0x00C) |
25 | #define PLL1_MOD ((unsigned int *)(MISC_BASE + 0x010)) | 25 | #define PLL1_MOD (MISC_BASE + 0x010) |
26 | #define PLL2_CTR ((unsigned int *)(MISC_BASE + 0x014)) | 26 | #define PLL2_CTR (MISC_BASE + 0x014) |
27 | /* PLL_CTR register masks */ | 27 | /* PLL_CTR register masks */ |
28 | #define PLL_ENABLE 2 | 28 | #define PLL_ENABLE 2 |
29 | #define PLL_MODE_SHIFT 4 | 29 | #define PLL_MODE_SHIFT 4 |
@@ -33,7 +33,7 @@ | |||
33 | #define PLL_MODE_DITH_DSB 2 | 33 | #define PLL_MODE_DITH_DSB 2 |
34 | #define PLL_MODE_DITH_SSB 3 | 34 | #define PLL_MODE_DITH_SSB 3 |
35 | 35 | ||
36 | #define PLL2_FRQ ((unsigned int *)(MISC_BASE + 0x018)) | 36 | #define PLL2_FRQ (MISC_BASE + 0x018) |
37 | /* PLL FRQ register masks */ | 37 | /* PLL FRQ register masks */ |
38 | #define PLL_DIV_N_SHIFT 0 | 38 | #define PLL_DIV_N_SHIFT 0 |
39 | #define PLL_DIV_N_MASK 0xFF | 39 | #define PLL_DIV_N_MASK 0xFF |
@@ -44,16 +44,16 @@ | |||
44 | #define PLL_DITH_FDBK_M_SHIFT 16 | 44 | #define PLL_DITH_FDBK_M_SHIFT 16 |
45 | #define PLL_DITH_FDBK_M_MASK 0xFFFF | 45 | #define PLL_DITH_FDBK_M_MASK 0xFFFF |
46 | 46 | ||
47 | #define PLL2_MOD ((unsigned int *)(MISC_BASE + 0x01C)) | 47 | #define PLL2_MOD (MISC_BASE + 0x01C) |
48 | #define PLL_CLK_CFG ((unsigned int *)(MISC_BASE + 0x020)) | 48 | #define PLL_CLK_CFG (MISC_BASE + 0x020) |
49 | #define CORE_CLK_CFG ((unsigned int *)(MISC_BASE + 0x024)) | 49 | #define CORE_CLK_CFG (MISC_BASE + 0x024) |
50 | /* CORE CLK CFG register masks */ | 50 | /* CORE CLK CFG register masks */ |
51 | #define PLL_HCLK_RATIO_SHIFT 10 | 51 | #define PLL_HCLK_RATIO_SHIFT 10 |
52 | #define PLL_HCLK_RATIO_MASK 0x3 | 52 | #define PLL_HCLK_RATIO_MASK 0x3 |
53 | #define HCLK_PCLK_RATIO_SHIFT 8 | 53 | #define HCLK_PCLK_RATIO_SHIFT 8 |
54 | #define HCLK_PCLK_RATIO_MASK 0x3 | 54 | #define HCLK_PCLK_RATIO_MASK 0x3 |
55 | 55 | ||
56 | #define PERIP_CLK_CFG ((unsigned int *)(MISC_BASE + 0x028)) | 56 | #define PERIP_CLK_CFG (MISC_BASE + 0x028) |
57 | /* PERIP_CLK_CFG register masks */ | 57 | /* PERIP_CLK_CFG register masks */ |
58 | #define UART_CLK_SHIFT 4 | 58 | #define UART_CLK_SHIFT 4 |
59 | #define UART_CLK_MASK 0x1 | 59 | #define UART_CLK_MASK 0x1 |
@@ -63,10 +63,10 @@ | |||
63 | #define GPT1_CLK_SHIFT 11 | 63 | #define GPT1_CLK_SHIFT 11 |
64 | #define GPT2_CLK_SHIFT 12 | 64 | #define GPT2_CLK_SHIFT 12 |
65 | #define GPT_CLK_MASK 0x1 | 65 | #define GPT_CLK_MASK 0x1 |
66 | #define AUX_CLK_PLL3_MASK 0 | 66 | #define AUX_CLK_PLL3_VAL 0 |
67 | #define AUX_CLK_PLL1_MASK 1 | 67 | #define AUX_CLK_PLL1_VAL 1 |
68 | 68 | ||
69 | #define PERIP1_CLK_ENB ((unsigned int *)(MISC_BASE + 0x02C)) | 69 | #define PERIP1_CLK_ENB (MISC_BASE + 0x02C) |
70 | /* PERIP1_CLK_ENB register masks */ | 70 | /* PERIP1_CLK_ENB register masks */ |
71 | #define UART_CLK_ENB 3 | 71 | #define UART_CLK_ENB 3 |
72 | #define SSP_CLK_ENB 5 | 72 | #define SSP_CLK_ENB 5 |
@@ -85,34 +85,35 @@ | |||
85 | #define USBH_CLK_ENB 25 | 85 | #define USBH_CLK_ENB 25 |
86 | #define C3_CLK_ENB 31 | 86 | #define C3_CLK_ENB 31 |
87 | 87 | ||
88 | #define SOC_CORE_ID ((unsigned int *)(MISC_BASE + 0x030)) | 88 | #define SOC_CORE_ID (MISC_BASE + 0x030) |
89 | #define RAS_CLK_ENB ((unsigned int *)(MISC_BASE + 0x034)) | 89 | #define RAS_CLK_ENB (MISC_BASE + 0x034) |
90 | #define PERIP1_SOF_RST ((unsigned int *)(MISC_BASE + 0x038)) | 90 | #define PERIP1_SOF_RST (MISC_BASE + 0x038) |
91 | /* PERIP1_SOF_RST register masks */ | 91 | /* PERIP1_SOF_RST register masks */ |
92 | #define JPEG_SOF_RST 8 | 92 | #define JPEG_SOF_RST 8 |
93 | 93 | ||
94 | #define SOC_USER_ID ((unsigned int *)(MISC_BASE + 0x03C)) | 94 | #define SOC_USER_ID (MISC_BASE + 0x03C) |
95 | #define RAS_SOF_RST ((unsigned int *)(MISC_BASE + 0x040)) | 95 | #define RAS_SOF_RST (MISC_BASE + 0x040) |
96 | #define PRSC1_CLK_CFG ((unsigned int *)(MISC_BASE + 0x044)) | 96 | #define PRSC1_CLK_CFG (MISC_BASE + 0x044) |
97 | #define PRSC2_CLK_CFG ((unsigned int *)(MISC_BASE + 0x048)) | 97 | #define PRSC2_CLK_CFG (MISC_BASE + 0x048) |
98 | #define PRSC3_CLK_CFG ((unsigned int *)(MISC_BASE + 0x04C)) | 98 | #define PRSC3_CLK_CFG (MISC_BASE + 0x04C) |
99 | /* gpt synthesizer register masks */ | 99 | /* gpt synthesizer register masks */ |
100 | #define GPT_MSCALE_SHIFT 0 | 100 | #define GPT_MSCALE_SHIFT 0 |
101 | #define GPT_MSCALE_MASK 0xFFF | 101 | #define GPT_MSCALE_MASK 0xFFF |
102 | #define GPT_NSCALE_SHIFT 12 | 102 | #define GPT_NSCALE_SHIFT 12 |
103 | #define GPT_NSCALE_MASK 0xF | 103 | #define GPT_NSCALE_MASK 0xF |
104 | 104 | ||
105 | #define AMEM_CLK_CFG ((unsigned int *)(MISC_BASE + 0x050)) | 105 | #define AMEM_CLK_CFG (MISC_BASE + 0x050) |
106 | #define EXPI_CLK_CFG ((unsigned int *)(MISC_BASE + 0x054)) | 106 | #define EXPI_CLK_CFG (MISC_BASE + 0x054) |
107 | #define CLCD_CLK_SYNT ((unsigned int *)(MISC_BASE + 0x05C)) | 107 | #define CLCD_CLK_SYNT (MISC_BASE + 0x05C) |
108 | #define FIRDA_CLK_SYNT ((unsigned int *)(MISC_BASE + 0x060)) | 108 | #define FIRDA_CLK_SYNT (MISC_BASE + 0x060) |
109 | #define UART_CLK_SYNT ((unsigned int *)(MISC_BASE + 0x064)) | 109 | #define UART_CLK_SYNT (MISC_BASE + 0x064) |
110 | #define GMAC_CLK_SYNT ((unsigned int *)(MISC_BASE + 0x068)) | 110 | #define GMAC_CLK_SYNT (MISC_BASE + 0x068) |
111 | #define RAS1_CLK_SYNT ((unsigned int *)(MISC_BASE + 0x06C)) | 111 | #define RAS1_CLK_SYNT (MISC_BASE + 0x06C) |
112 | #define RAS2_CLK_SYNT ((unsigned int *)(MISC_BASE + 0x070)) | 112 | #define RAS2_CLK_SYNT (MISC_BASE + 0x070) |
113 | #define RAS3_CLK_SYNT ((unsigned int *)(MISC_BASE + 0x074)) | 113 | #define RAS3_CLK_SYNT (MISC_BASE + 0x074) |
114 | #define RAS4_CLK_SYNT ((unsigned int *)(MISC_BASE + 0x078)) | 114 | #define RAS4_CLK_SYNT (MISC_BASE + 0x078) |
115 | /* aux clk synthesiser register masks for irda to ras4 */ | 115 | /* aux clk synthesiser register masks for irda to ras4 */ |
116 | #define AUX_SYNT_ENB 31 | ||
116 | #define AUX_EQ_SEL_SHIFT 30 | 117 | #define AUX_EQ_SEL_SHIFT 30 |
117 | #define AUX_EQ_SEL_MASK 1 | 118 | #define AUX_EQ_SEL_MASK 1 |
118 | #define AUX_EQ1_SEL 0 | 119 | #define AUX_EQ1_SEL 0 |
@@ -122,42 +123,42 @@ | |||
122 | #define AUX_YSCALE_SHIFT 0 | 123 | #define AUX_YSCALE_SHIFT 0 |
123 | #define AUX_YSCALE_MASK 0xFFF | 124 | #define AUX_YSCALE_MASK 0xFFF |
124 | 125 | ||
125 | #define ICM1_ARB_CFG ((unsigned int *)(MISC_BASE + 0x07C)) | 126 | #define ICM1_ARB_CFG (MISC_BASE + 0x07C) |
126 | #define ICM2_ARB_CFG ((unsigned int *)(MISC_BASE + 0x080)) | 127 | #define ICM2_ARB_CFG (MISC_BASE + 0x080) |
127 | #define ICM3_ARB_CFG ((unsigned int *)(MISC_BASE + 0x084)) | 128 | #define ICM3_ARB_CFG (MISC_BASE + 0x084) |
128 | #define ICM4_ARB_CFG ((unsigned int *)(MISC_BASE + 0x088)) | 129 | #define ICM4_ARB_CFG (MISC_BASE + 0x088) |
129 | #define ICM5_ARB_CFG ((unsigned int *)(MISC_BASE + 0x08C)) | 130 | #define ICM5_ARB_CFG (MISC_BASE + 0x08C) |
130 | #define ICM6_ARB_CFG ((unsigned int *)(MISC_BASE + 0x090)) | 131 | #define ICM6_ARB_CFG (MISC_BASE + 0x090) |
131 | #define ICM7_ARB_CFG ((unsigned int *)(MISC_BASE + 0x094)) | 132 | #define ICM7_ARB_CFG (MISC_BASE + 0x094) |
132 | #define ICM8_ARB_CFG ((unsigned int *)(MISC_BASE + 0x098)) | 133 | #define ICM8_ARB_CFG (MISC_BASE + 0x098) |
133 | #define ICM9_ARB_CFG ((unsigned int *)(MISC_BASE + 0x09C)) | 134 | #define ICM9_ARB_CFG (MISC_BASE + 0x09C) |
134 | #define DMA_CHN_CFG ((unsigned int *)(MISC_BASE + 0x0A0)) | 135 | #define DMA_CHN_CFG (MISC_BASE + 0x0A0) |
135 | #define USB2_PHY_CFG ((unsigned int *)(MISC_BASE + 0x0A4)) | 136 | #define USB2_PHY_CFG (MISC_BASE + 0x0A4) |
136 | #define GMAC_CFG_CTR ((unsigned int *)(MISC_BASE + 0x0A8)) | 137 | #define GMAC_CFG_CTR (MISC_BASE + 0x0A8) |
137 | #define EXPI_CFG_CTR ((unsigned int *)(MISC_BASE + 0x0AC)) | 138 | #define EXPI_CFG_CTR (MISC_BASE + 0x0AC) |
138 | #define PRC1_LOCK_CTR ((unsigned int *)(MISC_BASE + 0x0C0)) | 139 | #define PRC1_LOCK_CTR (MISC_BASE + 0x0C0) |
139 | #define PRC2_LOCK_CTR ((unsigned int *)(MISC_BASE + 0x0C4)) | 140 | #define PRC2_LOCK_CTR (MISC_BASE + 0x0C4) |
140 | #define PRC3_LOCK_CTR ((unsigned int *)(MISC_BASE + 0x0C8)) | 141 | #define PRC3_LOCK_CTR (MISC_BASE + 0x0C8) |
141 | #define PRC4_LOCK_CTR ((unsigned int *)(MISC_BASE + 0x0CC)) | 142 | #define PRC4_LOCK_CTR (MISC_BASE + 0x0CC) |
142 | #define PRC1_IRQ_CTR ((unsigned int *)(MISC_BASE + 0x0D0)) | 143 | #define PRC1_IRQ_CTR (MISC_BASE + 0x0D0) |
143 | #define PRC2_IRQ_CTR ((unsigned int *)(MISC_BASE + 0x0D4)) | 144 | #define PRC2_IRQ_CTR (MISC_BASE + 0x0D4) |
144 | #define PRC3_IRQ_CTR ((unsigned int *)(MISC_BASE + 0x0D8)) | 145 | #define PRC3_IRQ_CTR (MISC_BASE + 0x0D8) |
145 | #define PRC4_IRQ_CTR ((unsigned int *)(MISC_BASE + 0x0DC)) | 146 | #define PRC4_IRQ_CTR (MISC_BASE + 0x0DC) |
146 | #define PWRDOWN_CFG_CTR ((unsigned int *)(MISC_BASE + 0x0E0)) | 147 | #define PWRDOWN_CFG_CTR (MISC_BASE + 0x0E0) |
147 | #define COMPSSTL_1V8_CFG ((unsigned int *)(MISC_BASE + 0x0E4)) | 148 | #define COMPSSTL_1V8_CFG (MISC_BASE + 0x0E4) |
148 | #define COMPSSTL_2V5_CFG ((unsigned int *)(MISC_BASE + 0x0E8)) | 149 | #define COMPSSTL_2V5_CFG (MISC_BASE + 0x0E8) |
149 | #define COMPCOR_3V3_CFG ((unsigned int *)(MISC_BASE + 0x0EC)) | 150 | #define COMPCOR_3V3_CFG (MISC_BASE + 0x0EC) |
150 | #define SSTLPAD_CFG_CTR ((unsigned int *)(MISC_BASE + 0x0F0)) | 151 | #define SSTLPAD_CFG_CTR (MISC_BASE + 0x0F0) |
151 | #define BIST1_CFG_CTR ((unsigned int *)(MISC_BASE + 0x0F4)) | 152 | #define BIST1_CFG_CTR (MISC_BASE + 0x0F4) |
152 | #define BIST2_CFG_CTR ((unsigned int *)(MISC_BASE + 0x0F8)) | 153 | #define BIST2_CFG_CTR (MISC_BASE + 0x0F8) |
153 | #define BIST3_CFG_CTR ((unsigned int *)(MISC_BASE + 0x0FC)) | 154 | #define BIST3_CFG_CTR (MISC_BASE + 0x0FC) |
154 | #define BIST4_CFG_CTR ((unsigned int *)(MISC_BASE + 0x100)) | 155 | #define BIST4_CFG_CTR (MISC_BASE + 0x100) |
155 | #define BIST5_CFG_CTR ((unsigned int *)(MISC_BASE + 0x104)) | 156 | #define BIST5_CFG_CTR (MISC_BASE + 0x104) |
156 | #define BIST1_STS_RES ((unsigned int *)(MISC_BASE + 0x108)) | 157 | #define BIST1_STS_RES (MISC_BASE + 0x108) |
157 | #define BIST2_STS_RES ((unsigned int *)(MISC_BASE + 0x10C)) | 158 | #define BIST2_STS_RES (MISC_BASE + 0x10C) |
158 | #define BIST3_STS_RES ((unsigned int *)(MISC_BASE + 0x110)) | 159 | #define BIST3_STS_RES (MISC_BASE + 0x110) |
159 | #define BIST4_STS_RES ((unsigned int *)(MISC_BASE + 0x114)) | 160 | #define BIST4_STS_RES (MISC_BASE + 0x114) |
160 | #define BIST5_STS_RES ((unsigned int *)(MISC_BASE + 0x118)) | 161 | #define BIST5_STS_RES (MISC_BASE + 0x118) |
161 | #define SYSERR_CFG_CTR ((unsigned int *)(MISC_BASE + 0x11C)) | 162 | #define SYSERR_CFG_CTR (MISC_BASE + 0x11C) |
162 | 163 | ||
163 | #endif /* __MACH_MISC_REGS_H */ | 164 | #endif /* __MACH_MISC_REGS_H */ |
diff --git a/arch/arm/mach-spear3xx/include/mach/spear.h b/arch/arm/mach-spear3xx/include/mach/spear.h index dcca8568a486..63fd98356919 100644 --- a/arch/arm/mach-spear3xx/include/mach/spear.h +++ b/arch/arm/mach-spear3xx/include/mach/spear.h | |||
@@ -14,124 +14,61 @@ | |||
14 | #ifndef __MACH_SPEAR3XX_H | 14 | #ifndef __MACH_SPEAR3XX_H |
15 | #define __MACH_SPEAR3XX_H | 15 | #define __MACH_SPEAR3XX_H |
16 | 16 | ||
17 | #include <mach/hardware.h> | 17 | #include <asm/memory.h> |
18 | #include <mach/spear300.h> | 18 | #include <mach/spear300.h> |
19 | #include <mach/spear310.h> | 19 | #include <mach/spear310.h> |
20 | #include <mach/spear320.h> | 20 | #include <mach/spear320.h> |
21 | 21 | ||
22 | #define SPEAR3XX_ML_SDRAM_BASE 0x00000000 | 22 | #define SPEAR3XX_ML_SDRAM_BASE UL(0x00000000) |
23 | #define SPEAR3XX_ML_SDRAM_SIZE 0x40000000 | ||
24 | 23 | ||
25 | #define SPEAR3XX_ICM9_BASE 0xC0000000 | 24 | #define SPEAR3XX_ICM9_BASE UL(0xC0000000) |
26 | #define SPEAR3XX_ICM9_SIZE 0x10000000 | ||
27 | 25 | ||
28 | /* ICM1 - Low speed connection */ | 26 | /* ICM1 - Low speed connection */ |
29 | #define SPEAR3XX_ICM1_2_BASE 0xD0000000 | 27 | #define SPEAR3XX_ICM1_2_BASE UL(0xD0000000) |
30 | #define SPEAR3XX_ICM1_2_SIZE 0x10000000 | 28 | #define SPEAR3XX_ICM1_UART_BASE UL(0xD0000000) |
31 | |||
32 | #define SPEAR3XX_ICM1_UART_BASE 0xD0000000 | ||
33 | #define VA_SPEAR3XX_ICM1_UART_BASE IO_ADDRESS(SPEAR3XX_ICM1_UART_BASE) | 29 | #define VA_SPEAR3XX_ICM1_UART_BASE IO_ADDRESS(SPEAR3XX_ICM1_UART_BASE) |
34 | #define SPEAR3XX_ICM1_UART_SIZE 0x00080000 | 30 | #define SPEAR3XX_ICM1_ADC_BASE UL(0xD0080000) |
35 | 31 | #define SPEAR3XX_ICM1_SSP_BASE UL(0xD0100000) | |
36 | #define SPEAR3XX_ICM1_ADC_BASE 0xD0080000 | 32 | #define SPEAR3XX_ICM1_I2C_BASE UL(0xD0180000) |
37 | #define SPEAR3XX_ICM1_ADC_SIZE 0x00080000 | 33 | #define SPEAR3XX_ICM1_JPEG_BASE UL(0xD0800000) |
38 | 34 | #define SPEAR3XX_ICM1_IRDA_BASE UL(0xD1000000) | |
39 | #define SPEAR3XX_ICM1_SSP_BASE 0xD0100000 | 35 | #define SPEAR3XX_ICM1_SRAM_BASE UL(0xD2800000) |
40 | #define SPEAR3XX_ICM1_SSP_SIZE 0x00080000 | ||
41 | |||
42 | #define SPEAR3XX_ICM1_I2C_BASE 0xD0180000 | ||
43 | #define SPEAR3XX_ICM1_I2C_SIZE 0x00080000 | ||
44 | |||
45 | #define SPEAR3XX_ICM1_JPEG_BASE 0xD0800000 | ||
46 | #define SPEAR3XX_ICM1_JPEG_SIZE 0x00800000 | ||
47 | |||
48 | #define SPEAR3XX_ICM1_IRDA_BASE 0xD1000000 | ||
49 | #define SPEAR3XX_ICM1_IRDA_SIZE 0x00080000 | ||
50 | |||
51 | #define SPEAR3XX_ICM1_SRAM_BASE 0xD2800000 | ||
52 | #define SPEAR3XX_ICM1_SRAM_SIZE 0x05800000 | ||
53 | 36 | ||
54 | /* ICM2 - Application Subsystem */ | 37 | /* ICM2 - Application Subsystem */ |
55 | #define SPEAR3XX_ICM2_HWACCEL0_BASE 0xD8800000 | 38 | #define SPEAR3XX_ICM2_HWACCEL0_BASE UL(0xD8800000) |
56 | #define SPEAR3XX_ICM2_HWACCEL0_SIZE 0x00800000 | 39 | #define SPEAR3XX_ICM2_HWACCEL1_BASE UL(0xD9000000) |
57 | |||
58 | #define SPEAR3XX_ICM2_HWACCEL1_BASE 0xD9000000 | ||
59 | #define SPEAR3XX_ICM2_HWACCEL1_SIZE 0x00800000 | ||
60 | 40 | ||
61 | /* ICM4 - High Speed Connection */ | 41 | /* ICM4 - High Speed Connection */ |
62 | #define SPEAR3XX_ICM4_BASE 0xE0000000 | 42 | #define SPEAR3XX_ICM4_BASE UL(0xE0000000) |
63 | #define SPEAR3XX_ICM4_SIZE 0x08000000 | 43 | #define SPEAR3XX_ICM4_MII_BASE UL(0xE0800000) |
64 | 44 | #define SPEAR3XX_ICM4_USBD_FIFO_BASE UL(0xE1000000) | |
65 | #define SPEAR3XX_ICM4_MII_BASE 0xE0800000 | 45 | #define SPEAR3XX_ICM4_USBD_CSR_BASE UL(0xE1100000) |
66 | #define SPEAR3XX_ICM4_MII_SIZE 0x00800000 | 46 | #define SPEAR3XX_ICM4_USBD_PLDT_BASE UL(0xE1200000) |
67 | 47 | #define SPEAR3XX_ICM4_USB_EHCI0_1_BASE UL(0xE1800000) | |
68 | #define SPEAR3XX_ICM4_USBD_FIFO_BASE 0xE1000000 | 48 | #define SPEAR3XX_ICM4_USB_OHCI0_BASE UL(0xE1900000) |
69 | #define SPEAR3XX_ICM4_USBD_FIFO_SIZE 0x00100000 | 49 | #define SPEAR3XX_ICM4_USB_OHCI1_BASE UL(0xE2100000) |
70 | 50 | #define SPEAR3XX_ICM4_USB_ARB_BASE UL(0xE2800000) | |
71 | #define SPEAR3XX_ICM4_USBD_CSR_BASE 0xE1100000 | ||
72 | #define SPEAR3XX_ICM4_USBD_CSR_SIZE 0x00100000 | ||
73 | |||
74 | #define SPEAR3XX_ICM4_USBD_PLDT_BASE 0xE1200000 | ||
75 | #define SPEAR3XX_ICM4_USBD_PLDT_SIZE 0x00100000 | ||
76 | |||
77 | #define SPEAR3XX_ICM4_USB_EHCI0_1_BASE 0xE1800000 | ||
78 | #define SPEAR3XX_ICM4_USB_EHCI0_1_SIZE 0x00100000 | ||
79 | |||
80 | #define SPEAR3XX_ICM4_USB_OHCI0_BASE 0xE1900000 | ||
81 | #define SPEAR3XX_ICM4_USB_OHCI0_SIZE 0x00100000 | ||
82 | |||
83 | #define SPEAR3XX_ICM4_USB_OHCI1_BASE 0xE2100000 | ||
84 | #define SPEAR3XX_ICM4_USB_OHCI1_SIZE 0x00100000 | ||
85 | |||
86 | #define SPEAR3XX_ICM4_USB_ARB_BASE 0xE2800000 | ||
87 | #define SPEAR3XX_ICM4_USB_ARB_SIZE 0x00010000 | ||
88 | 51 | ||
89 | /* ML1 - Multi Layer CPU Subsystem */ | 52 | /* ML1 - Multi Layer CPU Subsystem */ |
90 | #define SPEAR3XX_ICM3_ML1_2_BASE 0xF0000000 | 53 | #define SPEAR3XX_ICM3_ML1_2_BASE UL(0xF0000000) |
91 | #define SPEAR3XX_ICM3_ML1_2_SIZE 0x0F000000 | 54 | #define SPEAR3XX_ML1_TMR_BASE UL(0xF0000000) |
92 | 55 | #define SPEAR3XX_ML1_VIC_BASE UL(0xF1100000) | |
93 | #define SPEAR3XX_ML1_TMR_BASE 0xF0000000 | ||
94 | #define SPEAR3XX_ML1_TMR_SIZE 0x00100000 | ||
95 | |||
96 | #define SPEAR3XX_ML1_VIC_BASE 0xF1100000 | ||
97 | #define VA_SPEAR3XX_ML1_VIC_BASE IO_ADDRESS(SPEAR3XX_ML1_VIC_BASE) | 56 | #define VA_SPEAR3XX_ML1_VIC_BASE IO_ADDRESS(SPEAR3XX_ML1_VIC_BASE) |
98 | #define SPEAR3XX_ML1_VIC_SIZE 0x00100000 | ||
99 | 57 | ||
100 | /* ICM3 - Basic Subsystem */ | 58 | /* ICM3 - Basic Subsystem */ |
101 | #define SPEAR3XX_ICM3_SMEM_BASE 0xF8000000 | 59 | #define SPEAR3XX_ICM3_SMEM_BASE UL(0xF8000000) |
102 | #define SPEAR3XX_ICM3_SMEM_SIZE 0x04000000 | 60 | #define SPEAR3XX_ICM3_SMI_CTRL_BASE UL(0xFC000000) |
103 | 61 | #define SPEAR3XX_ICM3_DMA_BASE UL(0xFC400000) | |
104 | #define SPEAR3XX_ICM3_SMI_CTRL_BASE 0xFC000000 | 62 | #define SPEAR3XX_ICM3_SDRAM_CTRL_BASE UL(0xFC600000) |
105 | #define SPEAR3XX_ICM3_SMI_CTRL_SIZE 0x00200000 | 63 | #define SPEAR3XX_ICM3_TMR0_BASE UL(0xFC800000) |
106 | 64 | #define SPEAR3XX_ICM3_WDT_BASE UL(0xFC880000) | |
107 | #define SPEAR3XX_ICM3_DMA_BASE 0xFC400000 | 65 | #define SPEAR3XX_ICM3_RTC_BASE UL(0xFC900000) |
108 | #define SPEAR3XX_ICM3_DMA_SIZE 0x00200000 | 66 | #define SPEAR3XX_ICM3_GPIO_BASE UL(0xFC980000) |
109 | 67 | #define SPEAR3XX_ICM3_SYS_CTRL_BASE UL(0xFCA00000) | |
110 | #define SPEAR3XX_ICM3_SDRAM_CTRL_BASE 0xFC600000 | ||
111 | #define SPEAR3XX_ICM3_SDRAM_CTRL_SIZE 0x00200000 | ||
112 | |||
113 | #define SPEAR3XX_ICM3_TMR0_BASE 0xFC800000 | ||
114 | #define SPEAR3XX_ICM3_TMR0_SIZE 0x00080000 | ||
115 | |||
116 | #define SPEAR3XX_ICM3_WDT_BASE 0xFC880000 | ||
117 | #define SPEAR3XX_ICM3_WDT_SIZE 0x00080000 | ||
118 | |||
119 | #define SPEAR3XX_ICM3_RTC_BASE 0xFC900000 | ||
120 | #define SPEAR3XX_ICM3_RTC_SIZE 0x00080000 | ||
121 | |||
122 | #define SPEAR3XX_ICM3_GPIO_BASE 0xFC980000 | ||
123 | #define SPEAR3XX_ICM3_GPIO_SIZE 0x00080000 | ||
124 | |||
125 | #define SPEAR3XX_ICM3_SYS_CTRL_BASE 0xFCA00000 | ||
126 | #define VA_SPEAR3XX_ICM3_SYS_CTRL_BASE IO_ADDRESS(SPEAR3XX_ICM3_SYS_CTRL_BASE) | 68 | #define VA_SPEAR3XX_ICM3_SYS_CTRL_BASE IO_ADDRESS(SPEAR3XX_ICM3_SYS_CTRL_BASE) |
127 | #define SPEAR3XX_ICM3_SYS_CTRL_SIZE 0x00080000 | 69 | #define SPEAR3XX_ICM3_MISC_REG_BASE UL(0xFCA80000) |
128 | |||
129 | #define SPEAR3XX_ICM3_MISC_REG_BASE 0xFCA80000 | ||
130 | #define VA_SPEAR3XX_ICM3_MISC_REG_BASE IO_ADDRESS(SPEAR3XX_ICM3_MISC_REG_BASE) | 70 | #define VA_SPEAR3XX_ICM3_MISC_REG_BASE IO_ADDRESS(SPEAR3XX_ICM3_MISC_REG_BASE) |
131 | #define SPEAR3XX_ICM3_MISC_REG_SIZE 0x00080000 | 71 | #define SPEAR3XX_ICM3_TMR1_BASE UL(0xFCB00000) |
132 | |||
133 | #define SPEAR3XX_ICM3_TMR1_BASE 0xFCB00000 | ||
134 | #define SPEAR3XX_ICM3_TMR1_SIZE 0x00080000 | ||
135 | 72 | ||
136 | /* Debug uart for linux, will be used for debug and uncompress messages */ | 73 | /* Debug uart for linux, will be used for debug and uncompress messages */ |
137 | #define SPEAR_DBG_UART_BASE SPEAR3XX_ICM1_UART_BASE | 74 | #define SPEAR_DBG_UART_BASE SPEAR3XX_ICM1_UART_BASE |
diff --git a/arch/arm/mach-spear3xx/include/mach/spear300.h b/arch/arm/mach-spear3xx/include/mach/spear300.h index ccaa76522ee2..c723515f8853 100644 --- a/arch/arm/mach-spear3xx/include/mach/spear300.h +++ b/arch/arm/mach-spear3xx/include/mach/spear300.h | |||
@@ -17,11 +17,9 @@ | |||
17 | #define __MACH_SPEAR300_H | 17 | #define __MACH_SPEAR300_H |
18 | 18 | ||
19 | /* Base address of various IPs */ | 19 | /* Base address of various IPs */ |
20 | #define SPEAR300_TELECOM_BASE 0x50000000 | 20 | #define SPEAR300_TELECOM_BASE UL(0x50000000) |
21 | #define SPEAR300_TELECOM_SIZE 0x10000000 | ||
22 | 21 | ||
23 | /* Interrupt registers offsets and masks */ | 22 | /* Interrupt registers offsets and masks */ |
24 | #define SPEAR300_TELECOM_REG_SIZE 0x00010000 | ||
25 | #define INT_ENB_MASK_REG 0x54 | 23 | #define INT_ENB_MASK_REG 0x54 |
26 | #define INT_STS_MASK_REG 0x58 | 24 | #define INT_STS_MASK_REG 0x58 |
27 | #define IT_PERS_S_IRQ_MASK (1 << 0) | 25 | #define IT_PERS_S_IRQ_MASK (1 << 0) |
@@ -36,47 +34,20 @@ | |||
36 | 34 | ||
37 | #define SHIRQ_RAS1_MASK 0x1FF | 35 | #define SHIRQ_RAS1_MASK 0x1FF |
38 | 36 | ||
39 | #define SPEAR300_CLCD_BASE 0x60000000 | 37 | #define SPEAR300_CLCD_BASE UL(0x60000000) |
40 | #define SPEAR300_CLCD_SIZE 0x10000000 | 38 | #define SPEAR300_SDHCI_BASE UL(0x70000000) |
41 | 39 | #define SPEAR300_NAND_0_BASE UL(0x80000000) | |
42 | #define SPEAR300_SDIO_BASE 0x70000000 | 40 | #define SPEAR300_NAND_1_BASE UL(0x84000000) |
43 | #define SPEAR300_SDIO_SIZE 0x10000000 | 41 | #define SPEAR300_NAND_2_BASE UL(0x88000000) |
44 | 42 | #define SPEAR300_NAND_3_BASE UL(0x8c000000) | |
45 | #define SPEAR300_NAND_0_BASE 0x80000000 | 43 | #define SPEAR300_NOR_0_BASE UL(0x90000000) |
46 | #define SPEAR300_NAND_0_SIZE 0x04000000 | 44 | #define SPEAR300_NOR_1_BASE UL(0x91000000) |
47 | 45 | #define SPEAR300_NOR_2_BASE UL(0x92000000) | |
48 | #define SPEAR300_NAND_1_BASE 0x84000000 | 46 | #define SPEAR300_NOR_3_BASE UL(0x93000000) |
49 | #define SPEAR300_NAND_1_SIZE 0x04000000 | 47 | #define SPEAR300_FSMC_BASE UL(0x94000000) |
50 | 48 | #define SPEAR300_SOC_CONFIG_BASE UL(0x99000000) | |
51 | #define SPEAR300_NAND_2_BASE 0x88000000 | 49 | #define SPEAR300_KEYBOARD_BASE UL(0xA0000000) |
52 | #define SPEAR300_NAND_2_SIZE 0x04000000 | 50 | #define SPEAR300_GPIO_BASE UL(0xA9000000) |
53 | |||
54 | #define SPEAR300_NAND_3_BASE 0x8c000000 | ||
55 | #define SPEAR300_NAND_3_SIZE 0x04000000 | ||
56 | |||
57 | #define SPEAR300_NOR_0_BASE 0x90000000 | ||
58 | #define SPEAR300_NOR_0_SIZE 0x01000000 | ||
59 | |||
60 | #define SPEAR300_NOR_1_BASE 0x91000000 | ||
61 | #define SPEAR300_NOR_1_SIZE 0x01000000 | ||
62 | |||
63 | #define SPEAR300_NOR_2_BASE 0x92000000 | ||
64 | #define SPEAR300_NOR_2_SIZE 0x01000000 | ||
65 | |||
66 | #define SPEAR300_NOR_3_BASE 0x93000000 | ||
67 | #define SPEAR300_NOR_3_SIZE 0x01000000 | ||
68 | |||
69 | #define SPEAR300_FSMC_BASE 0x94000000 | ||
70 | #define SPEAR300_FSMC_SIZE 0x05000000 | ||
71 | |||
72 | #define SPEAR300_SOC_CONFIG_BASE 0x99000000 | ||
73 | #define SPEAR300_SOC_CONFIG_SIZE 0x00000008 | ||
74 | |||
75 | #define SPEAR300_KEYBOARD_BASE 0xA0000000 | ||
76 | #define SPEAR300_KEYBOARD_SIZE 0x09000000 | ||
77 | |||
78 | #define SPEAR300_GPIO_BASE 0xA9000000 | ||
79 | #define SPEAR300_GPIO_SIZE 0x07000000 | ||
80 | 51 | ||
81 | #endif /* __MACH_SPEAR300_H */ | 52 | #endif /* __MACH_SPEAR300_H */ |
82 | 53 | ||
diff --git a/arch/arm/mach-spear3xx/include/mach/spear310.h b/arch/arm/mach-spear3xx/include/mach/spear310.h index b27bb8af3309..1e853479b8cd 100644 --- a/arch/arm/mach-spear3xx/include/mach/spear310.h +++ b/arch/arm/mach-spear3xx/include/mach/spear310.h | |||
@@ -16,30 +16,18 @@ | |||
16 | #ifndef __MACH_SPEAR310_H | 16 | #ifndef __MACH_SPEAR310_H |
17 | #define __MACH_SPEAR310_H | 17 | #define __MACH_SPEAR310_H |
18 | 18 | ||
19 | #define SPEAR310_NAND_BASE 0x40000000 | 19 | #define SPEAR310_NAND_BASE UL(0x40000000) |
20 | #define SPEAR310_NAND_SIZE 0x04000000 | 20 | #define SPEAR310_FSMC_BASE UL(0x44000000) |
21 | #define SPEAR310_UART1_BASE UL(0xB2000000) | ||
22 | #define SPEAR310_UART2_BASE UL(0xB2080000) | ||
23 | #define SPEAR310_UART3_BASE UL(0xB2100000) | ||
24 | #define SPEAR310_UART4_BASE UL(0xB2180000) | ||
25 | #define SPEAR310_UART5_BASE UL(0xB2200000) | ||
26 | #define SPEAR310_HDLC_BASE UL(0xB2800000) | ||
27 | #define SPEAR310_RS485_0_BASE UL(0xB3000000) | ||
28 | #define SPEAR310_RS485_1_BASE UL(0xB3800000) | ||
29 | #define SPEAR310_SOC_CONFIG_BASE UL(0xB4000000) | ||
21 | 30 | ||
22 | #define SPEAR310_FSMC_BASE 0x44000000 | ||
23 | #define SPEAR310_FSMC_SIZE 0x01000000 | ||
24 | |||
25 | #define SPEAR310_UART1_BASE 0xB2000000 | ||
26 | #define SPEAR310_UART2_BASE 0xB2080000 | ||
27 | #define SPEAR310_UART3_BASE 0xB2100000 | ||
28 | #define SPEAR310_UART4_BASE 0xB2180000 | ||
29 | #define SPEAR310_UART5_BASE 0xB2200000 | ||
30 | #define SPEAR310_UART_SIZE 0x00080000 | ||
31 | |||
32 | #define SPEAR310_HDLC_BASE 0xB2800000 | ||
33 | #define SPEAR310_HDLC_SIZE 0x00800000 | ||
34 | |||
35 | #define SPEAR310_RS485_0_BASE 0xB3000000 | ||
36 | #define SPEAR310_RS485_0_SIZE 0x00800000 | ||
37 | |||
38 | #define SPEAR310_RS485_1_BASE 0xB3800000 | ||
39 | #define SPEAR310_RS485_1_SIZE 0x00800000 | ||
40 | |||
41 | #define SPEAR310_SOC_CONFIG_BASE 0xB4000000 | ||
42 | #define SPEAR310_SOC_CONFIG_SIZE 0x00000070 | ||
43 | /* Interrupt registers offsets and masks */ | 31 | /* Interrupt registers offsets and masks */ |
44 | #define INT_STS_MASK_REG 0x04 | 32 | #define INT_STS_MASK_REG 0x04 |
45 | #define SMII0_IRQ_MASK (1 << 0) | 33 | #define SMII0_IRQ_MASK (1 << 0) |
diff --git a/arch/arm/mach-spear3xx/include/mach/spear320.h b/arch/arm/mach-spear3xx/include/mach/spear320.h index cacf17a958cd..940f0d85d959 100644 --- a/arch/arm/mach-spear3xx/include/mach/spear320.h +++ b/arch/arm/mach-spear3xx/include/mach/spear320.h | |||
@@ -16,54 +16,25 @@ | |||
16 | #ifndef __MACH_SPEAR320_H | 16 | #ifndef __MACH_SPEAR320_H |
17 | #define __MACH_SPEAR320_H | 17 | #define __MACH_SPEAR320_H |
18 | 18 | ||
19 | #define SPEAR320_EMI_CTRL_BASE 0x40000000 | 19 | #define SPEAR320_EMI_CTRL_BASE UL(0x40000000) |
20 | #define SPEAR320_EMI_CTRL_SIZE 0x08000000 | 20 | #define SPEAR320_FSMC_BASE UL(0x4C000000) |
21 | #define SPEAR320_NAND_BASE UL(0x50000000) | ||
22 | #define SPEAR320_I2S_BASE UL(0x60000000) | ||
23 | #define SPEAR320_SDHCI_BASE UL(0x70000000) | ||
24 | #define SPEAR320_CLCD_BASE UL(0x90000000) | ||
25 | #define SPEAR320_PAR_PORT_BASE UL(0xA0000000) | ||
26 | #define SPEAR320_CAN0_BASE UL(0xA1000000) | ||
27 | #define SPEAR320_CAN1_BASE UL(0xA2000000) | ||
28 | #define SPEAR320_UART1_BASE UL(0xA3000000) | ||
29 | #define SPEAR320_UART2_BASE UL(0xA4000000) | ||
30 | #define SPEAR320_SSP0_BASE UL(0xA5000000) | ||
31 | #define SPEAR320_SSP1_BASE UL(0xA6000000) | ||
32 | #define SPEAR320_I2C_BASE UL(0xA7000000) | ||
33 | #define SPEAR320_PWM_BASE UL(0xA8000000) | ||
34 | #define SPEAR320_SMII0_BASE UL(0xAA000000) | ||
35 | #define SPEAR320_SMII1_BASE UL(0xAB000000) | ||
36 | #define SPEAR320_SOC_CONFIG_BASE UL(0xB3000000) | ||
21 | 37 | ||
22 | #define SPEAR320_FSMC_BASE 0x4C000000 | ||
23 | #define SPEAR320_FSMC_SIZE 0x01000000 | ||
24 | |||
25 | #define SPEAR320_I2S_BASE 0x60000000 | ||
26 | #define SPEAR320_I2S_SIZE 0x10000000 | ||
27 | |||
28 | #define SPEAR320_SDIO_BASE 0x70000000 | ||
29 | #define SPEAR320_SDIO_SIZE 0x10000000 | ||
30 | |||
31 | #define SPEAR320_CLCD_BASE 0x90000000 | ||
32 | #define SPEAR320_CLCD_SIZE 0x10000000 | ||
33 | |||
34 | #define SPEAR320_PAR_PORT_BASE 0xA0000000 | ||
35 | #define SPEAR320_PAR_PORT_SIZE 0x01000000 | ||
36 | |||
37 | #define SPEAR320_CAN0_BASE 0xA1000000 | ||
38 | #define SPEAR320_CAN0_SIZE 0x01000000 | ||
39 | |||
40 | #define SPEAR320_CAN1_BASE 0xA2000000 | ||
41 | #define SPEAR320_CAN1_SIZE 0x01000000 | ||
42 | |||
43 | #define SPEAR320_UART1_BASE 0xA3000000 | ||
44 | #define SPEAR320_UART2_BASE 0xA4000000 | ||
45 | #define SPEAR320_UART_SIZE 0x01000000 | ||
46 | |||
47 | #define SPEAR320_SSP0_BASE 0xA5000000 | ||
48 | #define SPEAR320_SSP0_SIZE 0x01000000 | ||
49 | |||
50 | #define SPEAR320_SSP1_BASE 0xA6000000 | ||
51 | #define SPEAR320_SSP1_SIZE 0x01000000 | ||
52 | |||
53 | #define SPEAR320_I2C_BASE 0xA7000000 | ||
54 | #define SPEAR320_I2C_SIZE 0x01000000 | ||
55 | |||
56 | #define SPEAR320_PWM_BASE 0xA8000000 | ||
57 | #define SPEAR320_PWM_SIZE 0x01000000 | ||
58 | |||
59 | #define SPEAR320_SMII0_BASE 0xAA000000 | ||
60 | #define SPEAR320_SMII0_SIZE 0x01000000 | ||
61 | |||
62 | #define SPEAR320_SMII1_BASE 0xAB000000 | ||
63 | #define SPEAR320_SMII1_SIZE 0x01000000 | ||
64 | |||
65 | #define SPEAR320_SOC_CONFIG_BASE 0xB4000000 | ||
66 | #define SPEAR320_SOC_CONFIG_SIZE 0x00000070 | ||
67 | /* Interrupt registers offsets and masks */ | 38 | /* Interrupt registers offsets and masks */ |
68 | #define INT_STS_MASK_REG 0x04 | 39 | #define INT_STS_MASK_REG 0x04 |
69 | #define INT_CLR_MASK_REG 0x04 | 40 | #define INT_CLR_MASK_REG 0x04 |
@@ -74,7 +45,7 @@ | |||
74 | #define EMI_IRQ_MASK (1 << 7) | 45 | #define EMI_IRQ_MASK (1 << 7) |
75 | #define CLCD_IRQ_MASK (1 << 8) | 46 | #define CLCD_IRQ_MASK (1 << 8) |
76 | #define SPP_IRQ_MASK (1 << 9) | 47 | #define SPP_IRQ_MASK (1 << 9) |
77 | #define SDIO_IRQ_MASK (1 << 10) | 48 | #define SDHCI_IRQ_MASK (1 << 10) |
78 | #define CAN_U_IRQ_MASK (1 << 11) | 49 | #define CAN_U_IRQ_MASK (1 << 11) |
79 | #define CAN_L_IRQ_MASK (1 << 12) | 50 | #define CAN_L_IRQ_MASK (1 << 12) |
80 | #define UART1_IRQ_MASK (1 << 13) | 51 | #define UART1_IRQ_MASK (1 << 13) |
diff --git a/arch/arm/mach-spear3xx/spear300.c b/arch/arm/mach-spear3xx/spear300.c index 5aa2d54ebfaa..2697e65adf86 100644 --- a/arch/arm/mach-spear3xx/spear300.c +++ b/arch/arm/mach-spear3xx/spear300.c | |||
@@ -15,9 +15,9 @@ | |||
15 | #include <linux/amba/pl061.h> | 15 | #include <linux/amba/pl061.h> |
16 | #include <linux/ptrace.h> | 16 | #include <linux/ptrace.h> |
17 | #include <asm/irq.h> | 17 | #include <asm/irq.h> |
18 | #include <mach/generic.h> | ||
19 | #include <mach/spear.h> | ||
20 | #include <plat/shirq.h> | 18 | #include <plat/shirq.h> |
19 | #include <mach/generic.h> | ||
20 | #include <mach/hardware.h> | ||
21 | 21 | ||
22 | /* pad multiplexing support */ | 22 | /* pad multiplexing support */ |
23 | /* muxing registers */ | 23 | /* muxing registers */ |
@@ -310,7 +310,7 @@ struct pmx_dev pmx_telecom_boot_pins = { | |||
310 | .enb_on_reset = 1, | 310 | .enb_on_reset = 1, |
311 | }; | 311 | }; |
312 | 312 | ||
313 | struct pmx_dev_mode pmx_telecom_sdio_4bit_modes[] = { | 313 | struct pmx_dev_mode pmx_telecom_sdhci_4bit_modes[] = { |
314 | { | 314 | { |
315 | .ids = PHOTO_FRAME_MODE | LEND_IP_PHONE_MODE | | 315 | .ids = PHOTO_FRAME_MODE | LEND_IP_PHONE_MODE | |
316 | HEND_IP_PHONE_MODE | LEND_WIFI_PHONE_MODE | | 316 | HEND_IP_PHONE_MODE | LEND_WIFI_PHONE_MODE | |
@@ -323,14 +323,14 @@ struct pmx_dev_mode pmx_telecom_sdio_4bit_modes[] = { | |||
323 | }, | 323 | }, |
324 | }; | 324 | }; |
325 | 325 | ||
326 | struct pmx_dev pmx_telecom_sdio_4bit = { | 326 | struct pmx_dev pmx_telecom_sdhci_4bit = { |
327 | .name = "telecom_sdio_4bit", | 327 | .name = "telecom_sdhci_4bit", |
328 | .modes = pmx_telecom_sdio_4bit_modes, | 328 | .modes = pmx_telecom_sdhci_4bit_modes, |
329 | .mode_count = ARRAY_SIZE(pmx_telecom_sdio_4bit_modes), | 329 | .mode_count = ARRAY_SIZE(pmx_telecom_sdhci_4bit_modes), |
330 | .enb_on_reset = 1, | 330 | .enb_on_reset = 1, |
331 | }; | 331 | }; |
332 | 332 | ||
333 | struct pmx_dev_mode pmx_telecom_sdio_8bit_modes[] = { | 333 | struct pmx_dev_mode pmx_telecom_sdhci_8bit_modes[] = { |
334 | { | 334 | { |
335 | .ids = PHOTO_FRAME_MODE | LEND_IP_PHONE_MODE | | 335 | .ids = PHOTO_FRAME_MODE | LEND_IP_PHONE_MODE | |
336 | HEND_IP_PHONE_MODE | LEND_WIFI_PHONE_MODE | | 336 | HEND_IP_PHONE_MODE | LEND_WIFI_PHONE_MODE | |
@@ -342,10 +342,10 @@ struct pmx_dev_mode pmx_telecom_sdio_8bit_modes[] = { | |||
342 | }, | 342 | }, |
343 | }; | 343 | }; |
344 | 344 | ||
345 | struct pmx_dev pmx_telecom_sdio_8bit = { | 345 | struct pmx_dev pmx_telecom_sdhci_8bit = { |
346 | .name = "telecom_sdio_8bit", | 346 | .name = "telecom_sdhci_8bit", |
347 | .modes = pmx_telecom_sdio_8bit_modes, | 347 | .modes = pmx_telecom_sdhci_8bit_modes, |
348 | .mode_count = ARRAY_SIZE(pmx_telecom_sdio_8bit_modes), | 348 | .mode_count = ARRAY_SIZE(pmx_telecom_sdhci_8bit_modes), |
349 | .enb_on_reset = 1, | 349 | .enb_on_reset = 1, |
350 | }; | 350 | }; |
351 | 351 | ||
@@ -370,26 +370,6 @@ struct pmx_driver pmx_driver = { | |||
370 | .mux_reg = {.offset = PAD_MUX_CONFIG_REG, .mask = 0x00007fff}, | 370 | .mux_reg = {.offset = PAD_MUX_CONFIG_REG, .mask = 0x00007fff}, |
371 | }; | 371 | }; |
372 | 372 | ||
373 | /* Add spear300 specific devices here */ | ||
374 | /* arm gpio1 device registration */ | ||
375 | static struct pl061_platform_data gpio1_plat_data = { | ||
376 | .gpio_base = 8, | ||
377 | .irq_base = SPEAR_GPIO1_INT_BASE, | ||
378 | }; | ||
379 | |||
380 | struct amba_device gpio1_device = { | ||
381 | .dev = { | ||
382 | .init_name = "gpio1", | ||
383 | .platform_data = &gpio1_plat_data, | ||
384 | }, | ||
385 | .res = { | ||
386 | .start = SPEAR300_GPIO_BASE, | ||
387 | .end = SPEAR300_GPIO_BASE + SPEAR300_GPIO_SIZE - 1, | ||
388 | .flags = IORESOURCE_MEM, | ||
389 | }, | ||
390 | .irq = {VIRQ_GPIO1, NO_IRQ}, | ||
391 | }; | ||
392 | |||
393 | /* spear3xx shared irq */ | 373 | /* spear3xx shared irq */ |
394 | struct shirq_dev_config shirq_ras1_config[] = { | 374 | struct shirq_dev_config shirq_ras1_config[] = { |
395 | { | 375 | { |
@@ -443,6 +423,26 @@ struct spear_shirq shirq_ras1 = { | |||
443 | }, | 423 | }, |
444 | }; | 424 | }; |
445 | 425 | ||
426 | /* Add spear300 specific devices here */ | ||
427 | /* arm gpio1 device registration */ | ||
428 | static struct pl061_platform_data gpio1_plat_data = { | ||
429 | .gpio_base = 8, | ||
430 | .irq_base = SPEAR_GPIO1_INT_BASE, | ||
431 | }; | ||
432 | |||
433 | struct amba_device gpio1_device = { | ||
434 | .dev = { | ||
435 | .init_name = "gpio1", | ||
436 | .platform_data = &gpio1_plat_data, | ||
437 | }, | ||
438 | .res = { | ||
439 | .start = SPEAR300_GPIO_BASE, | ||
440 | .end = SPEAR300_GPIO_BASE + SZ_4K - 1, | ||
441 | .flags = IORESOURCE_MEM, | ||
442 | }, | ||
443 | .irq = {VIRQ_GPIO1, NO_IRQ}, | ||
444 | }; | ||
445 | |||
446 | /* spear300 routines */ | 446 | /* spear300 routines */ |
447 | void __init spear300_init(void) | 447 | void __init spear300_init(void) |
448 | { | 448 | { |
@@ -452,17 +452,21 @@ void __init spear300_init(void) | |||
452 | spear3xx_init(); | 452 | spear3xx_init(); |
453 | 453 | ||
454 | /* shared irq registration */ | 454 | /* shared irq registration */ |
455 | shirq_ras1.regs.base = | 455 | shirq_ras1.regs.base = ioremap(SPEAR300_TELECOM_BASE, SZ_4K); |
456 | ioremap(SPEAR300_TELECOM_BASE, SPEAR300_TELECOM_REG_SIZE); | ||
457 | if (shirq_ras1.regs.base) { | 456 | if (shirq_ras1.regs.base) { |
458 | ret = spear_shirq_register(&shirq_ras1); | 457 | ret = spear_shirq_register(&shirq_ras1); |
459 | if (ret) | 458 | if (ret) |
460 | printk(KERN_ERR "Error registering Shared IRQ\n"); | 459 | printk(KERN_ERR "Error registering Shared IRQ\n"); |
461 | } | 460 | } |
462 | } | ||
463 | 461 | ||
464 | void spear300_pmx_init(void) | 462 | /* pmx initialization */ |
465 | { | 463 | pmx_driver.base = ioremap(SPEAR300_SOC_CONFIG_BASE, SZ_4K); |
466 | spear_pmx_init(&pmx_driver, SPEAR300_SOC_CONFIG_BASE, | 464 | if (pmx_driver.base) { |
467 | SPEAR300_SOC_CONFIG_SIZE); | 465 | ret = pmx_register(&pmx_driver); |
466 | if (ret) | ||
467 | printk(KERN_ERR "padmux: registeration failed. err no" | ||
468 | ": %d\n", ret); | ||
469 | /* Free Mapping, device selection already done */ | ||
470 | iounmap(pmx_driver.base); | ||
471 | } | ||
468 | } | 472 | } |
diff --git a/arch/arm/mach-spear3xx/spear300_evb.c b/arch/arm/mach-spear3xx/spear300_evb.c index bb21db152a23..42d2253ef540 100644 --- a/arch/arm/mach-spear3xx/spear300_evb.c +++ b/arch/arm/mach-spear3xx/spear300_evb.c | |||
@@ -14,7 +14,7 @@ | |||
14 | #include <asm/mach/arch.h> | 14 | #include <asm/mach/arch.h> |
15 | #include <asm/mach-types.h> | 15 | #include <asm/mach-types.h> |
16 | #include <mach/generic.h> | 16 | #include <mach/generic.h> |
17 | #include <mach/spear.h> | 17 | #include <mach/hardware.h> |
18 | 18 | ||
19 | /* padmux devices to enable */ | 19 | /* padmux devices to enable */ |
20 | static struct pmx_dev *pmx_devs[] = { | 20 | static struct pmx_dev *pmx_devs[] = { |
@@ -28,7 +28,7 @@ static struct pmx_dev *pmx_devs[] = { | |||
28 | /* spear300 specific devices */ | 28 | /* spear300 specific devices */ |
29 | &pmx_fsmc_2_chips, | 29 | &pmx_fsmc_2_chips, |
30 | &pmx_clcd, | 30 | &pmx_clcd, |
31 | &pmx_telecom_sdio_4bit, | 31 | &pmx_telecom_sdhci_4bit, |
32 | &pmx_gpio1, | 32 | &pmx_gpio1, |
33 | }; | 33 | }; |
34 | 34 | ||
@@ -51,14 +51,13 @@ static void __init spear300_evb_init(void) | |||
51 | { | 51 | { |
52 | unsigned int i; | 52 | unsigned int i; |
53 | 53 | ||
54 | /* call spear300 machine init function */ | 54 | /* padmux initialization, must be done before spear300_init */ |
55 | spear300_init(); | ||
56 | |||
57 | /* padmux initialization */ | ||
58 | pmx_driver.mode = &photo_frame_mode; | 55 | pmx_driver.mode = &photo_frame_mode; |
59 | pmx_driver.devs = pmx_devs; | 56 | pmx_driver.devs = pmx_devs; |
60 | pmx_driver.devs_count = ARRAY_SIZE(pmx_devs); | 57 | pmx_driver.devs_count = ARRAY_SIZE(pmx_devs); |
61 | spear300_pmx_init(); | 58 | |
59 | /* call spear300 machine init function */ | ||
60 | spear300_init(); | ||
62 | 61 | ||
63 | /* Add Platform Devices */ | 62 | /* Add Platform Devices */ |
64 | platform_add_devices(plat_devs, ARRAY_SIZE(plat_devs)); | 63 | platform_add_devices(plat_devs, ARRAY_SIZE(plat_devs)); |
@@ -72,6 +71,6 @@ MACHINE_START(SPEAR300, "ST-SPEAR300-EVB") | |||
72 | .boot_params = 0x00000100, | 71 | .boot_params = 0x00000100, |
73 | .map_io = spear3xx_map_io, | 72 | .map_io = spear3xx_map_io, |
74 | .init_irq = spear3xx_init_irq, | 73 | .init_irq = spear3xx_init_irq, |
75 | .timer = &spear_sys_timer, | 74 | .timer = &spear3xx_timer, |
76 | .init_machine = spear300_evb_init, | 75 | .init_machine = spear300_evb_init, |
77 | MACHINE_END | 76 | MACHINE_END |
diff --git a/arch/arm/mach-spear3xx/spear310.c b/arch/arm/mach-spear3xx/spear310.c index 53b41b52d7ee..5c0a67b60c2a 100644 --- a/arch/arm/mach-spear3xx/spear310.c +++ b/arch/arm/mach-spear3xx/spear310.c | |||
@@ -13,9 +13,9 @@ | |||
13 | 13 | ||
14 | #include <linux/ptrace.h> | 14 | #include <linux/ptrace.h> |
15 | #include <asm/irq.h> | 15 | #include <asm/irq.h> |
16 | #include <mach/generic.h> | ||
17 | #include <mach/spear.h> | ||
18 | #include <plat/shirq.h> | 16 | #include <plat/shirq.h> |
17 | #include <mach/generic.h> | ||
18 | #include <mach/hardware.h> | ||
19 | 19 | ||
20 | /* pad multiplexing support */ | 20 | /* pad multiplexing support */ |
21 | /* muxing registers */ | 21 | /* muxing registers */ |
@@ -139,8 +139,6 @@ struct pmx_driver pmx_driver = { | |||
139 | .mux_reg = {.offset = PAD_MUX_CONFIG_REG, .mask = 0x00007fff}, | 139 | .mux_reg = {.offset = PAD_MUX_CONFIG_REG, .mask = 0x00007fff}, |
140 | }; | 140 | }; |
141 | 141 | ||
142 | /* Add spear310 specific devices here */ | ||
143 | |||
144 | /* spear3xx shared irq */ | 142 | /* spear3xx shared irq */ |
145 | struct shirq_dev_config shirq_ras1_config[] = { | 143 | struct shirq_dev_config shirq_ras1_config[] = { |
146 | { | 144 | { |
@@ -257,6 +255,8 @@ struct spear_shirq shirq_intrcomm_ras = { | |||
257 | }, | 255 | }, |
258 | }; | 256 | }; |
259 | 257 | ||
258 | /* Add spear310 specific devices here */ | ||
259 | |||
260 | /* spear310 routines */ | 260 | /* spear310 routines */ |
261 | void __init spear310_init(void) | 261 | void __init spear310_init(void) |
262 | { | 262 | { |
@@ -267,7 +267,7 @@ void __init spear310_init(void) | |||
267 | spear3xx_init(); | 267 | spear3xx_init(); |
268 | 268 | ||
269 | /* shared irq registration */ | 269 | /* shared irq registration */ |
270 | base = ioremap(SPEAR310_SOC_CONFIG_BASE, SPEAR310_SOC_CONFIG_SIZE); | 270 | base = ioremap(SPEAR310_SOC_CONFIG_BASE, SZ_4K); |
271 | if (base) { | 271 | if (base) { |
272 | /* shirq 1 */ | 272 | /* shirq 1 */ |
273 | shirq_ras1.regs.base = base; | 273 | shirq_ras1.regs.base = base; |
@@ -293,10 +293,11 @@ void __init spear310_init(void) | |||
293 | if (ret) | 293 | if (ret) |
294 | printk(KERN_ERR "Error registering Shared IRQ 4\n"); | 294 | printk(KERN_ERR "Error registering Shared IRQ 4\n"); |
295 | } | 295 | } |
296 | } | ||
297 | 296 | ||
298 | void spear310_pmx_init(void) | 297 | /* pmx initialization */ |
299 | { | 298 | pmx_driver.base = base; |
300 | spear_pmx_init(&pmx_driver, SPEAR310_SOC_CONFIG_BASE, | 299 | ret = pmx_register(&pmx_driver); |
301 | SPEAR310_SOC_CONFIG_SIZE); | 300 | if (ret) |
301 | printk(KERN_ERR "padmux: registeration failed. err no: %d\n", | ||
302 | ret); | ||
302 | } | 303 | } |
diff --git a/arch/arm/mach-spear3xx/spear310_evb.c b/arch/arm/mach-spear3xx/spear310_evb.c index 7facf6643199..2d7f333bd67b 100644 --- a/arch/arm/mach-spear3xx/spear310_evb.c +++ b/arch/arm/mach-spear3xx/spear310_evb.c | |||
@@ -14,7 +14,7 @@ | |||
14 | #include <asm/mach/arch.h> | 14 | #include <asm/mach/arch.h> |
15 | #include <asm/mach-types.h> | 15 | #include <asm/mach-types.h> |
16 | #include <mach/generic.h> | 16 | #include <mach/generic.h> |
17 | #include <mach/spear.h> | 17 | #include <mach/hardware.h> |
18 | 18 | ||
19 | /* padmux devices to enable */ | 19 | /* padmux devices to enable */ |
20 | static struct pmx_dev *pmx_devs[] = { | 20 | static struct pmx_dev *pmx_devs[] = { |
@@ -58,14 +58,13 @@ static void __init spear310_evb_init(void) | |||
58 | { | 58 | { |
59 | unsigned int i; | 59 | unsigned int i; |
60 | 60 | ||
61 | /* call spear310 machine init function */ | 61 | /* padmux initialization, must be done before spear310_init */ |
62 | spear310_init(); | ||
63 | |||
64 | /* padmux initialization */ | ||
65 | pmx_driver.mode = NULL; | 62 | pmx_driver.mode = NULL; |
66 | pmx_driver.devs = pmx_devs; | 63 | pmx_driver.devs = pmx_devs; |
67 | pmx_driver.devs_count = ARRAY_SIZE(pmx_devs); | 64 | pmx_driver.devs_count = ARRAY_SIZE(pmx_devs); |
68 | spear310_pmx_init(); | 65 | |
66 | /* call spear310 machine init function */ | ||
67 | spear310_init(); | ||
69 | 68 | ||
70 | /* Add Platform Devices */ | 69 | /* Add Platform Devices */ |
71 | platform_add_devices(plat_devs, ARRAY_SIZE(plat_devs)); | 70 | platform_add_devices(plat_devs, ARRAY_SIZE(plat_devs)); |
@@ -79,6 +78,6 @@ MACHINE_START(SPEAR310, "ST-SPEAR310-EVB") | |||
79 | .boot_params = 0x00000100, | 78 | .boot_params = 0x00000100, |
80 | .map_io = spear3xx_map_io, | 79 | .map_io = spear3xx_map_io, |
81 | .init_irq = spear3xx_init_irq, | 80 | .init_irq = spear3xx_init_irq, |
82 | .timer = &spear_sys_timer, | 81 | .timer = &spear3xx_timer, |
83 | .init_machine = spear310_evb_init, | 82 | .init_machine = spear310_evb_init, |
84 | MACHINE_END | 83 | MACHINE_END |
diff --git a/arch/arm/mach-spear3xx/spear320.c b/arch/arm/mach-spear3xx/spear320.c index 88b465284c36..741c1f414cbd 100644 --- a/arch/arm/mach-spear3xx/spear320.c +++ b/arch/arm/mach-spear3xx/spear320.c | |||
@@ -13,9 +13,9 @@ | |||
13 | 13 | ||
14 | #include <linux/ptrace.h> | 14 | #include <linux/ptrace.h> |
15 | #include <asm/irq.h> | 15 | #include <asm/irq.h> |
16 | #include <mach/generic.h> | ||
17 | #include <mach/spear.h> | ||
18 | #include <plat/shirq.h> | 16 | #include <plat/shirq.h> |
17 | #include <mach/generic.h> | ||
18 | #include <mach/hardware.h> | ||
19 | 19 | ||
20 | /* pad multiplexing support */ | 20 | /* pad multiplexing support */ |
21 | /* muxing registers */ | 21 | /* muxing registers */ |
@@ -110,7 +110,7 @@ struct pmx_dev pmx_spp = { | |||
110 | .enb_on_reset = 1, | 110 | .enb_on_reset = 1, |
111 | }; | 111 | }; |
112 | 112 | ||
113 | struct pmx_dev_mode pmx_sdio_modes[] = { | 113 | struct pmx_dev_mode pmx_sdhci_modes[] = { |
114 | { | 114 | { |
115 | .ids = AUTO_NET_SMII_MODE | AUTO_NET_MII_MODE | | 115 | .ids = AUTO_NET_SMII_MODE | AUTO_NET_MII_MODE | |
116 | SMALL_PRINTERS_MODE, | 116 | SMALL_PRINTERS_MODE, |
@@ -118,10 +118,10 @@ struct pmx_dev_mode pmx_sdio_modes[] = { | |||
118 | }, | 118 | }, |
119 | }; | 119 | }; |
120 | 120 | ||
121 | struct pmx_dev pmx_sdio = { | 121 | struct pmx_dev pmx_sdhci = { |
122 | .name = "sdio", | 122 | .name = "sdhci", |
123 | .modes = pmx_sdio_modes, | 123 | .modes = pmx_sdhci_modes, |
124 | .mode_count = ARRAY_SIZE(pmx_sdio_modes), | 124 | .mode_count = ARRAY_SIZE(pmx_sdhci_modes), |
125 | .enb_on_reset = 1, | 125 | .enb_on_reset = 1, |
126 | }; | 126 | }; |
127 | 127 | ||
@@ -215,17 +215,17 @@ struct pmx_dev pmx_can = { | |||
215 | .enb_on_reset = 1, | 215 | .enb_on_reset = 1, |
216 | }; | 216 | }; |
217 | 217 | ||
218 | struct pmx_dev_mode pmx_sdio_led_modes[] = { | 218 | struct pmx_dev_mode pmx_sdhci_led_modes[] = { |
219 | { | 219 | { |
220 | .ids = AUTO_NET_SMII_MODE | AUTO_NET_MII_MODE, | 220 | .ids = AUTO_NET_SMII_MODE | AUTO_NET_MII_MODE, |
221 | .mask = PMX_SSP_CS_MASK, | 221 | .mask = PMX_SSP_CS_MASK, |
222 | }, | 222 | }, |
223 | }; | 223 | }; |
224 | 224 | ||
225 | struct pmx_dev pmx_sdio_led = { | 225 | struct pmx_dev pmx_sdhci_led = { |
226 | .name = "sdio_led", | 226 | .name = "sdhci_led", |
227 | .modes = pmx_sdio_led_modes, | 227 | .modes = pmx_sdhci_led_modes, |
228 | .mode_count = ARRAY_SIZE(pmx_sdio_led_modes), | 228 | .mode_count = ARRAY_SIZE(pmx_sdhci_led_modes), |
229 | .enb_on_reset = 1, | 229 | .enb_on_reset = 1, |
230 | }; | 230 | }; |
231 | 231 | ||
@@ -384,8 +384,6 @@ struct pmx_driver pmx_driver = { | |||
384 | .mux_reg = {.offset = PAD_MUX_CONFIG_REG, .mask = 0x00007fff}, | 384 | .mux_reg = {.offset = PAD_MUX_CONFIG_REG, .mask = 0x00007fff}, |
385 | }; | 385 | }; |
386 | 386 | ||
387 | /* Add spear320 specific devices here */ | ||
388 | |||
389 | /* spear3xx shared irq */ | 387 | /* spear3xx shared irq */ |
390 | struct shirq_dev_config shirq_ras1_config[] = { | 388 | struct shirq_dev_config shirq_ras1_config[] = { |
391 | { | 389 | { |
@@ -510,6 +508,8 @@ struct spear_shirq shirq_intrcomm_ras = { | |||
510 | }, | 508 | }, |
511 | }; | 509 | }; |
512 | 510 | ||
511 | /* Add spear320 specific devices here */ | ||
512 | |||
513 | /* spear320 routines */ | 513 | /* spear320 routines */ |
514 | void __init spear320_init(void) | 514 | void __init spear320_init(void) |
515 | { | 515 | { |
@@ -520,7 +520,7 @@ void __init spear320_init(void) | |||
520 | spear3xx_init(); | 520 | spear3xx_init(); |
521 | 521 | ||
522 | /* shared irq registration */ | 522 | /* shared irq registration */ |
523 | base = ioremap(SPEAR320_SOC_CONFIG_BASE, SPEAR320_SOC_CONFIG_SIZE); | 523 | base = ioremap(SPEAR320_SOC_CONFIG_BASE, SZ_4K); |
524 | if (base) { | 524 | if (base) { |
525 | /* shirq 1 */ | 525 | /* shirq 1 */ |
526 | shirq_ras1.regs.base = base; | 526 | shirq_ras1.regs.base = base; |
@@ -540,10 +540,11 @@ void __init spear320_init(void) | |||
540 | if (ret) | 540 | if (ret) |
541 | printk(KERN_ERR "Error registering Shared IRQ 4\n"); | 541 | printk(KERN_ERR "Error registering Shared IRQ 4\n"); |
542 | } | 542 | } |
543 | } | ||
544 | 543 | ||
545 | void spear320_pmx_init(void) | 544 | /* pmx initialization */ |
546 | { | 545 | pmx_driver.base = base; |
547 | spear_pmx_init(&pmx_driver, SPEAR320_SOC_CONFIG_BASE, | 546 | ret = pmx_register(&pmx_driver); |
548 | SPEAR320_SOC_CONFIG_SIZE); | 547 | if (ret) |
548 | printk(KERN_ERR "padmux: registeration failed. err no: %d\n", | ||
549 | ret); | ||
549 | } | 550 | } |
diff --git a/arch/arm/mach-spear3xx/spear320_evb.c b/arch/arm/mach-spear3xx/spear320_evb.c index 62ac685a4135..8213e4b66c14 100644 --- a/arch/arm/mach-spear3xx/spear320_evb.c +++ b/arch/arm/mach-spear3xx/spear320_evb.c | |||
@@ -14,7 +14,7 @@ | |||
14 | #include <asm/mach/arch.h> | 14 | #include <asm/mach/arch.h> |
15 | #include <asm/mach-types.h> | 15 | #include <asm/mach-types.h> |
16 | #include <mach/generic.h> | 16 | #include <mach/generic.h> |
17 | #include <mach/spear.h> | 17 | #include <mach/hardware.h> |
18 | 18 | ||
19 | /* padmux devices to enable */ | 19 | /* padmux devices to enable */ |
20 | static struct pmx_dev *pmx_devs[] = { | 20 | static struct pmx_dev *pmx_devs[] = { |
@@ -26,7 +26,7 @@ static struct pmx_dev *pmx_devs[] = { | |||
26 | 26 | ||
27 | /* spear320 specific devices */ | 27 | /* spear320 specific devices */ |
28 | &pmx_fsmc, | 28 | &pmx_fsmc, |
29 | &pmx_sdio, | 29 | &pmx_sdhci, |
30 | &pmx_i2s, | 30 | &pmx_i2s, |
31 | &pmx_uart1, | 31 | &pmx_uart1, |
32 | &pmx_uart2, | 32 | &pmx_uart2, |
@@ -55,14 +55,13 @@ static void __init spear320_evb_init(void) | |||
55 | { | 55 | { |
56 | unsigned int i; | 56 | unsigned int i; |
57 | 57 | ||
58 | /* call spear320 machine init function */ | 58 | /* padmux initialization, must be done before spear320_init */ |
59 | spear320_init(); | ||
60 | |||
61 | /* padmux initialization */ | ||
62 | pmx_driver.mode = &auto_net_mii_mode; | 59 | pmx_driver.mode = &auto_net_mii_mode; |
63 | pmx_driver.devs = pmx_devs; | 60 | pmx_driver.devs = pmx_devs; |
64 | pmx_driver.devs_count = ARRAY_SIZE(pmx_devs); | 61 | pmx_driver.devs_count = ARRAY_SIZE(pmx_devs); |
65 | spear320_pmx_init(); | 62 | |
63 | /* call spear320 machine init function */ | ||
64 | spear320_init(); | ||
66 | 65 | ||
67 | /* Add Platform Devices */ | 66 | /* Add Platform Devices */ |
68 | platform_add_devices(plat_devs, ARRAY_SIZE(plat_devs)); | 67 | platform_add_devices(plat_devs, ARRAY_SIZE(plat_devs)); |
@@ -76,6 +75,6 @@ MACHINE_START(SPEAR320, "ST-SPEAR320-EVB") | |||
76 | .boot_params = 0x00000100, | 75 | .boot_params = 0x00000100, |
77 | .map_io = spear3xx_map_io, | 76 | .map_io = spear3xx_map_io, |
78 | .init_irq = spear3xx_init_irq, | 77 | .init_irq = spear3xx_init_irq, |
79 | .timer = &spear_sys_timer, | 78 | .timer = &spear3xx_timer, |
80 | .init_machine = spear320_evb_init, | 79 | .init_machine = spear320_evb_init, |
81 | MACHINE_END | 80 | MACHINE_END |
diff --git a/arch/arm/mach-spear3xx/spear3xx.c b/arch/arm/mach-spear3xx/spear3xx.c index 52f553c8c46d..d3ba8ca1bc59 100644 --- a/arch/arm/mach-spear3xx/spear3xx.c +++ b/arch/arm/mach-spear3xx/spear3xx.c | |||
@@ -19,7 +19,7 @@ | |||
19 | #include <asm/irq.h> | 19 | #include <asm/irq.h> |
20 | #include <asm/mach/arch.h> | 20 | #include <asm/mach/arch.h> |
21 | #include <mach/generic.h> | 21 | #include <mach/generic.h> |
22 | #include <mach/spear.h> | 22 | #include <mach/hardware.h> |
23 | 23 | ||
24 | /* Add spear3xx machines common devices here */ | 24 | /* Add spear3xx machines common devices here */ |
25 | /* gpio device registration */ | 25 | /* gpio device registration */ |
@@ -35,7 +35,7 @@ struct amba_device gpio_device = { | |||
35 | }, | 35 | }, |
36 | .res = { | 36 | .res = { |
37 | .start = SPEAR3XX_ICM3_GPIO_BASE, | 37 | .start = SPEAR3XX_ICM3_GPIO_BASE, |
38 | .end = SPEAR3XX_ICM3_GPIO_BASE + SPEAR3XX_ICM3_GPIO_SIZE - 1, | 38 | .end = SPEAR3XX_ICM3_GPIO_BASE + SZ_4K - 1, |
39 | .flags = IORESOURCE_MEM, | 39 | .flags = IORESOURCE_MEM, |
40 | }, | 40 | }, |
41 | .irq = {IRQ_BASIC_GPIO, NO_IRQ}, | 41 | .irq = {IRQ_BASIC_GPIO, NO_IRQ}, |
@@ -48,7 +48,7 @@ struct amba_device uart_device = { | |||
48 | }, | 48 | }, |
49 | .res = { | 49 | .res = { |
50 | .start = SPEAR3XX_ICM1_UART_BASE, | 50 | .start = SPEAR3XX_ICM1_UART_BASE, |
51 | .end = SPEAR3XX_ICM1_UART_BASE + SPEAR3XX_ICM1_UART_SIZE - 1, | 51 | .end = SPEAR3XX_ICM1_UART_BASE + SZ_4K - 1, |
52 | .flags = IORESOURCE_MEM, | 52 | .flags = IORESOURCE_MEM, |
53 | }, | 53 | }, |
54 | .irq = {IRQ_UART, NO_IRQ}, | 54 | .irq = {IRQ_UART, NO_IRQ}, |
@@ -71,22 +71,22 @@ struct map_desc spear3xx_io_desc[] __initdata = { | |||
71 | { | 71 | { |
72 | .virtual = VA_SPEAR3XX_ICM1_UART_BASE, | 72 | .virtual = VA_SPEAR3XX_ICM1_UART_BASE, |
73 | .pfn = __phys_to_pfn(SPEAR3XX_ICM1_UART_BASE), | 73 | .pfn = __phys_to_pfn(SPEAR3XX_ICM1_UART_BASE), |
74 | .length = SPEAR3XX_ICM1_UART_SIZE, | 74 | .length = SZ_4K, |
75 | .type = MT_DEVICE | 75 | .type = MT_DEVICE |
76 | }, { | 76 | }, { |
77 | .virtual = VA_SPEAR3XX_ML1_VIC_BASE, | 77 | .virtual = VA_SPEAR3XX_ML1_VIC_BASE, |
78 | .pfn = __phys_to_pfn(SPEAR3XX_ML1_VIC_BASE), | 78 | .pfn = __phys_to_pfn(SPEAR3XX_ML1_VIC_BASE), |
79 | .length = SPEAR3XX_ML1_VIC_SIZE, | 79 | .length = SZ_4K, |
80 | .type = MT_DEVICE | 80 | .type = MT_DEVICE |
81 | }, { | 81 | }, { |
82 | .virtual = VA_SPEAR3XX_ICM3_SYS_CTRL_BASE, | 82 | .virtual = VA_SPEAR3XX_ICM3_SYS_CTRL_BASE, |
83 | .pfn = __phys_to_pfn(SPEAR3XX_ICM3_SYS_CTRL_BASE), | 83 | .pfn = __phys_to_pfn(SPEAR3XX_ICM3_SYS_CTRL_BASE), |
84 | .length = SPEAR3XX_ICM3_SYS_CTRL_SIZE, | 84 | .length = SZ_4K, |
85 | .type = MT_DEVICE | 85 | .type = MT_DEVICE |
86 | }, { | 86 | }, { |
87 | .virtual = VA_SPEAR3XX_ICM3_MISC_REG_BASE, | 87 | .virtual = VA_SPEAR3XX_ICM3_MISC_REG_BASE, |
88 | .pfn = __phys_to_pfn(SPEAR3XX_ICM3_MISC_REG_BASE), | 88 | .pfn = __phys_to_pfn(SPEAR3XX_ICM3_MISC_REG_BASE), |
89 | .length = SPEAR3XX_ICM3_MISC_REG_SIZE, | 89 | .length = SZ_4K, |
90 | .type = MT_DEVICE | 90 | .type = MT_DEVICE |
91 | }, | 91 | }, |
92 | }; | 92 | }; |
@@ -523,26 +523,35 @@ struct pmx_dev pmx_plgpio_45_46_49_50 = { | |||
523 | .mode_count = ARRAY_SIZE(pmx_plgpio_45_46_49_50_modes), | 523 | .mode_count = ARRAY_SIZE(pmx_plgpio_45_46_49_50_modes), |
524 | .enb_on_reset = 1, | 524 | .enb_on_reset = 1, |
525 | }; | 525 | }; |
526 | #endif /* CONFIG_MACH_SPEAR310 || CONFIG_MACH_SPEAR320 */ | ||
526 | 527 | ||
527 | #endif | 528 | static void __init spear3xx_timer_init(void) |
528 | |||
529 | /* spear padmux initialization function */ | ||
530 | void spear_pmx_init(struct pmx_driver *pmx_driver, uint base, uint size) | ||
531 | { | 529 | { |
532 | int ret = 0; | 530 | char pclk_name[] = "pll3_48m_clk"; |
531 | struct clk *gpt_clk, *pclk; | ||
532 | |||
533 | /* get the system timer clock */ | ||
534 | gpt_clk = clk_get_sys("gpt0", NULL); | ||
535 | if (IS_ERR(gpt_clk)) { | ||
536 | pr_err("%s:couldn't get clk for gpt\n", __func__); | ||
537 | BUG(); | ||
538 | } | ||
533 | 539 | ||
534 | /* pad mux initialization */ | 540 | /* get the suitable parent clock for timer*/ |
535 | pmx_driver->base = ioremap(base, size); | 541 | pclk = clk_get(NULL, pclk_name); |
536 | if (!pmx_driver->base) { | 542 | if (IS_ERR(pclk)) { |
537 | ret = -ENOMEM; | 543 | pr_err("%s:couldn't get %s as parent for gpt\n", |
538 | goto pmx_fail; | 544 | __func__, pclk_name); |
545 | BUG(); | ||
539 | } | 546 | } |
540 | 547 | ||
541 | ret = pmx_register(pmx_driver); | 548 | clk_set_parent(gpt_clk, pclk); |
542 | iounmap(pmx_driver->base); | 549 | clk_put(gpt_clk); |
550 | clk_put(pclk); | ||
543 | 551 | ||
544 | pmx_fail: | 552 | spear_setup_timer(); |
545 | if (ret) | ||
546 | printk(KERN_ERR "padmux: registration failed. err no: %d\n", | ||
547 | ret); | ||
548 | } | 553 | } |
554 | |||
555 | struct sys_timer spear3xx_timer = { | ||
556 | .init = spear3xx_timer_init, | ||
557 | }; | ||