Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bf6edb4b authored by Linus Walleij's avatar Linus Walleij
Browse files

clk: versatile: pass a parent to the ICST clock



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: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 09c978bc
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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;
+1 −0
Original line number Diff line number Diff line
@@ -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);
+4 −2
Original line number Diff line number Diff line
@@ -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 */
+3 −1
Original line number Diff line number Diff line
@@ -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);
}
+2 −2
Original line number Diff line number Diff line
@@ -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");