|
@@ -1621,3 +1621,82 @@ static const struct clksel_rate common_clkout_src_96m_rates[] = {
|
|
|
{ .div = 0 }
|
|
|
};
|
|
|
|
|
|
+static const struct clksel_rate common_clkout_src_54m_rates[] = {
|
|
|
+ { .div = 1, .val = 3, .flags = RATE_IN_24XX },
|
|
|
+ { .div = 0 }
|
|
|
+};
|
|
|
+
|
|
|
+static const struct clksel common_clkout_src_clksel[] = {
|
|
|
+ { .parent = &core_ck, .rates = common_clkout_src_core_rates },
|
|
|
+ { .parent = &sys_ck, .rates = common_clkout_src_sys_rates },
|
|
|
+ { .parent = &func_96m_ck, .rates = common_clkout_src_96m_rates },
|
|
|
+ { .parent = &func_54m_ck, .rates = common_clkout_src_54m_rates },
|
|
|
+ { .parent = NULL },
|
|
|
+};
|
|
|
+
|
|
|
+static const char *sys_clkout_src_parent_names[] = {
|
|
|
+ "core_ck", "sys_ck", "func_96m_ck", "func_54m_ck",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_CLK_OMAP_MUX_GATE(sys_clkout_src, "wkup_clkdm", common_clkout_src_clksel,
|
|
|
+ OMAP2430_PRCM_CLKOUT_CTRL, OMAP24XX_CLKOUT_SOURCE_MASK,
|
|
|
+ OMAP2430_PRCM_CLKOUT_CTRL, OMAP24XX_CLKOUT_EN_SHIFT,
|
|
|
+ NULL, sys_clkout_src_parent_names, gpt1_fck_ops);
|
|
|
+
|
|
|
+DEFINE_CLK_DIVIDER(sys_clkout, "sys_clkout_src", &sys_clkout_src, 0x0,
|
|
|
+ OMAP2430_PRCM_CLKOUT_CTRL, OMAP24XX_CLKOUT_DIV_SHIFT,
|
|
|
+ OMAP24XX_CLKOUT_DIV_WIDTH, CLK_DIVIDER_POWER_OF_TWO, NULL);
|
|
|
+
|
|
|
+static struct clk uart1_fck;
|
|
|
+
|
|
|
+static struct clk_hw_omap uart1_fck_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &uart1_fck,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
|
|
|
+ .enable_bit = OMAP24XX_EN_UART1_SHIFT,
|
|
|
+ .clkdm_name = "core_l4_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(uart1_fck, mcspi1_fck_parent_names, aes_ick_ops);
|
|
|
+
|
|
|
+static struct clk uart1_ick;
|
|
|
+
|
|
|
+static struct clk_hw_omap uart1_ick_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &uart1_ick,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_iclk_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
|
|
|
+ .enable_bit = OMAP24XX_EN_UART1_SHIFT,
|
|
|
+ .clkdm_name = "core_l4_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(uart1_ick, aes_ick_parent_names, aes_ick_ops);
|
|
|
+
|
|
|
+static struct clk uart2_fck;
|
|
|
+
|
|
|
+static struct clk_hw_omap uart2_fck_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &uart2_fck,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_FCLKEN1),
|
|
|
+ .enable_bit = OMAP24XX_EN_UART2_SHIFT,
|
|
|
+ .clkdm_name = "core_l4_clkdm",
|
|
|
+};
|
|
|
+
|
|
|
+DEFINE_STRUCT_CLK(uart2_fck, mcspi1_fck_parent_names, aes_ick_ops);
|
|
|
+
|
|
|
+static struct clk uart2_ick;
|
|
|
+
|
|
|
+static struct clk_hw_omap uart2_ick_hw = {
|
|
|
+ .hw = {
|
|
|
+ .clk = &uart2_ick,
|
|
|
+ },
|
|
|
+ .ops = &clkhwops_iclk_wait,
|
|
|
+ .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1),
|
|
|
+ .enable_bit = OMAP24XX_EN_UART2_SHIFT,
|
|
|
+ .clkdm_name = "core_l4_clkdm",
|
|
|
+};
|