Commit b51d3388 authored by YuanTian Tang's avatar YuanTian Tang Committed by Rafael J. Wysocki

cpufreq: qoriq: enhance bus frequency calculation

On some platforms, property device-type may be missed in soc node
in dts which caused the bus-frequency can not be obtained correctly.

This patch enhanced the bus-frequency calculation. When property
device-type is missed in dts, bus-frequency will be obtained by
looking up clock table to get platform clock and hence get its
frequency.
Signed-off-by: default avatarTang Yuantian <andy.tang@nxp.com>
Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent cf9a2438
...@@ -52,17 +52,27 @@ static u32 get_bus_freq(void) ...@@ -52,17 +52,27 @@ static u32 get_bus_freq(void)
{ {
struct device_node *soc; struct device_node *soc;
u32 sysfreq; u32 sysfreq;
struct clk *pltclk;
int ret;
/* get platform freq by searching bus-frequency property */
soc = of_find_node_by_type(NULL, "soc"); soc = of_find_node_by_type(NULL, "soc");
if (!soc) if (soc) {
return 0; ret = of_property_read_u32(soc, "bus-frequency", &sysfreq);
of_node_put(soc);
if (of_property_read_u32(soc, "bus-frequency", &sysfreq)) if (!ret)
sysfreq = 0; return sysfreq;
}
of_node_put(soc); /* get platform freq by its clock name */
pltclk = clk_get(NULL, "cg-pll0-div1");
if (IS_ERR(pltclk)) {
pr_err("%s: can't get bus frequency %ld\n",
__func__, PTR_ERR(pltclk));
return PTR_ERR(pltclk);
}
return sysfreq; return clk_get_rate(pltclk);
} }
static struct clk *cpu_to_clk(int cpu) static struct clk *cpu_to_clk(int cpu)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment