|
@@ -110,7 +110,6 @@ static const struct clk_div_table cpu_div_table[] = {
|
|
{ /* sentinel */ },
|
|
{ /* sentinel */ },
|
|
};
|
|
};
|
|
|
|
|
|
-PNAME(p_fclk_div) = { "fixed_pll" };
|
|
|
|
PNAME(p_cpu_clk) = { "sys_pll" };
|
|
PNAME(p_cpu_clk) = { "sys_pll" };
|
|
PNAME(p_clk81) = { "fclk_div3", "fclk_div4", "fclk_div5" };
|
|
PNAME(p_clk81) = { "fclk_div3", "fclk_div4", "fclk_div5" };
|
|
PNAME(p_mali) = { "fclk_div3", "fclk_div4", "fclk_div5",
|
|
PNAME(p_mali) = { "fclk_div3", "fclk_div4", "fclk_div5",
|
|
@@ -232,12 +231,62 @@ static struct meson_clk_pll meson8b_sys_pll = {
|
|
},
|
|
},
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+static struct clk_fixed_factor meson8b_fclk_div2 = {
|
|
|
|
+ .mult = 1,
|
|
|
|
+ .div = 2,
|
|
|
|
+ .hw.init = &(struct clk_init_data){
|
|
|
|
+ .name = "fclk_div2",
|
|
|
|
+ .ops = &clk_fixed_factor_ops,
|
|
|
|
+ .parent_names = (const char *[]){ "fixed_pll" },
|
|
|
|
+ .num_parents = 1,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clk_fixed_factor meson8b_fclk_div3 = {
|
|
|
|
+ .mult = 1,
|
|
|
|
+ .div = 3,
|
|
|
|
+ .hw.init = &(struct clk_init_data){
|
|
|
|
+ .name = "fclk_div3",
|
|
|
|
+ .ops = &clk_fixed_factor_ops,
|
|
|
|
+ .parent_names = (const char *[]){ "fixed_pll" },
|
|
|
|
+ .num_parents = 1,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clk_fixed_factor meson8b_fclk_div4 = {
|
|
|
|
+ .mult = 1,
|
|
|
|
+ .div = 4,
|
|
|
|
+ .hw.init = &(struct clk_init_data){
|
|
|
|
+ .name = "fclk_div4",
|
|
|
|
+ .ops = &clk_fixed_factor_ops,
|
|
|
|
+ .parent_names = (const char *[]){ "fixed_pll" },
|
|
|
|
+ .num_parents = 1,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clk_fixed_factor meson8b_fclk_div5 = {
|
|
|
|
+ .mult = 1,
|
|
|
|
+ .div = 5,
|
|
|
|
+ .hw.init = &(struct clk_init_data){
|
|
|
|
+ .name = "fclk_div5",
|
|
|
|
+ .ops = &clk_fixed_factor_ops,
|
|
|
|
+ .parent_names = (const char *[]){ "fixed_pll" },
|
|
|
|
+ .num_parents = 1,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+static struct clk_fixed_factor meson8b_fclk_div7 = {
|
|
|
|
+ .mult = 1,
|
|
|
|
+ .div = 7,
|
|
|
|
+ .hw.init = &(struct clk_init_data){
|
|
|
|
+ .name = "fclk_div7",
|
|
|
|
+ .ops = &clk_fixed_factor_ops,
|
|
|
|
+ .parent_names = (const char *[]){ "fixed_pll" },
|
|
|
|
+ .num_parents = 1,
|
|
|
|
+ },
|
|
|
|
+};
|
|
|
|
+
|
|
static const struct clk_conf meson8b_clk_confs[] __initconst = {
|
|
static const struct clk_conf meson8b_clk_confs[] __initconst = {
|
|
- FIXED_FACTOR_DIV(CLKID_FCLK_DIV2, "fclk_div2", p_fclk_div, 0, 2),
|
|
|
|
- FIXED_FACTOR_DIV(CLKID_FCLK_DIV3, "fclk_div3", p_fclk_div, 0, 3),
|
|
|
|
- FIXED_FACTOR_DIV(CLKID_FCLK_DIV4, "fclk_div4", p_fclk_div, 0, 4),
|
|
|
|
- FIXED_FACTOR_DIV(CLKID_FCLK_DIV5, "fclk_div5", p_fclk_div, 0, 5),
|
|
|
|
- FIXED_FACTOR_DIV(CLKID_FCLK_DIV7, "fclk_div7", p_fclk_div, 0, 7),
|
|
|
|
CPU(MESON8B_REG_SYS_CPU_CNTL1, CLKID_CPUCLK, "a5_clk", p_cpu_clk,
|
|
CPU(MESON8B_REG_SYS_CPU_CNTL1, CLKID_CPUCLK, "a5_clk", p_cpu_clk,
|
|
cpu_div_table),
|
|
cpu_div_table),
|
|
COMPOSITE(MESON8B_REG_HHI_MPEG, CLKID_CLK81, "clk81", p_clk81,
|
|
COMPOSITE(MESON8B_REG_HHI_MPEG, CLKID_CLK81, "clk81", p_clk81,
|
|
@@ -260,6 +309,11 @@ static struct clk_hw_onecell_data meson8b_hw_onecell_data = {
|
|
[CLKID_PLL_FIXED] = &meson8b_fixed_pll.hw,
|
|
[CLKID_PLL_FIXED] = &meson8b_fixed_pll.hw,
|
|
[CLKID_PLL_VID] = &meson8b_vid_pll.hw,
|
|
[CLKID_PLL_VID] = &meson8b_vid_pll.hw,
|
|
[CLKID_PLL_SYS] = &meson8b_sys_pll.hw,
|
|
[CLKID_PLL_SYS] = &meson8b_sys_pll.hw,
|
|
|
|
+ [CLKID_FCLK_DIV2] = &meson8b_fclk_div2.hw,
|
|
|
|
+ [CLKID_FCLK_DIV3] = &meson8b_fclk_div3.hw,
|
|
|
|
+ [CLKID_FCLK_DIV4] = &meson8b_fclk_div4.hw,
|
|
|
|
+ [CLKID_FCLK_DIV5] = &meson8b_fclk_div5.hw,
|
|
|
|
+ [CLKID_FCLK_DIV7] = &meson8b_fclk_div7.hw,
|
|
},
|
|
},
|
|
.num = CLK_NR_CLKS,
|
|
.num = CLK_NR_CLKS,
|
|
};
|
|
};
|