Anas Nashif
3b82c388f6
pm: trace pm_device_enable/disable
...
Trace both pm_device_enable and pm_device_disable.
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2021-05-17 18:45:57 -04:00
Anas Nashif
2642f4d62c
pm: remove mention of FSM
...
FSM terminology was removed, clean some remaining occurances.
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2021-05-17 18:45:57 -04:00
Anas Nashif
eccda68418
power: trace power events
...
Trace PM transition sequence and events.
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2021-05-17 18:45:57 -04:00
Gerard Marull-Paretas
9b846351d9
pm: device: check for ENOSYS
...
If feature is not available -ENOSYS is used instead of -ENOTSUP.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-05-13 07:16:02 -05:00
Flavio Ceolin
929c573d31
pm: policy: Fix residency policy math
...
The time necessary to resume from a power state has to be added to the
minimal residency time to check if there is enough time to go to a
particular state.
Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2021-05-11 17:14:48 -05:00
Flavio Ceolin
0c607adb63
pm: device: Align state names with system states
...
Change device pm states to the same pattern used by system power
management.
Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2021-05-07 18:35:12 -04:00
Flavio Ceolin
86a8ab5c2c
pm: device_runtime: Just fix a comment
...
Fixing the comment about powering a device on in pre-kernel.
Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2021-05-07 18:35:12 -04:00
Flavio Ceolin
1bd781e7b5
power: device_pm: Remove device idle pm states
...
Avoid confusion with device runtime idle pm states and just use device
pm states.
This simplify the code a little bit and prepare the ground for having
a better definition of device pm states. Right now this code needed to
hijack two transitional states to not break the current code logic but
the goal is avoid it and have everything in one single place.
Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2021-05-07 18:35:12 -04:00
Flavio Ceolin
e89d9d65cc
pm: device_runtime: Power device on/off in pre-kernel
...
Devices may be initialized but started powered down for this reason
is necessary to power a device on if requested even if in pre-kernel
state.
Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2021-05-07 16:55:31 -04:00
Flavio Ceolin
c7f5270a01
pm: device: fsm_state -> state
...
Rename state variable.
Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2021-05-07 16:55:31 -04:00
Flavio Ceolin
4ce32edb76
power: device: Do not suspend a busy device
...
Check if a device is busy before suspend it.
Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2021-05-07 16:55:31 -04:00
Flavio Ceolin
54324fd08e
power: device_pm: Use spin lock instead of semaphore
...
Device pm runtime was using semaphore to protect critical section but
enable / disable functions were waiting on the semaphore. So, just
replace it with a spin lock.
Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2021-05-07 16:55:31 -04:00
Flavio Ceolin
39ec8c1cb9
power: device_pm: Add missing fallthrough
...
Add an explicit fallthrough in a case label.
Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2021-05-07 16:55:31 -04:00
Flavio Ceolin
8705c688e2
power: device_pm: Fix concurrence issues
...
The sync API was using k_poll_signal and in certain conditions is
possible multiple threads waiting on a signal leading to an undefined
behavior.
Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2021-05-07 16:55:31 -04:00
Flavio Ceolin
66b0483cce
power: device_pm: Use BIT macro for code compliance
...
BIT macro properly handle bit shift operations.
Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2021-05-07 16:55:31 -04:00
Flavio Ceolin
6d67bb1b7d
power: device_pm: Check if is running in pre-kernel
...
Don't use kernel services before in pre-kernel state.
Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2021-05-07 16:55:31 -04:00
Flavio Ceolin
7eba310220
power: device: void *context -> uint32_t *state
...
The context parameter used across device power management is
actually the power state. Just use it and avoid a lot of
unnecessary casts.
Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2021-05-07 16:55:31 -04:00
Flavio Ceolin
9ac646f277
power: device: Don't wake up devices unnecessarily
...
Currently when the system goes to sleep it asks *all* devices that
support PM to suspend or go to a low power state, and the system wakes
up it put *all* suspended devices in active state, even if a device
was already suspended and not being used.
Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2021-05-07 16:55:31 -04:00
Gerard Marull-Paretas
56f1a8ce98
pm: rename PM_DEVICE_GET/SET_POWER_STATE to PM_DEVICE_STATE_GET/SET
...
Adjust name to be consistent with device PM naming conventions.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-05-05 18:35:49 -04:00
Gerard Marull-Paretas
6633b05530
pm: move device_pm.c to device_runtime.c
...
File name should reflect what it contains.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-05-05 18:35:49 -04:00
Gerard Marull-Paretas
7988ab4a26
pm: rename device_set/get_power_state to pm_device_set/get
...
Make name consistent with other device PM APIs.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-05-05 18:35:49 -04:00
Gerard Marull-Paretas
1e50e08bca
pm: move device_set/get_power_state to pm/device.h
...
These are device PM APIs, so move them to the device PM API header.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-05-05 18:35:49 -04:00
Gerard Marull-Paretas
7bfd3a11f3
device: rename device_pm_control to pm_control
...
Remove device_ prefix since it is redundant.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-05-05 18:35:49 -04:00
Gerard Marull-Paretas
570b43a70e
pm: rename device_pm_state_str to pm_device_state_str
...
Prefix all device PM functions/data structures with pm.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-05-05 18:35:49 -04:00
Gerard Marull-Paretas
d31a9be27c
pm: device: rename device_pm struct to pm_device
...
Prefix all PM related functions/structures with pm.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-05-05 18:35:49 -04:00
Gerard Marull-Paretas
2c7b763e47
pm: replace DEVICE_PM_* states with PM_DEVICE_*
...
Prefix device PM states with PM.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-05-05 18:35:49 -04:00
Gerard Marull-Paretas
ddfd27dbfb
pm: replace power/power.h with pm/pm.h
...
Replace old header with the new one.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-05-05 18:35:49 -04:00
Gerard Marull-Paretas
c524075780
pm: runtime: rename API with pm_device prefix
...
Use `pm_device_*` prefix for the device runtime PM API. This adds the
API to the `pm` namespace, making it clear part of the PM subsystem.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-05-05 18:35:49 -04:00
Gerard Marull-Paretas
f69759d34a
pm: rename CONFIG_PM_DEVICE_IDLE to CONFIG_PM_DEVICE_RUNTIME
...
Make naming clear on the purpose of this option.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-05-05 18:35:49 -04:00
Gerard Marull-Paretas
0aa3df06c2
pm: move private enum to source using it
...
`enum device_pm_state` is not used publicly, so move it to the source
using it.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-05-05 18:35:49 -04:00
Gerard Marull-Paretas
99cbee3f16
pm: move power subsystem to pm
...
Adjust naming to make things consistent.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
2021-05-05 18:35:49 -04:00