Commit 99ae52ed authored by Sebastian Andrzej Siewior's avatar Sebastian Andrzej Siewior Committed by Shawn Guo
Browse files

ARM: imx6: cpuidle: Use raw_spinlock_t



The idle call back is invoked with disabled interrupts and requires
raw_spinlock_t locks to work.

Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
Reviewed-by: default avatarFabio Estevam <festevam@gmail.com>
Signed-off-by: default avatarShawn Guo <shawnguo@kernel.org>
parent a188339c
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -17,22 +17,22 @@
#include "hardware.h"

static int num_idle_cpus = 0;
static DEFINE_SPINLOCK(cpuidle_lock);
static DEFINE_RAW_SPINLOCK(cpuidle_lock);

static int imx6q_enter_wait(struct cpuidle_device *dev,
			    struct cpuidle_driver *drv, int index)
{
	spin_lock(&cpuidle_lock);
	raw_spin_lock(&cpuidle_lock);
	if (++num_idle_cpus == num_online_cpus())
		imx6_set_lpm(WAIT_UNCLOCKED);
	spin_unlock(&cpuidle_lock);
	raw_spin_unlock(&cpuidle_lock);

	cpu_do_idle();

	spin_lock(&cpuidle_lock);
	raw_spin_lock(&cpuidle_lock);
	if (num_idle_cpus-- == num_online_cpus())
		imx6_set_lpm(WAIT_CLOCKED);
	spin_unlock(&cpuidle_lock);
	raw_spin_unlock(&cpuidle_lock);

	return index;
}