summaryrefslogtreecommitdiff
path: root/common/rwsig.c
diff options
context:
space:
mode:
authorWei-Ning Huang <wnhuang@google.com>2017-05-05 05:26:52 +0800
committerchrome-bot <chrome-bot@chromium.org>2017-05-06 19:52:29 -0700
commita5a3fa2d13b4b18f1244ae408a778c5e88130a6f (patch)
tree1a7cea4384f5dc5c4be53131b71d96794bc7baec /common/rwsig.c
parente7969f8245a3cde164caf1fa03cfe655c7e61d1e (diff)
downloadchrome-ec-a5a3fa2d13b4b18f1244ae408a778c5e88130a6f.tar.gz
rwsig: add host command for controlling rwsig task
Add new host command EC_CMD_RWSIG_ACTION for controlling rwsig task. This allow us to make firmware stay at RO without toggling reset pin. flashrom can use this host command and removed the need to use any out-of-band pin to toggle the reset pin (and make RWSIG stay in RO). BRANCH=none BUG=b:37584134 TEST=on eve, `ectool --name=cros_tp rwsigaction abort` should prevent EC from jumpping to RW after RWSIG check. Change-Id: Ia435e4e3ea8ed612a1250d3bf755ca50e5db9d37 Signed-off-by: Wei-Ning Huang <wnhuang@google.com> Reviewed-on: https://chromium-review.googlesource.com/497787 Commit-Ready: Wei-Ning Huang <wnhuang@chromium.org> Tested-by: Wei-Ning Huang <wnhuang@chromium.org> Reviewed-by: Nicolas Boichat <drinkcat@chromium.org>
Diffstat (limited to 'common/rwsig.c')
-rw-r--r--common/rwsig.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/common/rwsig.c b/common/rwsig.c
index efc8c03ee1..31174798a2 100644
--- a/common/rwsig.c
+++ b/common/rwsig.c
@@ -272,6 +272,28 @@ exit:
while (1)
task_wait_event(-1);
}
+
+int rwsig_cmd_action(struct host_cmd_handler_args *args)
+{
+ const struct ec_params_rwsig_action *p = args->params;
+
+ switch (p->action) {
+ case RWSIG_ACTION_ABORT:
+ rwsig_abort();
+ break;
+ case RWSIG_ACTION_CONTINUE:
+ rwsig_continue();
+ break;
+ default:
+ return EC_RES_INVALID_PARAM;
+ }
+ args->response_size = 0;
+ return EC_RES_SUCCESS;
+}
+DECLARE_HOST_COMMAND(EC_CMD_RWSIG_ACTION,
+ rwsig_cmd_action,
+ EC_VER_MASK(0));
+
#else /* !HAS_TASK_RWSIG */
int rwsig_cmd_check_status(struct host_cmd_handler_args *args)
{