|
@@ -609,3 +609,120 @@ static const struct clksel cpsw_cpts_rft_clkmux_sel[] = {
|
|
|
|
|
|
static const char *cpsw_cpts_rft_ck_parents[] = {
|
|
static const char *cpsw_cpts_rft_ck_parents[] = {
|
|
"dpll_core_m5_ck", "dpll_core_m4_ck",
|
|
"dpll_core_m5_ck", "dpll_core_m4_ck",
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clk cpsw_cpts_rft_clk;
|
|
|
|
+
|
|
|
|
+static struct clk_hw_omap cpsw_cpts_rft_clk_hw = {
|
|
|
|
+ .hw = {
|
|
|
|
+ .clk = &cpsw_cpts_rft_clk,
|
|
|
|
+ },
|
|
|
|
+ .clkdm_name = "cpsw_125mhz_clkdm",
|
|
|
|
+ .clksel = cpsw_cpts_rft_clkmux_sel,
|
|
|
|
+ .clksel_reg = AM33XX_CM_CPTS_RFT_CLKSEL,
|
|
|
|
+ .clksel_mask = AM33XX_CLKSEL_0_0_MASK,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+DEFINE_STRUCT_CLK(cpsw_cpts_rft_clk, cpsw_cpts_rft_ck_parents, cpsw_fck_ops);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/* gpio */
|
|
|
|
+static const char *gpio0_ck_parents[] = {
|
|
|
|
+ "clk_rc32k_ck", "clk_32768_ck", "clkdiv32k_ick",
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static const struct clksel gpio0_dbclk_mux_sel[] = {
|
|
|
|
+ { .parent = &clk_rc32k_ck, .rates = div_1_0_rates },
|
|
|
|
+ { .parent = &clk_32768_ck, .rates = div_1_1_rates },
|
|
|
|
+ { .parent = &clkdiv32k_ick, .rates = div_1_2_rates },
|
|
|
|
+ { .parent = NULL },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static const struct clk_ops gpio_fck_ops = {
|
|
|
|
+ .recalc_rate = &omap2_clksel_recalc,
|
|
|
|
+ .get_parent = &omap2_clksel_find_parent_index,
|
|
|
|
+ .set_parent = &omap2_clksel_set_parent,
|
|
|
|
+ .init = &omap2_init_clk_clkdm,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clk gpio0_dbclk_mux_ck;
|
|
|
|
+
|
|
|
|
+static struct clk_hw_omap gpio0_dbclk_mux_ck_hw = {
|
|
|
|
+ .hw = {
|
|
|
|
+ .clk = &gpio0_dbclk_mux_ck,
|
|
|
|
+ },
|
|
|
|
+ .clkdm_name = "l4_wkup_clkdm",
|
|
|
|
+ .clksel = gpio0_dbclk_mux_sel,
|
|
|
|
+ .clksel_reg = AM33XX_CLKSEL_GPIO0_DBCLK,
|
|
|
|
+ .clksel_mask = AM33XX_CLKSEL_0_1_MASK,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+DEFINE_STRUCT_CLK(gpio0_dbclk_mux_ck, gpio0_ck_parents, gpio_fck_ops);
|
|
|
|
+
|
|
|
|
+DEFINE_CLK_GATE(gpio0_dbclk, "gpio0_dbclk_mux_ck", &gpio0_dbclk_mux_ck, 0x0,
|
|
|
|
+ AM33XX_CM_WKUP_GPIO0_CLKCTRL,
|
|
|
|
+ AM33XX_OPTFCLKEN_GPIO0_GDBCLK_SHIFT, 0x0, NULL);
|
|
|
|
+
|
|
|
|
+DEFINE_CLK_GATE(gpio1_dbclk, "clkdiv32k_ick", &clkdiv32k_ick, 0x0,
|
|
|
|
+ AM33XX_CM_PER_GPIO1_CLKCTRL,
|
|
|
|
+ AM33XX_OPTFCLKEN_GPIO_1_GDBCLK_SHIFT, 0x0, NULL);
|
|
|
|
+
|
|
|
|
+DEFINE_CLK_GATE(gpio2_dbclk, "clkdiv32k_ick", &clkdiv32k_ick, 0x0,
|
|
|
|
+ AM33XX_CM_PER_GPIO2_CLKCTRL,
|
|
|
|
+ AM33XX_OPTFCLKEN_GPIO_2_GDBCLK_SHIFT, 0x0, NULL);
|
|
|
|
+
|
|
|
|
+DEFINE_CLK_GATE(gpio3_dbclk, "clkdiv32k_ick", &clkdiv32k_ick, 0x0,
|
|
|
|
+ AM33XX_CM_PER_GPIO3_CLKCTRL,
|
|
|
|
+ AM33XX_OPTFCLKEN_GPIO_3_GDBCLK_SHIFT, 0x0, NULL);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+static const char *pruss_ck_parents[] = {
|
|
|
|
+ "l3_gclk", "dpll_disp_m2_ck",
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static const struct clksel pruss_ocp_clk_mux_sel[] = {
|
|
|
|
+ { .parent = &l3_gclk, .rates = div_1_0_rates },
|
|
|
|
+ { .parent = &dpll_disp_m2_ck, .rates = div_1_1_rates },
|
|
|
|
+ { .parent = NULL },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clk pruss_ocp_gclk;
|
|
|
|
+
|
|
|
|
+static struct clk_hw_omap pruss_ocp_gclk_hw = {
|
|
|
|
+ .hw = {
|
|
|
|
+ .clk = &pruss_ocp_gclk,
|
|
|
|
+ },
|
|
|
|
+ .clkdm_name = "pruss_ocp_clkdm",
|
|
|
|
+ .clksel = pruss_ocp_clk_mux_sel,
|
|
|
|
+ .clksel_reg = AM33XX_CLKSEL_PRUSS_OCP_CLK,
|
|
|
|
+ .clksel_mask = AM33XX_CLKSEL_0_0_MASK,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+DEFINE_STRUCT_CLK(pruss_ocp_gclk, pruss_ck_parents, gpio_fck_ops);
|
|
|
|
+
|
|
|
|
+static const char *lcd_ck_parents[] = {
|
|
|
|
+ "dpll_disp_m2_ck", "dpll_core_m5_ck", "dpll_per_m2_ck",
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static const struct clksel lcd_clk_mux_sel[] = {
|
|
|
|
+ { .parent = &dpll_disp_m2_ck, .rates = div_1_0_rates },
|
|
|
|
+ { .parent = &dpll_core_m5_ck, .rates = div_1_1_rates },
|
|
|
|
+ { .parent = &dpll_per_m2_ck, .rates = div_1_2_rates },
|
|
|
|
+ { .parent = NULL },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clk lcd_gclk;
|
|
|
|
+
|
|
|
|
+static struct clk_hw_omap lcd_gclk_hw = {
|
|
|
|
+ .hw = {
|
|
|
|
+ .clk = &lcd_gclk,
|
|
|
|
+ },
|
|
|
|
+ .clkdm_name = "lcdc_clkdm",
|
|
|
|
+ .clksel = lcd_clk_mux_sel,
|
|
|
|
+ .clksel_reg = AM33XX_CLKSEL_LCDC_PIXEL_CLK,
|
|
|
|
+ .clksel_mask = AM33XX_CLKSEL_0_1_MASK,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+DEFINE_STRUCT_CLK(lcd_gclk, lcd_ck_parents, gpio_fck_ops);
|
|
|
|
+
|
|
|
|
+DEFINE_CLK_FIXED_FACTOR(mmc_clk, "dpll_per_m2_ck", &dpll_per_m2_ck, 0x0, 1, 2);
|