|
@@ -1986,3 +1986,146 @@ static struct clk_hw_omap mad2d_ick_hw = {
|
|
|
},
|
|
|
.ops = &clkhwops_iclk_wait,
|
|
|
.enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN3),
|
|
|
+ .enable_bit = OMAP3430_EN_MAD2D_SHIFT,
|
|
|
+ .clkdm_name = "d2d_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(mad2d_ick, core_l3_ick_parent_names, aes2_ick_ops);
|
|
|
+
|
|
|
+static struct clk mailboxes_ick;
|
|
|
+
|
|
|
+static struct clk_hw_omap mailboxes_ick_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &mailboxes_ick,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_iclk_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
|
|
|
+ .enable_bit = OMAP3430_EN_MAILBOXES_SHIFT,
|
|
|
+ .clkdm_name = "core_l4_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(mailboxes_ick, aes2_ick_parent_names, aes2_ick_ops);
|
|
|
+
|
|
|
+static const struct clksel_rate common_mcbsp_96m_rates[] = {
|
|
|
+ { .div = 1, .val = 0, .flags = RATE_IN_3XXX },
|
|
|
+ { .div = 0 }
|
|
|
+};
|
|
|
+
|
|
|
+static const struct clksel_rate common_mcbsp_mcbsp_rates[] = {
|
|
|
+ { .div = 1, .val = 1, .flags = RATE_IN_3XXX },
|
|
|
+ { .div = 0 }
|
|
|
+};
|
|
|
+
|
|
|
+static const struct clksel mcbsp_15_clksel[] = {
|
|
|
+ { .parent = &core_96m_fck, .rates = common_mcbsp_96m_rates },
|
|
|
+ { .parent = &mcbsp_clks, .rates = common_mcbsp_mcbsp_rates },
|
|
|
+ { .parent = NULL },
|
|
|
+};
|
|
|
+
|
|
|
+static const char *mcbsp1_fck_parent_names[] = {
|
|
|
+ "core_96m_fck", "mcbsp_clks",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_CLK_OMAP_MUX_GATE(mcbsp1_fck, "core_l4_clkdm", mcbsp_15_clksel,
|
|
|
+ OMAP343X_CTRL_REGADDR(OMAP2_CONTROL_DEVCONF0),
|
|
|
+ OMAP2_MCBSP1_CLKS_MASK,
|
|
|
+ OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
|
|
|
+ OMAP3430_EN_MCBSP1_SHIFT, &clkhwops_wait,
|
|
|
+ mcbsp1_fck_parent_names, clkout2_src_ck_ops);
|
|
|
+
|
|
|
+static struct clk mcbsp1_ick;
|
|
|
+
|
|
|
+static struct clk_hw_omap mcbsp1_ick_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &mcbsp1_ick,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_iclk_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
|
|
|
+ .enable_bit = OMAP3430_EN_MCBSP1_SHIFT,
|
|
|
+ .clkdm_name = "core_l4_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(mcbsp1_ick, aes2_ick_parent_names, aes2_ick_ops);
|
|
|
+
|
|
|
+static struct clk per_96m_fck;
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK_HW_OMAP(per_96m_fck, "per_clkdm");
|
|
|
+DEFINE_STRUCT_CLK(per_96m_fck, cm_96m_fck_parent_names, core_l4_ick_ops);
|
|
|
+
|
|
|
+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 = NULL },
|
|
|
+};
|
|
|
+
|
|
|
+static const char *mcbsp2_fck_parent_names[] = {
|
|
|
+ "per_96m_fck", "mcbsp_clks",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_CLK_OMAP_MUX_GATE(mcbsp2_fck, "per_clkdm", mcbsp_234_clksel,
|
|
|
+ OMAP343X_CTRL_REGADDR(OMAP2_CONTROL_DEVCONF0),
|
|
|
+ OMAP2_MCBSP2_CLKS_MASK,
|
|
|
+ OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
|
|
|
+ OMAP3430_EN_MCBSP2_SHIFT, &clkhwops_wait,
|
|
|
+ mcbsp2_fck_parent_names, clkout2_src_ck_ops);
|
|
|
+
|
|
|
+static struct clk mcbsp2_ick;
|
|
|
+
|
|
|
+static struct clk_hw_omap mcbsp2_ick_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &mcbsp2_ick,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_iclk_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
|
|
|
+ .enable_bit = OMAP3430_EN_MCBSP2_SHIFT,
|
|
|
+ .clkdm_name = "per_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(mcbsp2_ick, gpio2_ick_parent_names, aes2_ick_ops);
|
|
|
+
|
|
|
+DEFINE_CLK_OMAP_MUX_GATE(mcbsp3_fck, "per_clkdm", mcbsp_234_clksel,
|
|
|
+ OMAP343X_CTRL_REGADDR(OMAP343X_CONTROL_DEVCONF1),
|
|
|
+ OMAP2_MCBSP3_CLKS_MASK,
|
|
|
+ OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
|
|
|
+ OMAP3430_EN_MCBSP3_SHIFT, &clkhwops_wait,
|
|
|
+ mcbsp2_fck_parent_names, clkout2_src_ck_ops);
|
|
|
+
|
|
|
+static struct clk mcbsp3_ick;
|
|
|
+
|
|
|
+static struct clk_hw_omap mcbsp3_ick_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &mcbsp3_ick,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_iclk_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
|
|
|
+ .enable_bit = OMAP3430_EN_MCBSP3_SHIFT,
|
|
|
+ .clkdm_name = "per_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(mcbsp3_ick, gpio2_ick_parent_names, aes2_ick_ops);
|
|
|
+
|
|
|
+DEFINE_CLK_OMAP_MUX_GATE(mcbsp4_fck, "per_clkdm", mcbsp_234_clksel,
|
|
|
+ OMAP343X_CTRL_REGADDR(OMAP343X_CONTROL_DEVCONF1),
|
|
|
+ OMAP2_MCBSP4_CLKS_MASK,
|
|
|
+ OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN),
|
|
|
+ OMAP3430_EN_MCBSP4_SHIFT, &clkhwops_wait,
|
|
|
+ mcbsp2_fck_parent_names, clkout2_src_ck_ops);
|
|
|
+
|
|
|
+static struct clk mcbsp4_ick;
|
|
|
+
|
|
|
+static struct clk_hw_omap mcbsp4_ick_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &mcbsp4_ick,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_iclk_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_ICLKEN),
|
|
|
+ .enable_bit = OMAP3430_EN_MCBSP4_SHIFT,
|
|
|
+ .clkdm_name = "per_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(mcbsp4_ick, gpio2_ick_parent_names, aes2_ick_ops);
|
|
|
+
|
|
|
+DEFINE_CLK_OMAP_MUX_GATE(mcbsp5_fck, "core_l4_clkdm", mcbsp_15_clksel,
|
|
|
+ OMAP343X_CTRL_REGADDR(OMAP343X_CONTROL_DEVCONF1),
|
|
|
+ OMAP2_MCBSP5_CLKS_MASK,
|
|
|
+ OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
|