diff options
Diffstat (limited to 'arch/arm/mach-imx/clk-imx51-imx53.c')
-rw-r--r-- | arch/arm/mach-imx/clk-imx51-imx53.c | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/arch/arm/mach-imx/clk-imx51-imx53.c b/arch/arm/mach-imx/clk-imx51-imx53.c index fcd94f3b0f0e..f6086693ebd2 100644 --- a/arch/arm/mach-imx/clk-imx51-imx53.c +++ b/arch/arm/mach-imx/clk-imx51-imx53.c | |||
@@ -58,7 +58,7 @@ enum imx5_clks { | |||
58 | tve_s, uart1_ipg_gate, uart1_per_gate, uart2_ipg_gate, | 58 | tve_s, uart1_ipg_gate, uart1_per_gate, uart2_ipg_gate, |
59 | uart2_per_gate, uart3_ipg_gate, uart3_per_gate, i2c1_gate, i2c2_gate, | 59 | uart2_per_gate, uart3_ipg_gate, uart3_per_gate, i2c1_gate, i2c2_gate, |
60 | gpt_ipg_gate, pwm1_ipg_gate, pwm1_hf_gate, pwm2_ipg_gate, pwm2_hf_gate, | 60 | gpt_ipg_gate, pwm1_ipg_gate, pwm1_hf_gate, pwm2_ipg_gate, pwm2_hf_gate, |
61 | gpt_gate, fec_gate, usboh3_per_gate, esdhc1_ipg_gate, esdhc2_ipg_gate, | 61 | gpt_hf_gate, fec_gate, usboh3_per_gate, esdhc1_ipg_gate, esdhc2_ipg_gate, |
62 | esdhc3_ipg_gate, esdhc4_ipg_gate, ssi1_ipg_gate, ssi2_ipg_gate, | 62 | esdhc3_ipg_gate, esdhc4_ipg_gate, ssi1_ipg_gate, ssi2_ipg_gate, |
63 | ssi3_ipg_gate, ecspi1_ipg_gate, ecspi1_per_gate, ecspi2_ipg_gate, | 63 | ssi3_ipg_gate, ecspi1_ipg_gate, ecspi1_per_gate, ecspi2_ipg_gate, |
64 | ecspi2_per_gate, cspi_ipg_gate, sdma_gate, emi_slow_gate, ipu_s, | 64 | ecspi2_per_gate, cspi_ipg_gate, sdma_gate, emi_slow_gate, ipu_s, |
@@ -81,6 +81,7 @@ enum imx5_clks { | |||
81 | ssi1_root_podf, ssi2_root_pred, ssi2_root_podf, ssi_ext1_pred, | 81 | ssi1_root_podf, ssi2_root_pred, ssi2_root_podf, ssi_ext1_pred, |
82 | ssi_ext1_podf, ssi_ext2_pred, ssi_ext2_podf, ssi1_root_gate, | 82 | ssi_ext1_podf, ssi_ext2_pred, ssi_ext2_podf, ssi1_root_gate, |
83 | ssi2_root_gate, ssi3_root_gate, ssi_ext1_gate, ssi_ext2_gate, | 83 | ssi2_root_gate, ssi3_root_gate, ssi_ext1_gate, ssi_ext2_gate, |
84 | epit1_ipg_gate, epit1_hf_gate, epit2_ipg_gate, epit2_hf_gate, | ||
84 | clk_max | 85 | clk_max |
85 | }; | 86 | }; |
86 | 87 | ||
@@ -104,12 +105,12 @@ static void __init mx5_clocks_common_init(unsigned long rate_ckil, | |||
104 | periph_apm_sel, ARRAY_SIZE(periph_apm_sel)); | 105 | periph_apm_sel, ARRAY_SIZE(periph_apm_sel)); |
105 | clk[main_bus] = imx_clk_mux("main_bus", MXC_CCM_CBCDR, 25, 1, | 106 | clk[main_bus] = imx_clk_mux("main_bus", MXC_CCM_CBCDR, 25, 1, |
106 | main_bus_sel, ARRAY_SIZE(main_bus_sel)); | 107 | main_bus_sel, ARRAY_SIZE(main_bus_sel)); |
107 | clk[per_lp_apm] = imx_clk_mux("per_lp_apm", MXC_CCM_CBCDR, 1, 1, | 108 | clk[per_lp_apm] = imx_clk_mux("per_lp_apm", MXC_CCM_CBCMR, 1, 1, |
108 | per_lp_apm_sel, ARRAY_SIZE(per_lp_apm_sel)); | 109 | per_lp_apm_sel, ARRAY_SIZE(per_lp_apm_sel)); |
109 | clk[per_pred1] = imx_clk_divider("per_pred1", "per_lp_apm", MXC_CCM_CBCDR, 6, 2); | 110 | clk[per_pred1] = imx_clk_divider("per_pred1", "per_lp_apm", MXC_CCM_CBCDR, 6, 2); |
110 | clk[per_pred2] = imx_clk_divider("per_pred2", "per_pred1", MXC_CCM_CBCDR, 3, 3); | 111 | clk[per_pred2] = imx_clk_divider("per_pred2", "per_pred1", MXC_CCM_CBCDR, 3, 3); |
111 | clk[per_podf] = imx_clk_divider("per_podf", "per_pred2", MXC_CCM_CBCDR, 0, 3); | 112 | clk[per_podf] = imx_clk_divider("per_podf", "per_pred2", MXC_CCM_CBCDR, 0, 3); |
112 | clk[per_root] = imx_clk_mux("per_root", MXC_CCM_CBCDR, 1, 0, | 113 | clk[per_root] = imx_clk_mux("per_root", MXC_CCM_CBCMR, 0, 1, |
113 | per_root_sel, ARRAY_SIZE(per_root_sel)); | 114 | per_root_sel, ARRAY_SIZE(per_root_sel)); |
114 | clk[ahb] = imx_clk_divider("ahb", "main_bus", MXC_CCM_CBCDR, 10, 3); | 115 | clk[ahb] = imx_clk_divider("ahb", "main_bus", MXC_CCM_CBCDR, 10, 3); |
115 | clk[ahb_max] = imx_clk_gate2("ahb_max", "ahb", MXC_CCM_CCGR0, 28); | 116 | clk[ahb_max] = imx_clk_gate2("ahb_max", "ahb", MXC_CCM_CCGR0, 28); |
@@ -167,12 +168,12 @@ static void __init mx5_clocks_common_init(unsigned long rate_ckil, | |||
167 | clk[uart3_per_gate] = imx_clk_gate2("uart3_per_gate", "uart_root", MXC_CCM_CCGR1, 16); | 168 | clk[uart3_per_gate] = imx_clk_gate2("uart3_per_gate", "uart_root", MXC_CCM_CCGR1, 16); |
168 | clk[i2c1_gate] = imx_clk_gate2("i2c1_gate", "per_root", MXC_CCM_CCGR1, 18); | 169 | clk[i2c1_gate] = imx_clk_gate2("i2c1_gate", "per_root", MXC_CCM_CCGR1, 18); |
169 | clk[i2c2_gate] = imx_clk_gate2("i2c2_gate", "per_root", MXC_CCM_CCGR1, 20); | 170 | clk[i2c2_gate] = imx_clk_gate2("i2c2_gate", "per_root", MXC_CCM_CCGR1, 20); |
170 | clk[gpt_ipg_gate] = imx_clk_gate2("gpt_ipg_gate", "ipg", MXC_CCM_CCGR2, 20); | ||
171 | clk[pwm1_ipg_gate] = imx_clk_gate2("pwm1_ipg_gate", "ipg", MXC_CCM_CCGR2, 10); | 171 | clk[pwm1_ipg_gate] = imx_clk_gate2("pwm1_ipg_gate", "ipg", MXC_CCM_CCGR2, 10); |
172 | clk[pwm1_hf_gate] = imx_clk_gate2("pwm1_hf_gate", "ipg", MXC_CCM_CCGR2, 12); | 172 | clk[pwm1_hf_gate] = imx_clk_gate2("pwm1_hf_gate", "per_root", MXC_CCM_CCGR2, 12); |
173 | clk[pwm2_ipg_gate] = imx_clk_gate2("pwm2_ipg_gate", "ipg", MXC_CCM_CCGR2, 14); | 173 | clk[pwm2_ipg_gate] = imx_clk_gate2("pwm2_ipg_gate", "ipg", MXC_CCM_CCGR2, 14); |
174 | clk[pwm2_hf_gate] = imx_clk_gate2("pwm2_hf_gate", "ipg", MXC_CCM_CCGR2, 16); | 174 | clk[pwm2_hf_gate] = imx_clk_gate2("pwm2_hf_gate", "per_root", MXC_CCM_CCGR2, 16); |
175 | clk[gpt_gate] = imx_clk_gate2("gpt_gate", "ipg", MXC_CCM_CCGR2, 18); | 175 | clk[gpt_ipg_gate] = imx_clk_gate2("gpt_ipg_gate", "ipg", MXC_CCM_CCGR2, 18); |
176 | clk[gpt_hf_gate] = imx_clk_gate2("gpt_hf_gate", "per_root", MXC_CCM_CCGR2, 20); | ||
176 | clk[fec_gate] = imx_clk_gate2("fec_gate", "ipg", MXC_CCM_CCGR2, 24); | 177 | clk[fec_gate] = imx_clk_gate2("fec_gate", "ipg", MXC_CCM_CCGR2, 24); |
177 | clk[usboh3_gate] = imx_clk_gate2("usboh3_gate", "ipg", MXC_CCM_CCGR2, 26); | 178 | clk[usboh3_gate] = imx_clk_gate2("usboh3_gate", "ipg", MXC_CCM_CCGR2, 26); |
178 | clk[usboh3_per_gate] = imx_clk_gate2("usboh3_per_gate", "usboh3_podf", MXC_CCM_CCGR2, 28); | 179 | clk[usboh3_per_gate] = imx_clk_gate2("usboh3_per_gate", "usboh3_podf", MXC_CCM_CCGR2, 28); |
@@ -226,13 +227,17 @@ static void __init mx5_clocks_common_init(unsigned long rate_ckil, | |||
226 | clk[ssi3_root_gate] = imx_clk_gate2("ssi3_root_gate", "ssi3_root_sel", MXC_CCM_CCGR3, 26); | 227 | clk[ssi3_root_gate] = imx_clk_gate2("ssi3_root_gate", "ssi3_root_sel", MXC_CCM_CCGR3, 26); |
227 | clk[ssi_ext1_gate] = imx_clk_gate2("ssi_ext1_gate", "ssi_ext1_com_sel", MXC_CCM_CCGR3, 28); | 228 | clk[ssi_ext1_gate] = imx_clk_gate2("ssi_ext1_gate", "ssi_ext1_com_sel", MXC_CCM_CCGR3, 28); |
228 | clk[ssi_ext2_gate] = imx_clk_gate2("ssi_ext2_gate", "ssi_ext2_com_sel", MXC_CCM_CCGR3, 30); | 229 | clk[ssi_ext2_gate] = imx_clk_gate2("ssi_ext2_gate", "ssi_ext2_com_sel", MXC_CCM_CCGR3, 30); |
230 | clk[epit1_ipg_gate] = imx_clk_gate2("epit1_ipg_gate", "ipg", MXC_CCM_CCGR2, 2); | ||
231 | clk[epit1_hf_gate] = imx_clk_gate2("epit1_hf_gate", "per_root", MXC_CCM_CCGR2, 4); | ||
232 | clk[epit2_ipg_gate] = imx_clk_gate2("epit2_ipg_gate", "ipg", MXC_CCM_CCGR2, 6); | ||
233 | clk[epit2_hf_gate] = imx_clk_gate2("epit2_hf_gate", "per_root", MXC_CCM_CCGR2, 8); | ||
229 | 234 | ||
230 | for (i = 0; i < ARRAY_SIZE(clk); i++) | 235 | for (i = 0; i < ARRAY_SIZE(clk); i++) |
231 | if (IS_ERR(clk[i])) | 236 | if (IS_ERR(clk[i])) |
232 | pr_err("i.MX5 clk %d: register failed with %ld\n", | 237 | pr_err("i.MX5 clk %d: register failed with %ld\n", |
233 | i, PTR_ERR(clk[i])); | 238 | i, PTR_ERR(clk[i])); |
234 | 239 | ||
235 | clk_register_clkdev(clk[gpt_gate], "per", "imx-gpt.0"); | 240 | clk_register_clkdev(clk[gpt_hf_gate], "per", "imx-gpt.0"); |
236 | clk_register_clkdev(clk[gpt_ipg_gate], "ipg", "imx-gpt.0"); | 241 | clk_register_clkdev(clk[gpt_ipg_gate], "ipg", "imx-gpt.0"); |
237 | clk_register_clkdev(clk[uart1_per_gate], "per", "imx21-uart.0"); | 242 | clk_register_clkdev(clk[uart1_per_gate], "per", "imx21-uart.0"); |
238 | clk_register_clkdev(clk[uart1_ipg_gate], "ipg", "imx21-uart.0"); | 243 | clk_register_clkdev(clk[uart1_ipg_gate], "ipg", "imx21-uart.0"); |
@@ -248,7 +253,7 @@ static void __init mx5_clocks_common_init(unsigned long rate_ckil, | |||
248 | clk_register_clkdev(clk[ecspi1_ipg_gate], "ipg", "imx51-ecspi.0"); | 253 | clk_register_clkdev(clk[ecspi1_ipg_gate], "ipg", "imx51-ecspi.0"); |
249 | clk_register_clkdev(clk[ecspi2_per_gate], "per", "imx51-ecspi.1"); | 254 | clk_register_clkdev(clk[ecspi2_per_gate], "per", "imx51-ecspi.1"); |
250 | clk_register_clkdev(clk[ecspi2_ipg_gate], "ipg", "imx51-ecspi.1"); | 255 | clk_register_clkdev(clk[ecspi2_ipg_gate], "ipg", "imx51-ecspi.1"); |
251 | clk_register_clkdev(clk[cspi_ipg_gate], NULL, "imx51-cspi.0"); | 256 | clk_register_clkdev(clk[cspi_ipg_gate], NULL, "imx35-cspi.2"); |
252 | clk_register_clkdev(clk[pwm1_ipg_gate], "pwm", "mxc_pwm.0"); | 257 | clk_register_clkdev(clk[pwm1_ipg_gate], "pwm", "mxc_pwm.0"); |
253 | clk_register_clkdev(clk[pwm2_ipg_gate], "pwm", "mxc_pwm.1"); | 258 | clk_register_clkdev(clk[pwm2_ipg_gate], "pwm", "mxc_pwm.1"); |
254 | clk_register_clkdev(clk[i2c1_gate], NULL, "imx-i2c.0"); | 259 | clk_register_clkdev(clk[i2c1_gate], NULL, "imx-i2c.0"); |
@@ -279,6 +284,11 @@ static void __init mx5_clocks_common_init(unsigned long rate_ckil, | |||
279 | clk_register_clkdev(clk[dummy], NULL, "imx-keypad"); | 284 | clk_register_clkdev(clk[dummy], NULL, "imx-keypad"); |
280 | clk_register_clkdev(clk[tve_gate], NULL, "imx-tve.0"); | 285 | clk_register_clkdev(clk[tve_gate], NULL, "imx-tve.0"); |
281 | clk_register_clkdev(clk[ipu_di1_gate], "di1", "imx-tve.0"); | 286 | clk_register_clkdev(clk[ipu_di1_gate], "di1", "imx-tve.0"); |
287 | clk_register_clkdev(clk[gpc_dvfs], "gpc_dvfs", NULL); | ||
288 | clk_register_clkdev(clk[epit1_ipg_gate], "ipg", "imx-epit.0"); | ||
289 | clk_register_clkdev(clk[epit1_hf_gate], "per", "imx-epit.0"); | ||
290 | clk_register_clkdev(clk[epit2_ipg_gate], "ipg", "imx-epit.1"); | ||
291 | clk_register_clkdev(clk[epit2_hf_gate], "per", "imx-epit.1"); | ||
282 | 292 | ||
283 | /* Set SDHC parents to be PLL2 */ | 293 | /* Set SDHC parents to be PLL2 */ |
284 | clk_set_parent(clk[esdhc_a_sel], clk[pll2_sw]); | 294 | clk_set_parent(clk[esdhc_a_sel], clk[pll2_sw]); |
@@ -336,7 +346,6 @@ int __init mx51_clocks_init(unsigned long rate_ckil, unsigned long rate_osc, | |||
336 | clk_register_clkdev(clk[mx51_mipi], "mipi_hsp", NULL); | 346 | clk_register_clkdev(clk[mx51_mipi], "mipi_hsp", NULL); |
337 | clk_register_clkdev(clk[vpu_gate], NULL, "imx51-vpu.0"); | 347 | clk_register_clkdev(clk[vpu_gate], NULL, "imx51-vpu.0"); |
338 | clk_register_clkdev(clk[fec_gate], NULL, "imx27-fec.0"); | 348 | clk_register_clkdev(clk[fec_gate], NULL, "imx27-fec.0"); |
339 | clk_register_clkdev(clk[gpc_dvfs], "gpc_dvfs", NULL); | ||
340 | clk_register_clkdev(clk[ipu_gate], "bus", "imx51-ipu"); | 349 | clk_register_clkdev(clk[ipu_gate], "bus", "imx51-ipu"); |
341 | clk_register_clkdev(clk[ipu_di0_gate], "di0", "imx51-ipu"); | 350 | clk_register_clkdev(clk[ipu_di0_gate], "di0", "imx51-ipu"); |
342 | clk_register_clkdev(clk[ipu_di1_gate], "di1", "imx51-ipu"); | 351 | clk_register_clkdev(clk[ipu_di1_gate], "di1", "imx51-ipu"); |
@@ -366,8 +375,7 @@ int __init mx51_clocks_init(unsigned long rate_ckil, unsigned long rate_osc, | |||
366 | clk_set_rate(clk[esdhc_b_podf], 166250000); | 375 | clk_set_rate(clk[esdhc_b_podf], 166250000); |
367 | 376 | ||
368 | /* System timer */ | 377 | /* System timer */ |
369 | mxc_timer_init(NULL, MX51_IO_ADDRESS(MX51_GPT1_BASE_ADDR), | 378 | mxc_timer_init(MX51_IO_ADDRESS(MX51_GPT1_BASE_ADDR), MX51_INT_GPT); |
370 | MX51_INT_GPT); | ||
371 | 379 | ||
372 | clk_prepare_enable(clk[iim_gate]); | 380 | clk_prepare_enable(clk[iim_gate]); |
373 | imx_print_silicon_rev("i.MX51", mx51_revision()); | 381 | imx_print_silicon_rev("i.MX51", mx51_revision()); |
@@ -452,8 +460,7 @@ int __init mx53_clocks_init(unsigned long rate_ckil, unsigned long rate_osc, | |||
452 | clk_set_rate(clk[esdhc_b_podf], 200000000); | 460 | clk_set_rate(clk[esdhc_b_podf], 200000000); |
453 | 461 | ||
454 | /* System timer */ | 462 | /* System timer */ |
455 | mxc_timer_init(NULL, MX53_IO_ADDRESS(MX53_GPT1_BASE_ADDR), | 463 | mxc_timer_init(MX53_IO_ADDRESS(MX53_GPT1_BASE_ADDR), MX53_INT_GPT); |
456 | MX53_INT_GPT); | ||
457 | 464 | ||
458 | clk_prepare_enable(clk[iim_gate]); | 465 | clk_prepare_enable(clk[iim_gate]); |
459 | imx_print_silicon_rev("i.MX53", mx53_revision()); | 466 | imx_print_silicon_rev("i.MX53", mx53_revision()); |