diff options
author | Randall Spangler <rspangler@chromium.org> | 2012-07-12 14:58:25 -0700 |
---|---|---|
committer | Randall Spangler <rspangler@chromium.org> | 2012-07-12 18:22:50 -0700 |
commit | a3701639fc805ef81c8f38e9522f33b1075c3ef5 (patch) | |
tree | 08e3b4aa2dda51c7f53cf20155cfd16b8c73c59b /util | |
parent | 7946a3eb3d982cd489c35f9cfb16f3e61a27d197 (diff) | |
download | chrome-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.c | 56 |
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}, |