Commit 106d6739 authored by Daisuke Nojiri's avatar Daisuke Nojiri Committed by Tzung-Bi Shih

platform/chrome: cros_ec_proto: Upgrade get_next_event to v3

Upgrade EC_CMD_GET_NEXT_EVENT to version 3.

The max supported version will be v3. So, we speak v3 even if the EC
says it supports v4+.
Signed-off-by: default avatarDaisuke Nojiri <dnojiri@chromium.org>
Link: https://lore.kernel.org/r/20240604230837.2878737-1-dnojiri@chromium.org
[tzungbi: uint32_t -> u32 per suggested by checkpatch.pl]
Signed-off-by: default avatarTzung-Bi Shih <tzungbi@kernel.org>
parent ba098ed9
...@@ -684,7 +684,7 @@ EXPORT_SYMBOL(cros_ec_cmd_xfer_status); ...@@ -684,7 +684,7 @@ EXPORT_SYMBOL(cros_ec_cmd_xfer_status);
static int get_next_event_xfer(struct cros_ec_device *ec_dev, static int get_next_event_xfer(struct cros_ec_device *ec_dev,
struct cros_ec_command *msg, struct cros_ec_command *msg,
struct ec_response_get_next_event_v1 *event, struct ec_response_get_next_event_v3 *event,
int version, uint32_t size) int version, uint32_t size)
{ {
int ret; int ret;
...@@ -707,11 +707,12 @@ static int get_next_event(struct cros_ec_device *ec_dev) ...@@ -707,11 +707,12 @@ static int get_next_event(struct cros_ec_device *ec_dev)
{ {
struct { struct {
struct cros_ec_command msg; struct cros_ec_command msg;
struct ec_response_get_next_event_v1 event; struct ec_response_get_next_event_v3 event;
} __packed buf; } __packed buf;
struct cros_ec_command *msg = &buf.msg; struct cros_ec_command *msg = &buf.msg;
struct ec_response_get_next_event_v1 *event = &buf.event; struct ec_response_get_next_event_v3 *event = &buf.event;
const int cmd_version = ec_dev->mkbp_event_supported - 1; int cmd_version = ec_dev->mkbp_event_supported - 1;
u32 size;
memset(msg, 0, sizeof(*msg)); memset(msg, 0, sizeof(*msg));
if (ec_dev->suspended) { if (ec_dev->suspended) {
...@@ -719,12 +720,20 @@ static int get_next_event(struct cros_ec_device *ec_dev) ...@@ -719,12 +720,20 @@ static int get_next_event(struct cros_ec_device *ec_dev)
return -EHOSTDOWN; return -EHOSTDOWN;
} }
if (cmd_version == 0) if (cmd_version == 0) {
return get_next_event_xfer(ec_dev, msg, event, 0, size = sizeof(struct ec_response_get_next_event);
sizeof(struct ec_response_get_next_event)); } else if (cmd_version < 3) {
size = sizeof(struct ec_response_get_next_event_v1);
} else {
/*
* The max version we support is v3. So, we speak v3 even if the
* EC says it supports v4+.
*/
cmd_version = 3;
size = sizeof(struct ec_response_get_next_event_v3);
}
return get_next_event_xfer(ec_dev, msg, event, cmd_version, return get_next_event_xfer(ec_dev, msg, event, cmd_version, size);
sizeof(struct ec_response_get_next_event_v1));
} }
static int get_keyboard_state_event(struct cros_ec_device *ec_dev) static int get_keyboard_state_event(struct cros_ec_device *ec_dev)
......
...@@ -185,7 +185,7 @@ struct cros_ec_device { ...@@ -185,7 +185,7 @@ struct cros_ec_device {
bool host_sleep_v1; bool host_sleep_v1;
struct blocking_notifier_head event_notifier; struct blocking_notifier_head event_notifier;
struct ec_response_get_next_event_v1 event_data; struct ec_response_get_next_event_v3 event_data;
int event_size; int event_size;
u32 host_event_wake_mask; u32 host_event_wake_mask;
u32 last_resume_result; u32 last_resume_result;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment