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; }