]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/arm/mach-omap2/clock34xx.h
Adding csi2_fck declaration to clock34xx.h
[linux-2.6-omap-h63xx.git] / arch / arm / mach-omap2 / clock34xx.h
index 161da124d6fa065df9f7b5161a0f524d711481e6..4d16f56366c26f68702a4cef5ce52bfb360187d0 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef __ARCH_ARM_MACH_OMAP2_CLOCK34XX_H
 #define __ARCH_ARM_MACH_OMAP2_CLOCK34XX_H
 
-#include <asm/arch/control.h>
+#include <mach/control.h>
 
 #include "clock.h"
 #include "cm.h"
@@ -35,6 +35,7 @@ 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);
 static int omap3_noncore_dpll_set_rate(struct clk *clk, unsigned long rate);
+static int omap3_core_dpll_m2_set_rate(struct clk *clk, unsigned long rate);
 
 /* Maximum DPLL multiplier, divider values for OMAP3 */
 #define OMAP3_MAX_DPLL_MULT            2048
@@ -178,7 +179,7 @@ static const struct clksel osc_sys_clksel[] = {
 static struct clk osc_sys_ck = {
        .name           = "osc_sys_ck",
        .init           = &omap2_init_clksel_parent,
-       .clksel_reg     = OMAP3430_PRM_CLKSEL,
+       .clksel_reg     = (__force void __iomem *)OMAP3430_PRM_CLKSEL,
        .clksel_mask    = OMAP3430_SYS_CLKIN_SEL_MASK,
        .clksel         = osc_sys_clksel,
        /* REVISIT: deal with autoextclkmode? */
@@ -204,7 +205,7 @@ static struct clk sys_ck = {
        .name           = "sys_ck",
        .parent         = &osc_sys_ck,
        .init           = &omap2_init_clksel_parent,
-       .clksel_reg     = OMAP3430_PRM_CLKSRC_CTRL,
+       .clksel_reg     = (__force void __iomem *)OMAP3430_PRM_CLKSRC_CTRL,
        .clksel_mask    = OMAP_SYSCLKDIV_MASK,
        .clksel         = sys_clksel,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED,
@@ -229,7 +230,7 @@ static struct clk mcbsp_clks = {
 static struct clk sys_clkout1 = {
        .name           = "sys_clkout1",
        .parent         = &osc_sys_ck,
-       .enable_reg     = OMAP3430_PRM_CLKOUT_CTRL,
+       .enable_reg     = (__force void __iomem *)OMAP3430_PRM_CLKOUT_CTRL,
        .enable_bit     = OMAP3430_CLKOUT_EN_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
        .recalc         = &followparent_recalc,
@@ -272,6 +273,9 @@ static const struct clksel_rate div16_dpll_rates[] = {
 #define _OMAP34XX_CM_REGADDR(module, reg)                              \
        ((__force void __iomem *)(OMAP34XX_CM_REGADDR((module), (reg))))
 
+#define _OMAP34XX_PRM_REGADDR(module, reg)                             \
+       ((__force void __iomem *)(OMAP34XX_PRM_REGADDR((module), (reg))))
+
 /* DPLL1 */
 /* MPU clock source */
 /* Type: DPLL */
@@ -481,11 +485,7 @@ static const struct clksel div31_dpll3m2_clksel[] = {
        { .parent = NULL }
 };
 
-/*
- * DPLL3 output M2
- * REVISIT: This DPLL output divider must be changed in SRAM, so until
- * that code is ready, this should remain a 'read-only' clksel clock.
- */
+/* DPLL3 output M2 - primary control point for CORE speed */
 static struct clk dpll3_m2_ck = {
        .name           = "dpll3_m2_ck",
        .parent         = &dpll3_ck,
@@ -495,6 +495,8 @@ static struct clk dpll3_m2_ck = {
        .clksel         = div31_dpll3m2_clksel,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
                                PARENT_CONTROLS_CLOCK,
+       .round_rate     = &omap2_clksel_round_rate,
+       .set_rate       = &omap3_core_dpll_m2_set_rate,
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -661,6 +663,12 @@ static const struct clksel omap_96m_alwon_fck_clksel[] = {
        { .parent = NULL }
 };
 
+/*
+ * DPLL4 generates DPLL4_M2X2_CLK which is then routed into the PRM as
+ * PRM_96M_ALWON_(F)CLK.  Two clocks then emerge from the PRM:
+ * 96M_ALWON_FCLK (called "omap_96m_alwon_fck" below) and
+ * CM_96K_(F)CLK.
+ */
 static struct clk omap_96m_alwon_fck = {
        .name           = "omap_96m_alwon_fck",
        .parent         = &dpll4_m2x2_ck,
@@ -669,31 +677,41 @@ static struct clk omap_96m_alwon_fck = {
        .clksel_mask    = OMAP3430_ST_PERIPH_CLK_MASK,
        .clksel         = omap_96m_alwon_fck_clksel,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
-                                PARENT_CONTROLS_CLOCK,
+                               PARENT_CONTROLS_CLOCK,
        .recalc         = &omap2_clksel_recalc,
 };
 
-static struct clk omap_96m_fck = {
-       .name           = "omap_96m_fck",
+static struct clk cm_96m_fck = {
+       .name           = "cm_96m_fck",
        .parent         = &omap_96m_alwon_fck,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
                                PARENT_CONTROLS_CLOCK,
        .recalc         = &followparent_recalc,
 };
 
-static const struct clksel cm_96m_fck_clksel[] = {
-       { .parent = &sys_ck,        .rates = dpll_bypass_rates },
-       { .parent = &dpll4_m2x2_ck, .rates = dpll_locked_rates },
+static const struct clksel_rate omap_96m_dpll_rates[] = {
+       { .div = 1, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE },
+       { .div = 0 }
+};
+
+static const struct clksel_rate omap_96m_sys_rates[] = {
+       { .div = 1, .val = 1, .flags = RATE_IN_343X | DEFAULT_RATE },
+       { .div = 0 }
+};
+
+static const struct clksel omap_96m_fck_clksel[] = {
+       { .parent = &cm_96m_fck, .rates = omap_96m_dpll_rates },
+       { .parent = &sys_ck,     .rates = omap_96m_sys_rates },
        { .parent = NULL }
 };
 
-static struct clk cm_96m_fck = {
-       .name           = "cm_96m_fck",
-       .parent         = &dpll4_m2x2_ck,
+static struct clk omap_96m_fck = {
+       .name           = "omap_96m_fck",
+       .parent         = &sys_ck,
        .init           = &omap2_init_clksel_parent,
-       .clksel_reg     = _OMAP34XX_CM_REGADDR(PLL_MOD, CM_IDLEST),
-       .clksel_mask    = OMAP3430_ST_PERIPH_CLK_MASK,
-       .clksel         = cm_96m_fck_clksel,
+       .clksel_reg     = _OMAP34XX_CM_REGADDR(PLL_MOD, CM_CLKSEL1),
+       .clksel_mask    = OMAP3430_SOURCE_96M_MASK,
+       .clksel         = omap_96m_fck_clksel,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
                                PARENT_CONTROLS_CLOCK,
        .recalc         = &omap2_clksel_recalc,
@@ -761,14 +779,14 @@ static struct clk omap_54m_fck = {
        .name           = "omap_54m_fck",
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = _OMAP34XX_CM_REGADDR(PLL_MOD, CM_CLKSEL1),
-       .clksel_mask    = OMAP3430_SOURCE_54M,
+       .clksel_mask    = OMAP3430_SOURCE_54M_MASK,
        .clksel         = omap_54m_clksel,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
                                PARENT_CONTROLS_CLOCK,
        .recalc         = &omap2_clksel_recalc,
 };
 
-static const struct clksel_rate omap_48m_96md2_rates[] = {
+static const struct clksel_rate omap_48m_cm96m_rates[] = {
        { .div = 2, .val = 0, .flags = RATE_IN_343X | DEFAULT_RATE },
        { .div = 0 }
 };
@@ -779,7 +797,7 @@ static const struct clksel_rate omap_48m_alt_rates[] = {
 };
 
 static const struct clksel omap_48m_clksel[] = {
-       { .parent = &cm_96m_fck, .rates = omap_48m_96md2_rates },
+       { .parent = &cm_96m_fck, .rates = omap_48m_cm96m_rates },
        { .parent = &sys_altclk, .rates = omap_48m_alt_rates },
        { .parent = NULL }
 };
@@ -788,7 +806,7 @@ static struct clk omap_48m_fck = {
        .name           = "omap_48m_fck",
        .init           = &omap2_init_clksel_parent,
        .clksel_reg     = _OMAP34XX_CM_REGADDR(PLL_MOD, CM_CLKSEL1),
-       .clksel_mask    = OMAP3430_SOURCE_48M,
+       .clksel_mask    = OMAP3430_SOURCE_48M_MASK,
        .clksel         = omap_48m_clksel,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
                                PARENT_CONTROLS_CLOCK,
@@ -976,10 +994,10 @@ static const struct clksel_rate clkout2_src_54m_rates[] = {
 };
 
 static const struct clksel clkout2_src_clksel[] = {
-       { .parent = &core_ck,             .rates = clkout2_src_core_rates },
-       { .parent = &sys_ck,              .rates = clkout2_src_sys_rates },
-       { .parent = &omap_96m_alwon_fck,  .rates = clkout2_src_96m_rates },
-       { .parent = &omap_54m_fck,        .rates = clkout2_src_54m_rates },
+       { .parent = &core_ck,           .rates = clkout2_src_core_rates },
+       { .parent = &sys_ck,            .rates = clkout2_src_sys_rates },
+       { .parent = &cm_96m_fck,        .rates = clkout2_src_96m_rates },
+       { .parent = &omap_54m_fck,      .rates = clkout2_src_54m_rates },
        { .parent = NULL }
 };
 
@@ -992,7 +1010,7 @@ static struct clk clkout2_src_ck = {
        .clksel_mask    = OMAP3430_CLKOUT2SOURCE_MASK,
        .clksel         = clkout2_src_clksel,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
-       .clkdm_name     = "core_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -1081,7 +1099,7 @@ static struct clk mpu_ck = {
        .clksel         = mpu_clksel,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
                                PARENT_CONTROLS_CLOCK,
-       .clkdm_name     = "mpu_clkdm",
+       .clkdm          = { .name = "mpu_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -1159,7 +1177,7 @@ static struct clk iva2_ck = {
        .clksel_mask    = OMAP3430_ST_IVA2_CLK_MASK,
        .clksel         = iva2_clksel,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
-       .clkdm_name     = "iva2_clkdm",
+       .clkdm          = { .name = "iva2_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -1179,7 +1197,7 @@ static struct clk l3_ick = {
        .clksel         = div2_core_clksel,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
                                PARENT_CONTROLS_CLOCK,
-       .clkdm_name     = "core_l3_clkdm",
+       .clkdm          = { .name = "core_l3_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -1197,7 +1215,7 @@ static struct clk l4_ick = {
        .clksel         = div2_l3_clksel,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
                                PARENT_CONTROLS_CLOCK,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 
 };
@@ -1247,7 +1265,7 @@ static struct clk gfx_l3_fck = {
        .clksel         = gfx_l3_clksel,
        .flags          = CLOCK_IN_OMAP3430ES1 | RATE_PROPAGATES |
                                PARENT_CONTROLS_CLOCK,
-       .clkdm_name     = "gfx_3430es1_clkdm",
+       .clkdm          = { .name = "gfx_3430es1_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -1255,7 +1273,7 @@ static struct clk gfx_l3_ick = {
        .name           = "gfx_l3_ick",
        .parent         = &gfx_l3_ck,
        .flags          = CLOCK_IN_OMAP3430ES1 | PARENT_CONTROLS_CLOCK,
-       .clkdm_name     = "gfx_3430es1_clkdm",
+       .clkdm          = { .name = "gfx_3430es1_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1266,7 +1284,7 @@ static struct clk gfx_cg1_ck = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(GFX_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430ES1_EN_2D_SHIFT,
        .flags          = CLOCK_IN_OMAP3430ES1,
-       .clkdm_name     = "gfx_3430es1_clkdm",
+       .clkdm          = { .name = "gfx_3430es1_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1277,7 +1295,7 @@ static struct clk gfx_cg2_ck = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(GFX_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430ES1_EN_3D_SHIFT,
        .flags          = CLOCK_IN_OMAP3430ES1,
-       .clkdm_name     = "gfx_3430es1_clkdm",
+       .clkdm          = { .name = "gfx_3430es1_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1310,7 +1328,7 @@ static struct clk sgx_fck = {
        .clksel_mask    = OMAP3430ES2_CLKSEL_SGX_MASK,
        .clksel         = sgx_clksel,
        .flags          = CLOCK_IN_OMAP3430ES2,
-       .clkdm_name     = "sgx_clkdm",
+       .clkdm          = { .name = "sgx_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -1321,7 +1339,7 @@ static struct clk sgx_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430ES2_SGX_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430ES2_EN_SGX_SHIFT,
        .flags          = CLOCK_IN_OMAP3430ES2,
-       .clkdm_name     = "sgx_clkdm",
+       .clkdm          = { .name = "sgx_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1334,7 +1352,7 @@ static struct clk d2d_26m_fck = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
        .enable_bit     = OMAP3430ES1_EN_D2D_SHIFT,
        .flags          = CLOCK_IN_OMAP3430ES1,
-       .clkdm_name     = "d2d_clkdm",
+       .clkdm          = { .name = "d2d_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1354,7 +1372,7 @@ static struct clk gpt10_fck = {
        .clksel_mask    = OMAP3430_CLKSEL_GPT10_MASK,
        .clksel         = omap343x_gpt_clksel,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -1368,7 +1386,7 @@ static struct clk gpt11_fck = {
        .clksel_mask    = OMAP3430_CLKSEL_GPT11_MASK,
        .clksel         = omap343x_gpt_clksel,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -1406,7 +1424,7 @@ static struct clk core_96m_fck = {
        .parent         = &omap_96m_fck,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
                                PARENT_CONTROLS_CLOCK,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1417,7 +1435,7 @@ static struct clk mmchs3_fck = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
        .enable_bit     = OMAP3430ES2_EN_MMC3_SHIFT,
        .flags          = CLOCK_IN_OMAP3430ES2,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1428,7 +1446,7 @@ static struct clk mmchs2_fck = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
        .enable_bit     = OMAP3430_EN_MMC2_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1438,7 +1456,7 @@ static struct clk mspro_fck = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
        .enable_bit     = OMAP3430_EN_MSPRO_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1449,7 +1467,7 @@ static struct clk mmchs1_fck = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
        .enable_bit     = OMAP3430_EN_MMC1_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1460,7 +1478,7 @@ static struct clk i2c3_fck = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
        .enable_bit     = OMAP3430_EN_I2C3_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1471,7 +1489,7 @@ static struct clk i2c2_fck = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
        .enable_bit     = OMAP3430_EN_I2C2_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1482,7 +1500,7 @@ static struct clk i2c1_fck = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
        .enable_bit     = OMAP3430_EN_I2C1_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1516,7 +1534,7 @@ static struct clk mcbsp5_fck = {
        .clksel_mask    = OMAP2_MCBSP5_CLKS_MASK,
        .clksel         = mcbsp_15_clksel,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -1530,7 +1548,7 @@ static struct clk mcbsp1_fck = {
        .clksel_mask    = OMAP2_MCBSP1_CLKS_MASK,
        .clksel         = mcbsp_15_clksel,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -1541,7 +1559,7 @@ static struct clk core_48m_fck = {
        .parent         = &omap_48m_fck,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
                                PARENT_CONTROLS_CLOCK,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1619,7 +1637,7 @@ static struct clk core_12m_fck = {
        .parent         = &omap_12m_fck,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
                                PARENT_CONTROLS_CLOCK,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1658,7 +1676,7 @@ static struct clk ssi_ssr_fck = {
        .clksel_mask    = OMAP3430_CLKSEL_SSI_MASK,
        .clksel         = ssi_ssr_clksel,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -1684,7 +1702,7 @@ static struct clk core_l3_ick = {
        .init           = &omap2_init_clk_clkdm,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
                                PARENT_CONTROLS_CLOCK,
-       .clkdm_name     = "core_l3_clkdm",
+       .clkdm          = { .name = "core_l3_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1694,7 +1712,7 @@ static struct clk hsotgusb_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_HSOTGUSB_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l3_clkdm",
+       .clkdm          = { .name = "core_l3_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1704,7 +1722,7 @@ static struct clk sdrc_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_SDRC_SHIFT,
        .flags          = CLOCK_IN_OMAP343X | ENABLE_ON_INIT,
-       .clkdm_name     = "core_l3_clkdm",
+       .clkdm          = { .name = "core_l3_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1713,7 +1731,7 @@ static struct clk gpmc_fck = {
        .parent         = &core_l3_ick,
        .flags          = CLOCK_IN_OMAP343X | PARENT_CONTROLS_CLOCK |
                                ENABLE_ON_INIT,
-       .clkdm_name     = "core_l3_clkdm",
+       .clkdm          = { .name = "core_l3_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1744,7 +1762,7 @@ static struct clk core_l4_ick = {
        .init           = &omap2_init_clk_clkdm,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
                                PARENT_CONTROLS_CLOCK,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1754,7 +1772,7 @@ static struct clk usbtll_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN3),
        .enable_bit     = OMAP3430ES2_EN_USBTLL_SHIFT,
        .flags          = CLOCK_IN_OMAP3430ES2,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1765,7 +1783,7 @@ static struct clk mmchs3_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430ES2_EN_MMC3_SHIFT,
        .flags          = CLOCK_IN_OMAP3430ES2,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1776,7 +1794,7 @@ static struct clk icr_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_ICR_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1786,7 +1804,7 @@ static struct clk aes2_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_AES2_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1796,7 +1814,7 @@ static struct clk sha12_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_SHA12_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1806,7 +1824,7 @@ static struct clk des2_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_DES2_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1817,7 +1835,7 @@ static struct clk mmchs2_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_MMC2_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1828,7 +1846,7 @@ static struct clk mmchs1_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_MMC1_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1838,7 +1856,7 @@ static struct clk mspro_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_MSPRO_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1848,7 +1866,7 @@ static struct clk hdq_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_HDQ_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1859,7 +1877,7 @@ static struct clk mcspi4_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_MCSPI4_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1870,7 +1888,7 @@ static struct clk mcspi3_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_MCSPI3_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1881,7 +1899,7 @@ static struct clk mcspi2_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_MCSPI2_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1892,7 +1910,7 @@ static struct clk mcspi1_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_MCSPI1_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1903,7 +1921,7 @@ static struct clk i2c3_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_I2C3_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1914,7 +1932,7 @@ static struct clk i2c2_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_I2C2_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1925,7 +1943,7 @@ static struct clk i2c1_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_I2C1_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1935,7 +1953,7 @@ static struct clk uart2_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_UART2_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1945,7 +1963,7 @@ static struct clk uart1_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_UART1_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1955,7 +1973,7 @@ static struct clk gpt11_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_GPT11_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1965,7 +1983,7 @@ static struct clk gpt10_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_GPT10_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1976,7 +1994,7 @@ static struct clk mcbsp5_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_MCBSP5_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1987,7 +2005,7 @@ static struct clk mcbsp1_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_MCBSP1_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -1997,7 +2015,7 @@ static struct clk fac_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430ES1_EN_FAC_SHIFT,
        .flags          = CLOCK_IN_OMAP3430ES1,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2007,7 +2025,7 @@ static struct clk mailboxes_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_MAILBOXES_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2027,7 +2045,7 @@ static struct clk ssi_l4_ick = {
        .parent         = &l4_ick,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
                                PARENT_CONTROLS_CLOCK,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2037,7 +2055,7 @@ static struct clk ssi_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
        .enable_bit     = OMAP3430_EN_SSI_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2127,7 +2145,7 @@ static struct clk dss1_alwon_fck = {
        .clksel_mask    = OMAP3430_ST_PERIPH_CLK_MASK,
        .clksel         = dss1_alwon_fck_clksel,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "dss_clkdm",
+       .clkdm          = { .name = "dss_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -2138,7 +2156,7 @@ static struct clk dss_tv_fck = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_DSS_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_TV_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "dss_clkdm",
+       .clkdm          = { .name = "dss_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2149,7 +2167,7 @@ static struct clk dss_96m_fck = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_DSS_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_TV_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "dss_clkdm",
+       .clkdm          = { .name = "dss_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2160,7 +2178,7 @@ static struct clk dss2_alwon_fck = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_DSS_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_DSS2_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "dss_clkdm",
+       .clkdm          = { .name = "dss_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2172,7 +2190,7 @@ static struct clk dss_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_DSS_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_CM_ICLKEN_DSS_EN_DSS_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "dss_clkdm",
+       .clkdm          = { .name = "dss_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2194,7 +2212,7 @@ static struct clk cam_mclk = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_CAM_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_CAM_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "cam_clkdm",
+       .clkdm          = { .name = "cam_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -2206,7 +2224,18 @@ static struct clk cam_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_CAM_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_CAM_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "cam_clkdm",
+       .clkdm          = { .name = "cam_clkdm" },
+       .recalc         = &followparent_recalc,
+};
+
+static struct clk csi2_96m_fck = {
+       .name           = "csi2_96m_fck",
+       .parent         = &core_96m_fck,
+       .init           = &omap2_init_clk_clkdm,
+       .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_CAM_MOD, CM_FCLKEN),
+       .enable_bit     = OMAP3430_EN_CSI2_SHIFT,
+       .flags          = CLOCK_IN_OMAP343X,
+       .clkdm          = { .name = "cam_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2219,7 +2248,7 @@ static struct clk usbhost_120m_fck = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430ES2_USBHOST_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430ES2_EN_USBHOST2_SHIFT,
        .flags          = CLOCK_IN_OMAP3430ES2,
-       .clkdm_name     = "usbhost_clkdm",
+       .clkdm          = { .name = "usbhost_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2230,7 +2259,7 @@ static struct clk usbhost_48m_fck = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430ES2_USBHOST_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430ES2_EN_USBHOST1_SHIFT,
        .flags          = CLOCK_IN_OMAP3430ES2,
-       .clkdm_name     = "usbhost_clkdm",
+       .clkdm          = { .name = "usbhost_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2242,7 +2271,7 @@ static struct clk usbhost_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430ES2_USBHOST_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430ES2_EN_USBHOST_SHIFT,
        .flags          = CLOCK_IN_OMAP3430ES2,
-       .clkdm_name     = "usbhost_clkdm",
+       .clkdm          = { .name = "usbhost_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2294,7 +2323,7 @@ static struct clk gpt1_fck = {
        .clksel_mask    = OMAP3430_CLKSEL_GPT1_MASK,
        .clksel         = omap343x_gpt_clksel,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "wkup_clkdm",
+       .clkdm          = { .name = "wkup_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -2303,7 +2332,7 @@ static struct clk wkup_32k_fck = {
        .init           = &omap2_init_clk_clkdm,
        .parent         = &omap_32k_fck,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED,
-       .clkdm_name     = "wkup_clkdm",
+       .clkdm          = { .name = "wkup_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2313,7 +2342,7 @@ static struct clk gpio1_fck = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(WKUP_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_GPIO1_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "wkup_clkdm",
+       .clkdm          = { .name = "wkup_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2323,7 +2352,7 @@ static struct clk wdt2_fck = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(WKUP_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_WDT2_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "wkup_clkdm",
+       .clkdm          = { .name = "wkup_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2331,7 +2360,7 @@ static struct clk wkup_l4_ick = {
        .name           = "wkup_l4_ick",
        .parent         = &sys_ck,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED,
-       .clkdm_name     = "wkup_clkdm",
+       .clkdm          = { .name = "wkup_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2343,7 +2372,7 @@ static struct clk usim_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(WKUP_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430ES2_EN_USIMOCP_SHIFT,
        .flags          = CLOCK_IN_OMAP3430ES2,
-       .clkdm_name     = "wkup_clkdm",
+       .clkdm          = { .name = "wkup_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2353,7 +2382,7 @@ static struct clk wdt2_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(WKUP_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_WDT2_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "wkup_clkdm",
+       .clkdm          = { .name = "wkup_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2363,7 +2392,7 @@ static struct clk wdt1_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(WKUP_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_WDT1_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "wkup_clkdm",
+       .clkdm          = { .name = "wkup_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2373,7 +2402,7 @@ static struct clk gpio1_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(WKUP_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPIO1_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "wkup_clkdm",
+       .clkdm          = { .name = "wkup_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2383,7 +2412,7 @@ static struct clk omap_32ksync_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(WKUP_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_32KSYNC_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "wkup_clkdm",
+       .clkdm          = { .name = "wkup_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2394,7 +2423,7 @@ static struct clk gpt12_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(WKUP_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPT12_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "wkup_clkdm",
+       .clkdm          = { .name = "wkup_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2404,7 +2433,7 @@ static struct clk gpt1_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(WKUP_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPT1_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "wkup_clkdm",
+       .clkdm          = { .name = "wkup_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2418,7 +2447,7 @@ static struct clk per_96m_fck = {
        .init           = &omap2_init_clk_clkdm,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
                                PARENT_CONTROLS_CLOCK,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2428,7 +2457,7 @@ static struct clk per_48m_fck = {
        .init           = &omap2_init_clk_clkdm,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
                                PARENT_CONTROLS_CLOCK,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2438,7 +2467,7 @@ static struct clk uart3_fck = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_UART3_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2451,7 +2480,7 @@ static struct clk gpt2_fck = {
        .clksel_mask    = OMAP3430_CLKSEL_GPT2_MASK,
        .clksel         = omap343x_gpt_clksel,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -2464,7 +2493,7 @@ static struct clk gpt3_fck = {
        .clksel_mask    = OMAP3430_CLKSEL_GPT3_MASK,
        .clksel         = omap343x_gpt_clksel,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -2477,7 +2506,7 @@ static struct clk gpt4_fck = {
        .clksel_mask    = OMAP3430_CLKSEL_GPT4_MASK,
        .clksel         = omap343x_gpt_clksel,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -2490,7 +2519,7 @@ static struct clk gpt5_fck = {
        .clksel_mask    = OMAP3430_CLKSEL_GPT5_MASK,
        .clksel         = omap343x_gpt_clksel,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -2503,7 +2532,7 @@ static struct clk gpt6_fck = {
        .clksel_mask    = OMAP3430_CLKSEL_GPT6_MASK,
        .clksel         = omap343x_gpt_clksel,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -2516,7 +2545,7 @@ static struct clk gpt7_fck = {
        .clksel_mask    = OMAP3430_CLKSEL_GPT7_MASK,
        .clksel         = omap343x_gpt_clksel,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -2529,7 +2558,7 @@ static struct clk gpt8_fck = {
        .clksel_mask    = OMAP3430_CLKSEL_GPT8_MASK,
        .clksel         = omap343x_gpt_clksel,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -2542,14 +2571,14 @@ static struct clk gpt9_fck = {
        .clksel_mask    = OMAP3430_CLKSEL_GPT9_MASK,
        .clksel         = omap343x_gpt_clksel,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
 static struct clk per_32k_alwon_fck = {
        .name           = "per_32k_alwon_fck",
        .parent         = &omap_32k_fck,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED,
        .recalc         = &followparent_recalc,
 };
@@ -2560,7 +2589,7 @@ static struct clk gpio6_fck = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_GPIO6_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2570,7 +2599,7 @@ static struct clk gpio5_fck = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_GPIO5_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2580,7 +2609,7 @@ static struct clk gpio4_fck = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_GPIO4_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2590,7 +2619,7 @@ static struct clk gpio3_fck = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_GPIO3_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2600,7 +2629,7 @@ static struct clk gpio2_fck = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_GPIO2_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2610,7 +2639,7 @@ static struct clk wdt3_fck = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
        .enable_bit     = OMAP3430_EN_WDT3_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2619,7 +2648,7 @@ static struct clk per_l4_ick = {
        .parent         = &l4_ick,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES |
                                PARENT_CONTROLS_CLOCK,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2629,7 +2658,7 @@ static struct clk gpio6_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPIO6_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2639,7 +2668,7 @@ static struct clk gpio5_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPIO5_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2649,7 +2678,7 @@ static struct clk gpio4_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPIO4_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2659,7 +2688,7 @@ static struct clk gpio3_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPIO3_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2669,7 +2698,7 @@ static struct clk gpio2_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPIO2_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2679,7 +2708,7 @@ static struct clk wdt3_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_WDT3_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2689,7 +2718,7 @@ static struct clk uart3_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_UART3_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2699,7 +2728,7 @@ static struct clk gpt9_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPT9_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2709,7 +2738,7 @@ static struct clk gpt8_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPT8_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2719,7 +2748,7 @@ static struct clk gpt7_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPT7_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2729,7 +2758,7 @@ static struct clk gpt6_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPT6_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2739,7 +2768,7 @@ static struct clk gpt5_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPT5_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2749,7 +2778,7 @@ static struct clk gpt4_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPT4_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2759,7 +2788,7 @@ static struct clk gpt3_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPT3_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2769,7 +2798,7 @@ static struct clk gpt2_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_GPT2_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2780,7 +2809,7 @@ static struct clk mcbsp2_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_MCBSP2_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2791,7 +2820,7 @@ static struct clk mcbsp3_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_MCBSP3_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -2802,13 +2831,13 @@ static struct clk mcbsp4_ick = {
        .enable_reg     = _OMAP34XX_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
        .enable_bit     = OMAP3430_EN_MCBSP4_SHIFT,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
 static const struct clksel mcbsp_234_clksel[] = {
-       { .parent = &per_96m_fck, .rates = common_mcbsp_96m_rates },
-       { .parent = &mcbsp_clks,  .rates = common_mcbsp_mcbsp_rates },
+       { .parent = &core_96m_fck, .rates = common_mcbsp_96m_rates },
+       { .parent = &mcbsp_clks,   .rates = common_mcbsp_mcbsp_rates },
        { .parent = NULL }
 };
 
@@ -2822,7 +2851,7 @@ static struct clk mcbsp2_fck = {
        .clksel_mask    = OMAP2_MCBSP2_CLKS_MASK,
        .clksel         = mcbsp_234_clksel,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -2836,7 +2865,7 @@ static struct clk mcbsp3_fck = {
        .clksel_mask    = OMAP2_MCBSP3_CLKS_MASK,
        .clksel         = mcbsp_234_clksel,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -2850,7 +2879,7 @@ static struct clk mcbsp4_fck = {
        .clksel_mask    = OMAP2_MCBSP4_CLKS_MASK,
        .clksel         = mcbsp_234_clksel,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "per_clkdm",
+       .clkdm          = { .name = "per_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -2898,7 +2927,7 @@ static struct clk emu_src_ck = {
        .clksel_mask    = OMAP3430_MUX_CTRL_MASK,
        .clksel         = emu_src_clksel,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED,
-       .clkdm_name     = "emu_clkdm",
+       .clkdm          = { .name = "emu_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -2922,7 +2951,7 @@ static struct clk pclk_fck = {
        .clksel_mask    = OMAP3430_CLKSEL_PCLK_MASK,
        .clksel         = pclk_emu_clksel,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED,
-       .clkdm_name     = "emu_clkdm",
+       .clkdm          = { .name = "emu_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -2945,7 +2974,7 @@ static struct clk pclkx2_fck = {
        .clksel_mask    = OMAP3430_CLKSEL_PCLKX2_MASK,
        .clksel         = pclkx2_emu_clksel,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED,
-       .clkdm_name     = "emu_clkdm",
+       .clkdm          = { .name = "emu_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -2961,7 +2990,7 @@ static struct clk atclk_fck = {
        .clksel_mask    = OMAP3430_CLKSEL_ATCLK_MASK,
        .clksel         = atclk_emu_clksel,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED,
-       .clkdm_name     = "emu_clkdm",
+       .clkdm          = { .name = "emu_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -2972,7 +3001,7 @@ static struct clk traceclk_src_fck = {
        .clksel_mask    = OMAP3430_TRACE_MUX_CTRL_MASK,
        .clksel         = emu_src_clksel,
        .flags          = CLOCK_IN_OMAP343X | RATE_PROPAGATES | ALWAYS_ENABLED,
-       .clkdm_name     = "emu_clkdm",
+       .clkdm          = { .name = "emu_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -2995,7 +3024,7 @@ static struct clk traceclk_fck = {
        .clksel_mask    = OMAP3430_CLKSEL_TRACECLK_MASK,
        .clksel         = traceclk_clksel,
        .flags          = CLOCK_IN_OMAP343X | ALWAYS_ENABLED,
-       .clkdm_name     = "emu_clkdm",
+       .clkdm          = { .name = "emu_clkdm" },
        .recalc         = &omap2_clksel_recalc,
 };
 
@@ -3025,7 +3054,7 @@ static struct clk sr_l4_ick = {
        .name           = "sr_l4_ick",
        .parent         = &l4_ick,
        .flags          = CLOCK_IN_OMAP343X,
-       .clkdm_name     = "core_l4_clkdm",
+       .clkdm          = { .name = "core_l4_clkdm" },
        .recalc         = &followparent_recalc,
 };
 
@@ -3190,6 +3219,7 @@ static struct clk *onchip_34xx_clks[] __initdata = {
        &dss_ick,
        &cam_mclk,
        &cam_ick,
+       &csi2_96m_fck,
        &usbhost_120m_fck,
        &usbhost_48m_fck,
        &usbhost_ick,