diff options
Diffstat (limited to 'util/ectool.c')
-rw-r--r-- | util/ectool.c | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/util/ectool.c b/util/ectool.c index dfdc972622..2d23e2c59a 100644 --- a/util/ectool.c +++ b/util/ectool.c @@ -7783,7 +7783,7 @@ err: } static int wait_event(long event_type, - struct ec_response_get_next_event_v1 *buffer, + struct ec_response_get_next_event *buffer, size_t buffer_size, long timeout) { int rv; @@ -7797,13 +7797,13 @@ static int wait_event(long event_type, return -EIO; } - return rv; + return 0; } int cmd_wait_event(int argc, char *argv[]) { int rv, i; - struct ec_response_get_next_event_v1 buffer; + struct ec_response_get_next_event buffer; long timeout = 5000; long event_type; char *e; @@ -7868,7 +7868,7 @@ static int cmd_cec_write(int argc, char *argv[]) long val; int rv, i, msg_len; struct ec_params_cec_write p; - struct ec_response_get_next_event_v1 buffer; + struct ec_response_get_next_event buffer; if (argc < 3 || argc > 18) { fprintf(stderr, "Invalid number of params\n"); @@ -7895,7 +7895,7 @@ static int cmd_cec_write(int argc, char *argv[]) if (rv < 0) return rv; - rv = wait_event(EC_MKBP_EVENT_CEC_EVENT, &buffer, sizeof(buffer), 1000); + rv = wait_event(EC_MKBP_EVENT_CEC, &buffer, sizeof(buffer), 1000); if (rv < 0) return rv; @@ -7914,9 +7914,10 @@ static int cmd_cec_write(int argc, char *argv[]) static int cmd_cec_read(int argc, char *argv[]) { - int i, rv; + int msg_len, i, rv; char *e; - struct ec_response_get_next_event_v1 buffer; + struct ec_response_cec_read r; + struct ec_response_get_next_event buffer; long timeout = 5000; if (!ec_pollevent) { @@ -7932,14 +7933,21 @@ static int cmd_cec_read(int argc, char *argv[]) } } - rv = wait_event(EC_MKBP_EVENT_CEC_MESSAGE, &buffer, - sizeof(buffer), timeout); + rv = wait_event(EC_MKBP_EVENT_CEC, &buffer, sizeof(buffer), timeout); if (rv < 0) return rv; + printf("Got CEC events 0x%08x\n", buffer.data.cec_events); + + rv = ec_command(EC_CMD_CEC_READ_MSG, 0, NULL, 0, &r, sizeof(r)); + if (rv < 0) + return rv; + + msg_len = rv; + printf("CEC data: "); - for (i = 0; i < rv - 1; i++) - printf("0x%02x ", buffer.data.cec_message[i]); + for (i = 0; i < msg_len; i++) + printf("0x%02x ", r.msg[i]); printf("\n"); return 0; |