Merge branch 'cpuidle/3.19' of http://git.linaro.org/git-ro/people/daniel.lezcano/linux into pm-cpuidle
Pull ARM cpuidle material for 3.19-rc1 from Daniel Lezcano. * 'cpuidle/3.19' of http://git.linaro.org/git-ro/people/daniel.lezcano/linux: drivers: cpuidle: Remove cpuidle-arm64 duplicate error messages drivers: cpuidle: Add idle-state-name description to ARM idle states drivers: cpuidle: Add status property to ARM idle states
This commit is contained in:
Коммит
a74a5a3381
|
@ -317,6 +317,26 @@ follows:
|
|||
In such systems entry-latency-us + exit-latency-us
|
||||
will exceed wakeup-latency-us by this duration.
|
||||
|
||||
- status:
|
||||
Usage: Optional
|
||||
Value type: <string>
|
||||
Definition: A standard device tree property [5] that indicates
|
||||
the operational status of an idle-state.
|
||||
If present, it shall be:
|
||||
"okay": to indicate that the idle state is
|
||||
operational.
|
||||
"disabled": to indicate that the idle state has
|
||||
been disabled in firmware so it is not
|
||||
operational.
|
||||
If the property is not present the idle-state must
|
||||
be considered operational.
|
||||
|
||||
- idle-state-name:
|
||||
Usage: Optional
|
||||
Value type: <string>
|
||||
Definition: A string used as a descriptive name for the idle
|
||||
state.
|
||||
|
||||
In addition to the properties listed above, a state node may require
|
||||
additional properties specifics to the entry-method defined in the
|
||||
idle-states node, please refer to the entry-method bindings
|
||||
|
|
|
@ -104,11 +104,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 +119,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);
|
||||
|
|
|
@ -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,6 +74,10 @@ static int init_state_node(struct cpuidle_state *idle_state,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
err = of_property_read_string(state_node, "idle-state-name", &desc);
|
||||
if (err)
|
||||
desc = state_node->name;
|
||||
|
||||
idle_state->flags = CPUIDLE_FLAG_TIME_VALID;
|
||||
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);
|
||||
|
|
Загрузка…
Ссылка в новой задаче