Exemple #1
0
static inline void tegra2_lp3_fall_back(struct cpuidle_device *dev)
{
	/* Not enough time left to enter LP2 */
	tegra_cpu_wfi();

	/* fall back here from LP2 path - tell cpuidle governor */
	dev->last_state = &dev->states[0];
}
static int tegra_idle_enter_lp3(struct cpuidle_device *dev,
	struct cpuidle_state *state)
{
	ktime_t enter, exit;
	s64 us;

	trace_power_start(POWER_CSTATE, 1, dev->cpu);

	local_irq_disable();
	local_fiq_disable();

	enter = ktime_get();

	tegra_cpu_wfi();

	exit = ktime_sub(ktime_get(), enter);
	us = ktime_to_us(exit);

	local_fiq_enable();
	local_irq_enable();
	return (int)us;
}
static int tegra_idle_enter_lp3(struct cpuidle_device *dev,
	struct cpuidle_state *state)
{
	ktime_t enter, exit;
	s64 us;

	trace_power_start(POWER_CSTATE, 1, dev->cpu);

	local_irq_disable();
	local_fiq_disable();

	enter = ktime_get();

	tegra_cpu_wfi();

	exit = ktime_sub(ktime_get(), enter);
	us = ktime_to_us(exit);
	/* move from driver/cpuidle/cpuidle.c */
	dev->states[0].usage++;
	dev->states[0].time += (unsigned long long)us;
	local_fiq_enable();
	local_irq_enable();
	return (int)us;
}