aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/cpuidle/cpuidle-powernv.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/drivers/cpuidle/cpuidle-powernv.c b/drivers/cpuidle/cpuidle-powernv.c
index 59372077ec7c..3442764a5293 100644
--- a/drivers/cpuidle/cpuidle-powernv.c
+++ b/drivers/cpuidle/cpuidle-powernv.c
@@ -60,6 +60,8 @@ static int nap_loop(struct cpuidle_device *dev,
60 return index; 60 return index;
61} 61}
62 62
63/* Register for fastsleep only in oneshot mode of broadcast */
64#ifdef CONFIG_TICK_ONESHOT
63static int fastsleep_loop(struct cpuidle_device *dev, 65static int fastsleep_loop(struct cpuidle_device *dev,
64 struct cpuidle_driver *drv, 66 struct cpuidle_driver *drv,
65 int index) 67 int index)
@@ -83,7 +85,7 @@ static int fastsleep_loop(struct cpuidle_device *dev,
83 85
84 return index; 86 return index;
85} 87}
86 88#endif
87/* 89/*
88 * States for dedicated partition case. 90 * States for dedicated partition case.
89 */ 91 */
@@ -209,7 +211,14 @@ static int powernv_add_idle_states(void)
209 powernv_states[nr_idle_states].flags = 0; 211 powernv_states[nr_idle_states].flags = 0;
210 powernv_states[nr_idle_states].target_residency = 100; 212 powernv_states[nr_idle_states].target_residency = 100;
211 powernv_states[nr_idle_states].enter = &nap_loop; 213 powernv_states[nr_idle_states].enter = &nap_loop;
212 } else if (flags[i] & OPAL_PM_SLEEP_ENABLED || 214 }
215
216 /*
217 * All cpuidle states with CPUIDLE_FLAG_TIMER_STOP set must come
218 * within this config dependency check.
219 */
220#ifdef CONFIG_TICK_ONESHOT
221 if (flags[i] & OPAL_PM_SLEEP_ENABLED ||
213 flags[i] & OPAL_PM_SLEEP_ENABLED_ER1) { 222 flags[i] & OPAL_PM_SLEEP_ENABLED_ER1) {
214 /* Add FASTSLEEP state */ 223 /* Add FASTSLEEP state */
215 strcpy(powernv_states[nr_idle_states].name, "FastSleep"); 224 strcpy(powernv_states[nr_idle_states].name, "FastSleep");
@@ -218,7 +227,7 @@ static int powernv_add_idle_states(void)
218 powernv_states[nr_idle_states].target_residency = 300000; 227 powernv_states[nr_idle_states].target_residency = 300000;
219 powernv_states[nr_idle_states].enter = &fastsleep_loop; 228 powernv_states[nr_idle_states].enter = &fastsleep_loop;
220 } 229 }
221 230#endif
222 powernv_states[nr_idle_states].exit_latency = 231 powernv_states[nr_idle_states].exit_latency =
223 ((unsigned int)latency_ns[i]) / 1000; 232 ((unsigned int)latency_ns[i]) / 1000;
224 233