|
@@ -161,3 +161,121 @@ DEFINE_CLK_DIVIDER(l4_ick, "l3_ick", &l3_ick, 0x0,
|
|
|
static struct clk security_l4_ick2;
|
|
|
|
|
|
static const char *security_l4_ick2_parent_names[] = {
|
|
|
+ "l4_ick",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK_HW_OMAP(security_l4_ick2, NULL);
|
|
|
+DEFINE_STRUCT_CLK(security_l4_ick2, security_l4_ick2_parent_names, core_ck_ops);
|
|
|
+
|
|
|
+static struct clk aes1_ick;
|
|
|
+
|
|
|
+static const char *aes1_ick_parent_names[] = {
|
|
|
+ "security_l4_ick2",
|
|
|
+};
|
|
|
+
|
|
|
+static const struct clk_ops aes1_ick_ops = {
|
|
|
+ .enable = &omap2_dflt_clk_enable,
|
|
|
+ .disable = &omap2_dflt_clk_disable,
|
|
|
+ .is_enabled = &omap2_dflt_clk_is_enabled,
|
|
|
+};
|
|
|
+
|
|
|
+static struct clk_hw_omap aes1_ick_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &aes1_ick,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_iclk_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2),
|
|
|
+ .enable_bit = OMAP3430_EN_AES1_SHIFT,
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(aes1_ick, aes1_ick_parent_names, aes1_ick_ops);
|
|
|
+
|
|
|
+static struct clk core_l4_ick;
|
|
|
+
|
|
|
+static const struct clk_ops core_l4_ick_ops = {
|
|
|
+ .init = &omap2_init_clk_clkdm,
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK_HW_OMAP(core_l4_ick, "core_l4_clkdm");
|
|
|
+DEFINE_STRUCT_CLK(core_l4_ick, security_l4_ick2_parent_names, core_l4_ick_ops);
|
|
|
+
|
|
|
+static struct clk aes2_ick;
|
|
|
+
|
|
|
+static const char *aes2_ick_parent_names[] = {
|
|
|
+ "core_l4_ick",
|
|
|
+};
|
|
|
+
|
|
|
+static const struct clk_ops aes2_ick_ops = {
|
|
|
+ .init = &omap2_init_clk_clkdm,
|
|
|
+ .enable = &omap2_dflt_clk_enable,
|
|
|
+ .disable = &omap2_dflt_clk_disable,
|
|
|
+ .is_enabled = &omap2_dflt_clk_is_enabled,
|
|
|
+};
|
|
|
+
|
|
|
+static struct clk_hw_omap aes2_ick_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &aes2_ick,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_iclk_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
|
|
|
+ .enable_bit = OMAP3430_EN_AES2_SHIFT,
|
|
|
+ .clkdm_name = "core_l4_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(aes2_ick, aes2_ick_parent_names, aes2_ick_ops);
|
|
|
+
|
|
|
+static struct clk dpll1_fck;
|
|
|
+
|
|
|
+static struct dpll_data dpll1_dd = {
|
|
|
+ .mult_div1_reg = OMAP_CM_REGADDR(MPU_MOD, OMAP3430_CM_CLKSEL1_PLL),
|
|
|
+ .mult_mask = OMAP3430_MPU_DPLL_MULT_MASK,
|
|
|
+ .div1_mask = OMAP3430_MPU_DPLL_DIV_MASK,
|
|
|
+ .clk_bypass = &dpll1_fck,
|
|
|
+ .clk_ref = &sys_ck,
|
|
|
+ .freqsel_mask = OMAP3430_MPU_DPLL_FREQSEL_MASK,
|
|
|
+ .control_reg = OMAP_CM_REGADDR(MPU_MOD, OMAP3430_CM_CLKEN_PLL),
|
|
|
+ .enable_mask = OMAP3430_EN_MPU_DPLL_MASK,
|
|
|
+ .modes = (1 << DPLL_LOW_POWER_BYPASS) | (1 << DPLL_LOCKED),
|
|
|
+ .auto_recal_bit = OMAP3430_EN_MPU_DPLL_DRIFTGUARD_SHIFT,
|
|
|
+ .recal_en_bit = OMAP3430_MPU_DPLL_RECAL_EN_SHIFT,
|
|
|
+ .recal_st_bit = OMAP3430_MPU_DPLL_ST_SHIFT,
|
|
|
+ .autoidle_reg = OMAP_CM_REGADDR(MPU_MOD, OMAP3430_CM_AUTOIDLE_PLL),
|
|
|
+ .autoidle_mask = OMAP3430_AUTO_MPU_DPLL_MASK,
|
|
|
+ .idlest_reg = OMAP_CM_REGADDR(MPU_MOD, OMAP3430_CM_IDLEST_PLL),
|
|
|
+ .idlest_mask = OMAP3430_ST_MPU_CLK_MASK,
|
|
|
+ .max_multiplier = OMAP3_MAX_DPLL_MULT,
|
|
|
+ .min_divider = 1,
|
|
|
+ .max_divider = OMAP3_MAX_DPLL_DIV,
|
|
|
+};
|
|
|
+
|
|
|
+static struct clk dpll1_ck;
|
|
|
+
|
|
|
+static const struct clk_ops dpll1_ck_ops = {
|
|
|
+ .init = &omap2_init_clk_clkdm,
|
|
|
+ .enable = &omap3_noncore_dpll_enable,
|
|
|
+ .disable = &omap3_noncore_dpll_disable,
|
|
|
+ .get_parent = &omap2_init_dpll_parent,
|
|
|
+ .recalc_rate = &omap3_dpll_recalc,
|
|
|
+ .set_rate = &omap3_noncore_dpll_set_rate,
|
|
|
+ .round_rate = &omap2_dpll_round_rate,
|
|
|
+};
|
|
|
+
|
|
|
+static struct clk_hw_omap dpll1_ck_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &dpll1_ck,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_omap3_dpll,
|
|
|
+ .dpll_data = &dpll1_dd,
|
|
|
+ .clkdm_name = "dpll1_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(dpll1_ck, dpll3_ck_parent_names, dpll1_ck_ops);
|
|
|
+
|
|
|
+DEFINE_CLK_FIXED_FACTOR(dpll1_x2_ck, "dpll1_ck", &dpll1_ck, 0x0, 2, 1);
|
|
|
+
|
|
|
+DEFINE_CLK_DIVIDER(dpll1_x2m2_ck, "dpll1_x2_ck", &dpll1_x2_ck, 0x0,
|
|
|
+ OMAP_CM_REGADDR(MPU_MOD, OMAP3430_CM_CLKSEL2_PLL),
|
|
|
+ OMAP3430_MPU_DPLL_CLKOUT_DIV_SHIFT,
|
|
|
+ OMAP3430_MPU_DPLL_CLKOUT_DIV_WIDTH,
|
|
|
+ CLK_DIVIDER_ONE_BASED, NULL);
|
|
|
+
|