Partially revert "clk: mvebu: Convert to clk_hw based provider APIs"
This partially reverts commit eca61c9ff2
.
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: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
This commit is contained in:
Родитель
9f30a04d76
Коммит
e79b202c63
|
@ -197,6 +197,7 @@ static void __init of_cpu_clk_setup(struct device_node *node)
|
||||||
for_each_node_by_type(dn, "cpu") {
|
for_each_node_by_type(dn, "cpu") {
|
||||||
struct clk_init_data init;
|
struct clk_init_data init;
|
||||||
struct clk *clk;
|
struct clk *clk;
|
||||||
|
struct clk *parent_clk;
|
||||||
char *clk_name = kzalloc(5, GFP_KERNEL);
|
char *clk_name = kzalloc(5, GFP_KERNEL);
|
||||||
int cpu, err;
|
int cpu, err;
|
||||||
|
|
||||||
|
@ -208,8 +209,9 @@ static void __init of_cpu_clk_setup(struct device_node *node)
|
||||||
goto bail_out;
|
goto bail_out;
|
||||||
|
|
||||||
sprintf(clk_name, "cpu%d", cpu);
|
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].clk_name = clk_name;
|
||||||
cpuclk[cpu].cpu = cpu;
|
cpuclk[cpu].cpu = cpu;
|
||||||
cpuclk[cpu].reg_base = clock_complex_base;
|
cpuclk[cpu].reg_base = clock_complex_base;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче