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

Commit 3f4590a4 authored by Gregory CLEMENT's avatar Gregory CLEMENT Committed by Rafael J. Wysocki
Browse files

cpufreq: mvebu: Free opp if registering failed



Since the introduction of this driver, the functions to remove the opp
were added. So stop claiming we can't remove opp and use one of them in
case of failure.

Signed-off-by: default avatarGregory CLEMENT <gregory.clement@free-electrons.com>
Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent b3371600
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -76,12 +76,6 @@ static int __init armada_xp_pmsu_cpufreq_init(void)
			return PTR_ERR(clk);
		}

		/*
		 * In case of a failure of dev_pm_opp_add(), we don't
		 * bother with cleaning up the registered OPP (there's
		 * no function to do so), and simply cancel the
		 * registration of the cpufreq device.
		 */
		ret = dev_pm_opp_add(cpu_dev, clk_get_rate(clk), 0);
		if (ret) {
			clk_put(clk);
@@ -91,7 +85,8 @@ static int __init armada_xp_pmsu_cpufreq_init(void)
		ret = dev_pm_opp_add(cpu_dev, clk_get_rate(clk) / 2, 0);
		if (ret) {
			clk_put(clk);
			return ret;
			dev_err(cpu_dev, "Failed to register OPPs\n");
			goto opp_register_failed;
		}

		ret = dev_pm_opp_set_sharing_cpus(cpu_dev,
@@ -104,5 +99,11 @@ static int __init armada_xp_pmsu_cpufreq_init(void)

	platform_device_register_simple("cpufreq-dt", -1, NULL, 0);
	return 0;

opp_register_failed:
	/* As registering has failed remove all the opp for all cpus */
	dev_pm_opp_cpumask_remove_table(cpu_possible_mask);

	return ret;
}
device_initcall(armada_xp_pmsu_cpufreq_init);