]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/arm/mach-omap2/clock34xx.h
[ARM] omap: add default .ops to all remaining OMAP2 clocks
[linux-2.6-omap-h63xx.git] / arch / arm / mach-omap2 / clock34xx.h
index c38a8a09692ff3748d24208eca1ee492fe967020..0d6a11ca132dfaf06943e2e4ebefb09359a546d7 100644 (file)
@@ -32,8 +32,6 @@ static void omap3_clkoutx2_recalc(struct clk *clk);
 static void omap3_dpll_allow_idle(struct clk *clk);
 static void omap3_dpll_deny_idle(struct clk *clk);
 static u32 omap3_dpll_autoidle_read(struct clk *clk);
-static int omap3_noncore_dpll_enable(struct clk *clk);
-static void omap3_noncore_dpll_disable(struct clk *clk);
 
 /* Maximum DPLL multiplier, divider values for OMAP3 */
 #define OMAP3_MAX_DPLL_MULT            2048
@@ -57,66 +55,66 @@ static void omap3_noncore_dpll_disable(struct clk *clk);
 /* According to timer32k.c, this is a 32768Hz clock, not a 32000Hz clock. */
 static struct clk omap_32k_fck = {
        .name           = "omap_32k_fck",
+       .ops            = &clkops_null,
        .rate           = 32768,
-       .flags          = CLOCK_IN_OMAP343X | RATE_FIXED | RATE_PROPAGATES |
-                               ALWAYS_ENABLED,
+       .flags          = CLOCK_IN_OMAP343X | RATE_FIXED | RATE_PROPAGATES,
        .recalc         = &propagate_rate,
 };
 
 static struct clk secure_32k_fck = {
        .name           = "secure_32k_fck",
+       .ops            = &clkops_null,
        .rate           = 32768,
-       .flags          = CLOCK_IN_OMAP343X | RATE_FIXED | RATE_PROPAGATES |
-                               ALWAYS_ENABLED,
+       .flags          = CLOCK_IN_OMAP343X | RATE_FIXED | RATE_PROPAGATES,
        .recalc         = &propagate_rate,
 };
 
 /* Virtual source clocks for osc_sys_ck */
 static struct clk virt_12m_ck = {
        .name           = "virt_12m_ck",
+       .ops            = &clkops_null,
        .rate           = 12000000,
-       .flags          = CLOCK_IN_OMAP343X | RATE_FIXED | RATE_PROPAGATES |
-                               ALWAYS_ENABLED,
+       .flags          = CLOCK_IN_OMAP343X | RATE_FIXED | RATE_PROPAGATES,
        .recalc         = &propagate_rate,
 };
 
 static struct clk virt_13m_ck = {
        .name           = "virt_13m_ck",
+       .ops            = &clkops_null,
        .rate           = 13000000,
-       .flags          = CLOCK_IN_OMAP343X | RATE_FIXED | RATE_PROPAGATES |
-                               ALWAYS_ENABLED,
+       .flags          = CLOCK_IN_OMAP343X | RATE_FIXED | RATE_PROPAGATES,
        .recalc         = &propagate_rate,
 };
 
 static struct clk virt_16_8m_ck = {
        .name           = "virt_16_8m_ck",
+       .ops            = &clkops_null,
        .rate           = 16800000,
-       .flags          = CLOCK_IN_OMAP3430ES2 | RATE_FIXED | RATE_PROPAGATES |
-                               ALWAYS_ENABLED,
+       .flags          = CLOCK_IN_OMAP3430ES2 | RATE_FIXED | RATE_PROPAGATES,
        .recalc         = &propagate_rate,
 };
 
 static struct clk virt_19_2m_ck = {
        .name           = "virt_19_2m_ck",
+       .ops            = &clkops_null,
        .rate           = 19200000,
-       .flags          = CLOCK_IN_OMAP343X | RATE_FIXED | RATE_PROPAGATES |
-                               ALWAYS_ENABLED,
+       .flags          = CLOCK_IN_OMAP343X | RATE_FIXED | RATE_PROPAGATES,
        .recalc         = &propagate_rate,
 };
 
 static struct clk virt_26m_ck = {
        .name           = "virt_26m_ck",
+       .ops            = &clkops_null,
        .rate           = 26000000,
-       .flags          = CLOCK_IN_OMAP343X | RATE_FIXED | RATE_PROPAGATES |
-                               ALWAYS_ENABLED,
+       .flags          = CLOCK_IN_OMAP343X | RATE_FIXED | RATE_PROPAGATES,
        .recalc         = &propagate_rate,
 };
 
 static struct clk virt_38_4m_ck = {
        .name           = "virt_38_4m_ck",
+       .ops            = &clkops_null,
        .rate           = 38400000,
-       .flags          = CLOCK_IN_OMAP343X | RATE_FIXED | RATE_PROPAGATES |
-                               ALWAYS_ENABLED,
+       .flags          = CLOCK_IN_OMAP343X | RATE_FIXED | RATE_PROPAGATES,
        .recalc         = &propagate_rate,
 };
 
