Even though we have unit tests that cover the PM policy latency APIs, it may not be obvious on how to use it in practice. This patch adds a new sample where both the application and a device driver impose latency requirements. The sample illustrates how latency requirements are aggregated and are taken into account when choosing the CPU power state. The test has been designed to run on native_posix, since it only serves for demonstration purposes. Signed-off-by: Gerard Marull-Paretas <gerard@teslabs.com>
56 lines
2.9 KiB
YAML
56 lines
2.9 KiB
YAML
sample:
|
|
name: Demonstrate usage of the PM policy latency APIs
|
|
tests:
|
|
sample.pm.latency:
|
|
platform_allow: native_posix
|
|
tags: pm
|
|
harness: console
|
|
harness_config:
|
|
type: multi_line
|
|
regex:
|
|
- "<inf> app: Sleeping for 1.1 seconds, we should enter RUNTIME_IDLE"
|
|
- "<inf> soc_pm: Entering RUNTIME_IDLE{0}"
|
|
- "<inf> app: Sleeping for 1.2 seconds, we should enter SUSPEND_TO_IDLE"
|
|
- "<inf> soc_pm: Entering SUSPEND_TO_IDLE{0}"
|
|
- "<inf> app: Sleeping for 1.3 seconds, we should enter STANDBY"
|
|
- "<inf> soc_pm: Entering STANDBY{0}"
|
|
- "<inf> app: Setting latency constraint: 30ms"
|
|
- "<inf> app: Sleeping for 1.1 seconds, we should enter RUNTIME_IDLE"
|
|
- "<inf> soc_pm: Entering RUNTIME_IDLE{0}"
|
|
- "<inf> app: Sleeping for 1.2 seconds, we should enter SUSPEND_TO_IDLE"
|
|
- "<inf> soc_pm: Entering SUSPEND_TO_IDLE{0}"
|
|
- "<inf> app: Sleeping for 1.3 seconds, we should enter SUSPEND_TO_IDLE"
|
|
- "<inf> soc_pm: Entering SUSPEND_TO_IDLE{0}"
|
|
- "<inf> app: Opening test device"
|
|
- "<inf> dev_test: Adding latency constraint: 20ms"
|
|
- "<inf> app: Latency constraint changed: 20ms"
|
|
- "<inf> app: Sleeping for 1.1 seconds, we should enter RUNTIME_IDLE"
|
|
- "<inf> soc_pm: Entering RUNTIME_IDLE{0}"
|
|
- "<inf> app: Sleeping for 1.2 seconds, we should enter RUNTIME_IDLE"
|
|
- "<inf> soc_pm: Entering RUNTIME_IDLE{0}"
|
|
- "<inf> app: Sleeping for 1.3 seconds, we should enter RUNTIME_IDLE"
|
|
- "<inf> soc_pm: Entering RUNTIME_IDLE{0}"
|
|
- "<inf> app: Updating latency constraint: 10ms"
|
|
- "<inf> app: Latency constraint changed: 10ms"
|
|
- "<inf> dev_test: Latency constraint changed: 10ms"
|
|
- "<inf> app: Sleeping for 1.1 seconds, we should stay ACTIVE"
|
|
- "<inf> app: Sleeping for 1.2 seconds, we should stay ACTIVE"
|
|
- "<inf> app: Sleeping for 1.3 seconds, we should stay ACTIVE"
|
|
- "<inf> app: Updating latency constraint: 30ms"
|
|
- "<inf> app: Latency constraint changed: 20ms"
|
|
- "<inf> dev_test: Latency constraint changed: 20ms"
|
|
- "<inf> app: Closing test device"
|
|
- "<inf> dev_test: Removing latency constraint"
|
|
- "<inf> app: Latency constraint changed: 30ms"
|
|
- "<inf> dev_test: Latency constraint changed: 30ms"
|
|
- "<inf> app: Sleeping for 1.1 seconds, we should enter RUNTIME_IDLE"
|
|
- "<inf> soc_pm: Entering RUNTIME_IDLE{0}"
|
|
- "<inf> app: Sleeping for 1.2 seconds, we should enter SUSPEND_TO_IDLE"
|
|
- "<inf> soc_pm: Entering SUSPEND_TO_IDLE{0}"
|
|
- "<inf> app: Sleeping for 1.3 seconds, we should enter SUSPEND_TO_IDLE"
|
|
- "<inf> soc_pm: Entering SUSPEND_TO_IDLE{0}"
|
|
- "<inf> app: Removing latency constraint"
|
|
- "<inf> app: Latency constraint changed: none"
|
|
- "<inf> app: Finished, we should now enter STANDBY"
|
|
- "<inf> soc_pm: Entering STANDBY{0}"
|