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

Commit b494b48d authored by Sudeep Holla's avatar Sudeep Holla Committed by Rafael J. Wysocki
Browse files

cpufreq: imx6q-cpufreq: assign cpu_dev correctly to cpu0 device



Commit cdc58d60 "cpufreq: imx6q-cpufreq:
remove device tree parsing for cpu nodes" assumed the pdev->dev is set to
cpu0 device in the platform code. But it actually points to the virtual
cpufreq-cpu0 platform device which is not present in the device tree.
Most of the information needed by cpufreq is stored in cpu0 DT node.
So cpu_dev must point to cpu0 device.

This patch fixes the wrong assignment to cpu_dev.

Reported-by: default avatarGuennadi Liakhovetski <g.liakhovetski@gmx.de>
Tested-by: default avatarShawn Guo <shawn.guo@linaro.org>
Signed-off-by: default avatarSudeep KarkadaNagesha <sudeep.karkadanagesha@arm.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent e1825b25
Loading
Loading
Loading
Loading
+7 −2
Original line number Original line Diff line number Diff line
@@ -233,10 +233,15 @@ static void __init imx6q_opp_check_1p2ghz(struct device *cpu_dev)
	of_node_put(np);
	of_node_put(np);
}
}


static void __init imx6q_opp_init(struct device *cpu_dev)
static void __init imx6q_opp_init(void)
{
{
	struct device_node *np;
	struct device_node *np;
	struct device *cpu_dev = get_cpu_device(0);


	if (!cpu_dev) {
		pr_warn("failed to get cpu0 device\n");
		return;
	}
	np = of_node_get(cpu_dev->of_node);
	np = of_node_get(cpu_dev->of_node);
	if (!np) {
	if (!np) {
		pr_warn("failed to find cpu0 node\n");
		pr_warn("failed to find cpu0 node\n");
@@ -268,7 +273,7 @@ static void __init imx6q_init_late(void)
		imx6q_cpuidle_init();
		imx6q_cpuidle_init();


	if (IS_ENABLED(CONFIG_ARM_IMX6Q_CPUFREQ)) {
	if (IS_ENABLED(CONFIG_ARM_IMX6Q_CPUFREQ)) {
		imx6q_opp_init(&imx6q_cpufreq_pdev.dev);
		imx6q_opp_init();
		platform_device_register(&imx6q_cpufreq_pdev);
		platform_device_register(&imx6q_cpufreq_pdev);
	}
	}
}
}
+6 −1
Original line number Original line Diff line number Diff line
@@ -7,6 +7,7 @@
 */
 */


#include <linux/clk.h>
#include <linux/clk.h>
#include <linux/cpu.h>
#include <linux/cpufreq.h>
#include <linux/cpufreq.h>
#include <linux/delay.h>
#include <linux/delay.h>
#include <linux/err.h>
#include <linux/err.h>
@@ -202,7 +203,11 @@ static int imx6q_cpufreq_probe(struct platform_device *pdev)
	unsigned long min_volt, max_volt;
	unsigned long min_volt, max_volt;
	int num, ret;
	int num, ret;


	cpu_dev = &pdev->dev;
	cpu_dev = get_cpu_device(0);
	if (!cpu_dev) {
		pr_err("failed to get cpu0 device\n");
		return -ENODEV;
	}


	np = of_node_get(cpu_dev->of_node);
	np = of_node_get(cpu_dev->of_node);
	if (!np) {
	if (!np) {