aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/clock2430_data.c
diff options
context:
space:
mode:
authorGlenn Elliott <gelliott@cs.unc.edu>2012-03-04 19:47:13 -0500
committerGlenn Elliott <gelliott@cs.unc.edu>2012-03-04 19:47:13 -0500
commitc71c03bda1e86c9d5198c5d83f712e695c4f2a1e (patch)
treeecb166cb3e2b7e2adb3b5e292245fefd23381ac8 /arch/arm/mach-omap2/clock2430_data.c
parentea53c912f8a86a8567697115b6a0d8152beee5c8 (diff)
parent6a00f206debf8a5c8899055726ad127dbeeed098 (diff)
Merge branch 'mpi-master' into wip-k-fmlpwip-k-fmlp
Conflicts: litmus/sched_cedf.c
Diffstat (limited to 'arch/arm/mach-omap2/clock2430_data.c')
-rw-r--r--arch/arm/mach-omap2/clock2430_data.c334
1 files changed, 198 insertions, 136 deletions
diff --git a/arch/arm/mach-omap2/clock2430_data.c b/arch/arm/mach-omap2/clock2430_data.c
index b33118fb6a87..0c79d39e3021 100644
--- a/arch/arm/mach-omap2/clock2430_data.c
+++ b/arch/arm/mach-omap2/clock2430_data.c
@@ -1,12 +1,12 @@
1/* 1/*
2 * linux/arch/arm/mach-omap2/clock2430_data.c 2 * OMAP2430 clock data
3 * 3 *
4 * Copyright (C) 2005-2009 Texas Instruments, Inc. 4 * Copyright (C) 2005-2009 Texas Instruments, Inc.
5 * Copyright (C) 2004-2010 Nokia Corporation 5 * Copyright (C) 2004-2011 Nokia Corporation
6 * 6 *
7 * Contacts: 7 * Contacts:
8 * Richard Woodruff <r-woodruff2@ti.com> 8 * Richard Woodruff <r-woodruff2@ti.com>
9 * Paul Walmsley 9 * Paul Walmsley
10 * 10 *
11 * This program is free software; you can redistribute it and/or modify 11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License version 2 as 12 * it under the terms of the GNU General Public License version 2 as
@@ -22,29 +22,27 @@
22#include "clock.h" 22#include "clock.h"
23#include "clock2xxx.h" 23#include "clock2xxx.h"
24#include "opp2xxx.h" 24#include "opp2xxx.h"
25#include "prm.h" 25#include "cm2xxx_3xxx.h"
26#include "cm.h" 26#include "prm2xxx_3xxx.h"
27#include "prm-regbits-24xx.h" 27#include "prm-regbits-24xx.h"
28#include "cm-regbits-24xx.h" 28#include "cm-regbits-24xx.h"
29#include "sdrc.h" 29#include "sdrc.h"
30#include "control.h"
30 31
31#define OMAP_CM_REGADDR OMAP2430_CM_REGADDR 32#define OMAP_CM_REGADDR OMAP2430_CM_REGADDR
32 33
33/* 34/*
34 * 2430 clock tree. 35 * 2430 clock tree.
35 * 36 *
36 * NOTE:In many cases here we are assigning a 'default' parent. In many 37 * NOTE:In many cases here we are assigning a 'default' parent. In
37 * cases the parent is selectable. The get/set parent calls will also 38 * many cases the parent is selectable. The set parent calls will
38 * switch sources. 39 * also switch sources.
39 *
40 * Many some clocks say always_enabled, but they can be auto idled for
41 * power savings. They will always be available upon clock request.
42 * 40 *
43 * Several sources are given initial rates which may be wrong, this will 41 * Several sources are given initial rates which may be wrong, this will
44 * be fixed up in the init func. 42 * be fixed up in the init func.
45 * 43 *
46 * Things are broadly separated below by clock domains. It is 44 * Things are broadly separated below by clock domains. It is
47 * noteworthy that most periferals have dependencies on multiple clock 45 * noteworthy that most peripherals have dependencies on multiple clock
48 * domains. Many get their interface clocks from the L4 domain, but get 46 * domains. Many get their interface clocks from the L4 domain, but get
49 * functional clocks from fixed sources or other core domain derived 47 * functional clocks from fixed sources or other core domain derived
50 * clocks. 48 * clocks.
@@ -54,7 +52,7 @@
54static struct clk func_32k_ck = { 52static struct clk func_32k_ck = {
55 .name = "func_32k_ck", 53 .name = "func_32k_ck",
56 .ops = &clkops_null, 54 .ops = &clkops_null,
57 .rate = 32000, 55 .rate = 32768,
58 .clkdm_name = "wkup_clkdm", 56 .clkdm_name = "wkup_clkdm",
59}; 57};
60 58
@@ -89,6 +87,12 @@ static struct clk alt_ck = { /* Typical 54M or 48M, may not exist */
89 .clkdm_name = "wkup_clkdm", 87 .clkdm_name = "wkup_clkdm",
90}; 88};
91 89
90/* Optional external clock input for McBSP CLKS */
91static struct clk mcbsp_clks = {
92 .name = "mcbsp_clks",
93 .ops = &clkops_null,
94};
95
92/* 96/*
93 * Analog domain root source clocks 97 * Analog domain root source clocks
94 */ 98 */
@@ -109,7 +113,6 @@ static struct dpll_data dpll_dd = {
109 .max_multiplier = 1023, 113 .max_multiplier = 1023,
110 .min_divider = 1, 114 .min_divider = 1,
111 .max_divider = 16, 115 .max_divider = 16,
112 .rate_tolerance = DEFAULT_DPLL_RATE_TOLERANCE
113}; 116};
114 117
115/* 118/*
@@ -118,7 +121,7 @@ static struct dpll_data dpll_dd = {
118 */ 121 */
119static struct clk dpll_ck = { 122static struct clk dpll_ck = {
120 .name = "dpll_ck", 123 .name = "dpll_ck",
121 .ops = &clkops_null, 124 .ops = &clkops_omap2xxx_dpll_ops,
122 .parent = &sys_ck, /* Can be func_32k also */ 125 .parent = &sys_ck, /* Can be func_32k also */
123 .dpll_data = &dpll_dd, 126 .dpll_data = &dpll_dd,
124 .clkdm_name = "wkup_clkdm", 127 .clkdm_name = "wkup_clkdm",
@@ -427,37 +430,23 @@ static struct clk dsp_fck = {
427 .recalc = &omap2_clksel_recalc, 430 .recalc = &omap2_clksel_recalc,
428}; 431};
429 432
430/* DSP interface clock */ 433static const struct clksel dsp_ick_clksel[] = {
431static const struct clksel_rate dsp_irate_ick_rates[] = { 434 { .parent = &dsp_fck, .rates = dsp_ick_rates },
432 { .div = 1, .val = 1, .flags = RATE_IN_24XX },
433 { .div = 2, .val = 2, .flags = RATE_IN_24XX },
434 { .div = 3, .val = 3, .flags = RATE_IN_243X },
435 { .div = 0 },
436};
437
438static const struct clksel dsp_irate_ick_clksel[] = {
439 { .parent = &dsp_fck, .rates = dsp_irate_ick_rates },
440 { .parent = NULL } 435 { .parent = NULL }
441}; 436};
442 437
443/* This clock does not exist as such in the TRM. */
444static struct clk dsp_irate_ick = {
445 .name = "dsp_irate_ick",
446 .ops = &clkops_null,
447 .parent = &dsp_fck,
448 .clksel_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_CLKSEL),
449 .clksel_mask = OMAP24XX_CLKSEL_DSP_IF_MASK,
450 .clksel = dsp_irate_ick_clksel,
451 .recalc = &omap2_clksel_recalc,
452};
453
454/* 2430 only - EN_DSP controls both dsp fclk and iclk on 2430 */ 438/* 2430 only - EN_DSP controls both dsp fclk and iclk on 2430 */
455static struct clk iva2_1_ick = { 439static struct clk iva2_1_ick = {
456 .name = "iva2_1_ick", 440 .name = "iva2_1_ick",
457 .ops = &clkops_omap2_dflt_wait, 441 .ops = &clkops_omap2_dflt_wait,
458 .parent = &dsp_irate_ick, 442 .parent = &dsp_fck,
443 .clkdm_name = "dsp_clkdm",
459 .enable_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_FCLKEN), 444 .enable_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_FCLKEN),
460 .enable_bit = OMAP24XX_CM_FCLKEN_DSP_EN_DSP_SHIFT, 445 .enable_bit = OMAP24XX_CM_FCLKEN_DSP_EN_DSP_SHIFT,
446 .clksel_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_CLKSEL),
447 .clksel_mask = OMAP24XX_CLKSEL_DSP_IF_MASK,
448 .clksel = dsp_ick_clksel,
449 .recalc = &omap2_clksel_recalc,
461}; 450};
462 451
463/* 452/*
@@ -518,7 +507,7 @@ static const struct clksel usb_l4_ick_clksel[] = {
518/* It is unclear from TRM whether usb_l4_ick is really in L3 or L4 clkdm */ 507/* It is unclear from TRM whether usb_l4_ick is really in L3 or L4 clkdm */
519static struct clk usb_l4_ick = { /* FS-USB interface clock */ 508static struct clk usb_l4_ick = { /* FS-USB interface clock */
520 .name = "usb_l4_ick", 509 .name = "usb_l4_ick",
521 .ops = &clkops_omap2_dflt_wait, 510 .ops = &clkops_omap2_iclk_dflt_wait,
522 .parent = &core_l3_ck, 511 .parent = &core_l3_ck,
523 .clkdm_name = "core_l4_clkdm", 512 .clkdm_name = "core_l4_clkdm",
524 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), 513 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2),
@@ -599,7 +588,7 @@ static struct clk ssi_ssr_sst_fck = {
599 */ 588 */
600static struct clk ssi_l4_ick = { 589static struct clk ssi_l4_ick = {
601 .name = "ssi_l4_ick", 590 .name = "ssi_l4_ick",
602 .ops = &clkops_omap2_dflt_wait, 591 .ops = &clkops_omap2_iclk_dflt_wait,
603 .parent = &l4_ck, 592 .parent = &l4_ck,
604 .clkdm_name = "core_l4_clkdm", 593 .clkdm_name = "core_l4_clkdm",
605 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), 594 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2),
@@ -654,6 +643,7 @@ static struct clk gfx_2d_fck = {
654 .recalc = &omap2_clksel_recalc, 643 .recalc = &omap2_clksel_recalc,
655}; 644};
656 645
646/* This interface clock does not have a CM_AUTOIDLE bit */
657static struct clk gfx_ick = { 647static struct clk gfx_ick = {
658 .name = "gfx_ick", /* From l3 */ 648 .name = "gfx_ick", /* From l3 */
659 .ops = &clkops_omap2_dflt_wait, 649 .ops = &clkops_omap2_dflt_wait,
@@ -686,7 +676,7 @@ static const struct clksel mdm_ick_clksel[] = {
686 676
687static struct clk mdm_ick = { /* used both as a ick and fck */ 677static struct clk mdm_ick = { /* used both as a ick and fck */
688 .name = "mdm_ick", 678 .name = "mdm_ick",
689 .ops = &clkops_omap2_dflt_wait, 679 .ops = &clkops_omap2_iclk_dflt_wait,
690 .parent = &core_ck, 680 .parent = &core_ck,
691 .clkdm_name = "mdm_clkdm", 681 .clkdm_name = "mdm_clkdm",
692 .enable_reg = OMAP_CM_REGADDR(OMAP2430_MDM_MOD, CM_ICLKEN), 682 .enable_reg = OMAP_CM_REGADDR(OMAP2430_MDM_MOD, CM_ICLKEN),
@@ -699,7 +689,7 @@ static struct clk mdm_ick = { /* used both as a ick and fck */
699 689
700static struct clk mdm_osc_ck = { 690static struct clk mdm_osc_ck = {
701 .name = "mdm_osc_ck", 691 .name = "mdm_osc_ck",
702 .ops = &clkops_omap2_dflt_wait, 692 .ops = &clkops_omap2_mdmclk_dflt_wait,
703 .parent = &osc_ck, 693 .parent = &osc_ck,
704 .clkdm_name = "mdm_clkdm", 694 .clkdm_name = "mdm_clkdm",
705 .enable_reg = OMAP_CM_REGADDR(OMAP2430_MDM_MOD, CM_FCLKEN), 695 .enable_reg = OMAP_CM_REGADDR(OMAP2430_MDM_MOD, CM_FCLKEN),
@@ -744,7 +734,7 @@ static const struct clksel dss1_fck_clksel[] = {
744 734
745static struct clk dss_ick = { /* Enables both L3,L4 ICLK's */ 735static struct clk dss_ick = { /* Enables both L3,L4 ICLK's */
746 .name = "dss_ick", 736 .name = "dss_ick",
747 .ops = &clkops_omap2_dflt, 737 .ops = &clkops_omap2_iclk_dflt,
748 .parent = &l4_ck, /* really both l3 and l4 */ 738 .parent = &l4_ck, /* really both l3 and l4 */
749 .clkdm_name = "dss_clkdm", 739 .clkdm_name = "dss_clkdm",
750 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 740 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -793,7 +783,7 @@ static struct clk dss2_fck = { /* Alt clk used in power management */
793 .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL1), 783 .clksel_reg = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL1),
794 .clksel_mask = OMAP24XX_CLKSEL_DSS2_MASK, 784 .clksel_mask = OMAP24XX_CLKSEL_DSS2_MASK,
795 .clksel = dss2_fck_clksel, 785 .clksel = dss2_fck_clksel,
796 .recalc = &followparent_recalc, 786 .recalc = &omap2_clksel_recalc,
797}; 787};
798 788
799static struct clk dss_54m_fck = { /* Alt clk used in power management */ 789static struct clk dss_54m_fck = { /* Alt clk used in power management */
@@ -806,6 +796,14 @@ static struct clk dss_54m_fck = { /* Alt clk used in power management */
806 .recalc = &followparent_recalc, 796 .recalc = &followparent_recalc,
807}; 797};
808 798
799static struct clk wu_l4_ick = {
800 .name = "wu_l4_ick",
801 .ops = &clkops_null,
802 .parent = &sys_ck,
803 .clkdm_name = "wkup_clkdm",
804 .recalc = &followparent_recalc,
805};
806
809/* 807/*
810 * CORE power domain ICLK & FCLK defines. 808 * CORE power domain ICLK & FCLK defines.
811 * Many of the these can have more than one possible parent. Entries 809 * Many of the these can have more than one possible parent. Entries
@@ -826,9 +824,9 @@ static const struct clksel omap24xx_gpt_clksel[] = {
826 824
827static struct clk gpt1_ick = { 825static struct clk gpt1_ick = {
828 .name = "gpt1_ick", 826 .name = "gpt1_ick",
829 .ops = &clkops_omap2_dflt_wait, 827 .ops = &clkops_omap2_iclk_dflt_wait,
830 .parent = &l4_ck, 828 .parent = &wu_l4_ick,
831 .clkdm_name = "core_l4_clkdm", 829 .clkdm_name = "wkup_clkdm",
832 .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), 830 .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN),
833 .enable_bit = OMAP24XX_EN_GPT1_SHIFT, 831 .enable_bit = OMAP24XX_EN_GPT1_SHIFT,
834 .recalc = &followparent_recalc, 832 .recalc = &followparent_recalc,
@@ -852,7 +850,7 @@ static struct clk gpt1_fck = {
852 850
853static struct clk gpt2_ick = { 851static struct clk gpt2_ick = {
854 .name = "gpt2_ick", 852 .name = "gpt2_ick",
855 .ops = &clkops_omap2_dflt_wait, 853 .ops = &clkops_omap2_iclk_dflt_wait,
856 .parent = &l4_ck, 854 .parent = &l4_ck,
857 .clkdm_name = "core_l4_clkdm", 855 .clkdm_name = "core_l4_clkdm",
858 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 856 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -876,7 +874,7 @@ static struct clk gpt2_fck = {
876 874
877static struct clk gpt3_ick = { 875static struct clk gpt3_ick = {
878 .name = "gpt3_ick", 876 .name = "gpt3_ick",
879 .ops = &clkops_omap2_dflt_wait, 877 .ops = &clkops_omap2_iclk_dflt_wait,
880 .parent = &l4_ck, 878 .parent = &l4_ck,
881 .clkdm_name = "core_l4_clkdm", 879 .clkdm_name = "core_l4_clkdm",
882 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 880 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -900,7 +898,7 @@ static struct clk gpt3_fck = {
900 898
901static struct clk gpt4_ick = { 899static struct clk gpt4_ick = {
902 .name = "gpt4_ick", 900 .name = "gpt4_ick",
903 .ops = &clkops_omap2_dflt_wait, 901 .ops = &clkops_omap2_iclk_dflt_wait,
904 .parent = &l4_ck, 902 .parent = &l4_ck,
905 .clkdm_name = "core_l4_clkdm", 903 .clkdm_name = "core_l4_clkdm",
906 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 904 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -924,7 +922,7 @@ static struct clk gpt4_fck = {
924 922
925static struct clk gpt5_ick = { 923static struct clk gpt5_ick = {
926 .name = "gpt5_ick", 924 .name = "gpt5_ick",
927 .ops = &clkops_omap2_dflt_wait, 925 .ops = &clkops_omap2_iclk_dflt_wait,
928 .parent = &l4_ck, 926 .parent = &l4_ck,
929 .clkdm_name = "core_l4_clkdm", 927 .clkdm_name = "core_l4_clkdm",
930 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 928 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -948,7 +946,7 @@ static struct clk gpt5_fck = {
948 946
949static struct clk gpt6_ick = { 947static struct clk gpt6_ick = {
950 .name = "gpt6_ick", 948 .name = "gpt6_ick",
951 .ops = &clkops_omap2_dflt_wait, 949 .ops = &clkops_omap2_iclk_dflt_wait,
952 .parent = &l4_ck, 950 .parent = &l4_ck,
953 .clkdm_name = "core_l4_clkdm", 951 .clkdm_name = "core_l4_clkdm",
954 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 952 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -972,8 +970,9 @@ static struct clk gpt6_fck = {
972 970
973static struct clk gpt7_ick = { 971static struct clk gpt7_ick = {
974 .name = "gpt7_ick", 972 .name = "gpt7_ick",
975 .ops = &clkops_omap2_dflt_wait, 973 .ops = &clkops_omap2_iclk_dflt_wait,
976 .parent = &l4_ck, 974 .parent = &l4_ck,
975 .clkdm_name = "core_l4_clkdm",
977 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 976 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
978 .enable_bit = OMAP24XX_EN_GPT7_SHIFT, 977 .enable_bit = OMAP24XX_EN_GPT7_SHIFT,
979 .recalc = &followparent_recalc, 978 .recalc = &followparent_recalc,
@@ -995,7 +994,7 @@ static struct clk gpt7_fck = {
995 994
996static struct clk gpt8_ick = { 995static struct clk gpt8_ick = {
997 .name = "gpt8_ick", 996 .name = "gpt8_ick",
998 .ops = &clkops_omap2_dflt_wait, 997 .ops = &clkops_omap2_iclk_dflt_wait,
999 .parent = &l4_ck, 998 .parent = &l4_ck,
1000 .clkdm_name = "core_l4_clkdm", 999 .clkdm_name = "core_l4_clkdm",
1001 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 1000 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1019,7 +1018,7 @@ static struct clk gpt8_fck = {
1019 1018
1020static struct clk gpt9_ick = { 1019static struct clk gpt9_ick = {
1021 .name = "gpt9_ick", 1020 .name = "gpt9_ick",
1022 .ops = &clkops_omap2_dflt_wait, 1021 .ops = &clkops_omap2_iclk_dflt_wait,
1023 .parent = &l4_ck, 1022 .parent = &l4_ck,
1024 .clkdm_name = "core_l4_clkdm", 1023 .clkdm_name = "core_l4_clkdm",
1025 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 1024 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1043,7 +1042,7 @@ static struct clk gpt9_fck = {
1043 1042
1044static struct clk gpt10_ick = { 1043static struct clk gpt10_ick = {
1045 .name = "gpt10_ick", 1044 .name = "gpt10_ick",
1046 .ops = &clkops_omap2_dflt_wait, 1045 .ops = &clkops_omap2_iclk_dflt_wait,
1047 .parent = &l4_ck, 1046 .parent = &l4_ck,
1048 .clkdm_name = "core_l4_clkdm", 1047 .clkdm_name = "core_l4_clkdm",
1049 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 1048 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1067,7 +1066,7 @@ static struct clk gpt10_fck = {
1067 1066
1068static struct clk gpt11_ick = { 1067static struct clk gpt11_ick = {
1069 .name = "gpt11_ick", 1068 .name = "gpt11_ick",
1070 .ops = &clkops_omap2_dflt_wait, 1069 .ops = &clkops_omap2_iclk_dflt_wait,
1071 .parent = &l4_ck, 1070 .parent = &l4_ck,
1072 .clkdm_name = "core_l4_clkdm", 1071 .clkdm_name = "core_l4_clkdm",
1073 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 1072 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1091,7 +1090,7 @@ static struct clk gpt11_fck = {
1091 1090
1092static struct clk gpt12_ick = { 1091static struct clk gpt12_ick = {
1093 .name = "gpt12_ick", 1092 .name = "gpt12_ick",
1094 .ops = &clkops_omap2_dflt_wait, 1093 .ops = &clkops_omap2_iclk_dflt_wait,
1095 .parent = &l4_ck, 1094 .parent = &l4_ck,
1096 .clkdm_name = "core_l4_clkdm", 1095 .clkdm_name = "core_l4_clkdm",
1097 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 1096 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1115,7 +1114,7 @@ static struct clk gpt12_fck = {
1115 1114
1116static struct clk mcbsp1_ick = { 1115static struct clk mcbsp1_ick = {
1117 .name = "mcbsp1_ick", 1116 .name = "mcbsp1_ick",
1118 .ops = &clkops_omap2_dflt_wait, 1117 .ops = &clkops_omap2_iclk_dflt_wait,
1119 .parent = &l4_ck, 1118 .parent = &l4_ck,
1120 .clkdm_name = "core_l4_clkdm", 1119 .clkdm_name = "core_l4_clkdm",
1121 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 1120 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1123,19 +1122,39 @@ static struct clk mcbsp1_ick = {
1123 .recalc = &followparent_recalc, 1122 .recalc = &followparent_recalc,
1124}; 1123};
1125 1124
1125static const struct clksel_rate common_mcbsp_96m_rates[] = {
1126 { .div = 1, .val = 0, .flags = RATE_IN_24XX },
1127 { .div = 0 }
1128};
1129
1130static const struct clksel_rate common_mcbsp_mcbsp_rates[] = {
1131 { .div = 1, .val = 1, .flags = RATE_IN_24XX },
1132 { .div = 0 }
1133};
1134
1135static const struct clksel mcbsp_fck_clksel[] = {
1136 { .parent = &func_96m_ck, .rates = common_mcbsp_96m_rates },
1137 { .parent = &mcbsp_clks, .rates = common_mcbsp_mcbsp_rates },
1138 { .parent = NULL }
1139};
1140
1126static struct clk mcbsp1_fck = { 1141static struct clk mcbsp1_fck = {
1127 .name = "mcbsp1_fck", 1142 .name = "mcbsp1_fck",
1128 .ops = &clkops_omap2_dflt_wait, 1143 .ops = &clkops_omap2_dflt_wait,
1129 .parent = &func_96m_ck, 1144 .parent = &func_96m_ck,
1145 .init = &omap2_init_clksel_parent,
1130 .clkdm_name = "core_l4_clkdm", 1146 .clkdm_name = "core_l4_clkdm",
1131 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), 1147 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
1132 .enable_bit = OMAP24XX_EN_MCBSP1_SHIFT, 1148 .enable_bit = OMAP24XX_EN_MCBSP1_SHIFT,
1133 .recalc = &followparent_recalc, 1149 .clksel_reg = OMAP243X_CTRL_REGADDR(OMAP2_CONTROL_DEVCONF0),
1150 .clksel_mask = OMAP2_MCBSP1_CLKS_MASK,
1151 .clksel = mcbsp_fck_clksel,
1152 .recalc = &omap2_clksel_recalc,
1134}; 1153};
1135 1154
1136static struct clk mcbsp2_ick = { 1155static struct clk mcbsp2_ick = {
1137 .name = "mcbsp2_ick", 1156 .name = "mcbsp2_ick",
1138 .ops = &clkops_omap2_dflt_wait, 1157 .ops = &clkops_omap2_iclk_dflt_wait,
1139 .parent = &l4_ck, 1158 .parent = &l4_ck,
1140 .clkdm_name = "core_l4_clkdm", 1159 .clkdm_name = "core_l4_clkdm",
1141 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 1160 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1147,15 +1166,19 @@ static struct clk mcbsp2_fck = {
1147 .name = "mcbsp2_fck", 1166 .name = "mcbsp2_fck",
1148 .ops = &clkops_omap2_dflt_wait, 1167 .ops = &clkops_omap2_dflt_wait,
1149 .parent = &func_96m_ck, 1168 .parent = &func_96m_ck,
1169 .init = &omap2_init_clksel_parent,
1150 .clkdm_name = "core_l4_clkdm", 1170 .clkdm_name = "core_l4_clkdm",
1151 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1), 1171 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
1152 .enable_bit = OMAP24XX_EN_MCBSP2_SHIFT, 1172 .enable_bit = OMAP24XX_EN_MCBSP2_SHIFT,
1153 .recalc = &followparent_recalc, 1173 .clksel_reg = OMAP243X_CTRL_REGADDR(OMAP2_CONTROL_DEVCONF0),
1174 .clksel_mask = OMAP2_MCBSP2_CLKS_MASK,
1175 .clksel = mcbsp_fck_clksel,
1176 .recalc = &omap2_clksel_recalc,
1154}; 1177};
1155 1178
1156static struct clk mcbsp3_ick = { 1179static struct clk mcbsp3_ick = {
1157 .name = "mcbsp3_ick", 1180 .name = "mcbsp3_ick",
1158 .ops = &clkops_omap2_dflt_wait, 1181 .ops = &clkops_omap2_iclk_dflt_wait,
1159 .parent = &l4_ck, 1182 .parent = &l4_ck,
1160 .clkdm_name = "core_l4_clkdm", 1183 .clkdm_name = "core_l4_clkdm",
1161 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), 1184 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2),
@@ -1167,15 +1190,19 @@ static struct clk mcbsp3_fck = {
1167 .name = "mcbsp3_fck", 1190 .name = "mcbsp3_fck",
1168 .ops = &clkops_omap2_dflt_wait, 1191 .ops = &clkops_omap2_dflt_wait,
1169 .parent = &func_96m_ck, 1192 .parent = &func_96m_ck,
1193 .init = &omap2_init_clksel_parent,
1170 .clkdm_name = "core_l4_clkdm", 1194 .clkdm_name = "core_l4_clkdm",
1171 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2), 1195 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2),
1172 .enable_bit = OMAP2430_EN_MCBSP3_SHIFT, 1196 .enable_bit = OMAP2430_EN_MCBSP3_SHIFT,
1173 .recalc = &followparent_recalc, 1197 .clksel_reg = OMAP243X_CTRL_REGADDR(OMAP243X_CONTROL_DEVCONF1),
1198 .clksel_mask = OMAP2_MCBSP3_CLKS_MASK,
1199 .clksel = mcbsp_fck_clksel,
1200 .recalc = &omap2_clksel_recalc,
1174}; 1201};
1175 1202
1176static struct clk mcbsp4_ick = { 1203static struct clk mcbsp4_ick = {
1177 .name = "mcbsp4_ick", 1204 .name = "mcbsp4_ick",
1178 .ops = &clkops_omap2_dflt_wait, 1205 .ops = &clkops_omap2_iclk_dflt_wait,
1179 .parent = &l4_ck, 1206 .parent = &l4_ck,
1180 .clkdm_name = "core_l4_clkdm", 1207 .clkdm_name = "core_l4_clkdm",
1181 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), 1208 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2),
@@ -1187,15 +1214,19 @@ static struct clk mcbsp4_fck = {
1187 .name = "mcbsp4_fck", 1214 .name = "mcbsp4_fck",
1188 .ops = &clkops_omap2_dflt_wait, 1215 .ops = &clkops_omap2_dflt_wait,
1189 .parent = &func_96m_ck, 1216 .parent = &func_96m_ck,
1217 .init = &omap2_init_clksel_parent,
1190 .clkdm_name = "core_l4_clkdm", 1218 .clkdm_name = "core_l4_clkdm",
1191 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2), 1219 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2),
1192 .enable_bit = OMAP2430_EN_MCBSP4_SHIFT, 1220 .enable_bit = OMAP2430_EN_MCBSP4_SHIFT,
1193 .recalc = &followparent_recalc, 1221 .clksel_reg = OMAP243X_CTRL_REGADDR(OMAP243X_CONTROL_DEVCONF1),
1222 .clksel_mask = OMAP2_MCBSP4_CLKS_MASK,
1223 .clksel = mcbsp_fck_clksel,
1224 .recalc = &omap2_clksel_recalc,
1194}; 1225};
1195 1226
1196static struct clk mcbsp5_ick = { 1227static struct clk mcbsp5_ick = {
1197 .name = "mcbsp5_ick", 1228 .name = "mcbsp5_ick",
1198 .ops = &clkops_omap2_dflt_wait, 1229 .ops = &clkops_omap2_iclk_dflt_wait,
1199 .parent = &l4_ck, 1230 .parent = &l4_ck,
1200 .clkdm_name = "core_l4_clkdm", 1231 .clkdm_name = "core_l4_clkdm",
1201 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), 1232 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2),
@@ -1207,15 +1238,19 @@ static struct clk mcbsp5_fck = {
1207 .name = "mcbsp5_fck", 1238 .name = "mcbsp5_fck",
1208 .ops = &clkops_omap2_dflt_wait, 1239 .ops = &clkops_omap2_dflt_wait,
1209 .parent = &func_96m_ck, 1240 .parent = &func_96m_ck,
1241 .init = &omap2_init_clksel_parent,
1210 .clkdm_name = "core_l4_clkdm", 1242 .clkdm_name = "core_l4_clkdm",
1211 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2), 1243 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2),
1212 .enable_bit = OMAP2430_EN_MCBSP5_SHIFT, 1244 .enable_bit = OMAP2430_EN_MCBSP5_SHIFT,
1213 .recalc = &followparent_recalc, 1245 .clksel_reg = OMAP243X_CTRL_REGADDR(OMAP243X_CONTROL_DEVCONF1),
1246 .clksel_mask = OMAP2_MCBSP5_CLKS_MASK,
1247 .clksel = mcbsp_fck_clksel,
1248 .recalc = &omap2_clksel_recalc,
1214}; 1249};
1215 1250
1216static struct clk mcspi1_ick = { 1251static struct clk mcspi1_ick = {
1217 .name = "mcspi1_ick", 1252 .name = "mcspi1_ick",
1218 .ops = &clkops_omap2_dflt_wait, 1253 .ops = &clkops_omap2_iclk_dflt_wait,
1219 .parent = &l4_ck, 1254 .parent = &l4_ck,
1220 .clkdm_name = "core_l4_clkdm", 1255 .clkdm_name = "core_l4_clkdm",
1221 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 1256 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1235,7 +1270,7 @@ static struct clk mcspi1_fck = {
1235 1270
1236static struct clk mcspi2_ick = { 1271static struct clk mcspi2_ick = {
1237 .name = "mcspi2_ick", 1272 .name = "mcspi2_ick",
1238 .ops = &clkops_omap2_dflt_wait, 1273 .ops = &clkops_omap2_iclk_dflt_wait,
1239 .parent = &l4_ck, 1274 .parent = &l4_ck,
1240 .clkdm_name = "core_l4_clkdm", 1275 .clkdm_name = "core_l4_clkdm",
1241 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 1276 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1255,7 +1290,7 @@ static struct clk mcspi2_fck = {
1255 1290
1256static struct clk mcspi3_ick = { 1291static struct clk mcspi3_ick = {
1257 .name = "mcspi3_ick", 1292 .name = "mcspi3_ick",
1258 .ops = &clkops_omap2_dflt_wait, 1293 .ops = &clkops_omap2_iclk_dflt_wait,
1259 .parent = &l4_ck, 1294 .parent = &l4_ck,
1260 .clkdm_name = "core_l4_clkdm", 1295 .clkdm_name = "core_l4_clkdm",
1261 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), 1296 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2),
@@ -1275,7 +1310,7 @@ static struct clk mcspi3_fck = {
1275 1310
1276static struct clk uart1_ick = { 1311static struct clk uart1_ick = {
1277 .name = "uart1_ick", 1312 .name = "uart1_ick",
1278 .ops = &clkops_omap2_dflt_wait, 1313 .ops = &clkops_omap2_iclk_dflt_wait,
1279 .parent = &l4_ck, 1314 .parent = &l4_ck,
1280 .clkdm_name = "core_l4_clkdm", 1315 .clkdm_name = "core_l4_clkdm",
1281 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 1316 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1295,7 +1330,7 @@ static struct clk uart1_fck = {
1295 1330
1296static struct clk uart2_ick = { 1331static struct clk uart2_ick = {
1297 .name = "uart2_ick", 1332 .name = "uart2_ick",
1298 .ops = &clkops_omap2_dflt_wait, 1333 .ops = &clkops_omap2_iclk_dflt_wait,
1299 .parent = &l4_ck, 1334 .parent = &l4_ck,
1300 .clkdm_name = "core_l4_clkdm", 1335 .clkdm_name = "core_l4_clkdm",
1301 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 1336 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1315,7 +1350,7 @@ static struct clk uart2_fck = {
1315 1350
1316static struct clk uart3_ick = { 1351static struct clk uart3_ick = {
1317 .name = "uart3_ick", 1352 .name = "uart3_ick",
1318 .ops = &clkops_omap2_dflt_wait, 1353 .ops = &clkops_omap2_iclk_dflt_wait,
1319 .parent = &l4_ck, 1354 .parent = &l4_ck,
1320 .clkdm_name = "core_l4_clkdm", 1355 .clkdm_name = "core_l4_clkdm",
1321 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), 1356 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2),
@@ -1335,9 +1370,9 @@ static struct clk uart3_fck = {
1335 1370
1336static struct clk gpios_ick = { 1371static struct clk gpios_ick = {
1337 .name = "gpios_ick", 1372 .name = "gpios_ick",
1338 .ops = &clkops_omap2_dflt_wait, 1373 .ops = &clkops_omap2_iclk_dflt_wait,
1339 .parent = &l4_ck, 1374 .parent = &wu_l4_ick,
1340 .clkdm_name = "core_l4_clkdm", 1375 .clkdm_name = "wkup_clkdm",
1341 .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), 1376 .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN),
1342 .enable_bit = OMAP24XX_EN_GPIOS_SHIFT, 1377 .enable_bit = OMAP24XX_EN_GPIOS_SHIFT,
1343 .recalc = &followparent_recalc, 1378 .recalc = &followparent_recalc,
@@ -1355,9 +1390,9 @@ static struct clk gpios_fck = {
1355 1390
1356static struct clk mpu_wdt_ick = { 1391static struct clk mpu_wdt_ick = {
1357 .name = "mpu_wdt_ick", 1392 .name = "mpu_wdt_ick",
1358 .ops = &clkops_omap2_dflt_wait, 1393 .ops = &clkops_omap2_iclk_dflt_wait,
1359 .parent = &l4_ck, 1394 .parent = &wu_l4_ick,
1360 .clkdm_name = "core_l4_clkdm", 1395 .clkdm_name = "wkup_clkdm",
1361 .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), 1396 .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN),
1362 .enable_bit = OMAP24XX_EN_MPU_WDT_SHIFT, 1397 .enable_bit = OMAP24XX_EN_MPU_WDT_SHIFT,
1363 .recalc = &followparent_recalc, 1398 .recalc = &followparent_recalc,
@@ -1375,10 +1410,10 @@ static struct clk mpu_wdt_fck = {
1375 1410
1376static struct clk sync_32k_ick = { 1411static struct clk sync_32k_ick = {
1377 .name = "sync_32k_ick", 1412 .name = "sync_32k_ick",
1378 .ops = &clkops_omap2_dflt_wait, 1413 .ops = &clkops_omap2_iclk_dflt_wait,
1379 .parent = &l4_ck,
1380 .flags = ENABLE_ON_INIT, 1414 .flags = ENABLE_ON_INIT,
1381 .clkdm_name = "core_l4_clkdm", 1415 .parent = &wu_l4_ick,
1416 .clkdm_name = "wkup_clkdm",
1382 .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), 1417 .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN),
1383 .enable_bit = OMAP24XX_EN_32KSYNC_SHIFT, 1418 .enable_bit = OMAP24XX_EN_32KSYNC_SHIFT,
1384 .recalc = &followparent_recalc, 1419 .recalc = &followparent_recalc,
@@ -1386,9 +1421,9 @@ static struct clk sync_32k_ick = {
1386 1421
1387static struct clk wdt1_ick = { 1422static struct clk wdt1_ick = {
1388 .name = "wdt1_ick", 1423 .name = "wdt1_ick",
1389 .ops = &clkops_omap2_dflt_wait, 1424 .ops = &clkops_omap2_iclk_dflt_wait,
1390 .parent = &l4_ck, 1425 .parent = &wu_l4_ick,
1391 .clkdm_name = "core_l4_clkdm", 1426 .clkdm_name = "wkup_clkdm",
1392 .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), 1427 .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN),
1393 .enable_bit = OMAP24XX_EN_WDT1_SHIFT, 1428 .enable_bit = OMAP24XX_EN_WDT1_SHIFT,
1394 .recalc = &followparent_recalc, 1429 .recalc = &followparent_recalc,
@@ -1396,10 +1431,10 @@ static struct clk wdt1_ick = {
1396 1431
1397static struct clk omapctrl_ick = { 1432static struct clk omapctrl_ick = {
1398 .name = "omapctrl_ick", 1433 .name = "omapctrl_ick",
1399 .ops = &clkops_omap2_dflt_wait, 1434 .ops = &clkops_omap2_iclk_dflt_wait,
1400 .parent = &l4_ck,
1401 .flags = ENABLE_ON_INIT, 1435 .flags = ENABLE_ON_INIT,
1402 .clkdm_name = "core_l4_clkdm", 1436 .parent = &wu_l4_ick,
1437 .clkdm_name = "wkup_clkdm",
1403 .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), 1438 .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN),
1404 .enable_bit = OMAP24XX_EN_OMAPCTRL_SHIFT, 1439 .enable_bit = OMAP24XX_EN_OMAPCTRL_SHIFT,
1405 .recalc = &followparent_recalc, 1440 .recalc = &followparent_recalc,
@@ -1407,9 +1442,9 @@ static struct clk omapctrl_ick = {
1407 1442
1408static struct clk icr_ick = { 1443static struct clk icr_ick = {
1409 .name = "icr_ick", 1444 .name = "icr_ick",
1410 .ops = &clkops_omap2_dflt_wait, 1445 .ops = &clkops_omap2_iclk_dflt_wait,
1411 .parent = &l4_ck, 1446 .parent = &wu_l4_ick,
1412 .clkdm_name = "core_l4_clkdm", 1447 .clkdm_name = "wkup_clkdm",
1413 .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), 1448 .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN),
1414 .enable_bit = OMAP2430_EN_ICR_SHIFT, 1449 .enable_bit = OMAP2430_EN_ICR_SHIFT,
1415 .recalc = &followparent_recalc, 1450 .recalc = &followparent_recalc,
@@ -1417,7 +1452,7 @@ static struct clk icr_ick = {
1417 1452
1418static struct clk cam_ick = { 1453static struct clk cam_ick = {
1419 .name = "cam_ick", 1454 .name = "cam_ick",
1420 .ops = &clkops_omap2_dflt, 1455 .ops = &clkops_omap2_iclk_dflt,
1421 .parent = &l4_ck, 1456 .parent = &l4_ck,
1422 .clkdm_name = "core_l4_clkdm", 1457 .clkdm_name = "core_l4_clkdm",
1423 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 1458 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1442,7 +1477,7 @@ static struct clk cam_fck = {
1442 1477
1443static struct clk mailboxes_ick = { 1478static struct clk mailboxes_ick = {
1444 .name = "mailboxes_ick", 1479 .name = "mailboxes_ick",
1445 .ops = &clkops_omap2_dflt_wait, 1480 .ops = &clkops_omap2_iclk_dflt_wait,
1446 .parent = &l4_ck, 1481 .parent = &l4_ck,
1447 .clkdm_name = "core_l4_clkdm", 1482 .clkdm_name = "core_l4_clkdm",
1448 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 1483 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1452,7 +1487,7 @@ static struct clk mailboxes_ick = {
1452 1487
1453static struct clk wdt4_ick = { 1488static struct clk wdt4_ick = {
1454 .name = "wdt4_ick", 1489 .name = "wdt4_ick",
1455 .ops = &clkops_omap2_dflt_wait, 1490 .ops = &clkops_omap2_iclk_dflt_wait,
1456 .parent = &l4_ck, 1491 .parent = &l4_ck,
1457 .clkdm_name = "core_l4_clkdm", 1492 .clkdm_name = "core_l4_clkdm",
1458 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 1493 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1472,7 +1507,7 @@ static struct clk wdt4_fck = {
1472 1507
1473static struct clk mspro_ick = { 1508static struct clk mspro_ick = {
1474 .name = "mspro_ick", 1509 .name = "mspro_ick",
1475 .ops = &clkops_omap2_dflt_wait, 1510 .ops = &clkops_omap2_iclk_dflt_wait,
1476 .parent = &l4_ck, 1511 .parent = &l4_ck,
1477 .clkdm_name = "core_l4_clkdm", 1512 .clkdm_name = "core_l4_clkdm",
1478 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 1513 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1492,7 +1527,7 @@ static struct clk mspro_fck = {
1492 1527
1493static struct clk fac_ick = { 1528static struct clk fac_ick = {
1494 .name = "fac_ick", 1529 .name = "fac_ick",
1495 .ops = &clkops_omap2_dflt_wait, 1530 .ops = &clkops_omap2_iclk_dflt_wait,
1496 .parent = &l4_ck, 1531 .parent = &l4_ck,
1497 .clkdm_name = "core_l4_clkdm", 1532 .clkdm_name = "core_l4_clkdm",
1498 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 1533 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1512,7 +1547,7 @@ static struct clk fac_fck = {
1512 1547
1513static struct clk hdq_ick = { 1548static struct clk hdq_ick = {
1514 .name = "hdq_ick", 1549 .name = "hdq_ick",
1515 .ops = &clkops_omap2_dflt_wait, 1550 .ops = &clkops_omap2_iclk_dflt_wait,
1516 .parent = &l4_ck, 1551 .parent = &l4_ck,
1517 .clkdm_name = "core_l4_clkdm", 1552 .clkdm_name = "core_l4_clkdm",
1518 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 1553 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1536,7 +1571,7 @@ static struct clk hdq_fck = {
1536 */ 1571 */
1537static struct clk i2c2_ick = { 1572static struct clk i2c2_ick = {
1538 .name = "i2c2_ick", 1573 .name = "i2c2_ick",
1539 .ops = &clkops_omap2_dflt_wait, 1574 .ops = &clkops_omap2_iclk_dflt_wait,
1540 .parent = &l4_ck, 1575 .parent = &l4_ck,
1541 .clkdm_name = "core_l4_clkdm", 1576 .clkdm_name = "core_l4_clkdm",
1542 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 1577 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1560,7 +1595,7 @@ static struct clk i2chs2_fck = {
1560 */ 1595 */
1561static struct clk i2c1_ick = { 1596static struct clk i2c1_ick = {
1562 .name = "i2c1_ick", 1597 .name = "i2c1_ick",
1563 .ops = &clkops_omap2_dflt_wait, 1598 .ops = &clkops_omap2_iclk_dflt_wait,
1564 .parent = &l4_ck, 1599 .parent = &l4_ck,
1565 .clkdm_name = "core_l4_clkdm", 1600 .clkdm_name = "core_l4_clkdm",
1566 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), 1601 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1578,12 +1613,18 @@ static struct clk i2chs1_fck = {
1578 .recalc = &followparent_recalc, 1613 .recalc = &followparent_recalc,
1579}; 1614};
1580 1615
1616/*
1617 * The enable_reg/enable_bit in this clock is only used for CM_AUTOIDLE
1618 * accesses derived from this data.
1619 */
1581static struct clk gpmc_fck = { 1620static struct clk gpmc_fck = {
1582 .name = "gpmc_fck", 1621 .name = "gpmc_fck",
1583 .ops = &clkops_null, /* RMK: missing? */ 1622 .ops = &clkops_omap2_iclk_idle_only,
1584 .parent = &core_l3_ck, 1623 .parent = &core_l3_ck,
1585 .flags = ENABLE_ON_INIT, 1624 .flags = ENABLE_ON_INIT,
1586 .clkdm_name = "core_l3_clkdm", 1625 .clkdm_name = "core_l3_clkdm",
1626 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN3),
1627 .enable_bit = OMAP24XX_AUTO_GPMC_SHIFT,
1587 .recalc = &followparent_recalc, 1628 .recalc = &followparent_recalc,
1588}; 1629};
1589 1630
@@ -1595,20 +1636,26 @@ static struct clk sdma_fck = {
1595 .recalc = &followparent_recalc, 1636 .recalc = &followparent_recalc,
1596}; 1637};
1597 1638
1639/*
1640 * The enable_reg/enable_bit in this clock is only used for CM_AUTOIDLE
1641 * accesses derived from this data.
1642 */
1598static struct clk sdma_ick = { 1643static struct clk sdma_ick = {
1599 .name = "sdma_ick", 1644 .name = "sdma_ick",
1600 .ops = &clkops_null, /* RMK: missing? */ 1645 .ops = &clkops_omap2_iclk_idle_only,
1601 .parent = &l4_ck, 1646 .parent = &core_l3_ck,
1602 .clkdm_name = "core_l3_clkdm", 1647 .clkdm_name = "core_l3_clkdm",
1648 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN3),
1649 .enable_bit = OMAP24XX_AUTO_SDMA_SHIFT,
1603 .recalc = &followparent_recalc, 1650 .recalc = &followparent_recalc,
1604}; 1651};
1605 1652
1606static struct clk sdrc_ick = { 1653static struct clk sdrc_ick = {
1607 .name = "sdrc_ick", 1654 .name = "sdrc_ick",
1608 .ops = &clkops_omap2_dflt_wait, 1655 .ops = &clkops_omap2_iclk_idle_only,
1609 .parent = &l4_ck, 1656 .parent = &core_l3_ck,
1610 .flags = ENABLE_ON_INIT, 1657 .flags = ENABLE_ON_INIT,
1611 .clkdm_name = "core_l4_clkdm", 1658 .clkdm_name = "core_l3_clkdm",
1612 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN3), 1659 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN3),
1613 .enable_bit = OMAP2430_EN_SDRC_SHIFT, 1660 .enable_bit = OMAP2430_EN_SDRC_SHIFT,
1614 .recalc = &followparent_recalc, 1661 .recalc = &followparent_recalc,
@@ -1616,7 +1663,7 @@ static struct clk sdrc_ick = {
1616 1663
1617static struct clk des_ick = { 1664static struct clk des_ick = {
1618 .name = "des_ick", 1665 .name = "des_ick",
1619 .ops = &clkops_omap2_dflt_wait, 1666 .ops = &clkops_omap2_iclk_dflt_wait,
1620 .parent = &l4_ck, 1667 .parent = &l4_ck,
1621 .clkdm_name = "core_l4_clkdm", 1668 .clkdm_name = "core_l4_clkdm",
1622 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4), 1669 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4),
@@ -1626,7 +1673,7 @@ static struct clk des_ick = {
1626 1673
1627static struct clk sha_ick = { 1674static struct clk sha_ick = {
1628 .name = "sha_ick", 1675 .name = "sha_ick",
1629 .ops = &clkops_omap2_dflt_wait, 1676 .ops = &clkops_omap2_iclk_dflt_wait,
1630 .parent = &l4_ck, 1677 .parent = &l4_ck,
1631 .clkdm_name = "core_l4_clkdm", 1678 .clkdm_name = "core_l4_clkdm",
1632 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4), 1679 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4),
@@ -1636,7 +1683,7 @@ static struct clk sha_ick = {
1636 1683
1637static struct clk rng_ick = { 1684static struct clk rng_ick = {
1638 .name = "rng_ick", 1685 .name = "rng_ick",
1639 .ops = &clkops_omap2_dflt_wait, 1686 .ops = &clkops_omap2_iclk_dflt_wait,
1640 .parent = &l4_ck, 1687 .parent = &l4_ck,
1641 .clkdm_name = "core_l4_clkdm", 1688 .clkdm_name = "core_l4_clkdm",
1642 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4), 1689 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4),
@@ -1646,7 +1693,7 @@ static struct clk rng_ick = {
1646 1693
1647static struct clk aes_ick = { 1694static struct clk aes_ick = {
1648 .name = "aes_ick", 1695 .name = "aes_ick",
1649 .ops = &clkops_omap2_dflt_wait, 1696 .ops = &clkops_omap2_iclk_dflt_wait,
1650 .parent = &l4_ck, 1697 .parent = &l4_ck,
1651 .clkdm_name = "core_l4_clkdm", 1698 .clkdm_name = "core_l4_clkdm",
1652 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4), 1699 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4),
@@ -1656,7 +1703,7 @@ static struct clk aes_ick = {
1656 1703
1657static struct clk pka_ick = { 1704static struct clk pka_ick = {
1658 .name = "pka_ick", 1705 .name = "pka_ick",
1659 .ops = &clkops_omap2_dflt_wait, 1706 .ops = &clkops_omap2_iclk_dflt_wait,
1660 .parent = &l4_ck, 1707 .parent = &l4_ck,
1661 .clkdm_name = "core_l4_clkdm", 1708 .clkdm_name = "core_l4_clkdm",
1662 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4), 1709 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4),
@@ -1676,7 +1723,7 @@ static struct clk usb_fck = {
1676 1723
1677static struct clk usbhs_ick = { 1724static struct clk usbhs_ick = {
1678 .name = "usbhs_ick", 1725 .name = "usbhs_ick",
1679 .ops = &clkops_omap2_dflt_wait, 1726 .ops = &clkops_omap2_iclk_dflt_wait,
1680 .parent = &core_l3_ck, 1727 .parent = &core_l3_ck,
1681 .clkdm_name = "core_l3_clkdm", 1728 .clkdm_name = "core_l3_clkdm",
1682 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), 1729 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2),
@@ -1686,7 +1733,7 @@ static struct clk usbhs_ick = {
1686 1733
1687static struct clk mmchs1_ick = { 1734static struct clk mmchs1_ick = {
1688 .name = "mmchs1_ick", 1735 .name = "mmchs1_ick",
1689 .ops = &clkops_omap2_dflt_wait, 1736 .ops = &clkops_omap2_iclk_dflt_wait,
1690 .parent = &l4_ck, 1737 .parent = &l4_ck,
1691 .clkdm_name = "core_l4_clkdm", 1738 .clkdm_name = "core_l4_clkdm",
1692 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), 1739 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2),
@@ -1698,7 +1745,7 @@ static struct clk mmchs1_fck = {
1698 .name = "mmchs1_fck", 1745 .name = "mmchs1_fck",
1699 .ops = &clkops_omap2_dflt_wait, 1746 .ops = &clkops_omap2_dflt_wait,
1700 .parent = &func_96m_ck, 1747 .parent = &func_96m_ck,
1701 .clkdm_name = "core_l3_clkdm", 1748 .clkdm_name = "core_l4_clkdm",
1702 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2), 1749 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2),
1703 .enable_bit = OMAP2430_EN_MMCHS1_SHIFT, 1750 .enable_bit = OMAP2430_EN_MMCHS1_SHIFT,
1704 .recalc = &followparent_recalc, 1751 .recalc = &followparent_recalc,
@@ -1706,7 +1753,7 @@ static struct clk mmchs1_fck = {
1706 1753
1707static struct clk mmchs2_ick = { 1754static struct clk mmchs2_ick = {
1708 .name = "mmchs2_ick", 1755 .name = "mmchs2_ick",
1709 .ops = &clkops_omap2_dflt_wait, 1756 .ops = &clkops_omap2_iclk_dflt_wait,
1710 .parent = &l4_ck, 1757 .parent = &l4_ck,
1711 .clkdm_name = "core_l4_clkdm", 1758 .clkdm_name = "core_l4_clkdm",
1712 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), 1759 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2),
@@ -1718,6 +1765,7 @@ static struct clk mmchs2_fck = {
1718 .name = "mmchs2_fck", 1765 .name = "mmchs2_fck",
1719 .ops = &clkops_omap2_dflt_wait, 1766 .ops = &clkops_omap2_dflt_wait,
1720 .parent = &func_96m_ck, 1767 .parent = &func_96m_ck,
1768 .clkdm_name = "core_l4_clkdm",
1721 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2), 1769 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2),
1722 .enable_bit = OMAP2430_EN_MMCHS2_SHIFT, 1770 .enable_bit = OMAP2430_EN_MMCHS2_SHIFT,
1723 .recalc = &followparent_recalc, 1771 .recalc = &followparent_recalc,
@@ -1725,7 +1773,7 @@ static struct clk mmchs2_fck = {
1725 1773
1726static struct clk gpio5_ick = { 1774static struct clk gpio5_ick = {
1727 .name = "gpio5_ick", 1775 .name = "gpio5_ick",
1728 .ops = &clkops_omap2_dflt_wait, 1776 .ops = &clkops_omap2_iclk_dflt_wait,
1729 .parent = &l4_ck, 1777 .parent = &l4_ck,
1730 .clkdm_name = "core_l4_clkdm", 1778 .clkdm_name = "core_l4_clkdm",
1731 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), 1779 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2),
@@ -1745,7 +1793,7 @@ static struct clk gpio5_fck = {
1745 1793
1746static struct clk mdm_intc_ick = { 1794static struct clk mdm_intc_ick = {
1747 .name = "mdm_intc_ick", 1795 .name = "mdm_intc_ick",
1748 .ops = &clkops_omap2_dflt_wait, 1796 .ops = &clkops_omap2_iclk_dflt_wait,
1749 .parent = &l4_ck, 1797 .parent = &l4_ck,
1750 .clkdm_name = "core_l4_clkdm", 1798 .clkdm_name = "core_l4_clkdm",
1751 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), 1799 .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2),
@@ -1808,6 +1856,12 @@ static struct omap_clk omap2430_clks[] = {
1808 CLK(NULL, "osc_ck", &osc_ck, CK_243X), 1856 CLK(NULL, "osc_ck", &osc_ck, CK_243X),
1809 CLK(NULL, "sys_ck", &sys_ck, CK_243X), 1857 CLK(NULL, "sys_ck", &sys_ck, CK_243X),
1810 CLK(NULL, "alt_ck", &alt_ck, CK_243X), 1858 CLK(NULL, "alt_ck", &alt_ck, CK_243X),
1859 CLK("omap-mcbsp.1", "pad_fck", &mcbsp_clks, CK_243X),
1860 CLK("omap-mcbsp.2", "pad_fck", &mcbsp_clks, CK_243X),
1861 CLK("omap-mcbsp.3", "pad_fck", &mcbsp_clks, CK_243X),
1862 CLK("omap-mcbsp.4", "pad_fck", &mcbsp_clks, CK_243X),
1863 CLK("omap-mcbsp.5", "pad_fck", &mcbsp_clks, CK_243X),
1864 CLK(NULL, "mcbsp_clks", &mcbsp_clks, CK_243X),
1811 /* internal analog sources */ 1865 /* internal analog sources */
1812 CLK(NULL, "dpll_ck", &dpll_ck, CK_243X), 1866 CLK(NULL, "dpll_ck", &dpll_ck, CK_243X),
1813 CLK(NULL, "apll96_ck", &apll96_ck, CK_243X), 1867 CLK(NULL, "apll96_ck", &apll96_ck, CK_243X),
@@ -1815,6 +1869,11 @@ static struct omap_clk omap2430_clks[] = {
1815 /* internal prcm root sources */ 1869 /* internal prcm root sources */
1816 CLK(NULL, "func_54m_ck", &func_54m_ck, CK_243X), 1870 CLK(NULL, "func_54m_ck", &func_54m_ck, CK_243X),
1817 CLK(NULL, "core_ck", &core_ck, CK_243X), 1871 CLK(NULL, "core_ck", &core_ck, CK_243X),
1872 CLK("omap-mcbsp.1", "prcm_fck", &func_96m_ck, CK_243X),
1873 CLK("omap-mcbsp.2", "prcm_fck", &func_96m_ck, CK_243X),
1874 CLK("omap-mcbsp.3", "prcm_fck", &func_96m_ck, CK_243X),
1875 CLK("omap-mcbsp.4", "prcm_fck", &func_96m_ck, CK_243X),
1876 CLK("omap-mcbsp.5", "prcm_fck", &func_96m_ck, CK_243X),
1818 CLK(NULL, "func_96m_ck", &func_96m_ck, CK_243X), 1877 CLK(NULL, "func_96m_ck", &func_96m_ck, CK_243X),
1819 CLK(NULL, "func_48m_ck", &func_48m_ck, CK_243X), 1878 CLK(NULL, "func_48m_ck", &func_48m_ck, CK_243X),
1820 CLK(NULL, "func_12m_ck", &func_12m_ck, CK_243X), 1879 CLK(NULL, "func_12m_ck", &func_12m_ck, CK_243X),
@@ -1826,7 +1885,6 @@ static struct omap_clk omap2430_clks[] = {
1826 CLK(NULL, "mpu_ck", &mpu_ck, CK_243X), 1885 CLK(NULL, "mpu_ck", &mpu_ck, CK_243X),
1827 /* dsp domain clocks */ 1886 /* dsp domain clocks */
1828 CLK(NULL, "dsp_fck", &dsp_fck, CK_243X), 1887 CLK(NULL, "dsp_fck", &dsp_fck, CK_243X),
1829 CLK(NULL, "dsp_irate_ick", &dsp_irate_ick, CK_243X),
1830 CLK(NULL, "iva2_1_ick", &iva2_1_ick, CK_243X), 1888 CLK(NULL, "iva2_1_ick", &iva2_1_ick, CK_243X),
1831 /* GFX domain clocks */ 1889 /* GFX domain clocks */
1832 CLK(NULL, "gfx_3d_fck", &gfx_3d_fck, CK_243X), 1890 CLK(NULL, "gfx_3d_fck", &gfx_3d_fck, CK_243X),
@@ -1836,10 +1894,10 @@ static struct omap_clk omap2430_clks[] = {
1836 CLK(NULL, "mdm_ick", &mdm_ick, CK_243X), 1894 CLK(NULL, "mdm_ick", &mdm_ick, CK_243X),
1837 CLK(NULL, "mdm_osc_ck", &mdm_osc_ck, CK_243X), 1895 CLK(NULL, "mdm_osc_ck", &mdm_osc_ck, CK_243X),
1838 /* DSS domain clocks */ 1896 /* DSS domain clocks */
1839 CLK("omapdss", "ick", &dss_ick, CK_243X), 1897 CLK("omapdss_dss", "ick", &dss_ick, CK_243X),
1840 CLK("omapdss", "dss1_fck", &dss1_fck, CK_243X), 1898 CLK("omapdss_dss", "fck", &dss1_fck, CK_243X),
1841 CLK("omapdss", "dss2_fck", &dss2_fck, CK_243X), 1899 CLK("omapdss_dss", "sys_clk", &dss2_fck, CK_243X),
1842 CLK("omapdss", "tv_fck", &dss_54m_fck, CK_243X), 1900 CLK("omapdss_dss", "tv_clk", &dss_54m_fck, CK_243X),
1843 /* L3 domain clocks */ 1901 /* L3 domain clocks */
1844 CLK(NULL, "core_l3_ck", &core_l3_ck, CK_243X), 1902 CLK(NULL, "core_l3_ck", &core_l3_ck, CK_243X),
1845 CLK(NULL, "ssi_fck", &ssi_ssr_sst_fck, CK_243X), 1903 CLK(NULL, "ssi_fck", &ssi_ssr_sst_fck, CK_243X),
@@ -1847,6 +1905,7 @@ static struct omap_clk omap2430_clks[] = {
1847 /* L4 domain clocks */ 1905 /* L4 domain clocks */
1848 CLK(NULL, "l4_ck", &l4_ck, CK_243X), 1906 CLK(NULL, "l4_ck", &l4_ck, CK_243X),
1849 CLK(NULL, "ssi_l4_ick", &ssi_l4_ick, CK_243X), 1907 CLK(NULL, "ssi_l4_ick", &ssi_l4_ick, CK_243X),
1908 CLK(NULL, "wu_l4_ick", &wu_l4_ick, CK_243X),
1850 /* virtual meta-group clock */ 1909 /* virtual meta-group clock */
1851 CLK(NULL, "virt_prcm_set", &virt_prcm_set, CK_243X), 1910 CLK(NULL, "virt_prcm_set", &virt_prcm_set, CK_243X),
1852 /* general l4 interface ck, multi-parent functional clk */ 1911 /* general l4 interface ck, multi-parent functional clk */
@@ -1915,10 +1974,10 @@ static struct omap_clk omap2430_clks[] = {
1915 CLK(NULL, "fac_fck", &fac_fck, CK_243X), 1974 CLK(NULL, "fac_fck", &fac_fck, CK_243X),
1916 CLK("omap_hdq.0", "ick", &hdq_ick, CK_243X), 1975 CLK("omap_hdq.0", "ick", &hdq_ick, CK_243X),
1917 CLK("omap_hdq.1", "fck", &hdq_fck, CK_243X), 1976 CLK("omap_hdq.1", "fck", &hdq_fck, CK_243X),
1918 CLK("i2c_omap.1", "ick", &i2c1_ick, CK_243X), 1977 CLK("omap_i2c.1", "ick", &i2c1_ick, CK_243X),
1919 CLK("i2c_omap.1", "fck", &i2chs1_fck, CK_243X), 1978 CLK("omap_i2c.1", "fck", &i2chs1_fck, CK_243X),
1920 CLK("i2c_omap.2", "ick", &i2c2_ick, CK_243X), 1979 CLK("omap_i2c.2", "ick", &i2c2_ick, CK_243X),
1921 CLK("i2c_omap.2", "fck", &i2chs2_fck, CK_243X), 1980 CLK("omap_i2c.2", "fck", &i2chs2_fck, CK_243X),
1922 CLK(NULL, "gpmc_fck", &gpmc_fck, CK_243X), 1981 CLK(NULL, "gpmc_fck", &gpmc_fck, CK_243X),
1923 CLK(NULL, "sdma_fck", &sdma_fck, CK_243X), 1982 CLK(NULL, "sdma_fck", &sdma_fck, CK_243X),
1924 CLK(NULL, "sdma_ick", &sdma_ick, CK_243X), 1983 CLK(NULL, "sdma_ick", &sdma_ick, CK_243X),
@@ -1926,19 +1985,19 @@ static struct omap_clk omap2430_clks[] = {
1926 CLK(NULL, "des_ick", &des_ick, CK_243X), 1985 CLK(NULL, "des_ick", &des_ick, CK_243X),
1927 CLK("omap-sham", "ick", &sha_ick, CK_243X), 1986 CLK("omap-sham", "ick", &sha_ick, CK_243X),
1928 CLK("omap_rng", "ick", &rng_ick, CK_243X), 1987 CLK("omap_rng", "ick", &rng_ick, CK_243X),
1929 CLK(NULL, "aes_ick", &aes_ick, CK_243X), 1988 CLK("omap-aes", "ick", &aes_ick, CK_243X),
1930 CLK(NULL, "pka_ick", &pka_ick, CK_243X), 1989 CLK(NULL, "pka_ick", &pka_ick, CK_243X),
1931 CLK(NULL, "usb_fck", &usb_fck, CK_243X), 1990 CLK(NULL, "usb_fck", &usb_fck, CK_243X),
1932 CLK("musb_hdrc", "ick", &usbhs_ick, CK_243X), 1991 CLK("musb-omap2430", "ick", &usbhs_ick, CK_243X),
1933 CLK("mmci-omap-hs.0", "ick", &mmchs1_ick, CK_243X), 1992 CLK("omap_hsmmc.0", "ick", &mmchs1_ick, CK_243X),
1934 CLK("mmci-omap-hs.0", "fck", &mmchs1_fck, CK_243X), 1993 CLK("omap_hsmmc.0", "fck", &mmchs1_fck, CK_243X),
1935 CLK("mmci-omap-hs.1", "ick", &mmchs2_ick, CK_243X), 1994 CLK("omap_hsmmc.1", "ick", &mmchs2_ick, CK_243X),
1936 CLK("mmci-omap-hs.1", "fck", &mmchs2_fck, CK_243X), 1995 CLK("omap_hsmmc.1", "fck", &mmchs2_fck, CK_243X),
1937 CLK(NULL, "gpio5_ick", &gpio5_ick, CK_243X), 1996 CLK(NULL, "gpio5_ick", &gpio5_ick, CK_243X),
1938 CLK(NULL, "gpio5_fck", &gpio5_fck, CK_243X), 1997 CLK(NULL, "gpio5_fck", &gpio5_fck, CK_243X),
1939 CLK(NULL, "mdm_intc_ick", &mdm_intc_ick, CK_243X), 1998 CLK(NULL, "mdm_intc_ick", &mdm_intc_ick, CK_243X),
1940 CLK("mmci-omap-hs.0", "mmchsdb_fck", &mmchsdb1_fck, CK_243X), 1999 CLK("omap_hsmmc.0", "mmchsdb_fck", &mmchsdb1_fck, CK_243X),
1941 CLK("mmci-omap-hs.1", "mmchsdb_fck", &mmchsdb2_fck, CK_243X), 2000 CLK("omap_hsmmc.1", "mmchsdb_fck", &mmchsdb2_fck, CK_243X),
1942}; 2001};
1943 2002
1944/* 2003/*
@@ -1974,6 +2033,9 @@ int __init omap2430_clk_init(void)
1974 omap2_init_clk_clkdm(c->lk.clk); 2033 omap2_init_clk_clkdm(c->lk.clk);
1975 } 2034 }
1976 2035
2036 /* Disable autoidle on all clocks; let the PM code enable it later */
2037 omap_clk_disable_autoidle_all();
2038
1977 /* Check the MPU rate set by bootloader */ 2039 /* Check the MPU rate set by bootloader */
1978 clkrate = omap2xxx_clk_get_core_rate(&dpll_ck); 2040 clkrate = omap2xxx_clk_get_core_rate(&dpll_ck);
1979 for (prcm = rate_table; prcm->mpu_speed; prcm++) { 2041 for (prcm = rate_table; prcm->mpu_speed; prcm++) {