diff options
Diffstat (limited to 'drivers/cpuidle')
-rw-r--r-- | drivers/cpuidle/cpuidle-arm64.c | 14 | ||||
-rw-r--r-- | drivers/cpuidle/cpuidle-at91.c | 1 | ||||
-rw-r--r-- | drivers/cpuidle/cpuidle-big_little.c | 6 | ||||
-rw-r--r-- | drivers/cpuidle/cpuidle-calxeda.c | 1 | ||||
-rw-r--r-- | drivers/cpuidle/cpuidle-cps.c | 7 | ||||
-rw-r--r-- | drivers/cpuidle/cpuidle-exynos.c | 1 | ||||
-rw-r--r-- | drivers/cpuidle/cpuidle-kirkwood.c | 1 | ||||
-rw-r--r-- | drivers/cpuidle/cpuidle-mvebu-v7.c | 8 | ||||
-rw-r--r-- | drivers/cpuidle/cpuidle-powernv.c | 6 | ||||
-rw-r--r-- | drivers/cpuidle/cpuidle-pseries.c | 3 | ||||
-rw-r--r-- | drivers/cpuidle/cpuidle-ux500.c | 3 | ||||
-rw-r--r-- | drivers/cpuidle/cpuidle-zynq.c | 1 | ||||
-rw-r--r-- | drivers/cpuidle/driver.c | 1 | ||||
-rw-r--r-- | drivers/cpuidle/dt_idle_states.c | 12 | ||||
-rw-r--r-- | drivers/cpuidle/governors/ladder.c | 2 | ||||
-rw-r--r-- | drivers/cpuidle/governors/menu.c | 2 |
16 files changed, 23 insertions, 46 deletions
diff --git a/drivers/cpuidle/cpuidle-arm64.c b/drivers/cpuidle/cpuidle-arm64.c index 50997ea..80704b9 100644 --- a/drivers/cpuidle/cpuidle-arm64.c +++ b/drivers/cpuidle/cpuidle-arm64.c @@ -73,7 +73,6 @@ static struct cpuidle_driver arm64_idle_driver = { .exit_latency = 1, .target_residency = 1, .power_usage = UINT_MAX, - .flags = CPUIDLE_FLAG_TIME_VALID, .name = "WFI", .desc = "ARM64 WFI", } @@ -104,11 +103,8 @@ static int __init arm64_idle_init(void) * reason to initialize the idle driver if only wfi is supported. */ ret = dt_init_idle_driver(drv, arm64_idle_state_match, 1); - if (ret <= 0) { - if (ret) - pr_err("failed to initialize idle states\n"); + if (ret <= 0) return ret ? : -ENODEV; - } /* * Call arch CPU operations in order to initialize @@ -122,12 +118,6 @@ static int __init arm64_idle_init(void) } } - ret = cpuidle_register(drv, NULL); - if (ret) { - pr_err("failed to register cpuidle driver\n"); - return ret; - } - - return 0; + return cpuidle_register(drv, NULL); } device_initcall(arm64_idle_init); diff --git a/drivers/cpuidle/cpuidle-at91.c b/drivers/cpuidle/cpuidle-at91.c index f63a7d4..aae7bfc 100644 --- a/drivers/cpuidle/cpuidle-at91.c +++ b/drivers/cpuidle/cpuidle-at91.c @@ -43,7 +43,6 @@ static struct cpuidle_driver at91_idle_driver = { .enter = at91_enter_idle, .exit_latency = 10, .target_residency = 10000, - .flags = CPUIDLE_FLAG_TIME_VALID, .name = "RAM_SR", .desc = "WFI and DDR Self Refresh", }, diff --git a/drivers/cpuidle/cpuidle-big_little.c b/drivers/cpuidle/cpuidle-big_little.c index fbc00a1..e3e225f 100644 --- a/drivers/cpuidle/cpuidle-big_little.c +++ b/drivers/cpuidle/cpuidle-big_little.c @@ -67,8 +67,7 @@ static struct cpuidle_driver bl_idle_little_driver = { .enter = bl_enter_powerdown, .exit_latency = 700, .target_residency = 2500, - .flags = CPUIDLE_FLAG_TIME_VALID | - CPUIDLE_FLAG_TIMER_STOP, + .flags = CPUIDLE_FLAG_TIMER_STOP, .name = "C1", .desc = "ARM little-cluster power down", }, @@ -89,8 +88,7 @@ static struct cpuidle_driver bl_idle_big_driver = { .enter = bl_enter_powerdown, .exit_latency = 500, .target_residency = 2000, - .flags = CPUIDLE_FLAG_TIME_VALID | - CPUIDLE_FLAG_TIMER_STOP, + .flags = CPUIDLE_FLAG_TIMER_STOP, .name = "C1", .desc = "ARM big-cluster power down", }, diff --git a/drivers/cpuidle/cpuidle-calxeda.c b/drivers/cpuidle/cpuidle-calxeda.c index 11b0466..9445e6c 100644 --- a/drivers/cpuidle/cpuidle-calxeda.c +++ b/drivers/cpuidle/cpuidle-calxeda.c @@ -55,7 +55,6 @@ static struct cpuidle_driver calxeda_idle_driver = { { .name = "PG", .desc = "Power Gate", - .flags = CPUIDLE_FLAG_TIME_VALID, .exit_latency = 30, .power_usage = 50, .target_residency = 200, diff --git a/drivers/cpuidle/cpuidle-cps.c b/drivers/cpuidle/cpuidle-cps.c index fc7b627..1adb698 100644 --- a/drivers/cpuidle/cpuidle-cps.c +++ b/drivers/cpuidle/cpuidle-cps.c @@ -79,7 +79,6 @@ static struct cpuidle_driver cps_driver = { .enter = cps_nc_enter, .exit_latency = 200, .target_residency = 450, - .flags = CPUIDLE_FLAG_TIME_VALID, .name = "nc-wait", .desc = "non-coherent MIPS wait", }, @@ -87,8 +86,7 @@ static struct cpuidle_driver cps_driver = { .enter = cps_nc_enter, .exit_latency = 300, .target_residency = 700, - .flags = CPUIDLE_FLAG_TIME_VALID | - CPUIDLE_FLAG_TIMER_STOP, + .flags = CPUIDLE_FLAG_TIMER_STOP, .name = "clock-gated", .desc = "core clock gated", }, @@ -96,8 +94,7 @@ static struct cpuidle_driver cps_driver = { .enter = cps_nc_enter, .exit_latency = 600, .target_residency = 1000, - .flags = CPUIDLE_FLAG_TIME_VALID | - CPUIDLE_FLAG_TIMER_STOP, + .flags = CPUIDLE_FLAG_TIMER_STOP, .name = "power-gated", .desc = "core power gated", }, diff --git a/drivers/cpuidle/cpuidle-exynos.c b/drivers/cpuidle/cpuidle-exynos.c index 1b64cc9..4003a31 100644 --- a/drivers/cpuidle/cpuidle-exynos.c +++ b/drivers/cpuidle/cpuidle-exynos.c @@ -47,7 +47,6 @@ static struct cpuidle_driver exynos_idle_driver = { .enter = exynos_enter_lowpower, .exit_latency = 300, .target_residency = 100000, - .flags = CPUIDLE_FLAG_TIME_VALID, .name = "C1", .desc = "ARM power down", }, diff --git a/drivers/cpuidle/cpuidle-kirkwood.c b/drivers/cpuidle/cpuidle-kirkwood.c index 10984b4..cea0a6c 100644 --- a/drivers/cpuidle/cpuidle-kirkwood.c +++ b/drivers/cpuidle/cpuidle-kirkwood.c @@ -47,7 +47,6 @@ static struct cpuidle_driver kirkwood_idle_driver = { .enter = kirkwood_enter_idle, .exit_latency = 10, .target_residency = 100000, - .flags = CPUIDLE_FLAG_TIME_VALID, .name = "DDR SR", .desc = "WFI and DDR Self Refresh", }, diff --git a/drivers/cpuidle/cpuidle-mvebu-v7.c b/drivers/cpuidle/cpuidle-mvebu-v7.c index 58fa4e9..38e6861 100644 --- a/drivers/cpuidle/cpuidle-mvebu-v7.c +++ b/drivers/cpuidle/cpuidle-mvebu-v7.c @@ -53,7 +53,6 @@ static struct cpuidle_driver armadaxp_idle_driver = { .exit_latency = 10, .power_usage = 50, .target_residency = 100, - .flags = CPUIDLE_FLAG_TIME_VALID, .name = "MV CPU IDLE", .desc = "CPU power down", }, @@ -62,8 +61,7 @@ static struct cpuidle_driver armadaxp_idle_driver = { .exit_latency = 100, .power_usage = 5, .target_residency = 1000, - .flags = CPUIDLE_FLAG_TIME_VALID | - MVEBU_V7_FLAG_DEEP_IDLE, + .flags = MVEBU_V7_FLAG_DEEP_IDLE, .name = "MV CPU DEEP IDLE", .desc = "CPU and L2 Fabric power down", }, @@ -78,8 +76,7 @@ static struct cpuidle_driver armada370_idle_driver = { .exit_latency = 100, .power_usage = 5, .target_residency = 1000, - .flags = (CPUIDLE_FLAG_TIME_VALID | - MVEBU_V7_FLAG_DEEP_IDLE), + .flags = MVEBU_V7_FLAG_DEEP_IDLE, .name = "Deep Idle", .desc = "CPU and L2 Fabric power down", }, @@ -94,7 +91,6 @@ static struct cpuidle_driver armada38x_idle_driver = { .exit_latency = 10, .power_usage = 5, .target_residency = 100, - .flags = CPUIDLE_FLAG_TIME_VALID, .name = "Idle", .desc = "CPU and SCU power down", }, diff --git a/drivers/cpuidle/cpuidle-powernv.c b/drivers/cpuidle/cpuidle-powernv.c index 7d3a349..e9248bb 100644 --- a/drivers/cpuidle/cpuidle-powernv.c +++ b/drivers/cpuidle/cpuidle-powernv.c @@ -93,7 +93,6 @@ static struct cpuidle_state powernv_states[MAX_POWERNV_IDLE_STATES] = { { /* Snooze */ .name = "snooze", .desc = "snooze", - .flags = CPUIDLE_FLAG_TIME_VALID, .exit_latency = 0, .target_residency = 0, .enter = &snooze_loop }, @@ -202,7 +201,7 @@ static int powernv_add_idle_states(void) /* Add NAP state */ strcpy(powernv_states[nr_idle_states].name, "Nap"); strcpy(powernv_states[nr_idle_states].desc, "Nap"); - powernv_states[nr_idle_states].flags = CPUIDLE_FLAG_TIME_VALID; + powernv_states[nr_idle_states].flags = 0; powernv_states[nr_idle_states].exit_latency = ((unsigned int)latency_ns) / 1000; powernv_states[nr_idle_states].target_residency = @@ -215,8 +214,7 @@ static int powernv_add_idle_states(void) /* Add FASTSLEEP state */ strcpy(powernv_states[nr_idle_states].name, "FastSleep"); strcpy(powernv_states[nr_idle_states].desc, "FastSleep"); - powernv_states[nr_idle_states].flags = - CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TIMER_STOP; + powernv_states[nr_idle_states].flags = CPUIDLE_FLAG_TIMER_STOP; powernv_states[nr_idle_states].exit_latency = ((unsigned int)latency_ns) / 1000; powernv_states[nr_idle_states].target_residency = diff --git a/drivers/cpuidle/cpuidle-pseries.c b/drivers/cpuidle/cpuidle-pseries.c index 6f7b019..bb9e2b6 100644 --- a/drivers/cpuidle/cpuidle-pseries.c +++ b/drivers/cpuidle/cpuidle-pseries.c @@ -142,14 +142,12 @@ static struct cpuidle_state dedicated_states[] = { { /* Snooze */ .name = "snooze", .desc = "snooze", - .flags = CPUIDLE_FLAG_TIME_VALID, .exit_latency = 0, .target_residency = 0, .enter = &snooze_loop }, { /* CEDE */ .name = "CEDE", .desc = "CEDE", - .flags = CPUIDLE_FLAG_TIME_VALID, .exit_latency = 10, .target_residency = 100, .enter = &dedicated_cede_loop }, @@ -162,7 +160,6 @@ static struct cpuidle_state shared_states[] = { { /* Shared Cede */ .name = "Shared Cede", .desc = "Shared Cede", - .flags = CPUIDLE_FLAG_TIME_VALID, .exit_latency = 0, .target_residency = 0, .enter = &shared_cede_loop }, diff --git a/drivers/cpuidle/cpuidle-ux500.c b/drivers/cpuidle/cpuidle-ux500.c index 56fb729..66f81e4 100644 --- a/drivers/cpuidle/cpuidle-ux500.c +++ b/drivers/cpuidle/cpuidle-ux500.c @@ -101,8 +101,7 @@ static struct cpuidle_driver ux500_idle_driver = { .enter = ux500_enter_idle, .exit_latency = 70, .target_residency = 260, - .flags = CPUIDLE_FLAG_TIME_VALID | - CPUIDLE_FLAG_TIMER_STOP, + .flags = CPUIDLE_FLAG_TIMER_STOP, .name = "ApIdle", .desc = "ARM Retention", }, diff --git a/drivers/cpuidle/cpuidle-zynq.c b/drivers/cpuidle/cpuidle-zynq.c index 8396a57..002b8c9 100644 --- a/drivers/cpuidle/cpuidle-zynq.c +++ b/drivers/cpuidle/cpuidle-zynq.c @@ -52,7 +52,6 @@ static struct cpuidle_driver zynq_idle_driver = { .enter = zynq_enter_idle, .exit_latency = 10, .target_residency = 10000, - .flags = CPUIDLE_FLAG_TIME_VALID, .name = "RAM_SR", .desc = "WFI and RAM Self Refresh", }, diff --git a/drivers/cpuidle/driver.c b/drivers/cpuidle/driver.c index e431d11..2697e87 100644 --- a/drivers/cpuidle/driver.c +++ b/drivers/cpuidle/driver.c @@ -201,7 +201,6 @@ static void poll_idle_init(struct cpuidle_driver *drv) state->exit_latency = 0; state->target_residency = 0; state->power_usage = -1; - state->flags = CPUIDLE_FLAG_TIME_VALID; state->enter = poll_idle; state->disabled = false; } diff --git a/drivers/cpuidle/dt_idle_states.c b/drivers/cpuidle/dt_idle_states.c index 52f4d11..a5c111b 100644 --- a/drivers/cpuidle/dt_idle_states.c +++ b/drivers/cpuidle/dt_idle_states.c @@ -27,6 +27,7 @@ static int init_state_node(struct cpuidle_state *idle_state, { int err; const struct of_device_id *match_id; + const char *desc; match_id = of_match_node(matches, state_node); if (!match_id) @@ -73,7 +74,11 @@ static int init_state_node(struct cpuidle_state *idle_state, return -EINVAL; } - idle_state->flags = CPUIDLE_FLAG_TIME_VALID; + err = of_property_read_string(state_node, "idle-state-name", &desc); + if (err) + desc = state_node->name; + + idle_state->flags = 0; if (of_property_read_bool(state_node, "local-timer-stop")) idle_state->flags |= CPUIDLE_FLAG_TIMER_STOP; /* @@ -82,7 +87,7 @@ static int init_state_node(struct cpuidle_state *idle_state, * and desc become string pointers */ strncpy(idle_state->name, state_node->name, CPUIDLE_NAME_LEN - 1); - strncpy(idle_state->desc, state_node->name, CPUIDLE_DESC_LEN - 1); + strncpy(idle_state->desc, desc, CPUIDLE_DESC_LEN - 1); return 0; } @@ -169,6 +174,9 @@ int dt_init_idle_driver(struct cpuidle_driver *drv, if (!state_node) break; + if (!of_device_is_available(state_node)) + continue; + if (!idle_state_valid(state_node, i, cpumask)) { pr_warn("%s idle state not valid, bailing out\n", state_node->full_name); diff --git a/drivers/cpuidle/governors/ladder.c b/drivers/cpuidle/governors/ladder.c index 06b57c4..37263d9 100644 --- a/drivers/cpuidle/governors/ladder.c +++ b/drivers/cpuidle/governors/ladder.c @@ -79,7 +79,7 @@ static int ladder_select_state(struct cpuidle_driver *drv, last_state = &ldev->states[last_idx]; - if (drv->states[last_idx].flags & CPUIDLE_FLAG_TIME_VALID) { + if (!(drv->states[last_idx].flags & CPUIDLE_FLAG_TIME_INVALID)) { last_residency = cpuidle_get_last_residency(dev) - \ drv->states[last_idx].exit_latency; } diff --git a/drivers/cpuidle/governors/menu.c b/drivers/cpuidle/governors/menu.c index 710a233..659d7b0 100644 --- a/drivers/cpuidle/governors/menu.c +++ b/drivers/cpuidle/governors/menu.c @@ -405,7 +405,7 @@ static void menu_update(struct cpuidle_driver *drv, struct cpuidle_device *dev) * the measured amount of time is less than the exit latency, * assume the state was never reached and the exit latency is 0. */ - if (unlikely(!(target->flags & CPUIDLE_FLAG_TIME_VALID))) { + if (unlikely(target->flags & CPUIDLE_FLAG_TIME_INVALID)) { /* Use timer value as is */ measured_us = data->next_timer_us; |