summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Massey <aaronmassey@google.com>2022-10-11 14:43:00 -0600
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-10-12 17:15:01 +0000
commit1b180c68a2efa7149405d15f24d27803c6c4394a (patch)
tree4ec5bf4308619fcfa3750dc316df9e7d4c8d6c59
parentda73cce845f019e5f60f3814ec5014cd8a5a4918 (diff)
downloadchrome-ec-1b180c68a2efa7149405d15f24d27803c6c4394a.tar.gz
test: EC_CMD_HOST_SLEEP_EVENT s3 resume
Add a test that verifies the EC_CMD_HOST_SLEEP_EVENT host command may be invoked with HOST_SLEEP_EVENT_S3_RESUME host sleep event where the chip-specific host sleep event handler propagates the number of sleep transitions that have taken place to the host. BRANCH=none BUG=b:252887178 TEST=twister -s zephyr/test/drivers/drivers.power_host_sleep Signed-off-by: Aaron Massey <aaronmassey@google.com> Change-Id: Ib9584fcedac7c0e2ee33e2137be4076875aacfa4 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3947526 Reviewed-by: Wai-Hong Tam <waihong@google.com> Code-Coverage: Zoss <zoss-cl-coverage@prod.google.com>
-rw-r--r--zephyr/test/drivers/power_host_sleep/src/test_power_host_sleep.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/zephyr/test/drivers/power_host_sleep/src/test_power_host_sleep.c b/zephyr/test/drivers/power_host_sleep/src/test_power_host_sleep.c
index fb63c298ed..f5028af537 100644
--- a/zephyr/test/drivers/power_host_sleep/src/test_power_host_sleep.c
+++ b/zephyr/test/drivers/power_host_sleep/src/test_power_host_sleep.c
@@ -13,6 +13,8 @@
#include "test/drivers/test_mocks.h"
#include "test/drivers/test_state.h"
+#define ARBITRARY_SLEEP_TRANSITIONS 1
+
/*
* TODO(b/253224061): Reorganize fakes by public interface
*/
@@ -31,6 +33,18 @@ static struct host_sleep_event_context test_saved_context;
static void _test_power_chipset_handle_host_sleep_event(
enum host_sleep_event state, struct host_sleep_event_context *ctx)
{
+ switch (state) {
+ case HOST_SLEEP_EVENT_S0IX_RESUME:
+ case HOST_SLEEP_EVENT_S3_RESUME:
+ ctx->sleep_transitions = ARBITRARY_SLEEP_TRANSITIONS;
+ break;
+
+ case HOST_SLEEP_EVENT_S3_SUSPEND:
+ case HOST_SLEEP_EVENT_S0IX_SUSPEND:
+ case HOST_SLEEP_EVENT_S3_WAKEABLE_SUSPEND:
+ break;
+ }
+
memcpy(&test_saved_context, ctx,
sizeof(struct host_sleep_event_context));
}
@@ -102,5 +116,30 @@ ZTEST_USER(power_host_sleep, test_non_existent_sleep_event_v1__s3_suspend)
p.suspend_params.sleep_timeout_ms);
}
+ZTEST_USER(power_host_sleep, test_non_existent_sleep_event_v1__s3_resume)
+{
+ struct ec_params_host_sleep_event_v1 p = {
+ .sleep_event = HOST_SLEEP_EVENT_S3_RESUME,
+ };
+ struct ec_response_host_sleep_event_v1 r;
+ struct host_cmd_handler_args args =
+ BUILD_HOST_COMMAND(EC_CMD_HOST_SLEEP_EVENT, 1, r, p);
+
+ power_chipset_handle_host_sleep_event_fake.custom_fake =
+ _test_power_chipset_handle_host_sleep_event;
+
+ zassert_ok(host_command_process(&args));
+ zassert_equal(args.response_size, sizeof(r));
+ zassert_equal(power_chipset_handle_host_sleep_event_fake.call_count, 1);
+ zassert_equal(power_chipset_handle_host_sleep_event_fake.arg0_val,
+ p.sleep_event);
+
+ /*
+ * Verify sleep context propagated from chip-specific handler.
+ */
+ zassert_equal(r.resume_response.sleep_transitions,
+ ARBITRARY_SLEEP_TRANSITIONS);
+}
+
ZTEST_SUITE(power_host_sleep, drivers_predicate_post_main, NULL,
power_host_sleep_before_after, power_host_sleep_before_after, NULL);