aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/clock34xx.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-omap2/clock34xx.h')
-rw-r--r--arch/arm/mach-omap2/clock34xx.h177
1 files changed, 28 insertions, 149 deletions
diff --git a/arch/arm/mach-omap2/clock34xx.h b/arch/arm/mach-omap2/clock34xx.h
index 764c7cd9fd84..70ec10deb654 100644
--- a/arch/arm/mach-omap2/clock34xx.h
+++ b/arch/arm/mach-omap2/clock34xx.h
@@ -48,6 +48,10 @@ static int omap3_core_dpll_m2_set_rate(struct clk *clk, unsigned long rate);
48 * DPLL5 supplies other peripheral clocks (USBHOST, USIM). 48 * DPLL5 supplies other peripheral clocks (USBHOST, USIM).
49 */ 49 */
50 50
51/* Forward declarations for DPLL bypass clocks */
52static struct clk dpll1_fck;
53static struct clk dpll2_fck;
54
51/* CM_CLKEN_PLL*.EN* bit values - not all are available for every DPLL */ 55/* CM_CLKEN_PLL*.EN* bit values - not all are available for every DPLL */
52#define DPLL_LOW_POWER_STOP 0x1 56#define DPLL_LOW_POWER_STOP 0x1
53#define DPLL_LOW_POWER_BYPASS 0x5 57#define DPLL_LOW_POWER_BYPASS 0x5
@@ -217,16 +221,6 @@ static struct clk sys_clkout1 = {
217 221
218/* CM CLOCKS */ 222/* CM CLOCKS */
219 223
220static const struct clksel_rate dpll_bypass_rates[] = {
221 { .div = 1, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE },
222 { .div = 0 }
223};
224
225static const struct clksel_rate dpll_locked_rates[] = {
226 { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE },
227 { .div = 0 }
228};
229
230static const struct clksel_rate div16_dpll_rates[] = { 224static const struct clksel_rate div16_dpll_rates[] = {
231 { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE }, 225 { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE },
232 { .div = 2, .val = 2, .flags = RATE_IN_343X }, 226 { .div = 2, .val = 2, .flags = RATE_IN_343X },
@@ -254,6 +248,8 @@ static struct dpll_data dpll1_dd = {
254 .mult_div1_reg = OMAP_CM_REGADDR(MPU_MOD, OMAP3430_CM_CLKSEL1_PLL), 248 .mult_div1_reg = OMAP_CM_REGADDR(MPU_MOD, OMAP3430_CM_CLKSEL1_PLL),
255 .mult_mask = OMAP3430_MPU_DPLL_MULT_MASK, 249 .mult_mask = OMAP3430_MPU_DPLL_MULT_MASK,
256 .div1_mask = OMAP3430_MPU_DPLL_DIV_MASK, 250 .div1_mask = OMAP3430_MPU_DPLL_DIV_MASK,
251 .clk_bypass = &dpll1_fck,
252 .clk_ref = &sys_ck,
257 .freqsel_mask = OMAP3430_MPU_DPLL_FREQSEL_MASK, 253 .freqsel_mask = OMAP3430_MPU_DPLL_FREQSEL_MASK,
258 .control_reg = OMAP_CM_REGADDR(MPU_MOD, OMAP3430_CM_CLKEN_PLL), 254 .control_reg = OMAP_CM_REGADDR(MPU_MOD, OMAP3430_CM_CLKEN_PLL),
259 .enable_mask = OMAP3430_EN_MPU_DPLL_MASK, 255 .enable_mask = OMAP3430_EN_MPU_DPLL_MASK,
@@ -324,6 +320,8 @@ static struct dpll_data dpll2_dd = {
324 .mult_div1_reg = OMAP_CM_REGADDR(OMAP3430_IVA2_MOD, OMAP3430_CM_CLKSEL1_PLL), 320 .mult_div1_reg = OMAP_CM_REGADDR(OMAP3430_IVA2_MOD, OMAP3430_CM_CLKSEL1_PLL),
325 .mult_mask = OMAP3430_IVA2_DPLL_MULT_MASK, 321 .mult_mask = OMAP3430_IVA2_DPLL_MULT_MASK,
326 .div1_mask = OMAP3430_IVA2_DPLL_DIV_MASK, 322 .div1_mask = OMAP3430_IVA2_DPLL_DIV_MASK,
323 .clk_bypass = &dpll2_fck,
324 .clk_ref = &sys_ck,
327 .freqsel_mask = OMAP3430_IVA2_DPLL_FREQSEL_MASK, 325 .freqsel_mask = OMAP3430_IVA2_DPLL_FREQSEL_MASK,
328 .control_reg = OMAP_CM_REGADDR(OMAP3430_IVA2_MOD, OMAP3430_CM_CLKEN_PLL), 326 .control_reg = OMAP_CM_REGADDR(OMAP3430_IVA2_MOD, OMAP3430_CM_CLKEN_PLL),
329 .enable_mask = OMAP3430_EN_IVA2_DPLL_MASK, 327 .enable_mask = OMAP3430_EN_IVA2_DPLL_MASK,
@@ -384,6 +382,8 @@ static struct dpll_data dpll3_dd = {
384 .mult_div1_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL1), 382 .mult_div1_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL1),
385 .mult_mask = OMAP3430_CORE_DPLL_MULT_MASK, 383 .mult_mask = OMAP3430_CORE_DPLL_MULT_MASK,
386 .div1_mask = OMAP3430_CORE_DPLL_DIV_MASK, 384 .div1_mask = OMAP3430_CORE_DPLL_DIV_MASK,
385 .clk_bypass = &sys_ck,
386 .clk_ref = &sys_ck,
387 .freqsel_mask = OMAP3430_CORE_DPLL_FREQSEL_MASK, 387 .freqsel_mask = OMAP3430_CORE_DPLL_FREQSEL_MASK,
388 .control_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN), 388 .control_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN),
389 .enable_mask = OMAP3430_EN_CORE_DPLL_MASK, 389 .enable_mask = OMAP3430_EN_CORE_DPLL_MASK,
@@ -477,37 +477,19 @@ static struct clk dpll3_m2_ck = {
477 .recalc = &omap2_clksel_recalc, 477 .recalc = &omap2_clksel_recalc,
478}; 478};
479 479
480static const struct clksel core_ck_clksel[] = {
481 { .parent = &sys_ck, .rates = dpll_bypass_rates },
482 { .parent = &dpll3_m2_ck, .rates = dpll_locked_rates },
483 { .parent = NULL }
484};
485
486static struct clk core_ck = { 480static struct clk core_ck = {
487 .name = "core_ck", 481 .name = "core_ck",
488 .ops = &clkops_null, 482 .ops = &clkops_null,
489 .init = &omap2_init_clksel_parent, 483 .parent = &dpll3_m2_ck,
490 .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST), 484 .recalc = &followparent_recalc,
491 .clksel_mask = OMAP3430_ST_CORE_CLK_MASK,
492 .clksel = core_ck_clksel,
493 .recalc = &omap2_clksel_recalc,
494};
495
496static const struct clksel dpll3_m2x2_ck_clksel[] = {
497 { .parent = &sys_ck, .rates = dpll_bypass_rates },
498 { .parent = &dpll3_x2_ck, .rates = dpll_locked_rates },
499 { .parent = NULL }
500}; 485};
501 486
502static struct clk dpll3_m2x2_ck = { 487static struct clk dpll3_m2x2_ck = {
503 .name = "dpll3_m2x2_ck", 488 .name = "dpll3_m2x2_ck",
504 .ops = &clkops_null, 489 .ops = &clkops_null,
505 .init = &omap2_init_clksel_parent, 490 .parent = &dpll3_x2_ck,
506 .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST),
507 .clksel_mask = OMAP3430_ST_CORE_CLK_MASK,
508 .clksel = dpll3_m2x2_ck_clksel,
509 .clkdm_name = "dpll3_clkdm", 491 .clkdm_name = "dpll3_clkdm",
510 .recalc = &omap2_clksel_recalc, 492 .recalc = &followparent_recalc,
511}; 493};
512 494
513/* The PWRDN bit is apparently only available on 3430ES2 and above */ 495/* The PWRDN bit is apparently only available on 3430ES2 and above */
@@ -541,22 +523,12 @@ static struct clk dpll3_m3x2_ck = {
541 .recalc = &omap3_clkoutx2_recalc, 523 .recalc = &omap3_clkoutx2_recalc,
542}; 524};
543 525
544static const struct clksel emu_core_alwon_ck_clksel[] = {
545 { .parent = &sys_ck, .rates = dpll_bypass_rates },
546 { .parent = &dpll3_m3x2_ck, .rates = dpll_locked_rates },
547 { .parent = NULL }
548};
549
550static struct clk emu_core_alwon_ck = { 526static struct clk emu_core_alwon_ck = {
551 .name = "emu_core_alwon_ck", 527 .name = "emu_core_alwon_ck",
552 .ops = &clkops_null, 528 .ops = &clkops_null,
553 .parent = &dpll3_m3x2_ck, 529 .parent = &dpll3_m3x2_ck,
554 .init = &omap2_init_clksel_parent,
555 .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST),
556 .clksel_mask = OMAP3430_ST_CORE_CLK_MASK,
557 .clksel = emu_core_alwon_ck_clksel,
558 .clkdm_name = "dpll3_clkdm", 530 .clkdm_name = "dpll3_clkdm",
559 .recalc = &omap2_clksel_recalc, 531 .recalc = &followparent_recalc,
560}; 532};
561 533
562/* DPLL4 */ 534/* DPLL4 */
@@ -566,6 +538,8 @@ static struct dpll_data dpll4_dd = {
566 .mult_div1_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL2), 538 .mult_div1_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL2),
567 .mult_mask = OMAP3430_PERIPH_DPLL_MULT_MASK, 539 .mult_mask = OMAP3430_PERIPH_DPLL_MULT_MASK,
568 .div1_mask = OMAP3430_PERIPH_DPLL_DIV_MASK, 540 .div1_mask = OMAP3430_PERIPH_DPLL_DIV_MASK,
541 .clk_bypass = &sys_ck,
542 .clk_ref = &sys_ck,
569 .freqsel_mask = OMAP3430_PERIPH_DPLL_FREQSEL_MASK, 543 .freqsel_mask = OMAP3430_PERIPH_DPLL_FREQSEL_MASK,
570 .control_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN), 544 .control_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN),
571 .enable_mask = OMAP3430_EN_PERIPH_DPLL_MASK, 545 .enable_mask = OMAP3430_EN_PERIPH_DPLL_MASK,
@@ -637,12 +611,6 @@ static struct clk dpll4_m2x2_ck = {
637 .recalc = &omap3_clkoutx2_recalc, 611 .recalc = &omap3_clkoutx2_recalc,
638}; 612};
639 613
640static const struct clksel omap_96m_alwon_fck_clksel[] = {
641 { .parent = &sys_ck, .rates = dpll_bypass_rates },
642 { .parent = &dpll4_m2x2_ck, .rates = dpll_locked_rates },
643 { .parent = NULL }
644};
645
646/* 614/*
647 * DPLL4 generates DPLL4_M2X2_CLK which is then routed into the PRM as 615 * DPLL4 generates DPLL4_M2X2_CLK which is then routed into the PRM as
648 * PRM_96M_ALWON_(F)CLK. Two clocks then emerge from the PRM: 616 * PRM_96M_ALWON_(F)CLK. Two clocks then emerge from the PRM:
@@ -653,11 +621,7 @@ static struct clk omap_96m_alwon_fck = {
653 .name = "omap_96m_alwon_fck", 621 .name = "omap_96m_alwon_fck",
654 .ops = &clkops_null, 622 .ops = &clkops_null,
655 .parent = &dpll4_m2x2_ck, 623 .parent = &dpll4_m2x2_ck,
656 .init = &omap2_init_clksel_parent, 624 .recalc = &followparent_recalc,
657 .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST),
658 .clksel_mask = OMAP3430_ST_PERIPH_CLK_MASK,
659 .clksel = omap_96m_alwon_fck_clksel,
660 .recalc = &omap2_clksel_recalc,
661}; 625};
662 626
663static struct clk cm_96m_fck = { 627static struct clk cm_96m_fck = {
@@ -720,23 +684,6 @@ static struct clk dpll4_m3x2_ck = {
720 .recalc = &omap3_clkoutx2_recalc, 684 .recalc = &omap3_clkoutx2_recalc,
721}; 685};
722 686
723static const struct clksel virt_omap_54m_fck_clksel[] = {
724 { .parent = &sys_ck, .rates = dpll_bypass_rates },
725 { .parent = &dpll4_m3x2_ck, .rates = dpll_locked_rates },
726 { .parent = NULL }
727};
728
729static struct clk virt_omap_54m_fck = {
730 .name = "virt_omap_54m_fck",
731 .ops = &clkops_null,
732 .parent = &dpll4_m3x2_ck,
733 .init = &omap2_init_clksel_parent,
734 .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST),
735 .clksel_mask = OMAP3430_ST_PERIPH_CLK_MASK,
736 .clksel = virt_omap_54m_fck_clksel,
737 .recalc = &omap2_clksel_recalc,
738};
739
740static const struct clksel_rate omap_54m_d4m3x2_rates[] = { 687static const struct clksel_rate omap_54m_d4m3x2_rates[] = {
741 { .div = 1, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE }, 688 { .div = 1, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE },
742 { .div = 0 } 689 { .div = 0 }
@@ -748,7 +695,7 @@ static const struct clksel_rate omap_54m_alt_rates[] = {
748}; 695};
749 696
750static const struct clksel omap_54m_clksel[] = { 697static const struct clksel omap_54m_clksel[] = {
751 { .parent = &virt_omap_54m_fck, .rates = omap_54m_d4m3x2_rates }, 698 { .parent = &dpll4_m3x2_ck, .rates = omap_54m_d4m3x2_rates },
752 { .parent = &sys_altclk, .rates = omap_54m_alt_rates }, 699 { .parent = &sys_altclk, .rates = omap_54m_alt_rates },
753 { .parent = NULL } 700 { .parent = NULL }
754}; 701};
@@ -891,6 +838,8 @@ static struct dpll_data dpll5_dd = {
891 .mult_div1_reg = OMAP_CM_REGADDR(PLL_MOD, OMAP3430ES2_CM_CLKSEL4), 838 .mult_div1_reg = OMAP_CM_REGADDR(PLL_MOD, OMAP3430ES2_CM_CLKSEL4),
892 .mult_mask = OMAP3430ES2_PERIPH2_DPLL_MULT_MASK, 839 .mult_mask = OMAP3430ES2_PERIPH2_DPLL_MULT_MASK,
893 .div1_mask = OMAP3430ES2_PERIPH2_DPLL_DIV_MASK, 840 .div1_mask = OMAP3430ES2_PERIPH2_DPLL_DIV_MASK,
841 .clk_bypass = &sys_ck,
842 .clk_ref = &sys_ck,
894 .freqsel_mask = OMAP3430ES2_PERIPH2_DPLL_FREQSEL_MASK, 843 .freqsel_mask = OMAP3430ES2_PERIPH2_DPLL_FREQSEL_MASK,
895 .control_reg = OMAP_CM_REGADDR(PLL_MOD, OMAP3430ES2_CM_CLKEN2), 844 .control_reg = OMAP_CM_REGADDR(PLL_MOD, OMAP3430ES2_CM_CLKEN2),
896 .enable_mask = OMAP3430ES2_EN_PERIPH2_DPLL_MASK, 845 .enable_mask = OMAP3430ES2_EN_PERIPH2_DPLL_MASK,
@@ -936,23 +885,6 @@ static struct clk dpll5_m2_ck = {
936 .recalc = &omap2_clksel_recalc, 885 .recalc = &omap2_clksel_recalc,
937}; 886};
938 887
939static const struct clksel omap_120m_fck_clksel[] = {
940 { .parent = &sys_ck, .rates = dpll_bypass_rates },
941 { .parent = &dpll5_m2_ck, .rates = dpll_locked_rates },
942 { .parent = NULL }
943};
944
945static struct clk omap_120m_fck = {
946 .name = "omap_120m_fck",
947 .ops = &clkops_null,
948 .parent = &dpll5_m2_ck,
949 .init = &omap2_init_clksel_parent,
950 .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST2),
951 .clksel_mask = OMAP3430ES2_ST_PERIPH2_CLK_MASK,
952 .clksel = omap_120m_fck_clksel,
953 .recalc = &omap2_clksel_recalc,
954};
955
956/* CM EXTERNAL CLOCK OUTPUTS */ 888/* CM EXTERNAL CLOCK OUTPUTS */
957 889
958static const struct clksel_rate clkout2_src_core_rates[] = { 890static const struct clksel_rate clkout2_src_core_rates[] = {
@@ -1058,28 +990,12 @@ static struct clk dpll1_fck = {
1058 .recalc = &omap2_clksel_recalc, 990 .recalc = &omap2_clksel_recalc,
1059}; 991};
1060 992
1061/*
1062 * MPU clksel:
1063 * If DPLL1 is locked, mpu_ck derives from DPLL1; otherwise, mpu_ck
1064 * derives from the high-frequency bypass clock originating from DPLL3,
1065 * called 'dpll1_fck'
1066 */
1067static const struct clksel mpu_clksel[] = {
1068 { .parent = &dpll1_fck, .rates = dpll_bypass_rates },
1069 { .parent = &dpll1_x2m2_ck, .rates = dpll_locked_rates },
1070 { .parent = NULL }
1071};
1072
1073static struct clk mpu_ck = { 993static struct clk mpu_ck = {
1074 .name = "mpu_ck", 994 .name = "mpu_ck",
1075 .ops = &clkops_null, 995 .ops = &clkops_null,
1076 .parent = &dpll1_x2m2_ck, 996 .parent = &dpll1_x2m2_ck,
1077 .init = &omap2_init_clksel_parent,
1078 .clksel_reg = OMAP_CM_REGADDR(MPU_MOD, OMAP3430_CM_IDLEST_PLL),
1079 .clksel_mask = OMAP3430_ST_MPU_CLK_MASK,
1080 .clksel = mpu_clksel,
1081 .clkdm_name = "mpu_clkdm", 997 .clkdm_name = "mpu_clkdm",
1082 .recalc = &omap2_clksel_recalc, 998 .recalc = &followparent_recalc,
1083}; 999};
1084 1000
1085/* arm_fck is divided by two when DPLL1 locked; otherwise, passthrough mpu_ck */ 1001/* arm_fck is divided by two when DPLL1 locked; otherwise, passthrough mpu_ck */
@@ -1129,19 +1045,6 @@ static struct clk dpll2_fck = {
1129 .recalc = &omap2_clksel_recalc, 1045 .recalc = &omap2_clksel_recalc,
1130}; 1046};
1131 1047
1132/*
1133 * IVA2 clksel:
1134 * If DPLL2 is locked, iva2_ck derives from DPLL2; otherwise, iva2_ck
1135 * derives from the high-frequency bypass clock originating from DPLL3,
1136 * called 'dpll2_fck'
1137 */
1138
1139static const struct clksel iva2_clksel[] = {
1140 { .parent = &dpll2_fck, .rates = dpll_bypass_rates },
1141 { .parent = &dpll2_m2_ck, .rates = dpll_locked_rates },
1142 { .parent = NULL }
1143};
1144
1145static struct clk iva2_ck = { 1048static struct clk iva2_ck = {
1146 .name = "iva2_ck", 1049 .name = "iva2_ck",
1147 .ops = &clkops_omap2_dflt_wait, 1050 .ops = &clkops_omap2_dflt_wait,
@@ -1149,12 +1052,8 @@ static struct clk iva2_ck = {
1149 .init = &omap2_init_clksel_parent, 1052 .init = &omap2_init_clksel_parent,
1150 .enable_reg = OMAP_CM_REGADDR(OMAP3430_IVA2_MOD, CM_FCLKEN), 1053 .enable_reg = OMAP_CM_REGADDR(OMAP3430_IVA2_MOD, CM_FCLKEN),
1151 .enable_bit = OMAP3430_CM_FCLKEN_IVA2_EN_IVA2_SHIFT, 1054 .enable_bit = OMAP3430_CM_FCLKEN_IVA2_EN_IVA2_SHIFT,
1152 .clksel_reg = OMAP_CM_REGADDR(OMAP3430_IVA2_MOD,
1153 OMAP3430_CM_IDLEST_PLL),
1154 .clksel_mask = OMAP3430_ST_IVA2_CLK_MASK,
1155 .clksel = iva2_clksel,
1156 .clkdm_name = "iva2_clkdm", 1055 .clkdm_name = "iva2_clkdm",
1157 .recalc = &omap2_clksel_recalc, 1056 .recalc = &followparent_recalc,
1158}; 1057};
1159 1058
1160/* Common interface clocks */ 1059/* Common interface clocks */
@@ -1384,7 +1283,7 @@ static struct clk ts_fck = {
1384static struct clk usbtll_fck = { 1283static struct clk usbtll_fck = {
1385 .name = "usbtll_fck", 1284 .name = "usbtll_fck",
1386 .ops = &clkops_omap2_dflt, 1285 .ops = &clkops_omap2_dflt,
1387 .parent = &omap_120m_fck, 1286 .parent = &dpll5_m2_ck,
1388 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP3430ES2_CM_FCLKEN3), 1287 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP3430ES2_CM_FCLKEN3),
1389 .enable_bit = OMAP3430ES2_EN_USBTLL_SHIFT, 1288 .enable_bit = OMAP3430ES2_EN_USBTLL_SHIFT,
1390 .recalc = &followparent_recalc, 1289 .recalc = &followparent_recalc,
@@ -2094,24 +1993,14 @@ static struct clk des1_ick = {
2094}; 1993};
2095 1994
2096/* DSS */ 1995/* DSS */
2097static const struct clksel dss1_alwon_fck_clksel[] = {
2098 { .parent = &sys_ck, .rates = dpll_bypass_rates },
2099 { .parent = &dpll4_m4x2_ck, .rates = dpll_locked_rates },
2100 { .parent = NULL }
2101};
2102
2103static struct clk dss1_alwon_fck = { 1996static struct clk dss1_alwon_fck = {
2104 .name = "dss1_alwon_fck", 1997 .name = "dss1_alwon_fck",
2105 .ops = &clkops_omap2_dflt, 1998 .ops = &clkops_omap2_dflt,
2106 .parent = &dpll4_m4x2_ck, 1999 .parent = &dpll4_m4x2_ck,
2107 .init = &omap2_init_clksel_parent,
2108 .enable_reg = OMAP_CM_REGADDR(OMAP3430_DSS_MOD, CM_FCLKEN), 2000 .enable_reg = OMAP_CM_REGADDR(OMAP3430_DSS_MOD, CM_FCLKEN),
2109 .enable_bit = OMAP3430_EN_DSS1_SHIFT, 2001 .enable_bit = OMAP3430_EN_DSS1_SHIFT,
2110 .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST),
2111 .clksel_mask = OMAP3430_ST_PERIPH_CLK_MASK,
2112 .clksel = dss1_alwon_fck_clksel,
2113 .clkdm_name = "dss_clkdm", 2002 .clkdm_name = "dss_clkdm",
2114 .recalc = &omap2_clksel_recalc, 2003 .recalc = &followparent_recalc,
2115}; 2004};
2116 2005
2117static struct clk dss_tv_fck = { 2006static struct clk dss_tv_fck = {
@@ -2161,24 +2050,14 @@ static struct clk dss_ick = {
2161 2050
2162/* CAM */ 2051/* CAM */
2163 2052
2164static const struct clksel cam_mclk_clksel[] = {
2165 { .parent = &sys_ck, .rates = dpll_bypass_rates },
2166 { .parent = &dpll4_m5x2_ck, .rates = dpll_locked_rates },
2167 { .parent = NULL }
2168};
2169
2170static struct clk cam_mclk = { 2053static struct clk cam_mclk = {
2171 .name = "cam_mclk", 2054 .name = "cam_mclk",
2172 .ops = &clkops_omap2_dflt_wait, 2055 .ops = &clkops_omap2_dflt_wait,
2173 .parent = &dpll4_m5x2_ck, 2056 .parent = &dpll4_m5x2_ck,
2174 .init = &omap2_init_clksel_parent,
2175 .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST),
2176 .clksel_mask = OMAP3430_ST_PERIPH_CLK_MASK,
2177 .clksel = cam_mclk_clksel,
2178 .enable_reg = OMAP_CM_REGADDR(OMAP3430_CAM_MOD, CM_FCLKEN), 2057 .enable_reg = OMAP_CM_REGADDR(OMAP3430_CAM_MOD, CM_FCLKEN),
2179 .enable_bit = OMAP3430_EN_CAM_SHIFT, 2058 .enable_bit = OMAP3430_EN_CAM_SHIFT,
2180 .clkdm_name = "cam_clkdm", 2059 .clkdm_name = "cam_clkdm",
2181 .recalc = &omap2_clksel_recalc, 2060 .recalc = &followparent_recalc,
2182}; 2061};
2183 2062
2184static struct clk cam_ick = { 2063static struct clk cam_ick = {
@@ -2209,7 +2088,7 @@ static struct clk csi2_96m_fck = {
2209static struct clk usbhost_120m_fck = { 2088static struct clk usbhost_120m_fck = {
2210 .name = "usbhost_120m_fck", 2089 .name = "usbhost_120m_fck",
2211 .ops = &clkops_omap2_dflt_wait, 2090 .ops = &clkops_omap2_dflt_wait,
2212 .parent = &omap_120m_fck, 2091 .parent = &dpll5_m2_ck,
2213 .init = &omap2_init_clk_clkdm, 2092 .init = &omap2_init_clk_clkdm,
2214 .enable_reg = OMAP_CM_REGADDR(OMAP3430ES2_USBHOST_MOD, CM_FCLKEN), 2093 .enable_reg = OMAP_CM_REGADDR(OMAP3430ES2_USBHOST_MOD, CM_FCLKEN),
2215 .enable_bit = OMAP3430ES2_EN_USBHOST2_SHIFT, 2094 .enable_bit = OMAP3430ES2_EN_USBHOST2_SHIFT,
@@ -2260,7 +2139,7 @@ static const struct clksel_rate usim_120m_rates[] = {
2260 2139
2261static const struct clksel usim_clksel[] = { 2140static const struct clksel usim_clksel[] = {
2262 { .parent = &omap_96m_fck, .rates = usim_96m_rates }, 2141 { .parent = &omap_96m_fck, .rates = usim_96m_rates },
2263 { .parent = &omap_120m_fck, .rates = usim_120m_rates }, 2142 { .parent = &dpll5_m2_ck, .rates = usim_120m_rates },
2264 { .parent = &sys_ck, .rates = div2_rates }, 2143 { .parent = &sys_ck, .rates = div2_rates },
2265 { .parent = NULL }, 2144 { .parent = NULL },
2266}; 2145};