Commit f06ddd28 authored by Jerome Brunet's avatar Jerome Brunet Committed by Neil Armstrong

clk: meson: migrate dividers to clk_regmap

Move meson8b, gxbb and axg clocks using clk_divider to clk_regmap
Signed-off-by: default avatarJerome Brunet <jbrunet@baylibre.com>
Signed-off-by: default avatarNeil Armstrong <narmstrong@baylibre.com>
parent 7f9768a5
...@@ -433,14 +433,15 @@ static struct clk_mux axg_mpeg_clk_sel = { ...@@ -433,14 +433,15 @@ static struct clk_mux axg_mpeg_clk_sel = {
}, },
}; };
static struct clk_divider axg_mpeg_clk_div = { static struct clk_regmap axg_mpeg_clk_div = {
.reg = (void *)HHI_MPEG_CLK_CNTL, .data = &(struct clk_regmap_div_data){
.shift = 0, .offset = HHI_MPEG_CLK_CNTL,
.width = 7, .shift = 0,
.lock = &meson_clk_lock, .width = 7,
},
.hw.init = &(struct clk_init_data){ .hw.init = &(struct clk_init_data){
.name = "mpeg_clk_div", .name = "mpeg_clk_div",
.ops = &clk_divider_ops, .ops = &clk_regmap_divider_ops,
.parent_names = (const char *[]){ "mpeg_clk_sel" }, .parent_names = (const char *[]){ "mpeg_clk_sel" },
.num_parents = 1, .num_parents = 1,
.flags = CLK_SET_RATE_PARENT, .flags = CLK_SET_RATE_PARENT,
...@@ -487,15 +488,16 @@ static struct clk_mux axg_sd_emmc_b_clk0_sel = { ...@@ -487,15 +488,16 @@ static struct clk_mux axg_sd_emmc_b_clk0_sel = {
}, },
}; };
static struct clk_divider axg_sd_emmc_b_clk0_div = { static struct clk_regmap axg_sd_emmc_b_clk0_div = {
.reg = (void *)HHI_SD_EMMC_CLK_CNTL, .data = &(struct clk_regmap_div_data){
.shift = 16, .offset = HHI_SD_EMMC_CLK_CNTL,
.width = 7, .shift = 16,
.lock = &meson_clk_lock, .width = 7,
.flags = CLK_DIVIDER_ROUND_CLOSEST, .flags = CLK_DIVIDER_ROUND_CLOSEST,
},
.hw.init = &(struct clk_init_data) { .hw.init = &(struct clk_init_data) {
.name = "sd_emmc_b_clk0_div", .name = "sd_emmc_b_clk0_div",
.ops = &clk_divider_ops, .ops = &clk_regmap_divider_ops,
.parent_names = (const char *[]){ "sd_emmc_b_clk0_sel" }, .parent_names = (const char *[]){ "sd_emmc_b_clk0_sel" },
.num_parents = 1, .num_parents = 1,
.flags = CLK_SET_RATE_PARENT, .flags = CLK_SET_RATE_PARENT,
...@@ -531,15 +533,16 @@ static struct clk_mux axg_sd_emmc_c_clk0_sel = { ...@@ -531,15 +533,16 @@ static struct clk_mux axg_sd_emmc_c_clk0_sel = {
}, },
}; };
static struct clk_divider axg_sd_emmc_c_clk0_div = { static struct clk_regmap axg_sd_emmc_c_clk0_div = {
.reg = (void *)HHI_NAND_CLK_CNTL, .data = &(struct clk_regmap_div_data){
.shift = 0, .offset = HHI_NAND_CLK_CNTL,
.width = 7, .shift = 0,
.lock = &meson_clk_lock, .width = 7,
.flags = CLK_DIVIDER_ROUND_CLOSEST, .flags = CLK_DIVIDER_ROUND_CLOSEST,
},
.hw.init = &(struct clk_init_data) { .hw.init = &(struct clk_init_data) {
.name = "sd_emmc_c_clk0_div", .name = "sd_emmc_c_clk0_div",
.ops = &clk_divider_ops, .ops = &clk_regmap_divider_ops,
.parent_names = (const char *[]){ "sd_emmc_c_clk0_sel" }, .parent_names = (const char *[]){ "sd_emmc_c_clk0_sel" },
.num_parents = 1, .num_parents = 1,
.flags = CLK_SET_RATE_PARENT, .flags = CLK_SET_RATE_PARENT,
...@@ -706,12 +709,6 @@ static struct clk_mux *const axg_clk_muxes[] = { ...@@ -706,12 +709,6 @@ static struct clk_mux *const axg_clk_muxes[] = {
&axg_sd_emmc_c_clk0_sel, &axg_sd_emmc_c_clk0_sel,
}; };
static struct clk_divider *const axg_clk_dividers[] = {
&axg_mpeg_clk_div,
&axg_sd_emmc_b_clk0_div,
&axg_sd_emmc_c_clk0_div,
};
static struct clk_regmap *const axg_clk_regmaps[] = { static struct clk_regmap *const axg_clk_regmaps[] = {
&axg_clk81, &axg_clk81,
&axg_ddr, &axg_ddr,
...@@ -760,6 +757,9 @@ static struct clk_regmap *const axg_clk_regmaps[] = { ...@@ -760,6 +757,9 @@ static struct clk_regmap *const axg_clk_regmaps[] = {
&axg_ao_i2c, &axg_ao_i2c,
&axg_sd_emmc_b_clk0, &axg_sd_emmc_b_clk0,
&axg_sd_emmc_c_clk0, &axg_sd_emmc_c_clk0,
&axg_mpeg_clk_div,
&axg_sd_emmc_b_clk0_div,
&axg_sd_emmc_c_clk0_div,
}; };
struct clkc_data { struct clkc_data {
...@@ -769,8 +769,6 @@ struct clkc_data { ...@@ -769,8 +769,6 @@ struct clkc_data {
unsigned int clk_plls_count; unsigned int clk_plls_count;
struct clk_mux *const *clk_muxes; struct clk_mux *const *clk_muxes;
unsigned int clk_muxes_count; unsigned int clk_muxes_count;
struct clk_divider *const *clk_dividers;
unsigned int clk_dividers_count;
struct clk_hw_onecell_data *hw_onecell_data; struct clk_hw_onecell_data *hw_onecell_data;
}; };
...@@ -781,8 +779,6 @@ static const struct clkc_data axg_clkc_data = { ...@@ -781,8 +779,6 @@ static const struct clkc_data axg_clkc_data = {
.clk_plls_count = ARRAY_SIZE(axg_clk_plls), .clk_plls_count = ARRAY_SIZE(axg_clk_plls),
.clk_muxes = axg_clk_muxes, .clk_muxes = axg_clk_muxes,
.clk_muxes_count = ARRAY_SIZE(axg_clk_muxes), .clk_muxes_count = ARRAY_SIZE(axg_clk_muxes),
.clk_dividers = axg_clk_dividers,
.clk_dividers_count = ARRAY_SIZE(axg_clk_dividers),
.hw_onecell_data = &axg_hw_onecell_data, .hw_onecell_data = &axg_hw_onecell_data,
}; };
...@@ -838,11 +834,6 @@ static int axg_clkc_probe(struct platform_device *pdev) ...@@ -838,11 +834,6 @@ static int axg_clkc_probe(struct platform_device *pdev)
clkc_data->clk_muxes[i]->reg = clk_base + clkc_data->clk_muxes[i]->reg = clk_base +
(u64)clkc_data->clk_muxes[i]->reg; (u64)clkc_data->clk_muxes[i]->reg;
/* Populate base address for dividers */
for (i = 0; i < clkc_data->clk_dividers_count; i++)
clkc_data->clk_dividers[i]->reg = clk_base +
(u64)clkc_data->clk_dividers[i]->reg;
/* Populate regmap for the regmap backed clocks */ /* Populate regmap for the regmap backed clocks */
for (i = 0; i < ARRAY_SIZE(axg_clk_regmaps); i++) for (i = 0; i < ARRAY_SIZE(axg_clk_regmaps); i++)
axg_clk_regmaps[i]->map = map; axg_clk_regmaps[i]->map = map;
......
This diff is collapsed.
...@@ -393,14 +393,15 @@ struct clk_mux meson8b_mpeg_clk_sel = { ...@@ -393,14 +393,15 @@ struct clk_mux meson8b_mpeg_clk_sel = {
}, },
}; };
struct clk_divider meson8b_mpeg_clk_div = { struct clk_regmap meson8b_mpeg_clk_div = {
.reg = (void *)HHI_MPEG_CLK_CNTL, .data = &(struct clk_regmap_div_data){
.shift = 0, .offset = HHI_MPEG_CLK_CNTL,
.width = 7, .shift = 0,
.lock = &meson_clk_lock, .width = 7,
},
.hw.init = &(struct clk_init_data){ .hw.init = &(struct clk_init_data){
.name = "mpeg_clk_div", .name = "mpeg_clk_div",
.ops = &clk_divider_ops, .ops = &clk_regmap_divider_ops,
.parent_names = (const char *[]){ "mpeg_clk_sel" }, .parent_names = (const char *[]){ "mpeg_clk_sel" },
.num_parents = 1, .num_parents = 1,
.flags = (CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED), .flags = (CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED),
...@@ -623,10 +624,6 @@ static struct clk_mux *const meson8b_clk_muxes[] = { ...@@ -623,10 +624,6 @@ static struct clk_mux *const meson8b_clk_muxes[] = {
&meson8b_mpeg_clk_sel, &meson8b_mpeg_clk_sel,
}; };
static struct clk_divider *const meson8b_clk_dividers[] = {
&meson8b_mpeg_clk_div,
};
static struct clk_regmap *const meson8b_clk_regmaps[] = { static struct clk_regmap *const meson8b_clk_regmaps[] = {
&meson8b_clk81, &meson8b_clk81,
&meson8b_ddr, &meson8b_ddr,
...@@ -706,6 +703,7 @@ static struct clk_regmap *const meson8b_clk_regmaps[] = { ...@@ -706,6 +703,7 @@ static struct clk_regmap *const meson8b_clk_regmaps[] = {
&meson8b_ao_ahb_sram, &meson8b_ao_ahb_sram,
&meson8b_ao_ahb_bus, &meson8b_ao_ahb_bus,
&meson8b_ao_iface, &meson8b_ao_iface,
&meson8b_mpeg_clk_div,
}; };
static const struct meson8b_clk_reset_line { static const struct meson8b_clk_reset_line {
...@@ -844,11 +842,6 @@ static int meson8b_clkc_probe(struct platform_device *pdev) ...@@ -844,11 +842,6 @@ static int meson8b_clkc_probe(struct platform_device *pdev)
meson8b_clk_muxes[i]->reg = clk_base + meson8b_clk_muxes[i]->reg = clk_base +
(u32)meson8b_clk_muxes[i]->reg; (u32)meson8b_clk_muxes[i]->reg;
/* Populate base address for dividers */
for (i = 0; i < ARRAY_SIZE(meson8b_clk_dividers); i++)
meson8b_clk_dividers[i]->reg = clk_base +
(u32)meson8b_clk_dividers[i]->reg;
/* Populate regmap for the regmap backed clocks */ /* Populate regmap for the regmap backed clocks */
for (i = 0; i < ARRAY_SIZE(meson8b_clk_regmaps); i++) for (i = 0; i < ARRAY_SIZE(meson8b_clk_regmaps); i++)
meson8b_clk_regmaps[i]->map = map; meson8b_clk_regmaps[i]->map = map;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment