Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp
[sfrench/cifs-2.6.git] / arch / sh / kernel / cpu / shmobile / cpuidle.c
index 1c504bd972c305fba8684f99c53fd443ecd74c16..83972aa319c28c5d28b2e89f860346cbddf26596 100644 (file)
@@ -87,25 +87,31 @@ void sh_mobile_setup_cpuidle(void)
 
        dev->safe_state = state;
 
-       state = &dev->states[i++];
-       snprintf(state->name, CPUIDLE_NAME_LEN, "C1");
-       strncpy(state->desc, "SuperH Sleep Mode [SF]", CPUIDLE_DESC_LEN);
-       state->exit_latency = 100;
-       state->target_residency = 1 * 2;
-       state->power_usage = 1;
-       state->flags = 0;
-       state->flags |= CPUIDLE_FLAG_TIME_VALID;
-       state->enter = cpuidle_sleep_enter;
+       if (sh_mobile_sleep_supported & SUSP_SH_SF) {
+               state = &dev->states[i++];
+               snprintf(state->name, CPUIDLE_NAME_LEN, "C1");
+               strncpy(state->desc, "SuperH Sleep Mode [SF]",
+                       CPUIDLE_DESC_LEN);
+               state->exit_latency = 100;
+               state->target_residency = 1 * 2;
+               state->power_usage = 1;
+               state->flags = 0;
+               state->flags |= CPUIDLE_FLAG_TIME_VALID;
+               state->enter = cpuidle_sleep_enter;
+       }
 
-       state = &dev->states[i++];
-       snprintf(state->name, CPUIDLE_NAME_LEN, "C2");
-       strncpy(state->desc, "SuperH Mobile Standby Mode [SF]", CPUIDLE_DESC_LEN);
-       state->exit_latency = 2300;
-       state->target_residency = 1 * 2;
-       state->power_usage = 1;
-       state->flags = 0;
-       state->flags |= CPUIDLE_FLAG_TIME_VALID;
-       state->enter = cpuidle_sleep_enter;
+       if (sh_mobile_sleep_supported & SUSP_SH_STANDBY) {
+               state = &dev->states[i++];
+               snprintf(state->name, CPUIDLE_NAME_LEN, "C2");
+               strncpy(state->desc, "SuperH Mobile Standby Mode [SF]",
+                       CPUIDLE_DESC_LEN);
+               state->exit_latency = 2300;
+               state->target_residency = 1 * 2;
+               state->power_usage = 1;
+               state->flags = 0;
+               state->flags |= CPUIDLE_FLAG_TIME_VALID;
+               state->enter = cpuidle_sleep_enter;
+       }
 
        dev->state_count = i;