static void __cpuinit intelli_plug_resume(struct early_suspend *handler) #endif { if (intelli_plug_active) { int cpu; mutex_lock(&intelli_plug_mutex); /* keep cores awake long enough for faster wake up */ persist_count = BUSY_PERSISTENCE; suspended = false; mutex_unlock(&intelli_plug_mutex); for_each_possible_cpu(cpu) { if (cpu == 0) continue; cpu_up(cpu); } wakeup_boost(); screen_off_limit(false); } queue_delayed_work_on(0, intelliplug_wq, &intelli_plug_work, msecs_to_jiffies(10)); }
static void __cpuinit intelli_plug_resume(struct early_suspend *handler) #endif { int num_of_active_cores; int i; mutex_lock(&intelli_plug_mutex); /* keep cores awake long enough for faster wake up */ persist_count = BUSY_PERSISTENCE; suspended = false; mutex_unlock(&intelli_plug_mutex); /* wake up everyone */ num_of_active_cores = num_possible_cpus(); for (i = 1; i < num_of_active_cores; i++) { cpu_up(i); } screen_off_limit(false); wakeup_boost(); queue_delayed_work_on(0, intelliplug_wq, &intelli_plug_work, msecs_to_jiffies(10)); }
static void __ref intelli_plug_resume(struct early_suspend *handler) { if (intelli_plug_active) { mutex_lock(&intelli_plug_mutex); /* keep cores awake long enough for faster wake up */ persist_count = BUSY_PERSISTENCE; suspended = false; mutex_unlock(&intelli_plug_mutex); screen_off_limit(false); wakeup_boost(); queue_delayed_work_on(0, intelliplug_wq, &intelli_plug_work, msecs_to_jiffies(10)); } }
static void intelli_plug_suspend(struct early_suspend *handler) #endif { int cpu; flush_workqueue(intelliplug_wq); mutex_lock(&intelli_plug_mutex); suspended = true; screen_off_limit(true); mutex_unlock(&intelli_plug_mutex); // put rest of the cores to sleep unconditionally! for_each_online_cpu(cpu) { if (cpu != 0) cpu_down(cpu); } }