|
@@ -582,6 +582,14 @@ static struct clk_gate *const meson8b_clk_gates[] = {
|
|
|
&meson8b_ao_iface,
|
|
|
};
|
|
|
|
|
|
+static struct clk_mux *const meson8b_clk_muxes[] = {
|
|
|
+ &meson8b_mpeg_clk_sel,
|
|
|
+};
|
|
|
+
|
|
|
+static struct clk_divider *const meson8b_clk_dividers[] = {
|
|
|
+ &meson8b_mpeg_clk_div,
|
|
|
+};
|
|
|
+
|
|
|
static int meson8b_clkc_probe(struct platform_device *pdev)
|
|
|
{
|
|
|
void __iomem *clk_base;
|
|
@@ -604,15 +612,21 @@ static int meson8b_clkc_probe(struct platform_device *pdev)
|
|
|
/* Populate the base address for CPU clk */
|
|
|
meson8b_cpu_clk.base = clk_base;
|
|
|
|
|
|
- /* Populate the base address for the MPEG clks */
|
|
|
- meson8b_mpeg_clk_sel.reg = clk_base + (u32)meson8b_mpeg_clk_sel.reg;
|
|
|
- meson8b_mpeg_clk_div.reg = clk_base + (u32)meson8b_mpeg_clk_div.reg;
|
|
|
-
|
|
|
/* Populate base address for gates */
|
|
|
for (i = 0; i < ARRAY_SIZE(meson8b_clk_gates); i++)
|
|
|
meson8b_clk_gates[i]->reg = clk_base +
|
|
|
(u32)meson8b_clk_gates[i]->reg;
|
|
|
|
|
|
+ /* Populate base address for muxes */
|
|
|
+ for (i = 0; i < ARRAY_SIZE(meson8b_clk_muxes); i++)
|
|
|
+ meson8b_clk_muxes[i]->reg = clk_base +
|
|
|
+ (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;
|
|
|
+
|
|
|
/*
|
|
|
* register all clks
|
|
|
* CLKID_UNUSED = 0, so skip it and start with CLKID_XTAL = 1
|