|
@@ -524,3 +524,88 @@ static struct clk timer3_fck;
|
|
static struct clk_hw_omap timer3_fck_hw = {
|
|
static struct clk_hw_omap timer3_fck_hw = {
|
|
.hw = {
|
|
.hw = {
|
|
.clk = &timer3_fck,
|
|
.clk = &timer3_fck,
|
|
|
|
+ },
|
|
|
|
+ .clkdm_name = "l4ls_clkdm",
|
|
|
|
+ .clksel = timer2_to_7_clk_sel,
|
|
|
|
+ .clksel_reg = AM33XX_CLKSEL_TIMER3_CLK,
|
|
|
|
+ .clksel_mask = AM33XX_CLKSEL_0_1_MASK,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+DEFINE_STRUCT_CLK(timer3_fck, timer2_to_7_ck_parents, timer1_fck_ops);
|
|
|
|
+
|
|
|
|
+static struct clk timer4_fck;
|
|
|
|
+
|
|
|
|
+static struct clk_hw_omap timer4_fck_hw = {
|
|
|
|
+ .hw = {
|
|
|
|
+ .clk = &timer4_fck,
|
|
|
|
+ },
|
|
|
|
+ .clkdm_name = "l4ls_clkdm",
|
|
|
|
+ .clksel = timer2_to_7_clk_sel,
|
|
|
|
+ .clksel_reg = AM33XX_CLKSEL_TIMER4_CLK,
|
|
|
|
+ .clksel_mask = AM33XX_CLKSEL_0_1_MASK,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+DEFINE_STRUCT_CLK(timer4_fck, timer2_to_7_ck_parents, timer1_fck_ops);
|
|
|
|
+
|
|
|
|
+static struct clk timer5_fck;
|
|
|
|
+
|
|
|
|
+static struct clk_hw_omap timer5_fck_hw = {
|
|
|
|
+ .hw = {
|
|
|
|
+ .clk = &timer5_fck,
|
|
|
|
+ },
|
|
|
|
+ .clkdm_name = "l4ls_clkdm",
|
|
|
|
+ .clksel = timer2_to_7_clk_sel,
|
|
|
|
+ .clksel_reg = AM33XX_CLKSEL_TIMER5_CLK,
|
|
|
|
+ .clksel_mask = AM33XX_CLKSEL_0_1_MASK,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+DEFINE_STRUCT_CLK(timer5_fck, timer2_to_7_ck_parents, timer1_fck_ops);
|
|
|
|
+
|
|
|
|
+static struct clk timer6_fck;
|
|
|
|
+
|
|
|
|
+static struct clk_hw_omap timer6_fck_hw = {
|
|
|
|
+ .hw = {
|
|
|
|
+ .clk = &timer6_fck,
|
|
|
|
+ },
|
|
|
|
+ .clkdm_name = "l4ls_clkdm",
|
|
|
|
+ .clksel = timer2_to_7_clk_sel,
|
|
|
|
+ .clksel_reg = AM33XX_CLKSEL_TIMER6_CLK,
|
|
|
|
+ .clksel_mask = AM33XX_CLKSEL_0_1_MASK,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+DEFINE_STRUCT_CLK(timer6_fck, timer2_to_7_ck_parents, timer1_fck_ops);
|
|
|
|
+
|
|
|
|
+static struct clk timer7_fck;
|
|
|
|
+
|
|
|
|
+static struct clk_hw_omap timer7_fck_hw = {
|
|
|
|
+ .hw = {
|
|
|
|
+ .clk = &timer7_fck,
|
|
|
|
+ },
|
|
|
|
+ .clkdm_name = "l4ls_clkdm",
|
|
|
|
+ .clksel = timer2_to_7_clk_sel,
|
|
|
|
+ .clksel_reg = AM33XX_CLKSEL_TIMER7_CLK,
|
|
|
|
+ .clksel_mask = AM33XX_CLKSEL_0_1_MASK,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+DEFINE_STRUCT_CLK(timer7_fck, timer2_to_7_ck_parents, timer1_fck_ops);
|
|
|
|
+
|
|
|
|
+DEFINE_CLK_FIXED_FACTOR(cpsw_125mhz_gclk,
|
|
|
|
+ "dpll_core_m5_ck",
|
|
|
|
+ &dpll_core_m5_ck,
|
|
|
|
+ 0x0,
|
|
|
|
+ 1, 2);
|
|
|
|
+
|
|
|
|
+static const struct clk_ops cpsw_fck_ops = {
|
|
|
|
+ .recalc_rate = &omap2_clksel_recalc,
|
|
|
|
+ .get_parent = &omap2_clksel_find_parent_index,
|
|
|
|
+ .set_parent = &omap2_clksel_set_parent,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static const struct clksel cpsw_cpts_rft_clkmux_sel[] = {
|
|
|
|
+ { .parent = &dpll_core_m5_ck, .rates = div_1_0_rates },
|
|
|
|
+ { .parent = &dpll_core_m4_ck, .rates = div_1_1_rates },
|
|
|
|
+ { .parent = NULL },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static const char *cpsw_cpts_rft_ck_parents[] = {
|
|
|
|
+ "dpll_core_m5_ck", "dpll_core_m4_ck",
|