@@ -164,13 +162,13 @@ static const struct clksel osc_sys_clksel[] = {
 /* 12, 13, 16.8, 19.2, 26, or 38.4 MHz */
 static struct clk osc_sys_ck = {
        .name           = "osc_sys_ck",
+       .ops            = &clkops_null,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP3430_PRM_CLKSEL,
        .clksel_mask    = OMAP3430_SYS_CLKIN_SEL_MASK,
        .clksel         = osc_sys_clksel,
        /* REVISIT: deal with autoextclkmode? */
-       .flags          = CLOCK_IN_OMAP343X | RATE_FIXED | RATE_PROPAGATES |
-                               ALWAYS_ENABLED,
+       .flags          = CLOCK_IN_OMAP343X | RATE_FIXED | RATE_PROPAGATES,
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -189,25 +187,28 @@ static const struct clksel sys_clksel[] = {
 /* Feeds DPLLs - divided first by PRM_CLKSRC_CTRL.SYSCLKDIV? */
 static struct clk sys_ck = {
        .name           = "sys_ck",
+       .ops            = &clkops_null,
        .parent         = &osc_sys_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP3430_PRM_CLKSRC_CTRL,
        .clksel_mask    = OMAP_SYSCLKDIV_MASK,
        .clksel         = sys_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &omap2_clksel_recalc,
 };
 
 static struct clk sys_altclk = {
        .name           = "sys_altclk",
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED,
+       .ops            = &clkops_null,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &propagate_rate,
 };
 
 /* Optional external clock input for some McBSPs */
 static struct clk mcbsp_clks = {
        .name           = "mcbsp_clks",
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED,
+       .ops            = &clkops_null,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &propagate_rate,
 };
 
@@ -215,6 +216,7 @@ static struct clk mcbsp_clks = {
 
 static struct clk sys_clkout1 = {
        .name           = "sys_clkout1",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &osc_sys_ck,
        .enable_reg     = OMAP3430_PRM_CLKOUT_CTRL,
        .enable_bit     = OMAP3430_CLKOUT_EN_SHIFT,
@@ -280,9 +282,10 @@ static struct dpll_data dpll1_dd = {
 
 static struct clk dpll1_ck = {
        .name           = "dpll1_ck",
+       .ops            = &clkops_null,
        .parent         = &sys_ck,
        .dpll_data      = &dpll1_dd,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .round_rate     = &omap2_dpll_round_rate,
        .recalc         = &omap3_dpll_recalc,
 };
@@ -293,9 +296,9 @@ static struct clk dpll1_ck = {
  */
 static struct clk dpll1_x2_ck = {
        .name           = "dpll1_x2_ck",
+       .ops            = &clkops_null,
        .parent         = &dpll1_ck,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &omap3_clkoutx2_recalc,
 };
 
@@ -311,13 +314,13 @@ static const struct clksel div16_dpll1_x2m2_clksel[] = {
  */
 static struct clk dpll1_x2m2_ck = {
        .name           = "dpll1_x2m2_ck",
+       .ops            = &clkops_null,
        .parent         = &dpll1_x2_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(MPU_MOD, OMAP3430_CM_CLKSEL2_PLL),
        .clksel_mask    = OMAP3430_MPU_DPLL_CLKOUT_DIV_MASK,
        .clksel         = div16_dpll1_x2m2_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -347,11 +350,10 @@ static struct dpll_data dpll2_dd = {
 
 static struct clk dpll2_ck = {
        .name           = "dpll2_ck",
+       .ops            = &clkops_noncore_dpll_ops,
        .parent         = &sys_ck,
        .dpll_data      = &dpll2_dd,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
-       .enable         = &omap3_noncore_dpll_enable,
-       .disable        = &omap3_noncore_dpll_disable,
        .round_rate     = &omap2_dpll_round_rate,
        .recalc         = &omap3_dpll_recalc,
 };
@@ -367,14 +369,14 @@ static const struct clksel div16_dpll2_m2x2_clksel[] = {
  */
 static struct clk dpll2_m2_ck = {
        .name           = "dpll2_m2_ck",
+       .ops            = &clkops_null,
        .parent         = &dpll2_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(OMAP3430_IVA2_MOD,
                                          OMAP3430_CM_CLKSEL2_PLL),
        .clksel_mask    = OMAP3430_IVA2_DPLL_CLKOUT_DIV_MASK,
        .clksel         = div16_dpll2_m2x2_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -401,9 +403,10 @@ static struct dpll_data dpll3_dd = {
 
 static struct clk dpll3_ck = {
        .name           = "dpll3_ck",
+       .ops            = &clkops_null,
        .parent         = &sys_ck,
        .dpll_data      = &dpll3_dd,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .round_rate     = &omap2_dpll_round_rate,
        .recalc         = &omap3_dpll_recalc,
 };
@@ -414,9 +417,9 @@ static struct clk dpll3_ck = {
  */
 static struct clk dpll3_x2_ck = {
        .name           = "dpll3_x2_ck",
+       .ops            = &clkops_null,
        .parent         = &dpll3_ck,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &omap3_clkoutx2_recalc,
 };
 
@@ -467,13 +470,13 @@ static const struct clksel div31_dpll3m2_clksel[] = {
  */
 static struct clk dpll3_m2_ck = {
        .name           = "dpll3_m2_ck",
+       .ops            = &clkops_null,
        .parent         = &dpll3_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL1),
        .clksel_mask    = OMAP3430_CORE_DPLL_CLKOUT_DIV_MASK,
        .clksel         = div31_dpll3m2_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -485,12 +488,12 @@ static const struct clksel core_ck_clksel[] = {
 
 static struct clk core_ck = {
        .name           = "core_ck",
+       .ops            = &clkops_null,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST),
        .clksel_mask    = OMAP3430_ST_CORE_CLK_MASK,
        .clksel         = core_ck_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -502,12 +505,12 @@ static const struct clksel dpll3_m2x2_ck_clksel[] = {
 
 static struct clk dpll3_m2x2_ck = {
        .name           = "dpll3_m2x2_ck",
+       .ops            = &clkops_null,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST),
        .clksel_mask    = OMAP3430_ST_CORE_CLK_MASK,
        .clksel         = dpll3_m2x2_ck_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -520,19 +523,20 @@ static const struct clksel div16_dpll3_clksel[] = {
 /* This virtual clock is the source for dpll3_m3x2_ck */
 static struct clk dpll3_m3_ck = {
        .name           = "dpll3_m3_ck",
+       .ops            = &clkops_null,
        .parent         = &dpll3_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(OMAP3430_EMU_MOD, CM_CLKSEL1),
        .clksel_mask    = OMAP3430_DIV_DPLL3_MASK,
        .clksel         = div16_dpll3_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &omap2_clksel_recalc,
 };
 
 /* The PWRDN bit is apparently only available on 3430ES2 and above */
 static struct clk dpll3_m3x2_ck = {
        .name           = "dpll3_m3x2_ck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &dpll3_m3_ck,
        .enable_reg     = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN),
        .enable_bit     = OMAP3430_PWRDN_EMU_CORE_SHIFT,
@@ -548,13 +552,13 @@ static const struct clksel emu_core_alwon_ck_clksel[] = {
 
 static struct clk emu_core_alwon_ck = {
        .name           = "emu_core_alwon_ck",
+       .ops            = &clkops_null,
        .parent         = &dpll3_m3x2_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST),
        .clksel_mask    = OMAP3430_ST_CORE_CLK_MASK,
        .clksel         = emu_core_alwon_ck_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -582,11 +586,10 @@ static struct dpll_data dpll4_dd = {
 
 static struct clk dpll4_ck = {
        .name           = "dpll4_ck",
+       .ops            = &clkops_noncore_dpll_ops,
        .parent         = &sys_ck,
        .dpll_data      = &dpll4_dd,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
-       .enable         = &omap3_noncore_dpll_enable,
-       .disable        = &omap3_noncore_dpll_disable,
        .round_rate     = &omap2_dpll_round_rate,
        .recalc         = &omap3_dpll_recalc,
 };
@@ -598,9 +601,9 @@ static struct clk dpll4_ck = {
  */
 static struct clk dpll4_x2_ck = {
        .name           = "dpll4_x2_ck",
+       .ops            = &clkops_null,
        .parent         = &dpll4_ck,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &omap3_clkoutx2_recalc,
 };
 
@@ -612,19 +615,20 @@ static const struct clksel div16_dpll4_clksel[] = {
 /* This virtual clock is the source for dpll4_m2x2_ck */
 static struct clk dpll4_m2_ck = {
        .name           = "dpll4_m2_ck",
+       .ops            = &clkops_null,
        .parent         = &dpll4_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(PLL_MOD, OMAP3430_CM_CLKSEL3),
        .clksel_mask    = OMAP3430_DIV_96M_MASK,
        .clksel         = div16_dpll4_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &omap2_clksel_recalc,
 };
 
 /* The PWRDN bit is apparently only available on 3430ES2 and above */
 static struct clk dpll4_m2x2_ck = {
        .name           = "dpll4_m2x2_ck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &dpll4_m2_ck,
        .enable_reg     = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN),
        .enable_bit     = OMAP3430_PWRDN_96M_SHIFT,
@@ -640,21 +644,21 @@ static const struct clksel omap_96m_alwon_fck_clksel[] = {
 
 static struct clk omap_96m_alwon_fck = {
        .name           = "omap_96m_alwon_fck",
+       .ops            = &clkops_null,
        .parent         = &dpll4_m2x2_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST),
        .clksel_mask    = OMAP3430_ST_PERIPH_CLK_MASK,
        .clksel         = omap_96m_alwon_fck_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                                PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &omap2_clksel_recalc,
 };
 
 static struct clk omap_96m_fck = {
        .name           = "omap_96m_fck",
+       .ops            = &clkops_null,
        .parent         = &omap_96m_alwon_fck,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &followparent_recalc,
 };
 
@@ -666,32 +670,33 @@ static const struct clksel cm_96m_fck_clksel[] = {
 
 static struct clk cm_96m_fck = {
        .name           = "cm_96m_fck",
+       .ops            = &clkops_null,
        .parent         = &dpll4_m2x2_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST),
        .clksel_mask    = OMAP3430_ST_PERIPH_CLK_MASK,
        .clksel         = cm_96m_fck_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &omap2_clksel_recalc,
 };
 
 /* This virtual clock is the source for dpll4_m3x2_ck */
 static struct clk dpll4_m3_ck = {
        .name           = "dpll4_m3_ck",
+       .ops            = &clkops_null,
        .parent         = &dpll4_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(OMAP3430_DSS_MOD, CM_CLKSEL),
        .clksel_mask    = OMAP3430_CLKSEL_TV_MASK,
        .clksel         = div16_dpll4_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &omap2_clksel_recalc,
 };
 
 /* The PWRDN bit is apparently only available on 3430ES2 and above */
 static struct clk dpll4_m3x2_ck = {
        .name           = "dpll4_m3x2_ck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &dpll4_m3_ck,
        .init           = &omap2_init_clksel_parent,
        .enable_reg     = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN),
@@ -708,13 +713,13 @@ static const struct clksel virt_omap_54m_fck_clksel[] = {
 
 static struct clk virt_omap_54m_fck = {
        .name           = "virt_omap_54m_fck",
+       .ops            = &clkops_null,
        .parent         = &dpll4_m3x2_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST),
        .clksel_mask    = OMAP3430_ST_PERIPH_CLK_MASK,
        .clksel         = virt_omap_54m_fck_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -736,12 +741,12 @@ static const struct clksel omap_54m_clksel[] = {
 
 static struct clk omap_54m_fck = {
        .name           = "omap_54m_fck",
+       .ops            = &clkops_null,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL1),
        .clksel_mask    = OMAP3430_SOURCE_54M,
        .clksel         = omap_54m_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -763,40 +768,41 @@ static const struct clksel omap_48m_clksel[] = {
 
 static struct clk omap_48m_fck = {
        .name           = "omap_48m_fck",
+       .ops            = &clkops_null,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(PLL_MOD, CM_CLKSEL1),
        .clksel_mask    = OMAP3430_SOURCE_48M,
        .clksel         = omap_48m_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &omap2_clksel_recalc,
 };
 
 static struct clk omap_12m_fck = {
        .name           = "omap_12m_fck",
+       .ops            = &clkops_null,
        .parent         = &omap_48m_fck,
        .fixed_div      = 4,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &omap2_fixed_divisor_recalc,
 };
 
 /* This virstual clock is the source for dpll4_m4x2_ck */
 static struct clk dpll4_m4_ck = {
        .name           = "dpll4_m4_ck",
+       .ops            = &clkops_null,
        .parent         = &dpll4_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(OMAP3430_DSS_MOD, CM_CLKSEL),
        .clksel_mask    = OMAP3430_CLKSEL_DSS1_MASK,
        .clksel         = div16_dpll4_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &omap2_clksel_recalc,
 };
 
 /* The PWRDN bit is apparently only available on 3430ES2 and above */
 static struct clk dpll4_m4x2_ck = {
        .name           = "dpll4_m4x2_ck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &dpll4_m4_ck,
        .enable_reg     = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN),
        .enable_bit     = OMAP3430_PWRDN_CAM_SHIFT,
@@ -807,19 +813,20 @@ static struct clk dpll4_m4x2_ck = {
 /* This virtual clock is the source for dpll4_m5x2_ck */
 static struct clk dpll4_m5_ck = {
        .name           = "dpll4_m5_ck",
+       .ops            = &clkops_null,
        .parent         = &dpll4_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(OMAP3430_CAM_MOD, CM_CLKSEL),
        .clksel_mask    = OMAP3430_CLKSEL_CAM_MASK,
        .clksel         = div16_dpll4_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &omap2_clksel_recalc,
 };
 
 /* The PWRDN bit is apparently only available on 3430ES2 and above */
 static struct clk dpll4_m5x2_ck = {
        .name           = "dpll4_m5x2_ck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &dpll4_m5_ck,
        .enable_reg     = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN),
        .enable_bit     = OMAP3430_PWRDN_CAM_SHIFT,
@@ -830,19 +837,20 @@ static struct clk dpll4_m5x2_ck = {
 /* This virtual clock is the source for dpll4_m6x2_ck */
 static struct clk dpll4_m6_ck = {
        .name           = "dpll4_m6_ck",
+       .ops            = &clkops_null,
        .parent         = &dpll4_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(OMAP3430_EMU_MOD, CM_CLKSEL1),
        .clksel_mask    = OMAP3430_DIV_DPLL4_MASK,
        .clksel         = div16_dpll4_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &omap2_clksel_recalc,
 };
 
 /* The PWRDN bit is apparently only available on 3430ES2 and above */
 static struct clk dpll4_m6x2_ck = {
        .name           = "dpll4_m6x2_ck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &dpll4_m6_ck,
        .init           = &omap2_init_clksel_parent,
        .enable_reg     = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN),
@@ -853,9 +861,9 @@ static struct clk dpll4_m6x2_ck = {
 
 static struct clk emu_per_alwon_ck = {
        .name           = "emu_per_alwon_ck",
+       .ops            = &clkops_null,
        .parent         = &dpll4_m6x2_ck,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &followparent_recalc,
 };
 
@@ -884,11 +892,10 @@ static struct dpll_data dpll5_dd = {
 
 static struct clk dpll5_ck = {
        .name           = "dpll5_ck",
+       .ops            = &clkops_noncore_dpll_ops,
        .parent         = &sys_ck,
        .dpll_data      = &dpll5_dd,
        .flags          = CLOCK_IN_OMAP3430ES2 | RATE_PROPAGATES,
-       .enable         = &omap3_noncore_dpll_enable,
-       .disable        = &omap3_noncore_dpll_disable,
        .round_rate     = &omap2_dpll_round_rate,
        .recalc         = &omap3_dpll_recalc,
 };
@@ -900,13 +907,13 @@ static const struct clksel div16_dpll5_clksel[] = {
 
 static struct clk dpll5_m2_ck = {
        .name           = "dpll5_m2_ck",
+       .ops            = &clkops_null,
        .parent         = &dpll5_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(PLL_MOD, OMAP3430ES2_CM_CLKSEL5),
        .clksel_mask    = OMAP3430ES2_DIV_120M_MASK,
        .clksel         = div16_dpll5_clksel,
-       .flags          = CLOCK_IN_OMAP3430ES2 | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP3430ES2 | RATE_PROPAGATES,
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -918,13 +925,13 @@ static const struct clksel omap_120m_fck_clksel[] = {
 
 static struct clk omap_120m_fck = {
        .name           = "omap_120m_fck",
+       .ops            = &clkops_null,
        .parent         = &dpll5_m2_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST2),
        .clksel_mask    = OMAP3430ES2_ST_PERIPH2_CLK_MASK,
        .clksel         = omap_120m_fck_clksel,
-       .flags          = CLOCK_IN_OMAP3430ES2 | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP3430ES2 | RATE_PROPAGATES,
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -960,6 +967,7 @@ static const struct clksel clkout2_src_clksel[] = {
 
 static struct clk clkout2_src_ck = {
        .name           = "clkout2_src_ck",
+       .ops            = &clkops_omap2_dflt_wait,
        .init           = &omap2_init_clksel_parent,
        .enable_reg     = OMAP3430_CM_CLKOUT_CTRL,
        .enable_bit     = OMAP3430_CLKOUT2_EN_SHIFT,
@@ -986,11 +994,12 @@ static const struct clksel sys_clkout2_clksel[] = {
 
 static struct clk sys_clkout2 = {
        .name           = "sys_clkout2",
+       .ops            = &clkops_null,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP3430_CM_CLKOUT_CTRL,
        .clksel_mask    = OMAP3430_CLKOUT2_DIV_MASK,
        .clksel         = sys_clkout2_clksel,
-       .flags          = CLOCK_IN_OMAP343X | PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X,
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -998,9 +1007,9 @@ static struct clk sys_clkout2 = {
 
 static struct clk corex2_fck = {
        .name           = "corex2_fck",
+       .ops            = &clkops_null,
        .parent         = &dpll3_m2x2_ck,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &followparent_recalc,
 };
 
@@ -1017,13 +1026,13 @@ static const struct clksel div2_core_clksel[] = {
  */
 static struct clk dpll1_fck = {
        .name           = "dpll1_fck",
+       .ops            = &clkops_null,
        .parent         = &core_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(MPU_MOD, OMAP3430_CM_CLKSEL1_PLL),
        .clksel_mask    = OMAP3430_MPU_CLK_SRC_MASK,
        .clksel         = div2_core_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -1041,13 +1050,13 @@ static const struct clksel mpu_clksel[] = {
 
 static struct clk mpu_ck = {
        .name           = "mpu_ck",
+       .ops            = &clkops_null,
        .parent         = &dpll1_x2m2_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(MPU_MOD, OMAP3430_CM_IDLEST_PLL),
        .clksel_mask    = OMAP3430_ST_MPU_CLK_MASK,
        .clksel         = mpu_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .clkdm_name     = "mpu_clkdm",
        .recalc         = &omap2_clksel_recalc,
 };
@@ -1066,13 +1075,13 @@ static const struct clksel arm_fck_clksel[] = {
 
 static struct clk arm_fck = {
        .name           = "arm_fck",
+       .ops            = &clkops_null,
        .parent         = &mpu_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(MPU_MOD, OMAP3430_CM_IDLEST_PLL),
        .clksel_mask    = OMAP3430_ST_MPU_CLK_MASK,
        .clksel         = arm_fck_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -1084,21 +1093,21 @@ static struct clk arm_fck = {
  */
 static struct clk emu_mpu_alwon_ck = {
        .name           = "emu_mpu_alwon_ck",
+       .ops            = &clkops_null,
        .parent         = &mpu_ck,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &followparent_recalc,
 };
 
 static struct clk dpll2_fck = {
        .name           = "dpll2_fck",
+       .ops            = &clkops_null,
        .parent         = &core_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(OMAP3430_IVA2_MOD, OMAP3430_CM_CLKSEL1_PLL),
        .clksel_mask    = OMAP3430_IVA2_CLK_SRC_MASK,
        .clksel         = div2_core_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -1117,6 +1126,7 @@ static const struct clksel iva2_clksel[] = {
 
 static struct clk iva2_ck = {
        .name           = "iva2_ck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &dpll2_m2_ck,
        .init           = &omap2_init_clksel_parent,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_IVA2_MOD, CM_FCLKEN),
@@ -1134,13 +1144,13 @@ static struct clk iva2_ck = {
 
 static struct clk l3_ick = {
        .name           = "l3_ick",
+       .ops            = &clkops_null,
        .parent         = &core_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL),
        .clksel_mask    = OMAP3430_CLKSEL_L3_MASK,
        .clksel         = div2_core_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .clkdm_name     = "core_l3_clkdm",
        .recalc         = &omap2_clksel_recalc,
 };
@@ -1152,13 +1162,13 @@ static const struct clksel div2_l3_clksel[] = {
 
 static struct clk l4_ick = {
        .name           = "l4_ick",
+       .ops            = &clkops_null,
        .parent         = &l3_ick,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_CLKSEL),
        .clksel_mask    = OMAP3430_CLKSEL_L4_MASK,
        .clksel         = div2_l3_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .clkdm_name     = "core_l4_clkdm",
        .recalc         = &omap2_clksel_recalc,
 
@@ -1171,12 +1181,13 @@ static const struct clksel div2_l4_clksel[] = {
 
 static struct clk rm_ick = {
        .name           = "rm_ick",
+       .ops            = &clkops_null,
        .parent         = &l4_ick,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(WKUP_MOD, CM_CLKSEL),
        .clksel_mask    = OMAP3430_CLKSEL_RM_MASK,
        .clksel         = div2_l4_clksel,
-       .flags          = CLOCK_IN_OMAP343X | PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X,
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -1192,6 +1203,7 @@ static const struct clksel gfx_l3_clksel[] = {
 /* Virtual parent clock for gfx_l3_ick and gfx_l3_fck */
 static struct clk gfx_l3_ck = {
        .name           = "gfx_l3_ck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &l3_ick,
        .init           = &omap2_init_clksel_parent,
        .enable_reg     = OMAP_CM_REGADDR(GFX_MOD, CM_ICLKEN),
@@ -1202,27 +1214,29 @@ static struct clk gfx_l3_ck = {
 
 static struct clk gfx_l3_fck = {
        .name           = "gfx_l3_fck",
+       .ops            = &clkops_null,
        .parent         = &gfx_l3_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(GFX_MOD, CM_CLKSEL),
        .clksel_mask    = OMAP_CLKSEL_GFX_MASK,
        .clksel         = gfx_l3_clksel,
-       .flags          = CLOCK_IN_OMAP3430ES1 | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP3430ES1 | RATE_PROPAGATES,
        .clkdm_name     = "gfx_3430es1_clkdm",
        .recalc         = &omap2_clksel_recalc,
 };
 
 static struct clk gfx_l3_ick = {
        .name           = "gfx_l3_ick",
+       .ops            = &clkops_null,
        .parent         = &gfx_l3_ck,
-       .flags          = CLOCK_IN_OMAP3430ES1 | PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP3430ES1,
        .clkdm_name     = "gfx_3430es1_clkdm",
        .recalc         = &followparent_recalc,
 };
 
 static struct clk gfx_cg1_ck = {
        .name           = "gfx_cg1_ck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &gfx_l3_fck, /* REVISIT: correct? */
        .init           = &omap2_init_clk_clkdm,
        .enable_reg     = OMAP_CM_REGADDR(GFX_MOD, CM_FCLKEN),
@@ -1234,6 +1248,7 @@ static struct clk gfx_cg1_ck = {
 
 static struct clk gfx_cg2_ck = {
        .name           = "gfx_cg2_ck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &gfx_l3_fck, /* REVISIT: correct? */
        .init           = &omap2_init_clk_clkdm,
        .enable_reg     = OMAP_CM_REGADDR(GFX_MOD, CM_FCLKEN),
@@ -1265,6 +1280,7 @@ static const struct clksel sgx_clksel[] = {
 
 static struct clk sgx_fck = {
        .name           = "sgx_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .init           = &omap2_init_clksel_parent,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430ES2_SGX_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430ES2_EN_SGX_SHIFT,
@@ -1278,6 +1294,7 @@ static struct clk sgx_fck = {
 
 static struct clk sgx_ick = {
        .name           = "sgx_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &l3_ick,
        .init           = &omap2_init_clk_clkdm,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430ES2_SGX_MOD, CM_ICLKEN),
@@ -1291,6 +1308,7 @@ static struct clk sgx_ick = {
 
 static struct clk d2d_26m_fck = {
        .name           = "d2d_26m_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &sys_ck,
        .init           = &omap2_init_clk_clkdm,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
@@ -1308,6 +1326,7 @@ static const struct clksel omap343x_gpt_clksel[] = {
 
 static struct clk gpt10_fck = {
        .name           = "gpt10_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &sys_ck,
        .init           = &omap2_init_clksel_parent,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
@@ -1322,6 +1341,7 @@ static struct clk gpt10_fck = {
 
 static struct clk gpt11_fck = {
        .name           = "gpt11_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &sys_ck,
        .init           = &omap2_init_clksel_parent,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
@@ -1336,6 +1356,7 @@ static struct clk gpt11_fck = {
 
 static struct clk cpefuse_fck = {
        .name           = "cpefuse_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &sys_ck,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, OMAP3430ES2_CM_FCLKEN3),
        .enable_bit     = OMAP3430ES2_EN_CPEFUSE_SHIFT,
@@ -1345,6 +1366,7 @@ static struct clk cpefuse_fck = {
 
 static struct clk ts_fck = {
        .name           = "ts_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &omap_32k_fck,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, OMAP3430ES2_CM_FCLKEN3),
        .enable_bit     = OMAP3430ES2_EN_TS_SHIFT,
@@ -1354,6 +1376,7 @@ static struct clk ts_fck = {
 
 static struct clk usbtll_fck = {
        .name           = "usbtll_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &omap_120m_fck,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, OMAP3430ES2_CM_FCLKEN3),
        .enable_bit     = OMAP3430ES2_EN_USBTLL_SHIFT,
@@ -1365,16 +1388,17 @@ static struct clk usbtll_fck = {
 
 static struct clk core_96m_fck = {
        .name           = "core_96m_fck",
+       .ops            = &clkops_null,
        .parent         = &omap_96m_fck,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .clkdm_name     = "core_l4_clkdm",
        .recalc         = &followparent_recalc,
 };
 
 static struct clk mmchs3_fck = {
        .name           = "mmchs_fck",
-       .id             = 3,
+       .ops            = &clkops_omap2_dflt_wait,
+       .id             = 2,
        .parent         = &core_96m_fck,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
        .enable_bit     = OMAP3430ES2_EN_MMC3_SHIFT,
@@ -1385,7 +1409,8 @@ static struct clk mmchs3_fck = {
 
 static struct clk mmchs2_fck = {
        .name           = "mmchs_fck",
-       .id             = 2,
+       .ops            = &clkops_omap2_dflt_wait,
+       .id             = 1,
        .parent         = &core_96m_fck,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
        .enable_bit     = OMAP3430_EN_MMC2_SHIFT,
@@ -1396,6 +1421,7 @@ static struct clk mmchs2_fck = {
 
 static struct clk mspro_fck = {
        .name           = "mspro_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &core_96m_fck,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
        .enable_bit     = OMAP3430_EN_MSPRO_SHIFT,
@@ -1406,7 +1432,7 @@ static struct clk mspro_fck = {
 
 static struct clk mmchs1_fck = {
        .name           = "mmchs_fck",
-       .id             = 1,
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &core_96m_fck,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
        .enable_bit     = OMAP3430_EN_MMC1_SHIFT,
@@ -1417,6 +1443,7 @@ static struct clk mmchs1_fck = {
 
 static struct clk i2c3_fck = {
        .name           = "i2c_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .id             = 3,
        .parent         = &core_96m_fck,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
@@ -1428,6 +1455,7 @@ static struct clk i2c3_fck = {
 
 static struct clk i2c2_fck = {
        .name           = "i2c_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .id             = 2,
        .parent         = &core_96m_fck,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
@@ -1439,6 +1467,7 @@ static struct clk i2c2_fck = {
 
 static struct clk i2c1_fck = {
        .name           = "i2c_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .id             = 1,
        .parent         = &core_96m_fck,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
@@ -1470,6 +1499,7 @@ static const struct clksel mcbsp_15_clksel[] = {
 
 static struct clk mcbsp5_fck = {
        .name           = "mcbsp_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .id             = 5,
        .init           = &omap2_init_clksel_parent,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
@@ -1484,6 +1514,7 @@ static struct clk mcbsp5_fck = {
 
 static struct clk mcbsp1_fck = {
        .name           = "mcbsp_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .id             = 1,
        .init           = &omap2_init_clksel_parent,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
@@ -1500,15 +1531,16 @@ static struct clk mcbsp1_fck = {
 
 static struct clk core_48m_fck = {
        .name           = "core_48m_fck",
+       .ops            = &clkops_null,
        .parent         = &omap_48m_fck,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .clkdm_name     = "core_l4_clkdm",
        .recalc         = &followparent_recalc,
 };
 
 static struct clk mcspi4_fck = {
        .name           = "mcspi_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .id             = 4,
        .parent         = &core_48m_fck,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
@@ -1519,6 +1551,7 @@ static struct clk mcspi4_fck = {
 
 static struct clk mcspi3_fck = {
        .name           = "mcspi_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .id             = 3,
        .parent         = &core_48m_fck,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
@@ -1529,6 +1562,7 @@ static struct clk mcspi3_fck = {
 
 static struct clk mcspi2_fck = {
        .name           = "mcspi_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .id             = 2,
        .parent         = &core_48m_fck,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
@@ -1539,6 +1573,7 @@ static struct clk mcspi2_fck = {
 
 static struct clk mcspi1_fck = {
        .name           = "mcspi_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .id             = 1,
        .parent         = &core_48m_fck,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
@@ -1549,6 +1584,7 @@ static struct clk mcspi1_fck = {
 
 static struct clk uart2_fck = {
        .name           = "uart2_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &core_48m_fck,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
        .enable_bit     = OMAP3430_EN_UART2_SHIFT,
@@ -1558,6 +1594,7 @@ static struct clk uart2_fck = {
 
 static struct clk uart1_fck = {
        .name           = "uart1_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &core_48m_fck,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
        .enable_bit     = OMAP3430_EN_UART1_SHIFT,
@@ -1567,6 +1604,7 @@ static struct clk uart1_fck = {
 
 static struct clk fshostusb_fck = {
        .name           = "fshostusb_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &core_48m_fck,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
        .enable_bit     = OMAP3430ES1_EN_FSHOSTUSB_SHIFT,
@@ -1578,15 +1616,16 @@ static struct clk fshostusb_fck = {
 
 static struct clk core_12m_fck = {
        .name           = "core_12m_fck",
+       .ops            = &clkops_null,
        .parent         = &omap_12m_fck,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .clkdm_name     = "core_l4_clkdm",
        .recalc         = &followparent_recalc,
 };
 
 static struct clk hdq_fck = {
        .name           = "hdq_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &core_12m_fck,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
        .enable_bit     = OMAP3430_EN_HDQ_SHIFT,
@@ -1613,6 +1652,7 @@ static const struct clksel ssi_ssr_clksel[] = {
 
 static struct clk ssi_ssr_fck = {
        .name           = "ssi_ssr_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .init           = &omap2_init_clksel_parent,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
        .enable_bit     = OMAP3430_EN_SSI_SHIFT,
@@ -1626,9 +1666,10 @@ static struct clk ssi_ssr_fck = {
 
 static struct clk ssi_sst_fck = {
        .name           = "ssi_sst_fck",
+       .ops            = &clkops_null,
        .parent         = &ssi_ssr_fck,
        .fixed_div      = 2,
-       .flags          = CLOCK_IN_OMAP343X | PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X,
        .recalc         = &omap2_fixed_divisor_recalc,
 };
 
@@ -1642,16 +1683,17 @@ static struct clk ssi_sst_fck = {
  */
 static struct clk core_l3_ick = {
        .name           = "core_l3_ick",
+       .ops            = &clkops_null,
        .parent         = &l3_ick,
        .init           = &omap2_init_clk_clkdm,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .clkdm_name     = "core_l3_clkdm",
        .recalc         = &followparent_recalc,
 };
 
 static struct clk hsotgusb_ick = {
        .name           = "hsotgusb_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &core_l3_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_HSOTGUSB_SHIFT,
@@ -1662,6 +1704,7 @@ static struct clk hsotgusb_ick = {
 
 static struct clk sdrc_ick = {
        .name           = "sdrc_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &core_l3_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_SDRC_SHIFT,
@@ -1672,9 +1715,9 @@ static struct clk sdrc_ick = {
 
 static struct clk gpmc_fck = {
        .name           = "gpmc_fck",
+       .ops            = &clkops_null,
        .parent         = &core_l3_ick,
-       .flags          = CLOCK_IN_OMAP343X | PARENT_CONTROLS_CLOCK |
-                               ENABLE_ON_INIT,
+       .flags          = CLOCK_IN_OMAP343X | ENABLE_ON_INIT, /* huh? */
        .clkdm_name     = "core_l3_clkdm",
        .recalc         = &followparent_recalc,
 };
@@ -1683,14 +1726,15 @@ static struct clk gpmc_fck = {
 
 static struct clk security_l3_ick = {
        .name           = "security_l3_ick",
+       .ops            = &clkops_null,
        .parent         = &l3_ick,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &followparent_recalc,
 };
 
 static struct clk pka_ick = {
        .name           = "pka_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &security_l3_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2),
        .enable_bit     = OMAP3430_EN_PKA_SHIFT,
@@ -1702,16 +1746,17 @@ static struct clk pka_ick = {
 
 static struct clk core_l4_ick = {
        .name           = "core_l4_ick",
+       .ops            = &clkops_null,
        .parent         = &l4_ick,
        .init           = &omap2_init_clk_clkdm,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .clkdm_name     = "core_l4_clkdm",
        .recalc         = &followparent_recalc,
 };
 
 static struct clk usbtll_ick = {
        .name           = "usbtll_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &core_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN3),
        .enable_bit     = OMAP3430ES2_EN_USBTLL_SHIFT,
@@ -1722,7 +1767,8 @@ static struct clk usbtll_ick = {
 
 static struct clk mmchs3_ick = {
        .name           = "mmchs_ick",
-       .id             = 3,
+       .ops            = &clkops_omap2_dflt_wait,
+       .id             = 2,
        .parent         = &core_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430ES2_EN_MMC3_SHIFT,
@@ -1734,6 +1780,7 @@ static struct clk mmchs3_ick = {
 /* Intersystem Communication Registers - chassis mode only */
 static struct clk icr_ick = {
        .name           = "icr_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &core_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_ICR_SHIFT,
@@ -1744,6 +1791,7 @@ static struct clk icr_ick = {
 
 static struct clk aes2_ick = {
        .name           = "aes2_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &core_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_AES2_SHIFT,
@@ -1754,6 +1802,7 @@ static struct clk aes2_ick = {
 
 static struct clk sha12_ick = {
        .name           = "sha12_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &core_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_SHA12_SHIFT,
@@ -1764,6 +1813,7 @@ static struct clk sha12_ick = {
 
 static struct clk des2_ick = {
        .name           = "des2_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &core_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_DES2_SHIFT,
@@ -1774,7 +1824,8 @@ static struct clk des2_ick = {
 
 static struct clk mmchs2_ick = {
        .name           = "mmchs_ick",
-       .id             = 2,
+       .ops            = &clkops_omap2_dflt_wait,
+       .id             = 1,
        .parent         = &core_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_MMC2_SHIFT,
@@ -1785,7 +1836,7 @@ static struct clk mmchs2_ick = {
 
 static struct clk mmchs1_ick = {
        .name           = "mmchs_ick",
-       .id             = 1,
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &core_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_MMC1_SHIFT,
@@ -1796,6 +1847,7 @@ static struct clk mmchs1_ick = {
 
 static struct clk mspro_ick = {
        .name           = "mspro_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &core_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_MSPRO_SHIFT,
@@ -1806,6 +1858,7 @@ static struct clk mspro_ick = {
 
 static struct clk hdq_ick = {
        .name           = "hdq_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &core_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_HDQ_SHIFT,
@@ -1816,6 +1869,7 @@ static struct clk hdq_ick = {
 
 static struct clk mcspi4_ick = {
        .name           = "mcspi_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .id             = 4,
        .parent         = &core_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1827,6 +1881,7 @@ static struct clk mcspi4_ick = {
 
 static struct clk mcspi3_ick = {
        .name           = "mcspi_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .id             = 3,
        .parent         = &core_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1838,6 +1893,7 @@ static struct clk mcspi3_ick = {
 
 static struct clk mcspi2_ick = {
        .name           = "mcspi_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .id             = 2,
        .parent         = &core_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1849,6 +1905,7 @@ static struct clk mcspi2_ick = {
 
 static struct clk mcspi1_ick = {
        .name           = "mcspi_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .id             = 1,
        .parent         = &core_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1860,6 +1917,7 @@ static struct clk mcspi1_ick = {
 
 static struct clk i2c3_ick = {
        .name           = "i2c_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .id             = 3,
        .parent         = &core_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1871,6 +1929,7 @@ static struct clk i2c3_ick = {
 
 static struct clk i2c2_ick = {
        .name           = "i2c_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .id             = 2,
        .parent         = &core_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1882,6 +1941,7 @@ static struct clk i2c2_ick = {
 
 static struct clk i2c1_ick = {
        .name           = "i2c_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .id             = 1,
        .parent         = &core_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1893,6 +1953,7 @@ static struct clk i2c1_ick = {
 
 static struct clk uart2_ick = {
        .name           = "uart2_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &core_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_UART2_SHIFT,
@@ -1903,6 +1964,7 @@ static struct clk uart2_ick = {
 
 static struct clk uart1_ick = {
        .name           = "uart1_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &core_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_UART1_SHIFT,
@@ -1913,6 +1975,7 @@ static struct clk uart1_ick = {
 
 static struct clk gpt11_ick = {
        .name           = "gpt11_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &core_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_GPT11_SHIFT,
@@ -1923,6 +1986,7 @@ static struct clk gpt11_ick = {
 
 static struct clk gpt10_ick = {
        .name           = "gpt10_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &core_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_GPT10_SHIFT,
@@ -1933,6 +1997,7 @@ static struct clk gpt10_ick = {
 
 static struct clk mcbsp5_ick = {
        .name           = "mcbsp_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .id             = 5,
        .parent         = &core_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1944,6 +2009,7 @@ static struct clk mcbsp5_ick = {
 
 static struct clk mcbsp1_ick = {
        .name           = "mcbsp_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .id             = 1,
        .parent         = &core_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -1955,6 +2021,7 @@ static struct clk mcbsp1_ick = {
 
 static struct clk fac_ick = {
        .name           = "fac_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &core_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430ES1_EN_FAC_SHIFT,
@@ -1965,6 +2032,7 @@ static struct clk fac_ick = {
 
 static struct clk mailboxes_ick = {
        .name           = "mailboxes_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &core_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_MAILBOXES_SHIFT,
@@ -1975,6 +2043,7 @@ static struct clk mailboxes_ick = {
 
 static struct clk omapctrl_ick = {
        .name           = "omapctrl_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &core_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_OMAPCTRL_SHIFT,
@@ -1986,15 +2055,16 @@ static struct clk omapctrl_ick = {
 
 static struct clk ssi_l4_ick = {
        .name           = "ssi_l4_ick",
+       .ops            = &clkops_null,
        .parent         = &l4_ick,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .clkdm_name     = "core_l4_clkdm",
        .recalc         = &followparent_recalc,
 };
 
 static struct clk ssi_ick = {
        .name           = "ssi_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &ssi_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_SSI_SHIFT,
@@ -2013,6 +2083,7 @@ static const struct clksel usb_l4_clksel[] = {
 
 static struct clk usb_l4_ick = {
        .name           = "usb_l4_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &l4_ick,
        .init           = &omap2_init_clksel_parent,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
@@ -2030,14 +2101,15 @@ static struct clk usb_l4_ick = {
 
 static struct clk security_l4_ick2 = {
        .name           = "security_l4_ick2",
+       .ops            = &clkops_null,
        .parent         = &l4_ick,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &followparent_recalc,
 };
 
 static struct clk aes1_ick = {
        .name           = "aes1_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &security_l4_ick2,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2),
        .enable_bit     = OMAP3430_EN_AES1_SHIFT,
@@ -2047,6 +2119,7 @@ static struct clk aes1_ick = {
 
 static struct clk rng_ick = {
        .name           = "rng_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &security_l4_ick2,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2),
        .enable_bit     = OMAP3430_EN_RNG_SHIFT,
@@ -2056,6 +2129,7 @@ static struct clk rng_ick = {
 
 static struct clk sha11_ick = {
        .name           = "sha11_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &security_l4_ick2,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2),
        .enable_bit     = OMAP3430_EN_SHA11_SHIFT,
@@ -2065,6 +2139,7 @@ static struct clk sha11_ick = {
 
 static struct clk des1_ick = {
        .name           = "des1_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &security_l4_ick2,
        .enable_reg     = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2),
        .enable_bit     = OMAP3430_EN_DES1_SHIFT,
@@ -2081,6 +2156,7 @@ static const struct clksel dss1_alwon_fck_clksel[] = {
 
 static struct clk dss1_alwon_fck = {
        .name           = "dss1_alwon_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &dpll4_m4x2_ck,
        .init           = &omap2_init_clksel_parent,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_DSS_MOD, CM_FCLKEN),
@@ -2095,6 +2171,7 @@ static struct clk dss1_alwon_fck = {
 
 static struct clk dss_tv_fck = {
        .name           = "dss_tv_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &omap_54m_fck,
        .init           = &omap2_init_clk_clkdm,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_DSS_MOD, CM_FCLKEN),
@@ -2106,6 +2183,7 @@ static struct clk dss_tv_fck = {
 
 static struct clk dss_96m_fck = {
        .name           = "dss_96m_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &omap_96m_fck,
        .init           = &omap2_init_clk_clkdm,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_DSS_MOD, CM_FCLKEN),
@@ -2117,6 +2195,7 @@ static struct clk dss_96m_fck = {
 
 static struct clk dss2_alwon_fck = {
        .name           = "dss2_alwon_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &sys_ck,
        .init           = &omap2_init_clk_clkdm,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_DSS_MOD, CM_FCLKEN),
@@ -2129,6 +2208,7 @@ static struct clk dss2_alwon_fck = {
 static struct clk dss_ick = {
        /* Handles both L3 and L4 clocks */
        .name           = "dss_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &l4_ick,
        .init           = &omap2_init_clk_clkdm,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_DSS_MOD, CM_ICLKEN),
@@ -2148,6 +2228,7 @@ static const struct clksel cam_mclk_clksel[] = {
 
 static struct clk cam_mclk = {
        .name           = "cam_mclk",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &dpll4_m5x2_ck,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST),
@@ -2163,6 +2244,7 @@ static struct clk cam_mclk = {
 static struct clk cam_ick = {
        /* Handles both L3 and L4 clocks */
        .name           = "cam_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &l4_ick,
        .init           = &omap2_init_clk_clkdm,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_CAM_MOD, CM_ICLKEN),
@@ -2176,6 +2258,7 @@ static struct clk cam_ick = {
 
 static struct clk usbhost_120m_fck = {
        .name           = "usbhost_120m_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &omap_120m_fck,
        .init           = &omap2_init_clk_clkdm,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430ES2_USBHOST_MOD, CM_FCLKEN),
@@ -2187,6 +2270,7 @@ static struct clk usbhost_120m_fck = {
 
 static struct clk usbhost_48m_fck = {
        .name           = "usbhost_48m_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &omap_48m_fck,
        .init           = &omap2_init_clk_clkdm,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430ES2_USBHOST_MOD, CM_FCLKEN),
@@ -2199,6 +2283,7 @@ static struct clk usbhost_48m_fck = {
 static struct clk usbhost_ick = {
        /* Handles both L3 and L4 clocks */
        .name           = "usbhost_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &l4_ick,
        .init           = &omap2_init_clk_clkdm,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430ES2_USBHOST_MOD, CM_ICLKEN),
@@ -2210,6 +2295,7 @@ static struct clk usbhost_ick = {
 
 static struct clk usbhost_sar_fck = {
        .name           = "usbhost_sar_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &osc_sys_ck,
        .init           = &omap2_init_clk_clkdm,
        .enable_reg     = OMAP_PRM_REGADDR(OMAP3430ES2_USBHOST_MOD, PM_PWSTCTRL),
@@ -2247,6 +2333,7 @@ static const struct clksel usim_clksel[] = {
 /* 3430ES2 only */
 static struct clk usim_fck = {
        .name           = "usim_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .init           = &omap2_init_clksel_parent,
        .enable_reg     = OMAP_CM_REGADDR(WKUP_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430ES2_EN_USIMOCP_SHIFT,
@@ -2260,6 +2347,7 @@ static struct clk usim_fck = {
 /* XXX should gpt1's clksel have wkup_32k_fck as the 32k opt? */
 static struct clk gpt1_fck = {
        .name           = "gpt1_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .init           = &omap2_init_clksel_parent,
        .enable_reg     = OMAP_CM_REGADDR(WKUP_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_GPT1_SHIFT,
@@ -2273,15 +2361,17 @@ static struct clk gpt1_fck = {
 
 static struct clk wkup_32k_fck = {
        .name           = "wkup_32k_fck",
+       .ops            = &clkops_null,
        .init           = &omap2_init_clk_clkdm,
        .parent         = &omap_32k_fck,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .clkdm_name     = "wkup_clkdm",
        .recalc         = &followparent_recalc,
 };
 
-static struct clk gpio1_fck = {
-       .name           = "gpio1_fck",
+static struct clk gpio1_dbck = {
+       .name           = "gpio1_dbck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &wkup_32k_fck,
        .enable_reg     = OMAP_CM_REGADDR(WKUP_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_GPIO1_SHIFT,
@@ -2292,6 +2382,7 @@ static struct clk gpio1_fck = {
 
 static struct clk wdt2_fck = {
        .name           = "wdt2_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &wkup_32k_fck,
        .enable_reg     = OMAP_CM_REGADDR(WKUP_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_WDT2_SHIFT,
@@ -2302,8 +2393,9 @@ static struct clk wdt2_fck = {
 
 static struct clk wkup_l4_ick = {
        .name           = "wkup_l4_ick",
+       .ops            = &clkops_null,
        .parent         = &sys_ck,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .clkdm_name     = "wkup_clkdm",
        .recalc         = &followparent_recalc,
 };
@@ -2312,6 +2404,7 @@ static struct clk wkup_l4_ick = {
 /* Never specifically named in the TRM, so we have to infer a likely name */
 static struct clk usim_ick = {
        .name           = "usim_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &wkup_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430ES2_EN_USIMOCP_SHIFT,
@@ -2322,6 +2415,7 @@ static struct clk usim_ick = {
 
 static struct clk wdt2_ick = {
        .name           = "wdt2_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &wkup_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_WDT2_SHIFT,
@@ -2332,6 +2426,7 @@ static struct clk wdt2_ick = {
 
 static struct clk wdt1_ick = {
        .name           = "wdt1_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &wkup_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_WDT1_SHIFT,
@@ -2342,6 +2437,7 @@ static struct clk wdt1_ick = {
 
 static struct clk gpio1_ick = {
        .name           = "gpio1_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &wkup_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPIO1_SHIFT,
@@ -2352,6 +2448,7 @@ static struct clk gpio1_ick = {
 
 static struct clk omap_32ksync_ick = {
        .name           = "omap_32ksync_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &wkup_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_32KSYNC_SHIFT,
@@ -2363,6 +2460,7 @@ static struct clk omap_32ksync_ick = {
 /* XXX This clock no longer exists in 3430 TRM rev F */
 static struct clk gpt12_ick = {
        .name           = "gpt12_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &wkup_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPT12_SHIFT,
@@ -2373,6 +2471,7 @@ static struct clk gpt12_ick = {
 
 static struct clk gpt1_ick = {
        .name           = "gpt1_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &wkup_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPT1_SHIFT,
@@ -2387,26 +2486,27 @@ static struct clk gpt1_ick = {
 
 static struct clk per_96m_fck = {
        .name           = "per_96m_fck",
+       .ops            = &clkops_null,
        .parent         = &omap_96m_alwon_fck,
        .init           = &omap2_init_clk_clkdm,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .clkdm_name     = "per_clkdm",
        .recalc         = &followparent_recalc,
 };
 
 static struct clk per_48m_fck = {
        .name           = "per_48m_fck",
+       .ops            = &clkops_null,
        .parent         = &omap_48m_fck,
        .init           = &omap2_init_clk_clkdm,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .clkdm_name     = "per_clkdm",
        .recalc         = &followparent_recalc,
 };
 
 static struct clk uart3_fck = {
        .name           = "uart3_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &per_48m_fck,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_UART3_SHIFT,
@@ -2417,6 +2517,7 @@ static struct clk uart3_fck = {
 
 static struct clk gpt2_fck = {
        .name           = "gpt2_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .init           = &omap2_init_clksel_parent,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_GPT2_SHIFT,
@@ -2430,6 +2531,7 @@ static struct clk gpt2_fck = {
 
 static struct clk gpt3_fck = {
        .name           = "gpt3_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .init           = &omap2_init_clksel_parent,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_GPT3_SHIFT,
@@ -2443,6 +2545,7 @@ static struct clk gpt3_fck = {
 
 static struct clk gpt4_fck = {
        .name           = "gpt4_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .init           = &omap2_init_clksel_parent,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_GPT4_SHIFT,
@@ -2456,6 +2559,7 @@ static struct clk gpt4_fck = {
 
 static struct clk gpt5_fck = {
        .name           = "gpt5_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .init           = &omap2_init_clksel_parent,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_GPT5_SHIFT,
@@ -2469,6 +2573,7 @@ static struct clk gpt5_fck = {
 
 static struct clk gpt6_fck = {
        .name           = "gpt6_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .init           = &omap2_init_clksel_parent,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_GPT6_SHIFT,
@@ -2482,6 +2587,7 @@ static struct clk gpt6_fck = {
 
 static struct clk gpt7_fck = {
        .name           = "gpt7_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .init           = &omap2_init_clksel_parent,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_GPT7_SHIFT,
@@ -2495,6 +2601,7 @@ static struct clk gpt7_fck = {
 
 static struct clk gpt8_fck = {
        .name           = "gpt8_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .init           = &omap2_init_clksel_parent,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_GPT8_SHIFT,
@@ -2508,6 +2615,7 @@ static struct clk gpt8_fck = {
 
 static struct clk gpt9_fck = {
        .name           = "gpt9_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .init           = &omap2_init_clksel_parent,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_GPT9_SHIFT,
@@ -2521,14 +2629,16 @@ static struct clk gpt9_fck = {
 
 static struct clk per_32k_alwon_fck = {
        .name           = "per_32k_alwon_fck",
+       .ops            = &clkops_null,
        .parent         = &omap_32k_fck,
        .clkdm_name     = "per_clkdm",
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .recalc         = &followparent_recalc,
 };
 
-static struct clk gpio6_fck = {
-       .name           = "gpio6_fck",
+static struct clk gpio6_dbck = {
+       .name           = "gpio6_dbck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &per_32k_alwon_fck,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_GPIO6_SHIFT,
@@ -2537,8 +2647,9 @@ static struct clk gpio6_fck = {
        .recalc         = &followparent_recalc,
 };
 
-static struct clk gpio5_fck = {
-       .name           = "gpio5_fck",
+static struct clk gpio5_dbck = {
+       .name           = "gpio5_dbck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &per_32k_alwon_fck,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_GPIO5_SHIFT,
@@ -2547,8 +2658,9 @@ static struct clk gpio5_fck = {
        .recalc         = &followparent_recalc,
 };
 
-static struct clk gpio4_fck = {
-       .name           = "gpio4_fck",
+static struct clk gpio4_dbck = {
+       .name           = "gpio4_dbck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &per_32k_alwon_fck,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_GPIO4_SHIFT,
@@ -2557,8 +2669,9 @@ static struct clk gpio4_fck = {
        .recalc         = &followparent_recalc,
 };
 
-static struct clk gpio3_fck = {
-       .name           = "gpio3_fck",
+static struct clk gpio3_dbck = {
+       .name           = "gpio3_dbck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &per_32k_alwon_fck,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_GPIO3_SHIFT,
@@ -2567,8 +2680,9 @@ static struct clk gpio3_fck = {
        .recalc         = &followparent_recalc,
 };
 
-static struct clk gpio2_fck = {
-       .name           = "gpio2_fck",
+static struct clk gpio2_dbck = {
+       .name           = "gpio2_dbck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &per_32k_alwon_fck,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_GPIO2_SHIFT,
@@ -2579,6 +2693,7 @@ static struct clk gpio2_fck = {
 
 static struct clk wdt3_fck = {
        .name           = "wdt3_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &per_32k_alwon_fck,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_WDT3_SHIFT,
@@ -2589,15 +2704,16 @@ static struct clk wdt3_fck = {
 
 static struct clk per_l4_ick = {
        .name           = "per_l4_ick",
+       .ops            = &clkops_null,
        .parent         = &l4_ick,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                               PARENT_CONTROLS_CLOCK,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .clkdm_name     = "per_clkdm",
        .recalc         = &followparent_recalc,
 };
 
 static struct clk gpio6_ick = {
        .name           = "gpio6_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &per_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPIO6_SHIFT,
@@ -2608,6 +2724,7 @@ static struct clk gpio6_ick = {
 
 static struct clk gpio5_ick = {
        .name           = "gpio5_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &per_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPIO5_SHIFT,
@@ -2618,6 +2735,7 @@ static struct clk gpio5_ick = {
 
 static struct clk gpio4_ick = {
        .name           = "gpio4_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &per_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPIO4_SHIFT,
@@ -2628,6 +2746,7 @@ static struct clk gpio4_ick = {
 
 static struct clk gpio3_ick = {
        .name           = "gpio3_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &per_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPIO3_SHIFT,
@@ -2638,6 +2757,7 @@ static struct clk gpio3_ick = {
 
 static struct clk gpio2_ick = {
        .name           = "gpio2_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &per_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPIO2_SHIFT,
@@ -2648,6 +2768,7 @@ static struct clk gpio2_ick = {
 
 static struct clk wdt3_ick = {
        .name           = "wdt3_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &per_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_WDT3_SHIFT,
@@ -2658,6 +2779,7 @@ static struct clk wdt3_ick = {
 
 static struct clk uart3_ick = {
        .name           = "uart3_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &per_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_UART3_SHIFT,
@@ -2668,6 +2790,7 @@ static struct clk uart3_ick = {
 
 static struct clk gpt9_ick = {
        .name           = "gpt9_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &per_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPT9_SHIFT,
@@ -2678,6 +2801,7 @@ static struct clk gpt9_ick = {
 
 static struct clk gpt8_ick = {
        .name           = "gpt8_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &per_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPT8_SHIFT,
@@ -2688,6 +2812,7 @@ static struct clk gpt8_ick = {
 
 static struct clk gpt7_ick = {
        .name           = "gpt7_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &per_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPT7_SHIFT,
@@ -2698,6 +2823,7 @@ static struct clk gpt7_ick = {
 
 static struct clk gpt6_ick = {
        .name           = "gpt6_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &per_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPT6_SHIFT,
@@ -2708,6 +2834,7 @@ static struct clk gpt6_ick = {
 
 static struct clk gpt5_ick = {
        .name           = "gpt5_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &per_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPT5_SHIFT,
@@ -2718,6 +2845,7 @@ static struct clk gpt5_ick = {
 
 static struct clk gpt4_ick = {
        .name           = "gpt4_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &per_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPT4_SHIFT,
@@ -2728,6 +2856,7 @@ static struct clk gpt4_ick = {
 
 static struct clk gpt3_ick = {
        .name           = "gpt3_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &per_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPT3_SHIFT,
@@ -2738,6 +2867,7 @@ static struct clk gpt3_ick = {
 
 static struct clk gpt2_ick = {
        .name           = "gpt2_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &per_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPT2_SHIFT,
@@ -2748,6 +2878,7 @@ static struct clk gpt2_ick = {
 
 static struct clk mcbsp2_ick = {
        .name           = "mcbsp_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .id             = 2,
        .parent         = &per_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
@@ -2759,6 +2890,7 @@ static struct clk mcbsp2_ick = {
 
 static struct clk mcbsp3_ick = {
        .name           = "mcbsp_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .id             = 3,
        .parent         = &per_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
@@ -2770,6 +2902,7 @@ static struct clk mcbsp3_ick = {
 
 static struct clk mcbsp4_ick = {
        .name           = "mcbsp_ick",
+       .ops            = &clkops_omap2_dflt_wait,
        .id             = 4,
        .parent         = &per_l4_ick,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
@@ -2787,6 +2920,7 @@ static const struct clksel mcbsp_234_clksel[] = {
 
 static struct clk mcbsp2_fck = {
        .name           = "mcbsp_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .id             = 2,
        .init           = &omap2_init_clksel_parent,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
@@ -2801,6 +2935,7 @@ static struct clk mcbsp2_fck = {
 
 static struct clk mcbsp3_fck = {
        .name           = "mcbsp_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .id             = 3,
        .init           = &omap2_init_clksel_parent,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
@@ -2815,6 +2950,7 @@ static struct clk mcbsp3_fck = {
 
 static struct clk mcbsp4_fck = {
        .name           = "mcbsp_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .id             = 4,
        .init           = &omap2_init_clksel_parent,
        .enable_reg     = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
@@ -2866,11 +3002,12 @@ static const struct clksel emu_src_clksel[] = {
  */
 static struct clk emu_src_ck = {
        .name           = "emu_src_ck",
+       .ops            = &clkops_null,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(OMAP3430_EMU_MOD, CM_CLKSEL1),
        .clksel_mask    = OMAP3430_MUX_CTRL_MASK,
        .clksel         = emu_src_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .clkdm_name     = "emu_clkdm",
        .recalc         = &omap2_clksel_recalc,
 };
@@ -2890,11 +3027,12 @@ static const struct clksel pclk_emu_clksel[] = {
 
 static struct clk pclk_fck = {
        .name           = "pclk_fck",
+       .ops            = &clkops_null,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(OMAP3430_EMU_MOD, CM_CLKSEL1),
        .clksel_mask    = OMAP3430_CLKSEL_PCLK_MASK,
        .clksel         = pclk_emu_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .clkdm_name     = "emu_clkdm",
        .recalc         = &omap2_clksel_recalc,
 };
@@ -2913,11 +3051,12 @@ static const struct clksel pclkx2_emu_clksel[] = {
 
 static struct clk pclkx2_fck = {
        .name           = "pclkx2_fck",
+       .ops            = &clkops_null,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(OMAP3430_EMU_MOD, CM_CLKSEL1),
        .clksel_mask    = OMAP3430_CLKSEL_PCLKX2_MASK,
        .clksel         = pclkx2_emu_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .clkdm_name     = "emu_clkdm",
        .recalc         = &omap2_clksel_recalc,
 };
@@ -2929,22 +3068,24 @@ static const struct clksel atclk_emu_clksel[] = {
 
 static struct clk atclk_fck = {
        .name           = "atclk_fck",
+       .ops            = &clkops_null,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(OMAP3430_EMU_MOD, CM_CLKSEL1),
        .clksel_mask    = OMAP3430_CLKSEL_ATCLK_MASK,
        .clksel         = atclk_emu_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .clkdm_name     = "emu_clkdm",
        .recalc         = &omap2_clksel_recalc,
 };
 
 static struct clk traceclk_src_fck = {
        .name           = "traceclk_src_fck",
+       .ops            = &clkops_null,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(OMAP3430_EMU_MOD, CM_CLKSEL1),
        .clksel_mask    = OMAP3430_TRACE_MUX_CTRL_MASK,
        .clksel         = emu_src_clksel,
-       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED,
+       .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
        .clkdm_name     = "emu_clkdm",
        .recalc         = &omap2_clksel_recalc,
 };
@@ -2963,11 +3104,12 @@ static const struct clksel traceclk_clksel[] = {
 
 static struct clk traceclk_fck = {
        .name           = "traceclk_fck",
+       .ops            = &clkops_null,
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = OMAP_CM_REGADDR(OMAP3430_EMU_MOD, CM_CLKSEL1),
        .clksel_mask    = OMAP3430_CLKSEL_TRACECLK_MASK,
        .clksel         = traceclk_clksel,
-       .flags          = CLOCK_IN_OMAP343X | ALWAYS_ENABLED,
+       .flags          = CLOCK_IN_OMAP343X,
        .clkdm_name     = "emu_clkdm",
        .recalc         = &omap2_clksel_recalc,
 };
@@ -2977,6 +3119,7 @@ static struct clk traceclk_fck = {
 /* SmartReflex fclk (VDD1) */
 static struct clk sr1_fck = {
        .name           = "sr1_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &sys_ck,
        .enable_reg     = OMAP_CM_REGADDR(WKUP_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_SR1_SHIFT,
@@ -2987,6 +3130,7 @@ static struct clk sr1_fck = {
 /* SmartReflex fclk (VDD2) */
 static struct clk sr2_fck = {
        .name           = "sr2_fck",
+       .ops            = &clkops_omap2_dflt_wait,
        .parent         = &sys_ck,
        .enable_reg     = OMAP_CM_REGADDR(WKUP_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_SR2_SHIFT,
@@ -2996,6 +3140,7 @@ static struct clk sr2_fck = {
 
 static struct clk sr_l4_ick = {
        .name           = "sr_l4_ick",
+       .ops            = &clkops_null, /* RMK: missing? */
        .parent         = &l4_ick,
        .flags          = CLOCK_IN_OMAP343X,
        .clkdm_name     = "core_l4_clkdm",
@@ -3007,15 +3152,17 @@ static struct clk sr_l4_ick = {
 /* XXX This clock no longer exists in 3430 TRM rev F */
 static struct clk gpt12_fck = {
        .name           = "gpt12_fck",
+       .ops            = &clkops_null,
        .parent         = &secure_32k_fck,
-       .flags          = CLOCK_IN_OMAP343X | ALWAYS_ENABLED,
+       .flags          = CLOCK_IN_OMAP343X,
        .recalc         = &followparent_recalc,
 };
 
 static struct clk wdt1_fck = {
        .name           = "wdt1_fck",
+       .ops            = &clkops_null,
        .parent         = &secure_32k_fck,
-       .flags          = CLOCK_IN_OMAP343X | ALWAYS_ENABLED,
+       .flags          = CLOCK_IN_OMAP343X,
        .recalc         = &followparent_recalc,
 };
 
@@ -3170,7 +3317,7 @@ static struct clk *onchip_34xx_clks[] __initdata = {
        &usim_fck,
        &gpt1_fck,
        &wkup_32k_fck,
-       &gpio1_fck,
+       &gpio1_dbck,
        &wdt2_fck,
        &wkup_l4_ick,
        &usim_ick,
@@ -3192,11 +3339,11 @@ static struct clk *onchip_34xx_clks[] __initdata = {
        &gpt8_fck,
        &gpt9_fck,
        &per_32k_alwon_fck,
-       &gpio6_fck,
-       &gpio5_fck,
-       &gpio4_fck,
-       &gpio3_fck,
-       &gpio2_fck,
+       &gpio6_dbck,
+       &gpio5_dbck,
+       &gpio4_dbck,
+       &gpio3_dbck,
+       &gpio2_dbck,
        &wdt3_fck,
        &per_l4_ick,
        &gpio6_ick,