summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbe Levkoy <alevkoy@chromium.org>2022-09-29 14:30:13 -0600
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-09-30 17:00:51 +0000
commit4b8df114dce6362c946161ed5739a5c0306a03ef (patch)
tree7a0154c48c420fd6b90298f114c0c1d1c833348c
parentc48d0ce8c92b2254e2068fdf5c5ab336e1aa7d4b (diff)
downloadchrome-ec-4b8df114dce6362c946161ed5739a5c0306a03ef.tar.gz
zephyr: mock power: Prepare for external use
Expose an interface to request arbitrary AP power state changes. Expose the enumeration of request types. Fix an include. BUG=b:239515386 TEST=twister -T zephyr/test/drivers BRANCH=none LOW_COVERAGE_REASON=This is a mock. It will be used later. Signed-off-by: Abe Levkoy <alevkoy@chromium.org> Change-Id: I6ef8e3798f3ea78e76f671c79fba3e8082da41d5 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3926349 Reviewed-by: Al Semjonovs <asemjonovs@google.com> Code-Coverage: Zoss <zoss-cl-coverage@prod.google.com>
-rw-r--r--zephyr/mock/include/mock/power.h20
-rw-r--r--zephyr/mock/power.c16
2 files changed, 27 insertions, 9 deletions
diff --git a/zephyr/mock/include/mock/power.h b/zephyr/mock/include/mock/power.h
index 9f7a0c451d..f2d1460584 100644
--- a/zephyr/mock/include/mock/power.h
+++ b/zephyr/mock/include/mock/power.h
@@ -11,7 +11,17 @@ extern "C" {
#endif /* __cplusplus */
#include <zephyr/fff.h>
-#include "power.h"
+
+#include <power.h>
+
+/* AP power state transition request types. */
+enum power_request_t {
+ POWER_REQ_NONE,
+ POWER_REQ_OFF,
+ POWER_REQ_ON,
+ POWER_REQ_SOFT_OFF,
+ POWER_REQ_COUNT,
+};
/* Mocks for ec/power/common.c and board specific implementations */
DECLARE_FAKE_VALUE_FUNC(enum power_state, power_handle_state, enum power_state);
@@ -27,4 +37,12 @@ void chipset_power_on_custom_fake(void);
int command_power_custom_fake(int argc, const char **argv);
+/** @brief Mocks an AP power state change request.
+ *
+ * The mock power state will attempt to complete the request asynchronously.
+ *
+ * @param req The requested power state transition.
+ */
+void mock_power_request(enum power_request_t req);
+
#endif /* ZEPHYR_TEST_MOCK_POWER_H */
diff --git a/zephyr/mock/power.c b/zephyr/mock/power.c
index fc82cc7250..7f424cf23b 100644
--- a/zephyr/mock/power.c
+++ b/zephyr/mock/power.c
@@ -52,13 +52,6 @@ static void mock_power_rule_before(const struct ztest_unit_test *test,
ZTEST_RULE(mock_power_rule, mock_power_rule_before, NULL);
-enum power_request_t {
- POWER_REQ_NONE,
- POWER_REQ_OFF,
- POWER_REQ_ON,
- POWER_REQ_COUNT,
-};
-
static const char *power_req_name[POWER_REQ_COUNT] = {
"none",
"OFF",
@@ -68,7 +61,7 @@ static const char *power_req_name[POWER_REQ_COUNT] = {
static enum power_request_t current_power_request = POWER_REQ_NONE;
static enum power_request_t pending_power_request = POWER_REQ_NONE;
-void handle_power_request(enum power_request_t req)
+static void handle_power_request(enum power_request_t req)
{
if (current_power_request == POWER_REQ_NONE) {
current_power_request = req;
@@ -80,6 +73,13 @@ void handle_power_request(enum power_request_t req)
}
}
+void mock_power_request(enum power_request_t req)
+{
+ handle_power_request(req);
+ task_wake(TASK_ID_CHIPSET);
+ k_sleep(K_SECONDS(1));
+}
+
void power_request_complete(void)
{
current_power_request = pending_power_request;