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

Commit a0b41224 authored by Thomas Gleixner's avatar Thomas Gleixner Committed by Ingo Molnar
Browse files

ARM: Tegra: Use explicit broadcast oneshot control function



Replace the clockevents_notify() call with an explicit function call.

Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
Cc: Alexandre Courbot <gnurou@gmail.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephen Warren <swarren@wwwdotorg.org>
Cc: Thierry Reding <thierry.reding@gmail.com>
Link: http://lkml.kernel.org/r/2131111.rjxRLX1eZB@vostro.rjw.lan


Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent fb7f0398
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -15,7 +15,7 @@
 */
 */


#include <asm/firmware.h>
#include <asm/firmware.h>
#include <linux/clockchips.h>
#include <linux/tick.h>
#include <linux/cpuidle.h>
#include <linux/cpuidle.h>
#include <linux/cpu_pm.h>
#include <linux/cpu_pm.h>
#include <linux/kernel.h>
#include <linux/kernel.h>
@@ -44,7 +44,7 @@ static int tegra114_idle_power_down(struct cpuidle_device *dev,
	tegra_set_cpu_in_lp2();
	tegra_set_cpu_in_lp2();
	cpu_pm_enter();
	cpu_pm_enter();


	clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, &dev->cpu);
	tick_broadcast_enter();


	call_firmware_op(prepare_idle);
	call_firmware_op(prepare_idle);


@@ -52,7 +52,7 @@ static int tegra114_idle_power_down(struct cpuidle_device *dev,
	if (call_firmware_op(do_idle, 0) == -ENOSYS)
	if (call_firmware_op(do_idle, 0) == -ENOSYS)
		cpu_suspend(0, tegra30_sleep_cpu_secondary_finish);
		cpu_suspend(0, tegra30_sleep_cpu_secondary_finish);


	clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, &dev->cpu);
	tick_broadcast_exit();


	cpu_pm_exit();
	cpu_pm_exit();
	tegra_clear_cpu_in_lp2();
	tegra_clear_cpu_in_lp2();
+5 −5
Original line number Original line Diff line number Diff line
@@ -20,7 +20,7 @@
 */
 */


#include <linux/clk/tegra.h>
#include <linux/clk/tegra.h>
#include <linux/clockchips.h>
#include <linux/tick.h>
#include <linux/cpuidle.h>
#include <linux/cpuidle.h>
#include <linux/cpu_pm.h>
#include <linux/cpu_pm.h>
#include <linux/kernel.h>
#include <linux/kernel.h>
@@ -136,11 +136,11 @@ static bool tegra20_cpu_cluster_power_down(struct cpuidle_device *dev,
	if (tegra20_reset_cpu_1() || !tegra_cpu_rail_off_ready())
	if (tegra20_reset_cpu_1() || !tegra_cpu_rail_off_ready())
		return false;
		return false;


	clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, &dev->cpu);
	tick_broadcast_enter();


	tegra_idle_lp2_last();
	tegra_idle_lp2_last();


	clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, &dev->cpu);
	tick_broadcast_exit();


	if (cpu_online(1))
	if (cpu_online(1))
		tegra20_wake_cpu1_from_reset();
		tegra20_wake_cpu1_from_reset();
@@ -153,13 +153,13 @@ static bool tegra20_idle_enter_lp2_cpu_1(struct cpuidle_device *dev,
					 struct cpuidle_driver *drv,
					 struct cpuidle_driver *drv,
					 int index)
					 int index)
{
{
	clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, &dev->cpu);
	tick_broadcast_enter();


	cpu_suspend(0, tegra20_sleep_cpu_secondary_finish);
	cpu_suspend(0, tegra20_sleep_cpu_secondary_finish);


	tegra20_cpu_clear_resettable();
	tegra20_cpu_clear_resettable();


	clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, &dev->cpu);
	tick_broadcast_exit();


	return true;
	return true;
}
}
+5 −5
Original line number Original line Diff line number Diff line
@@ -20,7 +20,7 @@
 */
 */


#include <linux/clk/tegra.h>
#include <linux/clk/tegra.h>
#include <linux/clockchips.h>
#include <linux/tick.h>
#include <linux/cpuidle.h>
#include <linux/cpuidle.h>
#include <linux/cpu_pm.h>
#include <linux/cpu_pm.h>
#include <linux/kernel.h>
#include <linux/kernel.h>
@@ -76,11 +76,11 @@ static bool tegra30_cpu_cluster_power_down(struct cpuidle_device *dev,
		return false;
		return false;
	}
	}


	clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, &dev->cpu);
	tick_broadcast_enter();


	tegra_idle_lp2_last();
	tegra_idle_lp2_last();


	clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, &dev->cpu);
	tick_broadcast_exit();


	return true;
	return true;
}
}
@@ -90,13 +90,13 @@ static bool tegra30_cpu_core_power_down(struct cpuidle_device *dev,
					struct cpuidle_driver *drv,
					struct cpuidle_driver *drv,
					int index)
					int index)
{
{
	clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_ENTER, &dev->cpu);
	tick_broadcast_enter();


	smp_wmb();
	smp_wmb();


	cpu_suspend(0, tegra30_sleep_cpu_secondary_finish);
	cpu_suspend(0, tegra30_sleep_cpu_secondary_finish);


	clockevents_notify(CLOCK_EVT_NOTIFY_BROADCAST_EXIT, &dev->cpu);
	tick_broadcast_exit();


	return true;
	return true;
}
}