clk: versatile: pass a parent to the ICST clock
authorLinus Walleij <linus.walleij@linaro.org>
Mon, 20 Jan 2014 20:31:41 +0000 (21:31 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Thu, 13 Feb 2014 10:20:48 +0000 (11:20 +0100)
As we want to actually define the parent frequency in the device
tree for the ICST clocks, modify the clock registration function
to take a parent argument.

Cc: Mike Turquette <mturquette@linaro.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/clk/versatile/clk-icst.c
drivers/clk/versatile/clk-icst.h
drivers/clk/versatile/clk-impd1.c
drivers/clk/versatile/clk-integrator.c
drivers/clk/versatile/clk-realview.c

index 8cbfcf88fae3ed6eaabe1a7af8dd1d1c7fd33d27..c98adbe62733663992bb9ae0a9254097b510c060 100644 (file)
@@ -120,6 +120,7 @@ static const struct clk_ops icst_ops = {
 struct clk *icst_clk_register(struct device *dev,
                        const struct clk_icst_desc *desc,
                        const char *name,
+                       const char *parent_name,
                        void __iomem *base)
 {
        struct clk *clk;
index be99dd0da7850ee7c35ce2c09e871fb71bb355a8..04e6f0aef5889ad260aaced2b427f7487240dd37 100644 (file)
@@ -16,4 +16,5 @@ struct clk_icst_desc {
 struct clk *icst_clk_register(struct device *dev,
                              const struct clk_icst_desc *desc,
                              const char *name,
+                             const char *parent_name,
                              void __iomem *base);
index 844f8d711a1271ab85265d373e530919807081c7..6d8b8e1a080ab0c695e694bcfff63b442f0e0bbf 100644 (file)
@@ -93,13 +93,15 @@ void integrator_impd1_clk_init(void __iomem *base, unsigned int id)
        imc = &impd1_clks[id];
 
        imc->vco1name = kasprintf(GFP_KERNEL, "lm%x-vco1", id);
-       clk = icst_clk_register(NULL, &impd1_icst1_desc, imc->vco1name, base);
+       clk = icst_clk_register(NULL, &impd1_icst1_desc, imc->vco1name, NULL,
+                               base);
        imc->vco1clk = clk;
        imc->clks[0] = clkdev_alloc(clk, NULL, "lm%x:01000", id);
 
        /* VCO2 is also called "CLK2" */
        imc->vco2name = kasprintf(GFP_KERNEL, "lm%x-vco2", id);
-       clk = icst_clk_register(NULL, &impd1_icst2_desc, imc->vco2name, base);
+       clk = icst_clk_register(NULL, &impd1_icst2_desc, imc->vco2name, NULL,
+                               base);
        imc->vco2clk = clk;
 
        /* MMCI uses CLK2 right off */
index 19864b5690e96f6911be5f9a9fc376cc0fa8e3df..5d36a719fefb57c4ed5b75f4caca275062d06333 100644 (file)
@@ -43,6 +43,7 @@ static void __init of_integrator_cm_osc_setup(struct device_node *np)
        struct clk *clk = ERR_PTR(-EINVAL);
        const char *clk_name = np->name;
        const struct clk_icst_desc *desc = &cm_auxosc_desc;
+       const char *parent_name;
 
        if (!cm_base) {
                /* Remap the core module base if not done yet */
@@ -60,7 +61,8 @@ static void __init of_integrator_cm_osc_setup(struct device_node *np)
                }
        }
 
-       clk = icst_clk_register(NULL, desc, clk_name, cm_base);
+       parent_name = of_clk_get_parent_name(np, 0);
+       clk = icst_clk_register(NULL, desc, clk_name, parent_name, cm_base);
        if (!IS_ERR(clk))
                of_clk_add_provider(np, of_clk_src_simple_get, clk);
 }
index 747e7b31117cb6c0dd84eaa6a984e512f8ac406b..c8b523117fb7ed4e971b5582f802cab0fb7c0eee 100644 (file)
@@ -85,10 +85,10 @@ void __init realview_clk_init(void __iomem *sysbase, bool is_pb1176)
        /* ICST VCO clock */
        if (is_pb1176)
                clk = icst_clk_register(NULL, &realview_osc0_desc,
-                                       "osc0", sysbase);
+                                       "osc0", NULL, sysbase);
        else
                clk = icst_clk_register(NULL, &realview_osc4_desc,
-                                       "osc4", sysbase);
+                                       "osc4", NULL, sysbase);
 
        clk_register_clkdev(clk, NULL, "dev:clcd");
        clk_register_clkdev(clk, NULL, "issp:clcd");