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

Commit e79b202c authored by Stephen Boyd's avatar Stephen Boyd
Browse files

Partially revert "clk: mvebu: Convert to clk_hw based provider APIs"



This partially reverts commit eca61c9f.

Thomas reports that it causes regressions on Armada XP devices.
This is because of_clk_get_parent_name() relies on the property
'clock-output-names' to resolve the name of a clock's parent,
without trying to get the clock from the framework and call
__clk_get_name(). Given that Armada XP devices don't have the
'clock-output-names' property, of_clk_get_parent_name() returns
the name of the node which doesn't match the actual parent
clock's name at all, causing CPU clocks to never link up with
their parents.

Reported-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: default avatarStephen Boyd <sboyd@codeaurora.org>
parent 9f30a04d
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -197,6 +197,7 @@ static void __init of_cpu_clk_setup(struct device_node *node)
	for_each_node_by_type(dn, "cpu") {
		struct clk_init_data init;
		struct clk *clk;
		struct clk *parent_clk;
		char *clk_name = kzalloc(5, GFP_KERNEL);
		int cpu, err;

@@ -208,8 +209,9 @@ static void __init of_cpu_clk_setup(struct device_node *node)
			goto bail_out;

		sprintf(clk_name, "cpu%d", cpu);
		parent_clk = of_clk_get(node, 0);

		cpuclk[cpu].parent_name = of_clk_get_parent_name(node, 0);
		cpuclk[cpu].parent_name = __clk_get_name(parent_clk);
		cpuclk[cpu].clk_name = clk_name;
		cpuclk[cpu].cpu = cpu;
		cpuclk[cpu].reg_base = clock_complex_base;