summaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorRandall Spangler <rspangler@chromium.org>2012-07-12 14:58:25 -0700
committerRandall Spangler <rspangler@chromium.org>2012-07-12 18:22:50 -0700
commita3701639fc805ef81c8f38e9522f33b1075c3ef5 (patch)
tree08e3b4aa2dda51c7f53cf20155cfd16b8c73c59b /util
parent7946a3eb3d982cd489c35f9cfb16f3e61a27d197 (diff)
downloadchrome-ec-a3701639fc805ef81c8f38e9522f33b1075c3ef5.tar.gz
Add ectool support for get/clear event B flags
BUG=chrome-os-partner:11172 TEST=from root shell eventget b -> 0x2088 eventclear b 0x80 eventget b -> 0x2008 Change-Id: Ic0ad6475f2b770522b50b51f6695c6ea77ced19a Signed-off-by: Randall Spangler <rspangler@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/27322
Diffstat (limited to 'util')
-rw-r--r--util/ectool.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/util/ectool.c b/util/ectool.c
index a9f66594a8..4857ec43ff 100644
--- a/util/ectool.c
+++ b/util/ectool.c
@@ -39,8 +39,12 @@ const char help_str[] =
" Various EC hash commands\n"
" eventclear <mask>\n"
" Clears EC host events flags where mask has bits set\n"
+ " eventclearb <mask>\n"
+ " Clears EC host events flags copy B where mask has bits set\n"
" eventget\n"
" Prints raw EC host event flags\n"
+ " eventgetb\n"
+ " Prints raw EC host event flags copy B\n"
" eventgetscimask\n"
" Prints SCI mask for EC host events\n"
" eventgetsmimask\n"
@@ -1284,6 +1288,30 @@ int cmd_host_event_get_raw(int argc, char *argv[])
}
+int cmd_host_event_get_b(int argc, char *argv[])
+{
+ struct ec_response_host_event_mask r;
+ int rv;
+
+ rv = ec_command(EC_CMD_HOST_EVENT_GET_B, 0,
+ NULL, 0, &r, sizeof(r));
+ if (rv < 0)
+ return rv;
+ if (rv < sizeof(r)) {
+ fprintf(stderr, "Insufficient data received.\n");
+ return -1;
+ }
+
+ if (r.mask & EC_HOST_EVENT_MASK(EC_HOST_EVENT_INVALID)) {
+ printf("Current host events-B: invalid\n");
+ return -1;
+ }
+
+ printf("Current host events-B: 0x%08x\n", r.mask);
+ return 0;
+}
+
+
int cmd_host_event_get_smi_mask(int argc, char *argv[])
{
struct ec_response_host_event_mask r;
@@ -1433,6 +1461,32 @@ int cmd_host_event_clear(int argc, char *argv[])
}
+int cmd_host_event_clear_b(int argc, char *argv[])
+{
+ struct ec_params_host_event_mask p;
+ char *e;
+ int rv;
+
+ if (argc != 2) {
+ fprintf(stderr, "Usage: %s <mask>\n", argv[0]);
+ return -1;
+ }
+ p.mask = strtol(argv[1], &e, 0);
+ if (e && *e) {
+ fprintf(stderr, "Bad mask.\n");
+ return -1;
+ }
+
+ rv = ec_command(EC_CMD_HOST_EVENT_CLEAR_B, 0,
+ &p, sizeof(p), NULL, 0);
+ if (rv < 0)
+ return rv;
+
+ printf("Host events-B cleared.\n");
+ return 0;
+}
+
+
int cmd_switches(int argc, char *argv[])
{
uint8_t s = read_mapped_mem8(EC_MEMMAP_SWITCHES);
@@ -1820,7 +1874,9 @@ const struct command commands[] = {
{"cmdversions", cmd_cmdversions},
{"echash", cmd_ec_hash},
{"eventclear", cmd_host_event_clear},
+ {"eventclearb", cmd_host_event_clear_b},
{"eventget", cmd_host_event_get_raw},
+ {"eventgetb", cmd_host_event_get_b},
{"eventgetscimask", cmd_host_event_get_sci_mask},
{"eventgetsmimask", cmd_host_event_get_smi_mask},
{"eventgetwakemask", cmd_host_event_get_wake_mask},