aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-omap2/clock34xx.h58
-rw-r--r--arch/arm/mach-omap2/cm-regbits-34xx.h8
2 files changed, 43 insertions, 23 deletions
diff --git a/arch/arm/mach-omap2/clock34xx.h b/arch/arm/mach-omap2/clock34xx.h
index a2dcf574d98a..2c84717f9528 100644
--- a/arch/arm/mach-omap2/clock34xx.h
+++ b/arch/arm/mach-omap2/clock34xx.h
@@ -640,6 +640,12 @@ static const struct clksel omap_96m_alwon_fck_clksel[] = {
640 { .parent = NULL } 640 { .parent = NULL }
641}; 641};
642 642
643/*
644 * DPLL4 generates DPLL4_M2X2_CLK which is then routed into the PRM as
645 * PRM_96M_ALWON_(F)CLK. Two clocks then emerge from the PRM:
646 * 96M_ALWON_FCLK (called "omap_96m_alwon_fck" below) and
647 * CM_96K_(F)CLK.
648 */
643static struct clk omap_96m_alwon_fck = { 649static struct clk omap_96m_alwon_fck = {
644 .name = "omap_96m_alwon_fck", 650 .name = "omap_96m_alwon_fck",
645 .ops = &clkops_null, 651 .ops = &clkops_null,
@@ -652,28 +658,38 @@ static struct clk omap_96m_alwon_fck = {
652 .recalc = &omap2_clksel_recalc, 658 .recalc = &omap2_clksel_recalc,
653}; 659};
654 660
655static struct clk omap_96m_fck = { 661static struct clk cm_96m_fck = {
656 .name = "omap_96m_fck", 662 .name = "cm_96m_fck",
657 .ops = &clkops_null, 663 .ops = &clkops_null,
658 .parent = &omap_96m_alwon_fck, 664 .parent = &omap_96m_alwon_fck,
659 .flags = RATE_PROPAGATES, 665 .flags = RATE_PROPAGATES,
660 .recalc = &followparent_recalc, 666 .recalc = &followparent_recalc,
661}; 667};
662 668
663static const struct clksel cm_96m_fck_clksel[] = { 669static const struct clksel_rate omap_96m_dpll_rates[] = {
664 { .parent = &sys_ck, .rates = dpll_bypass_rates }, 670 { .div = 1, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE },
665 { .parent = &dpll4_m2x2_ck, .rates = dpll_locked_rates }, 671 { .div = 0 }
672};
673
674static const struct clksel_rate omap_96m_sys_rates[] = {
675 { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE },
676 { .div = 0 }
677};
678
679static const struct clksel omap_96m_fck_clksel[] = {
680 { .parent = &cm_96m_fck, .rates = omap_96m_dpll_rates },
681 { .parent = &sys_ck, .rates = omap_96m_sys_rates },
666 { .parent = NULL } 682 { .parent = NULL }
667}; 683};
668 684
669static struct clk cm_96m_fck = { 685static struct clk omap_96m_fck = {
670 .name = "cm_96m_fck", 686 .name = "omap_96m_fck",
671 .ops = &clkops_null, 687 .ops = &clkops_null,
672 .parent = &dpll4_m2x2_ck, 688 .parent = &sys_ck,
673 .init = &omap2_init_clksel_parent, 689 .init = &omap2_init_clksel_parent,
674 .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST), 690 .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL1),
675 .clksel_mask = OMAP3430_ST_PERIPH_CLK_MASK, 691 .clksel_mask = OMAP3430_SOURCE_96M_MASK,
676 .clksel = cm_96m_fck_clksel, 692 .clksel = omap_96m_fck_clksel,
677 .flags = RATE_PROPAGATES, 693 .flags = RATE_PROPAGATES,
678 .recalc = &omap2_clksel_recalc, 694 .recalc = &omap2_clksel_recalc,
679}; 695};
@@ -742,13 +758,13 @@ static struct clk omap_54m_fck = {
742 .ops = &clkops_null, 758 .ops = &clkops_null,
743 .init = &omap2_init_clksel_parent, 759 .init = &omap2_init_clksel_parent,
744 .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL1), 760 .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL1),
745 .clksel_mask = OMAP3430_SOURCE_54M, 761 .clksel_mask = OMAP3430_SOURCE_54M_MASK,
746 .clksel = omap_54m_clksel, 762 .clksel = omap_54m_clksel,
747 .flags = RATE_PROPAGATES, 763 .flags = RATE_PROPAGATES,
748 .recalc = &omap2_clksel_recalc, 764 .recalc = &omap2_clksel_recalc,
749}; 765};
750 766
751static const struct clksel_rate omap_48m_96md2_rates[] = { 767static const struct clksel_rate omap_48m_cm96m_rates[] = {
752 { .div = 2, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE }, 768 { .div = 2, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE },
753 { .div = 0 } 769 { .div = 0 }
754}; 770};
@@ -759,7 +775,7 @@ static const struct clksel_rate omap_48m_alt_rates[] = {
759}; 775};
760 776
761static const struct clksel omap_48m_clksel[] = { 777static const struct clksel omap_48m_clksel[] = {
762 { .parent = &cm_96m_fck, .rates = omap_48m_96md2_rates }, 778 { .parent = &cm_96m_fck, .rates = omap_48m_cm96m_rates },
763 { .parent = &sys_altclk, .rates = omap_48m_alt_rates }, 779 { .parent = &sys_altclk, .rates = omap_48m_alt_rates },
764 { .parent = NULL } 780 { .parent = NULL }
765}; 781};
@@ -769,7 +785,7 @@ static struct clk omap_48m_fck = {
769 .ops = &clkops_null, 785 .ops = &clkops_null,
770 .init = &omap2_init_clksel_parent, 786 .init = &omap2_init_clksel_parent,
771 .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL1), 787 .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL1),
772 .clksel_mask = OMAP3430_SOURCE_48M, 788 .clksel_mask = OMAP3430_SOURCE_48M_MASK,
773 .clksel = omap_48m_clksel, 789 .clksel = omap_48m_clksel,
774 .flags = RATE_PROPAGATES, 790 .flags = RATE_PROPAGATES,
775 .recalc = &omap2_clksel_recalc, 791 .recalc = &omap2_clksel_recalc,
@@ -958,10 +974,10 @@ static const struct clksel_rate clkout2_src_54m_rates[] = {
958}; 974};
959 975
960static const struct clksel clkout2_src_clksel[] = { 976static const struct clksel clkout2_src_clksel[] = {
961 { .parent = &core_ck, .rates = clkout2_src_core_rates }, 977 { .parent = &core_ck, .rates = clkout2_src_core_rates },
962 { .parent = &sys_ck, .rates = clkout2_src_sys_rates }, 978 { .parent = &sys_ck, .rates = clkout2_src_sys_rates },
963 { .parent = &omap_96m_alwon_fck, .rates = clkout2_src_96m_rates }, 979 { .parent = &cm_96m_fck, .rates = clkout2_src_96m_rates },
964 { .parent = &omap_54m_fck, .rates = clkout2_src_54m_rates }, 980 { .parent = &omap_54m_fck, .rates = clkout2_src_54m_rates },
965 { .parent = NULL } 981 { .parent = NULL }
966}; 982};
967 983
@@ -2782,8 +2798,8 @@ static struct clk mcbsp4_ick = {
2782}; 2798};
2783 2799
2784static const struct clksel mcbsp_234_clksel[] = { 2800static const struct clksel mcbsp_234_clksel[] = {
2785 { .parent = &per_96m_fck, .rates = common_mcbsp_96m_rates }, 2801 { .parent = &core_96m_fck, .rates = common_mcbsp_96m_rates },
2786 { .parent = &mcbsp_clks, .rates = common_mcbsp_mcbsp_rates }, 2802 { .parent = &mcbsp_clks, .rates = common_mcbsp_mcbsp_rates },
2787 { .parent = NULL } 2803 { .parent = NULL }
2788}; 2804};
2789 2805
diff --git a/arch/arm/mach-omap2/cm-regbits-34xx.h b/arch/arm/mach-omap2/cm-regbits-34xx.h
index 219f5c8d9659..a46f93c399da 100644
--- a/arch/arm/mach-omap2/cm-regbits-34xx.h
+++ b/arch/arm/mach-omap2/cm-regbits-34xx.h
@@ -449,8 +449,12 @@
449#define OMAP3430_CORE_DPLL_MULT_MASK (0x7ff << 16) 449#define OMAP3430_CORE_DPLL_MULT_MASK (0x7ff << 16)
450#define OMAP3430_CORE_DPLL_DIV_SHIFT 8 450#define OMAP3430_CORE_DPLL_DIV_SHIFT 8
451#define OMAP3430_CORE_DPLL_DIV_MASK (0x7f << 8) 451#define OMAP3430_CORE_DPLL_DIV_MASK (0x7f << 8)
452#define OMAP3430_SOURCE_54M (1 << 5) 452#define OMAP3430_SOURCE_96M_SHIFT 6
453#define OMAP3430_SOURCE_48M (1 << 3) 453#define OMAP3430_SOURCE_96M_MASK (1 << 6)
454#define OMAP3430_SOURCE_54M_SHIFT 5
455#define OMAP3430_SOURCE_54M_MASK (1 << 5)
456#define OMAP3430_SOURCE_48M_SHIFT 3
457#define OMAP3430_SOURCE_48M_MASK (1 << 3)
454 458
455/* CM_CLKSEL2_PLL */ 459/* CM_CLKSEL2_PLL */
456#define OMAP3430_PERIPH_DPLL_MULT_SHIFT 8 460#define OMAP3430_PERIPH_DPLL_MULT_SHIFT 8