|
@@ -965,3 +965,194 @@ DEFINE_CLK_GATE(iva_fck, "dpll_iva_m5x2_ck", &dpll_iva_m5x2_ck, 0x0,
|
|
OMAP4430_MODULEMODE_HWCTRL_SHIFT, 0x0, NULL);
|
|
OMAP4430_MODULEMODE_HWCTRL_SHIFT, 0x0, NULL);
|
|
|
|
|
|
DEFINE_CLK_GATE(kbd_fck, "sys_32k_ck", &sys_32k_ck, 0x0,
|
|
DEFINE_CLK_GATE(kbd_fck, "sys_32k_ck", &sys_32k_ck, 0x0,
|
|
|
|
+ OMAP4430_CM_WKUP_KEYBOARD_CLKCTRL,
|
|
|
|
+ OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL);
|
|
|
|
+
|
|
|
|
+static struct clk l3_instr_ick;
|
|
|
|
+
|
|
|
|
+static const char *l3_instr_ick_parent_names[] = {
|
|
|
|
+ "l3_div_ck",
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static const struct clk_ops l3_instr_ick_ops = {
|
|
|
|
+ .enable = &omap2_dflt_clk_enable,
|
|
|
|
+ .disable = &omap2_dflt_clk_disable,
|
|
|
|
+ .is_enabled = &omap2_dflt_clk_is_enabled,
|
|
|
|
+ .init = &omap2_init_clk_clkdm,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clk_hw_omap l3_instr_ick_hw = {
|
|
|
|
+ .hw = {
|
|
|
|
+ .clk = &l3_instr_ick,
|
|
|
|
+ },
|
|
|
|
+ .enable_reg = OMAP4430_CM_L3INSTR_L3_INSTR_CLKCTRL,
|
|
|
|
+ .enable_bit = OMAP4430_MODULEMODE_HWCTRL_SHIFT,
|
|
|
|
+ .clkdm_name = "l3_instr_clkdm",
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+DEFINE_STRUCT_CLK(l3_instr_ick, l3_instr_ick_parent_names, l3_instr_ick_ops);
|
|
|
|
+
|
|
|
|
+static struct clk l3_main_3_ick;
|
|
|
|
+static struct clk_hw_omap l3_main_3_ick_hw = {
|
|
|
|
+ .hw = {
|
|
|
|
+ .clk = &l3_main_3_ick,
|
|
|
|
+ },
|
|
|
|
+ .enable_reg = OMAP4430_CM_L3INSTR_L3_3_CLKCTRL,
|
|
|
|
+ .enable_bit = OMAP4430_MODULEMODE_HWCTRL_SHIFT,
|
|
|
|
+ .clkdm_name = "l3_instr_clkdm",
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+DEFINE_STRUCT_CLK(l3_main_3_ick, l3_instr_ick_parent_names, l3_instr_ick_ops);
|
|
|
|
+
|
|
|
|
+DEFINE_CLK_MUX(mcasp_sync_mux_ck, dmic_sync_mux_ck_parents, NULL, 0x0,
|
|
|
|
+ OMAP4430_CM1_ABE_MCASP_CLKCTRL,
|
|
|
|
+ OMAP4430_CLKSEL_INTERNAL_SOURCE_SHIFT,
|
|
|
|
+ OMAP4430_CLKSEL_INTERNAL_SOURCE_WIDTH, 0x0, NULL);
|
|
|
|
+
|
|
|
|
+static const struct clksel func_mcasp_abe_gfclk_sel[] = {
|
|
|
|
+ { .parent = &mcasp_sync_mux_ck, .rates = div_1_0_rates },
|
|
|
|
+ { .parent = &pad_clks_ck, .rates = div_1_1_rates },
|
|
|
|
+ { .parent = &slimbus_clk, .rates = div_1_2_rates },
|
|
|
|
+ { .parent = NULL },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static const char *mcasp_fck_parents[] = {
|
|
|
|
+ "mcasp_sync_mux_ck", "pad_clks_ck", "slimbus_clk",
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/* Merged func_mcasp_abe_gfclk into mcasp */
|
|
|
|
+DEFINE_CLK_OMAP_MUX_GATE(mcasp_fck, "abe_clkdm", func_mcasp_abe_gfclk_sel,
|
|
|
|
+ OMAP4430_CM1_ABE_MCASP_CLKCTRL,
|
|
|
|
+ OMAP4430_CLKSEL_SOURCE_MASK,
|
|
|
|
+ OMAP4430_CM1_ABE_MCASP_CLKCTRL,
|
|
|
|
+ OMAP4430_MODULEMODE_SWCTRL_SHIFT, NULL,
|
|
|
|
+ mcasp_fck_parents, dmic_fck_ops);
|
|
|
|
+
|
|
|
|
+DEFINE_CLK_MUX(mcbsp1_sync_mux_ck, dmic_sync_mux_ck_parents, NULL, 0x0,
|
|
|
|
+ OMAP4430_CM1_ABE_MCBSP1_CLKCTRL,
|
|
|
|
+ OMAP4430_CLKSEL_INTERNAL_SOURCE_SHIFT,
|
|
|
|
+ OMAP4430_CLKSEL_INTERNAL_SOURCE_WIDTH, 0x0, NULL);
|
|
|
|
+
|
|
|
|
+static const struct clksel func_mcbsp1_gfclk_sel[] = {
|
|
|
|
+ { .parent = &mcbsp1_sync_mux_ck, .rates = div_1_0_rates },
|
|
|
|
+ { .parent = &pad_clks_ck, .rates = div_1_1_rates },
|
|
|
|
+ { .parent = &slimbus_clk, .rates = div_1_2_rates },
|
|
|
|
+ { .parent = NULL },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static const char *mcbsp1_fck_parents[] = {
|
|
|
|
+ "mcbsp1_sync_mux_ck", "pad_clks_ck", "slimbus_clk",
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/* Merged func_mcbsp1_gfclk into mcbsp1 */
|
|
|
|
+DEFINE_CLK_OMAP_MUX_GATE(mcbsp1_fck, "abe_clkdm", func_mcbsp1_gfclk_sel,
|
|
|
|
+ OMAP4430_CM1_ABE_MCBSP1_CLKCTRL,
|
|
|
|
+ OMAP4430_CLKSEL_SOURCE_MASK,
|
|
|
|
+ OMAP4430_CM1_ABE_MCBSP1_CLKCTRL,
|
|
|
|
+ OMAP4430_MODULEMODE_SWCTRL_SHIFT, NULL,
|
|
|
|
+ mcbsp1_fck_parents, dmic_fck_ops);
|
|
|
|
+
|
|
|
|
+DEFINE_CLK_MUX(mcbsp2_sync_mux_ck, dmic_sync_mux_ck_parents, NULL, 0x0,
|
|
|
|
+ OMAP4430_CM1_ABE_MCBSP2_CLKCTRL,
|
|
|
|
+ OMAP4430_CLKSEL_INTERNAL_SOURCE_SHIFT,
|
|
|
|
+ OMAP4430_CLKSEL_INTERNAL_SOURCE_WIDTH, 0x0, NULL);
|
|
|
|
+
|
|
|
|
+static const struct clksel func_mcbsp2_gfclk_sel[] = {
|
|
|
|
+ { .parent = &mcbsp2_sync_mux_ck, .rates = div_1_0_rates },
|
|
|
|
+ { .parent = &pad_clks_ck, .rates = div_1_1_rates },
|
|
|
|
+ { .parent = &slimbus_clk, .rates = div_1_2_rates },
|
|
|
|
+ { .parent = NULL },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static const char *mcbsp2_fck_parents[] = {
|
|
|
|
+ "mcbsp2_sync_mux_ck", "pad_clks_ck", "slimbus_clk",
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/* Merged func_mcbsp2_gfclk into mcbsp2 */
|
|
|
|
+DEFINE_CLK_OMAP_MUX_GATE(mcbsp2_fck, "abe_clkdm", func_mcbsp2_gfclk_sel,
|
|
|
|
+ OMAP4430_CM1_ABE_MCBSP2_CLKCTRL,
|
|
|
|
+ OMAP4430_CLKSEL_SOURCE_MASK,
|
|
|
|
+ OMAP4430_CM1_ABE_MCBSP2_CLKCTRL,
|
|
|
|
+ OMAP4430_MODULEMODE_SWCTRL_SHIFT, NULL,
|
|
|
|
+ mcbsp2_fck_parents, dmic_fck_ops);
|
|
|
|
+
|
|
|
|
+DEFINE_CLK_MUX(mcbsp3_sync_mux_ck, dmic_sync_mux_ck_parents, NULL, 0x0,
|
|
|
|
+ OMAP4430_CM1_ABE_MCBSP3_CLKCTRL,
|
|
|
|
+ OMAP4430_CLKSEL_INTERNAL_SOURCE_SHIFT,
|
|
|
|
+ OMAP4430_CLKSEL_INTERNAL_SOURCE_WIDTH, 0x0, NULL);
|
|
|
|
+
|
|
|
|
+static const struct clksel func_mcbsp3_gfclk_sel[] = {
|
|
|
|
+ { .parent = &mcbsp3_sync_mux_ck, .rates = div_1_0_rates },
|
|
|
|
+ { .parent = &pad_clks_ck, .rates = div_1_1_rates },
|
|
|
|
+ { .parent = &slimbus_clk, .rates = div_1_2_rates },
|
|
|
|
+ { .parent = NULL },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static const char *mcbsp3_fck_parents[] = {
|
|
|
|
+ "mcbsp3_sync_mux_ck", "pad_clks_ck", "slimbus_clk",
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/* Merged func_mcbsp3_gfclk into mcbsp3 */
|
|
|
|
+DEFINE_CLK_OMAP_MUX_GATE(mcbsp3_fck, "abe_clkdm", func_mcbsp3_gfclk_sel,
|
|
|
|
+ OMAP4430_CM1_ABE_MCBSP3_CLKCTRL,
|
|
|
|
+ OMAP4430_CLKSEL_SOURCE_MASK,
|
|
|
|
+ OMAP4430_CM1_ABE_MCBSP3_CLKCTRL,
|
|
|
|
+ OMAP4430_MODULEMODE_SWCTRL_SHIFT, NULL,
|
|
|
|
+ mcbsp3_fck_parents, dmic_fck_ops);
|
|
|
|
+
|
|
|
|
+static const char *mcbsp4_sync_mux_ck_parents[] = {
|
|
|
|
+ "func_96m_fclk", "per_abe_nc_fclk",
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+DEFINE_CLK_MUX(mcbsp4_sync_mux_ck, mcbsp4_sync_mux_ck_parents, NULL, 0x0,
|
|
|
|
+ OMAP4430_CM_L4PER_MCBSP4_CLKCTRL,
|
|
|
|
+ OMAP4430_CLKSEL_INTERNAL_SOURCE_SHIFT,
|
|
|
|
+ OMAP4430_CLKSEL_INTERNAL_SOURCE_WIDTH, 0x0, NULL);
|
|
|
|
+
|
|
|
|
+static const struct clksel per_mcbsp4_gfclk_sel[] = {
|
|
|
|
+ { .parent = &mcbsp4_sync_mux_ck, .rates = div_1_0_rates },
|
|
|
|
+ { .parent = &pad_clks_ck, .rates = div_1_1_rates },
|
|
|
|
+ { .parent = NULL },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static const char *mcbsp4_fck_parents[] = {
|
|
|
|
+ "mcbsp4_sync_mux_ck", "pad_clks_ck",
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+/* Merged per_mcbsp4_gfclk into mcbsp4 */
|
|
|
|
+DEFINE_CLK_OMAP_MUX_GATE(mcbsp4_fck, "l4_per_clkdm", per_mcbsp4_gfclk_sel,
|
|
|
|
+ OMAP4430_CM_L4PER_MCBSP4_CLKCTRL,
|
|
|
|
+ OMAP4430_CLKSEL_SOURCE_24_24_MASK,
|
|
|
|
+ OMAP4430_CM_L4PER_MCBSP4_CLKCTRL,
|
|
|
|
+ OMAP4430_MODULEMODE_SWCTRL_SHIFT, NULL,
|
|
|
|
+ mcbsp4_fck_parents, dmic_fck_ops);
|
|
|
|
+
|
|
|
|
+DEFINE_CLK_GATE(mcpdm_fck, "pad_clks_ck", &pad_clks_ck, 0x0,
|
|
|
|
+ OMAP4430_CM1_ABE_PDM_CLKCTRL, OMAP4430_MODULEMODE_SWCTRL_SHIFT,
|
|
|
|
+ 0x0, NULL);
|
|
|
|
+
|
|
|
|
+DEFINE_CLK_GATE(mcspi1_fck, "func_48m_fclk", &func_48m_fclk, 0x0,
|
|
|
|
+ OMAP4430_CM_L4PER_MCSPI1_CLKCTRL,
|
|
|
|
+ OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL);
|
|
|
|
+
|
|
|
|
+DEFINE_CLK_GATE(mcspi2_fck, "func_48m_fclk", &func_48m_fclk, 0x0,
|
|
|
|
+ OMAP4430_CM_L4PER_MCSPI2_CLKCTRL,
|
|
|
|
+ OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL);
|
|
|
|
+
|
|
|
|
+DEFINE_CLK_GATE(mcspi3_fck, "func_48m_fclk", &func_48m_fclk, 0x0,
|
|
|
|
+ OMAP4430_CM_L4PER_MCSPI3_CLKCTRL,
|
|
|
|
+ OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL);
|
|
|
|
+
|
|
|
|
+DEFINE_CLK_GATE(mcspi4_fck, "func_48m_fclk", &func_48m_fclk, 0x0,
|
|
|
|
+ OMAP4430_CM_L4PER_MCSPI4_CLKCTRL,
|
|
|
|
+ OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL);
|
|
|
|
+
|
|
|
|
+static const struct clksel hsmmc1_fclk_sel[] = {
|
|
|
|
+ { .parent = &func_64m_fclk, .rates = div_1_0_rates },
|
|
|
|
+ { .parent = &func_96m_fclk, .rates = div_1_1_rates },
|
|
|
|
+ { .parent = NULL },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static const char *mmc1_fck_parents[] = {
|
|
|
|
+ "func_64m_fclk", "func_96m_fclk",
|
|
|
|
+};
|