aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRajendra Nayak <rnayak@ti.com>2010-09-27 16:02:54 -0400
committerPaul Walmsley <paul@pwsan.com>2010-09-27 16:02:54 -0400
commit76cf52951ac57a31a453610e0ab5cae50b10502d (patch)
treea58f821a58ac0849826618e6d49cf9bb74e553a0
parentb30a3f6257ed2105259b404d419b4964e363928c (diff)
OMAP4: clocks: Update clock tree for ES2
This patch updates the clock tree with all the changes in OMAP4430 ES2. clock nodes added -1- tie_low_clock_ck -2- abe_dpll_bypass_clk_mux_ck clock nodes deleted -1- dpll_sys_ref_clk -2- per_sgx_fclk -3- usbphyocp2scp_ick Signed-off-by: Rajendra Nayak <rnayak@ti.com> Signed-off-by: BenoƮt Cousson <b-cousson@ti.com> [paul@pwsan.com: added comment re ES1 clocks to top of file] Signed-off-by: Paul Walmsley <paul@pwsan.com> Cc: Kevin Hilman <khilman@deeprootsystems.com>
-rw-r--r--arch/arm/mach-omap2/clock44xx_data.c172
1 files changed, 74 insertions, 98 deletions
diff --git a/arch/arm/mach-omap2/clock44xx_data.c b/arch/arm/mach-omap2/clock44xx_data.c
index e10db7a90cb2..f39552bd74b8 100644
--- a/arch/arm/mach-omap2/clock44xx_data.c
+++ b/arch/arm/mach-omap2/clock44xx_data.c
@@ -17,6 +17,10 @@
17 * This program is free software; you can redistribute it and/or modify 17 * This program is free software; you can redistribute it and/or modify
18 * it under the terms of the GNU General Public License version 2 as 18 * it under the terms of the GNU General Public License version 2 as
19 * published by the Free Software Foundation. 19 * published by the Free Software Foundation.
20 *
21 * XXX Some of the ES1 clocks have been removed/changed; once support
22 * is added for discriminating clocks by ES level, these should be added back
23 * in.
20 */ 24 */
21 25
22#include <linux/kernel.h> 26#include <linux/kernel.h>
@@ -175,21 +179,27 @@ static struct clk sys_clkin_ck = {
175 .recalc = &omap2_clksel_recalc, 179 .recalc = &omap2_clksel_recalc,
176}; 180};
177 181
182static struct clk tie_low_clock_ck = {
183 .name = "tie_low_clock_ck",
184 .rate = 0,
185 .ops = &clkops_null,
186};
187
178static struct clk utmi_phy_clkout_ck = { 188static struct clk utmi_phy_clkout_ck = {
179 .name = "utmi_phy_clkout_ck", 189 .name = "utmi_phy_clkout_ck",
180 .rate = 12000000, 190 .rate = 60000000,
181 .ops = &clkops_null, 191 .ops = &clkops_null,
182}; 192};
183 193
184static struct clk xclk60mhsp1_ck = { 194static struct clk xclk60mhsp1_ck = {
185 .name = "xclk60mhsp1_ck", 195 .name = "xclk60mhsp1_ck",
186 .rate = 12000000, 196 .rate = 60000000,
187 .ops = &clkops_null, 197 .ops = &clkops_null,
188}; 198};
189 199
190static struct clk xclk60mhsp2_ck = { 200static struct clk xclk60mhsp2_ck = {
191 .name = "xclk60mhsp2_ck", 201 .name = "xclk60mhsp2_ck",
192 .rate = 12000000, 202 .rate = 60000000,
193 .ops = &clkops_null, 203 .ops = &clkops_null,
194}; 204};
195 205
@@ -201,39 +211,23 @@ static struct clk xclk60motg_ck = {
201 211
202/* Module clocks and DPLL outputs */ 212/* Module clocks and DPLL outputs */
203 213
204static const struct clksel_rate div2_1to2_rates[] = { 214static const struct clksel abe_dpll_bypass_clk_mux_sel[] = {
205 { .div = 1, .val = 0, .flags = RATE_IN_4430 }, 215 { .parent = &sys_clkin_ck, .rates = div_1_0_rates },
206 { .div = 2, .val = 1, .flags = RATE_IN_4430 }, 216 { .parent = &sys_32k_ck, .rates = div_1_1_rates },
207 { .div = 0 },
208};
209
210static const struct clksel dpll_sys_ref_clk_div[] = {
211 { .parent = &sys_clkin_ck, .rates = div2_1to2_rates },
212 { .parent = NULL }, 217 { .parent = NULL },
213}; 218};
214 219
215static struct clk dpll_sys_ref_clk = { 220static struct clk abe_dpll_bypass_clk_mux_ck = {
216 .name = "dpll_sys_ref_clk", 221 .name = "abe_dpll_bypass_clk_mux_ck",
217 .parent = &sys_clkin_ck, 222 .parent = &sys_clkin_ck,
218 .clksel = dpll_sys_ref_clk_div,
219 .clksel_reg = OMAP4430_CM_DPLL_SYS_REF_CLKSEL,
220 .clksel_mask = OMAP4430_CLKSEL_0_0_MASK,
221 .ops = &clkops_null, 223 .ops = &clkops_null,
222 .recalc = &omap2_clksel_recalc, 224 .recalc = &followparent_recalc,
223 .round_rate = &omap2_clksel_round_rate,
224 .set_rate = &omap2_clksel_set_rate,
225};
226
227static const struct clksel abe_dpll_refclk_mux_sel[] = {
228 { .parent = &dpll_sys_ref_clk, .rates = div_1_0_rates },
229 { .parent = &sys_32k_ck, .rates = div_1_1_rates },
230 { .parent = NULL },
231}; 225};
232 226
233static struct clk abe_dpll_refclk_mux_ck = { 227static struct clk abe_dpll_refclk_mux_ck = {
234 .name = "abe_dpll_refclk_mux_ck", 228 .name = "abe_dpll_refclk_mux_ck",
235 .parent = &dpll_sys_ref_clk, 229 .parent = &sys_clkin_ck,
236 .clksel = abe_dpll_refclk_mux_sel, 230 .clksel = abe_dpll_bypass_clk_mux_sel,
237 .init = &omap2_init_clksel_parent, 231 .init = &omap2_init_clksel_parent,
238 .clksel_reg = OMAP4430_CM_ABE_PLL_REF_CLKSEL, 232 .clksel_reg = OMAP4430_CM_ABE_PLL_REF_CLKSEL,
239 .clksel_mask = OMAP4430_CLKSEL_0_0_MASK, 233 .clksel_mask = OMAP4430_CLKSEL_0_0_MASK,
@@ -244,7 +238,7 @@ static struct clk abe_dpll_refclk_mux_ck = {
244/* DPLL_ABE */ 238/* DPLL_ABE */
245static struct dpll_data dpll_abe_dd = { 239static struct dpll_data dpll_abe_dd = {
246 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_ABE, 240 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_ABE,
247 .clk_bypass = &sys_clkin_ck, 241 .clk_bypass = &abe_dpll_bypass_clk_mux_ck,
248 .clk_ref = &abe_dpll_refclk_mux_ck, 242 .clk_ref = &abe_dpll_refclk_mux_ck,
249 .control_reg = OMAP4430_CM_CLKMODE_DPLL_ABE, 243 .control_reg = OMAP4430_CM_CLKMODE_DPLL_ABE,
250 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED), 244 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED),
@@ -310,6 +304,12 @@ static struct clk abe_clk = {
310 .set_rate = &omap2_clksel_set_rate, 304 .set_rate = &omap2_clksel_set_rate,
311}; 305};
312 306
307static const struct clksel_rate div2_1to2_rates[] = {
308 { .div = 1, .val = 0, .flags = RATE_IN_4430 },
309 { .div = 2, .val = 1, .flags = RATE_IN_4430 },
310 { .div = 0 },
311};
312
313static const struct clksel aess_fclk_div[] = { 313static const struct clksel aess_fclk_div[] = {
314 { .parent = &abe_clk, .rates = div2_1to2_rates }, 314 { .parent = &abe_clk, .rates = div2_1to2_rates },
315 { .parent = NULL }, 315 { .parent = NULL },
@@ -380,14 +380,14 @@ static struct clk dpll_abe_m3_ck = {
380}; 380};
381 381
382static const struct clksel core_hsd_byp_clk_mux_sel[] = { 382static const struct clksel core_hsd_byp_clk_mux_sel[] = {
383 { .parent = &dpll_sys_ref_clk, .rates = div_1_0_rates }, 383 { .parent = &sys_clkin_ck, .rates = div_1_0_rates },
384 { .parent = &dpll_abe_m3_ck, .rates = div_1_1_rates }, 384 { .parent = &dpll_abe_m3_ck, .rates = div_1_1_rates },
385 { .parent = NULL }, 385 { .parent = NULL },
386}; 386};
387 387
388static struct clk core_hsd_byp_clk_mux_ck = { 388static struct clk core_hsd_byp_clk_mux_ck = {
389 .name = "core_hsd_byp_clk_mux_ck", 389 .name = "core_hsd_byp_clk_mux_ck",
390 .parent = &dpll_sys_ref_clk, 390 .parent = &sys_clkin_ck,
391 .clksel = core_hsd_byp_clk_mux_sel, 391 .clksel = core_hsd_byp_clk_mux_sel,
392 .init = &omap2_init_clksel_parent, 392 .init = &omap2_init_clksel_parent,
393 .clksel_reg = OMAP4430_CM_CLKSEL_DPLL_CORE, 393 .clksel_reg = OMAP4430_CM_CLKSEL_DPLL_CORE,
@@ -400,7 +400,7 @@ static struct clk core_hsd_byp_clk_mux_ck = {
400static struct dpll_data dpll_core_dd = { 400static struct dpll_data dpll_core_dd = {
401 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_CORE, 401 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_CORE,
402 .clk_bypass = &core_hsd_byp_clk_mux_ck, 402 .clk_bypass = &core_hsd_byp_clk_mux_ck,
403 .clk_ref = &dpll_sys_ref_clk, 403 .clk_ref = &sys_clkin_ck,
404 .control_reg = OMAP4430_CM_CLKMODE_DPLL_CORE, 404 .control_reg = OMAP4430_CM_CLKMODE_DPLL_CORE,
405 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED), 405 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED),
406 .autoidle_reg = OMAP4430_CM_AUTOIDLE_DPLL_CORE, 406 .autoidle_reg = OMAP4430_CM_AUTOIDLE_DPLL_CORE,
@@ -418,7 +418,7 @@ static struct dpll_data dpll_core_dd = {
418 418
419static struct clk dpll_core_ck = { 419static struct clk dpll_core_ck = {
420 .name = "dpll_core_ck", 420 .name = "dpll_core_ck",
421 .parent = &dpll_sys_ref_clk, 421 .parent = &sys_clkin_ck,
422 .dpll_data = &dpll_core_dd, 422 .dpll_data = &dpll_core_dd,
423 .init = &omap2_init_dpll_parent, 423 .init = &omap2_init_dpll_parent,
424 .ops = &clkops_null, 424 .ops = &clkops_null,
@@ -596,14 +596,14 @@ static struct clk dpll_core_m7_ck = {
596}; 596};
597 597
598static const struct clksel iva_hsd_byp_clk_mux_sel[] = { 598static const struct clksel iva_hsd_byp_clk_mux_sel[] = {
599 { .parent = &dpll_sys_ref_clk, .rates = div_1_0_rates }, 599 { .parent = &sys_clkin_ck, .rates = div_1_0_rates },
600 { .parent = &div_iva_hs_clk, .rates = div_1_1_rates }, 600 { .parent = &div_iva_hs_clk, .rates = div_1_1_rates },
601 { .parent = NULL }, 601 { .parent = NULL },
602}; 602};
603 603
604static struct clk iva_hsd_byp_clk_mux_ck = { 604static struct clk iva_hsd_byp_clk_mux_ck = {
605 .name = "iva_hsd_byp_clk_mux_ck", 605 .name = "iva_hsd_byp_clk_mux_ck",
606 .parent = &dpll_sys_ref_clk, 606 .parent = &sys_clkin_ck,
607 .ops = &clkops_null, 607 .ops = &clkops_null,
608 .recalc = &followparent_recalc, 608 .recalc = &followparent_recalc,
609}; 609};
@@ -612,7 +612,7 @@ static struct clk iva_hsd_byp_clk_mux_ck = {
612static struct dpll_data dpll_iva_dd = { 612static struct dpll_data dpll_iva_dd = {
613 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_IVA, 613 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_IVA,
614 .clk_bypass = &iva_hsd_byp_clk_mux_ck, 614 .clk_bypass = &iva_hsd_byp_clk_mux_ck,
615 .clk_ref = &dpll_sys_ref_clk, 615 .clk_ref = &sys_clkin_ck,
616 .control_reg = OMAP4430_CM_CLKMODE_DPLL_IVA, 616 .control_reg = OMAP4430_CM_CLKMODE_DPLL_IVA,
617 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED), 617 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED),
618 .autoidle_reg = OMAP4430_CM_AUTOIDLE_DPLL_IVA, 618 .autoidle_reg = OMAP4430_CM_AUTOIDLE_DPLL_IVA,
@@ -630,7 +630,7 @@ static struct dpll_data dpll_iva_dd = {
630 630
631static struct clk dpll_iva_ck = { 631static struct clk dpll_iva_ck = {
632 .name = "dpll_iva_ck", 632 .name = "dpll_iva_ck",
633 .parent = &dpll_sys_ref_clk, 633 .parent = &sys_clkin_ck,
634 .dpll_data = &dpll_iva_dd, 634 .dpll_data = &dpll_iva_dd,
635 .init = &omap2_init_dpll_parent, 635 .init = &omap2_init_dpll_parent,
636 .ops = &clkops_omap3_noncore_dpll_ops, 636 .ops = &clkops_omap3_noncore_dpll_ops,
@@ -672,7 +672,7 @@ static struct clk dpll_iva_m5_ck = {
672static struct dpll_data dpll_mpu_dd = { 672static struct dpll_data dpll_mpu_dd = {
673 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_MPU, 673 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_MPU,
674 .clk_bypass = &div_mpu_hs_clk, 674 .clk_bypass = &div_mpu_hs_clk,
675 .clk_ref = &dpll_sys_ref_clk, 675 .clk_ref = &sys_clkin_ck,
676 .control_reg = OMAP4430_CM_CLKMODE_DPLL_MPU, 676 .control_reg = OMAP4430_CM_CLKMODE_DPLL_MPU,
677 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED), 677 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED),
678 .autoidle_reg = OMAP4430_CM_AUTOIDLE_DPLL_MPU, 678 .autoidle_reg = OMAP4430_CM_AUTOIDLE_DPLL_MPU,
@@ -690,7 +690,7 @@ static struct dpll_data dpll_mpu_dd = {
690 690
691static struct clk dpll_mpu_ck = { 691static struct clk dpll_mpu_ck = {
692 .name = "dpll_mpu_ck", 692 .name = "dpll_mpu_ck",
693 .parent = &dpll_sys_ref_clk, 693 .parent = &sys_clkin_ck,
694 .dpll_data = &dpll_mpu_dd, 694 .dpll_data = &dpll_mpu_dd,
695 .init = &omap2_init_dpll_parent, 695 .init = &omap2_init_dpll_parent,
696 .ops = &clkops_omap3_noncore_dpll_ops, 696 .ops = &clkops_omap3_noncore_dpll_ops,
@@ -724,14 +724,14 @@ static struct clk per_hs_clk_div_ck = {
724}; 724};
725 725
726static const struct clksel per_hsd_byp_clk_mux_sel[] = { 726static const struct clksel per_hsd_byp_clk_mux_sel[] = {
727 { .parent = &dpll_sys_ref_clk, .rates = div_1_0_rates }, 727 { .parent = &sys_clkin_ck, .rates = div_1_0_rates },
728 { .parent = &per_hs_clk_div_ck, .rates = div_1_1_rates }, 728 { .parent = &per_hs_clk_div_ck, .rates = div_1_1_rates },
729 { .parent = NULL }, 729 { .parent = NULL },
730}; 730};
731 731
732static struct clk per_hsd_byp_clk_mux_ck = { 732static struct clk per_hsd_byp_clk_mux_ck = {
733 .name = "per_hsd_byp_clk_mux_ck", 733 .name = "per_hsd_byp_clk_mux_ck",
734 .parent = &dpll_sys_ref_clk, 734 .parent = &sys_clkin_ck,
735 .clksel = per_hsd_byp_clk_mux_sel, 735 .clksel = per_hsd_byp_clk_mux_sel,
736 .init = &omap2_init_clksel_parent, 736 .init = &omap2_init_clksel_parent,
737 .clksel_reg = OMAP4430_CM_CLKSEL_DPLL_PER, 737 .clksel_reg = OMAP4430_CM_CLKSEL_DPLL_PER,
@@ -744,7 +744,7 @@ static struct clk per_hsd_byp_clk_mux_ck = {
744static struct dpll_data dpll_per_dd = { 744static struct dpll_data dpll_per_dd = {
745 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_PER, 745 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_PER,
746 .clk_bypass = &per_hsd_byp_clk_mux_ck, 746 .clk_bypass = &per_hsd_byp_clk_mux_ck,
747 .clk_ref = &dpll_sys_ref_clk, 747 .clk_ref = &sys_clkin_ck,
748 .control_reg = OMAP4430_CM_CLKMODE_DPLL_PER, 748 .control_reg = OMAP4430_CM_CLKMODE_DPLL_PER,
749 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED), 749 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED),
750 .autoidle_reg = OMAP4430_CM_AUTOIDLE_DPLL_PER, 750 .autoidle_reg = OMAP4430_CM_AUTOIDLE_DPLL_PER,
@@ -762,7 +762,7 @@ static struct dpll_data dpll_per_dd = {
762 762
763static struct clk dpll_per_ck = { 763static struct clk dpll_per_ck = {
764 .name = "dpll_per_ck", 764 .name = "dpll_per_ck",
765 .parent = &dpll_sys_ref_clk, 765 .parent = &sys_clkin_ck,
766 .dpll_data = &dpll_per_dd, 766 .dpll_data = &dpll_per_dd,
767 .init = &omap2_init_dpll_parent, 767 .init = &omap2_init_dpll_parent,
768 .ops = &clkops_omap3_noncore_dpll_ops, 768 .ops = &clkops_omap3_noncore_dpll_ops,
@@ -858,8 +858,8 @@ static struct clk dpll_per_m7_ck = {
858/* DPLL_UNIPRO */ 858/* DPLL_UNIPRO */
859static struct dpll_data dpll_unipro_dd = { 859static struct dpll_data dpll_unipro_dd = {
860 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_UNIPRO, 860 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_UNIPRO,
861 .clk_bypass = &dpll_sys_ref_clk, 861 .clk_bypass = &sys_clkin_ck,
862 .clk_ref = &dpll_sys_ref_clk, 862 .clk_ref = &sys_clkin_ck,
863 .control_reg = OMAP4430_CM_CLKMODE_DPLL_UNIPRO, 863 .control_reg = OMAP4430_CM_CLKMODE_DPLL_UNIPRO,
864 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED), 864 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED),
865 .autoidle_reg = OMAP4430_CM_AUTOIDLE_DPLL_UNIPRO, 865 .autoidle_reg = OMAP4430_CM_AUTOIDLE_DPLL_UNIPRO,
@@ -877,7 +877,7 @@ static struct dpll_data dpll_unipro_dd = {
877 877
878static struct clk dpll_unipro_ck = { 878static struct clk dpll_unipro_ck = {
879 .name = "dpll_unipro_ck", 879 .name = "dpll_unipro_ck",
880 .parent = &dpll_sys_ref_clk, 880 .parent = &sys_clkin_ck,
881 .dpll_data = &dpll_unipro_dd, 881 .dpll_data = &dpll_unipro_dd,
882 .init = &omap2_init_dpll_parent, 882 .init = &omap2_init_dpll_parent,
883 .ops = &clkops_omap3_noncore_dpll_ops, 883 .ops = &clkops_omap3_noncore_dpll_ops,
@@ -914,7 +914,7 @@ static struct clk usb_hs_clk_div_ck = {
914static struct dpll_data dpll_usb_dd = { 914static struct dpll_data dpll_usb_dd = {
915 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_USB, 915 .mult_div1_reg = OMAP4430_CM_CLKSEL_DPLL_USB,
916 .clk_bypass = &usb_hs_clk_div_ck, 916 .clk_bypass = &usb_hs_clk_div_ck,
917 .clk_ref = &dpll_sys_ref_clk, 917 .clk_ref = &sys_clkin_ck,
918 .control_reg = OMAP4430_CM_CLKMODE_DPLL_USB, 918 .control_reg = OMAP4430_CM_CLKMODE_DPLL_USB,
919 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED), 919 .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED),
920 .autoidle_reg = OMAP4430_CM_AUTOIDLE_DPLL_USB, 920 .autoidle_reg = OMAP4430_CM_AUTOIDLE_DPLL_USB,
@@ -933,7 +933,7 @@ static struct dpll_data dpll_usb_dd = {
933 933
934static struct clk dpll_usb_ck = { 934static struct clk dpll_usb_ck = {
935 .name = "dpll_usb_ck", 935 .name = "dpll_usb_ck",
936 .parent = &dpll_sys_ref_clk, 936 .parent = &sys_clkin_ck,
937 .dpll_data = &dpll_usb_dd, 937 .dpll_data = &dpll_usb_dd,
938 .init = &omap2_init_dpll_parent, 938 .init = &omap2_init_dpll_parent,
939 .ops = &clkops_omap3_noncore_dpll_ops, 939 .ops = &clkops_omap3_noncore_dpll_ops,
@@ -1222,7 +1222,7 @@ static struct clk per_abe_24m_fclk = {
1222static const struct clksel pmd_stm_clock_mux_sel[] = { 1222static const struct clksel pmd_stm_clock_mux_sel[] = {
1223 { .parent = &sys_clkin_ck, .rates = div_1_0_rates }, 1223 { .parent = &sys_clkin_ck, .rates = div_1_0_rates },
1224 { .parent = &dpll_core_m6_ck, .rates = div_1_1_rates }, 1224 { .parent = &dpll_core_m6_ck, .rates = div_1_1_rates },
1225 { .parent = &dpll_per_m7_ck, .rates = div_1_2_rates }, 1225 { .parent = &tie_low_clock_ck, .rates = div_1_2_rates },
1226 { .parent = NULL }, 1226 { .parent = NULL },
1227}; 1227};
1228 1228
@@ -1240,10 +1240,15 @@ static struct clk pmd_trace_clk_mux_ck = {
1240 .recalc = &followparent_recalc, 1240 .recalc = &followparent_recalc,
1241}; 1241};
1242 1242
1243static const struct clksel syc_clk_div_div[] = {
1244 { .parent = &sys_clkin_ck, .rates = div2_1to2_rates },
1245 { .parent = NULL },
1246};
1247
1243static struct clk syc_clk_div_ck = { 1248static struct clk syc_clk_div_ck = {
1244 .name = "syc_clk_div_ck", 1249 .name = "syc_clk_div_ck",
1245 .parent = &sys_clkin_ck, 1250 .parent = &sys_clkin_ck,
1246 .clksel = dpll_sys_ref_clk_div, 1251 .clksel = syc_clk_div_div,
1247 .clksel_reg = OMAP4430_CM_ABE_DSS_SYS_CLKSEL, 1252 .clksel_reg = OMAP4430_CM_ABE_DSS_SYS_CLKSEL,
1248 .clksel_mask = OMAP4430_CLKSEL_0_0_MASK, 1253 .clksel_mask = OMAP4430_CLKSEL_0_0_MASK,
1249 .ops = &clkops_null, 1254 .ops = &clkops_null,
@@ -1407,26 +1412,9 @@ static struct clk fdif_fck = {
1407 .clkdm_name = "iss_clkdm", 1412 .clkdm_name = "iss_clkdm",
1408}; 1413};
1409 1414
1410static const struct clksel per_sgx_fclk_div[] = {
1411 { .parent = &dpll_per_m2x2_ck, .rates = div3_1to4_rates },
1412 { .parent = NULL },
1413};
1414
1415static struct clk per_sgx_fclk = {
1416 .name = "per_sgx_fclk",
1417 .parent = &dpll_per_m2x2_ck,
1418 .clksel = per_sgx_fclk_div,
1419 .clksel_reg = OMAP4430_CM_GFX_GFX_CLKCTRL,
1420 .clksel_mask = OMAP4430_CLKSEL_PER_192M_MASK,
1421 .ops = &clkops_null,
1422 .recalc = &omap2_clksel_recalc,
1423 .round_rate = &omap2_clksel_round_rate,
1424 .set_rate = &omap2_clksel_set_rate,
1425};
1426
1427static const struct clksel sgx_clk_mux_sel[] = { 1415static const struct clksel sgx_clk_mux_sel[] = {
1428 { .parent = &dpll_core_m7_ck, .rates = div_1_0_rates }, 1416 { .parent = &dpll_core_m7_ck, .rates = div_1_0_rates },
1429 { .parent = &per_sgx_fclk, .rates = div_1_1_rates }, 1417 { .parent = &dpll_per_m7_ck, .rates = div_1_1_rates },
1430 { .parent = NULL }, 1418 { .parent = NULL },
1431}; 1419};
1432 1420
@@ -1515,12 +1503,6 @@ static struct clk gpmc_ick = {
1515 .recalc = &followparent_recalc, 1503 .recalc = &followparent_recalc,
1516}; 1504};
1517 1505
1518static const struct clksel dmt1_clk_mux_sel[] = {
1519 { .parent = &sys_clkin_ck, .rates = div_1_0_rates },
1520 { .parent = &sys_32k_ck, .rates = div_1_1_rates },
1521 { .parent = NULL },
1522};
1523
1524/* 1506/*
1525 * Merged dmt1_clk_mux into gptimer1 1507 * Merged dmt1_clk_mux into gptimer1
1526 * gptimer1 renamed temporarily into gpt1 to match OMAP3 convention 1508 * gptimer1 renamed temporarily into gpt1 to match OMAP3 convention
@@ -1528,7 +1510,7 @@ static const struct clksel dmt1_clk_mux_sel[] = {
1528static struct clk gpt1_fck = { 1510static struct clk gpt1_fck = {
1529 .name = "gpt1_fck", 1511 .name = "gpt1_fck",
1530 .parent = &sys_clkin_ck, 1512 .parent = &sys_clkin_ck,
1531 .clksel = dmt1_clk_mux_sel, 1513 .clksel = abe_dpll_bypass_clk_mux_sel,
1532 .init = &omap2_init_clksel_parent, 1514 .init = &omap2_init_clksel_parent,
1533 .clksel_reg = OMAP4430_CM_WKUP_TIMER1_CLKCTRL, 1515 .clksel_reg = OMAP4430_CM_WKUP_TIMER1_CLKCTRL,
1534 .clksel_mask = OMAP4430_CLKSEL_MASK, 1516 .clksel_mask = OMAP4430_CLKSEL_MASK,
@@ -1546,7 +1528,7 @@ static struct clk gpt1_fck = {
1546static struct clk gpt10_fck = { 1528static struct clk gpt10_fck = {
1547 .name = "gpt10_fck", 1529 .name = "gpt10_fck",
1548 .parent = &sys_clkin_ck, 1530 .parent = &sys_clkin_ck,
1549 .clksel = dmt1_clk_mux_sel, 1531 .clksel = abe_dpll_bypass_clk_mux_sel,
1550 .init = &omap2_init_clksel_parent, 1532 .init = &omap2_init_clksel_parent,
1551 .clksel_reg = OMAP4430_CM_L4PER_DMTIMER10_CLKCTRL, 1533 .clksel_reg = OMAP4430_CM_L4PER_DMTIMER10_CLKCTRL,
1552 .clksel_mask = OMAP4430_CLKSEL_MASK, 1534 .clksel_mask = OMAP4430_CLKSEL_MASK,
@@ -1564,7 +1546,7 @@ static struct clk gpt10_fck = {
1564static struct clk gpt11_fck = { 1546static struct clk gpt11_fck = {
1565 .name = "gpt11_fck", 1547 .name = "gpt11_fck",
1566 .parent = &sys_clkin_ck, 1548 .parent = &sys_clkin_ck,
1567 .clksel = dmt1_clk_mux_sel, 1549 .clksel = abe_dpll_bypass_clk_mux_sel,
1568 .init = &omap2_init_clksel_parent, 1550 .init = &omap2_init_clksel_parent,
1569 .clksel_reg = OMAP4430_CM_L4PER_DMTIMER11_CLKCTRL, 1551 .clksel_reg = OMAP4430_CM_L4PER_DMTIMER11_CLKCTRL,
1570 .clksel_mask = OMAP4430_CLKSEL_MASK, 1552 .clksel_mask = OMAP4430_CLKSEL_MASK,
@@ -1582,7 +1564,7 @@ static struct clk gpt11_fck = {
1582static struct clk gpt2_fck = { 1564static struct clk gpt2_fck = {
1583 .name = "gpt2_fck", 1565 .name = "gpt2_fck",
1584 .parent = &sys_clkin_ck, 1566 .parent = &sys_clkin_ck,
1585 .clksel = dmt1_clk_mux_sel, 1567 .clksel = abe_dpll_bypass_clk_mux_sel,
1586 .init = &omap2_init_clksel_parent, 1568 .init = &omap2_init_clksel_parent,
1587 .clksel_reg = OMAP4430_CM_L4PER_DMTIMER2_CLKCTRL, 1569 .clksel_reg = OMAP4430_CM_L4PER_DMTIMER2_CLKCTRL,
1588 .clksel_mask = OMAP4430_CLKSEL_MASK, 1570 .clksel_mask = OMAP4430_CLKSEL_MASK,
@@ -1600,7 +1582,7 @@ static struct clk gpt2_fck = {
1600static struct clk gpt3_fck = { 1582static struct clk gpt3_fck = {
1601 .name = "gpt3_fck", 1583 .name = "gpt3_fck",
1602 .parent = &sys_clkin_ck, 1584 .parent = &sys_clkin_ck,
1603 .clksel = dmt1_clk_mux_sel, 1585 .clksel = abe_dpll_bypass_clk_mux_sel,
1604 .init = &omap2_init_clksel_parent, 1586 .init = &omap2_init_clksel_parent,
1605 .clksel_reg = OMAP4430_CM_L4PER_DMTIMER3_CLKCTRL, 1587 .clksel_reg = OMAP4430_CM_L4PER_DMTIMER3_CLKCTRL,
1606 .clksel_mask = OMAP4430_CLKSEL_MASK, 1588 .clksel_mask = OMAP4430_CLKSEL_MASK,
@@ -1618,7 +1600,7 @@ static struct clk gpt3_fck = {
1618static struct clk gpt4_fck = { 1600static struct clk gpt4_fck = {
1619 .name = "gpt4_fck", 1601 .name = "gpt4_fck",
1620 .parent = &sys_clkin_ck, 1602 .parent = &sys_clkin_ck,
1621 .clksel = dmt1_clk_mux_sel, 1603 .clksel = abe_dpll_bypass_clk_mux_sel,
1622 .init = &omap2_init_clksel_parent, 1604 .init = &omap2_init_clksel_parent,
1623 .clksel_reg = OMAP4430_CM_L4PER_DMTIMER4_CLKCTRL, 1605 .clksel_reg = OMAP4430_CM_L4PER_DMTIMER4_CLKCTRL,
1624 .clksel_mask = OMAP4430_CLKSEL_MASK, 1606 .clksel_mask = OMAP4430_CLKSEL_MASK,
@@ -1714,7 +1696,7 @@ static struct clk gpt8_fck = {
1714static struct clk gpt9_fck = { 1696static struct clk gpt9_fck = {
1715 .name = "gpt9_fck", 1697 .name = "gpt9_fck",
1716 .parent = &sys_clkin_ck, 1698 .parent = &sys_clkin_ck,
1717 .clksel = dmt1_clk_mux_sel, 1699 .clksel = abe_dpll_bypass_clk_mux_sel,
1718 .init = &omap2_init_clksel_parent, 1700 .init = &omap2_init_clksel_parent,
1719 .clksel_reg = OMAP4430_CM_L4PER_DMTIMER9_CLKCTRL, 1701 .clksel_reg = OMAP4430_CM_L4PER_DMTIMER9_CLKCTRL,
1720 .clksel_mask = OMAP4430_CLKSEL_MASK, 1702 .clksel_mask = OMAP4430_CLKSEL_MASK,
@@ -1735,11 +1717,16 @@ static struct clk hdq1w_fck = {
1735 .recalc = &followparent_recalc, 1717 .recalc = &followparent_recalc,
1736}; 1718};
1737 1719
1720static const struct clksel hsi_fclk_div[] = {
1721 { .parent = &dpll_per_m2x2_ck, .rates = div3_1to4_rates },
1722 { .parent = NULL },
1723};
1724
1738/* Merged hsi_fclk into hsi */ 1725/* Merged hsi_fclk into hsi */
1739static struct clk hsi_ick = { 1726static struct clk hsi_ick = {
1740 .name = "hsi_ick", 1727 .name = "hsi_ick",
1741 .parent = &dpll_per_m2x2_ck, 1728 .parent = &dpll_per_m2x2_ck,
1742 .clksel = per_sgx_fclk_div, 1729 .clksel = hsi_fclk_div,
1743 .clksel_reg = OMAP4430_CM_L3INIT_HSI_CLKCTRL, 1730 .clksel_reg = OMAP4430_CM_L3INIT_HSI_CLKCTRL,
1744 .clksel_mask = OMAP4430_CLKSEL_24_25_MASK, 1731 .clksel_mask = OMAP4430_CLKSEL_24_25_MASK,
1745 .ops = &clkops_omap2_dflt, 1732 .ops = &clkops_omap2_dflt,
@@ -2315,21 +2302,11 @@ static struct clk usb_tll_ick = {
2315 .recalc = &followparent_recalc, 2302 .recalc = &followparent_recalc,
2316}; 2303};
2317 2304
2318static struct clk usbphyocp2scp_ick = { 2305static struct clk usim_ick = {
2319 .name = "usbphyocp2scp_ick", 2306 .name = "usim_ick",
2320 .ops = &clkops_omap2_dflt,
2321 .enable_reg = OMAP4430_CM_L3INIT_USBPHYOCP2SCP_CLKCTRL,
2322 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
2323 .clkdm_name = "l3_init_clkdm",
2324 .parent = &l4_div_ck,
2325 .recalc = &followparent_recalc,
2326};
2327
2328static struct clk usim_fck = {
2329 .name = "usim_fck",
2330 .ops = &clkops_omap2_dflt, 2307 .ops = &clkops_omap2_dflt,
2331 .enable_reg = OMAP4430_CM_WKUP_USIM_CLKCTRL, 2308 .enable_reg = OMAP4430_CM_WKUP_USIM_CLKCTRL,
2332 .enable_bit = OMAP4430_MODULEMODE_SWCTRL, 2309 .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
2333 .clkdm_name = "l4_wkup_clkdm", 2310 .clkdm_name = "l4_wkup_clkdm",
2334 .parent = &sys_32k_ck, 2311 .parent = &sys_32k_ck,
2335 .recalc = &followparent_recalc, 2312 .recalc = &followparent_recalc,
@@ -2483,11 +2460,12 @@ static struct omap_clk omap44xx_clks[] = {
2483 CLK(NULL, "virt_27000000_ck", &virt_27000000_ck, CK_443X), 2460 CLK(NULL, "virt_27000000_ck", &virt_27000000_ck, CK_443X),
2484 CLK(NULL, "virt_38400000_ck", &virt_38400000_ck, CK_443X), 2461 CLK(NULL, "virt_38400000_ck", &virt_38400000_ck, CK_443X),
2485 CLK(NULL, "sys_clkin_ck", &sys_clkin_ck, CK_443X), 2462 CLK(NULL, "sys_clkin_ck", &sys_clkin_ck, CK_443X),
2463 CLK(NULL, "tie_low_clock_ck", &tie_low_clock_ck, CK_443X),
2486 CLK(NULL, "utmi_phy_clkout_ck", &utmi_phy_clkout_ck, CK_443X), 2464 CLK(NULL, "utmi_phy_clkout_ck", &utmi_phy_clkout_ck, CK_443X),
2487 CLK(NULL, "xclk60mhsp1_ck", &xclk60mhsp1_ck, CK_443X), 2465 CLK(NULL, "xclk60mhsp1_ck", &xclk60mhsp1_ck, CK_443X),
2488 CLK(NULL, "xclk60mhsp2_ck", &xclk60mhsp2_ck, CK_443X), 2466 CLK(NULL, "xclk60mhsp2_ck", &xclk60mhsp2_ck, CK_443X),
2489 CLK(NULL, "xclk60motg_ck", &xclk60motg_ck, CK_443X), 2467 CLK(NULL, "xclk60motg_ck", &xclk60motg_ck, CK_443X),
2490 CLK(NULL, "dpll_sys_ref_clk", &dpll_sys_ref_clk, CK_443X), 2468 CLK(NULL, "abe_dpll_bypass_clk_mux_ck", &abe_dpll_bypass_clk_mux_ck, CK_443X),
2491 CLK(NULL, "abe_dpll_refclk_mux_ck", &abe_dpll_refclk_mux_ck, CK_443X), 2469 CLK(NULL, "abe_dpll_refclk_mux_ck", &abe_dpll_refclk_mux_ck, CK_443X),
2492 CLK(NULL, "dpll_abe_ck", &dpll_abe_ck, CK_443X), 2470 CLK(NULL, "dpll_abe_ck", &dpll_abe_ck, CK_443X),
2493 CLK(NULL, "dpll_abe_m2x2_ck", &dpll_abe_m2x2_ck, CK_443X), 2471 CLK(NULL, "dpll_abe_m2x2_ck", &dpll_abe_m2x2_ck, CK_443X),
@@ -2566,7 +2544,6 @@ static struct omap_clk omap44xx_clks[] = {
2566 CLK(NULL, "emif1_ick", &emif1_ick, CK_443X), 2544 CLK(NULL, "emif1_ick", &emif1_ick, CK_443X),
2567 CLK(NULL, "emif2_ick", &emif2_ick, CK_443X), 2545 CLK(NULL, "emif2_ick", &emif2_ick, CK_443X),
2568 CLK(NULL, "fdif_fck", &fdif_fck, CK_443X), 2546 CLK(NULL, "fdif_fck", &fdif_fck, CK_443X),
2569 CLK(NULL, "per_sgx_fclk", &per_sgx_fclk, CK_443X),
2570 CLK(NULL, "gfx_fck", &gfx_fck, CK_443X), 2547 CLK(NULL, "gfx_fck", &gfx_fck, CK_443X),
2571 CLK(NULL, "gpio1_ick", &gpio1_ick, CK_443X), 2548 CLK(NULL, "gpio1_ick", &gpio1_ick, CK_443X),
2572 CLK(NULL, "gpio2_ick", &gpio2_ick, CK_443X), 2549 CLK(NULL, "gpio2_ick", &gpio2_ick, CK_443X),
@@ -2637,8 +2614,7 @@ static struct omap_clk omap44xx_clks[] = {
2637 CLK(NULL, "usb_host_fs_fck", &usb_host_fs_fck, CK_443X), 2614 CLK(NULL, "usb_host_fs_fck", &usb_host_fs_fck, CK_443X),
2638 CLK("musb_hdrc", "ick", &usb_otg_ick, CK_443X), 2615 CLK("musb_hdrc", "ick", &usb_otg_ick, CK_443X),
2639 CLK(NULL, "usb_tll_ick", &usb_tll_ick, CK_443X), 2616 CLK(NULL, "usb_tll_ick", &usb_tll_ick, CK_443X),
2640 CLK(NULL, "usbphyocp2scp_ick", &usbphyocp2scp_ick, CK_443X), 2617 CLK(NULL, "usim_ick", &usim_ick, CK_443X),
2641 CLK(NULL, "usim_fck", &usim_fck, CK_443X),
2642 CLK("omap_wdt", "fck", &wdt2_fck, CK_443X), 2618 CLK("omap_wdt", "fck", &wdt2_fck, CK_443X),
2643 CLK(NULL, "wdt3_fck", &wdt3_fck, CK_443X), 2619 CLK(NULL, "wdt3_fck", &wdt3_fck, CK_443X),
2644 CLK(NULL, "otg_60m_gfclk_ck", &otg_60m_gfclk_ck, CK_443X), 2620 CLK(NULL, "otg_60m_gfclk_ck", &otg_60m_gfclk_ck, CK_443X),