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);
static int get_next_event_xfer(struct cros_ec_device *ec_dev,
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 ret;
......@@ -707,11 +707,12 @@ static int get_next_event(struct cros_ec_device *ec_dev)
{
struct {
struct cros_ec_command msg;
struct ec_response_get_next_event_v1 event;
struct ec_response_get_next_event_v3 event;
} __packed buf;
struct cros_ec_command *msg = &buf.msg;
struct ec_response_get_next_event_v1 *event = &buf.event;
const int cmd_version = ec_dev->mkbp_event_supported - 1;
struct ec_response_get_next_event_v3 *event = &buf.event;
int cmd_version = ec_dev->mkbp_event_supported - 1;
u32 size;
memset(msg, 0, sizeof(*msg));
if (ec_dev->suspended) {
......@@ -719,12 +720,20 @@ static int get_next_event(struct cros_ec_device *ec_dev)
return -EHOSTDOWN;
}
if (cmd_version == 0)
return get_next_event_xfer(ec_dev, msg, event, 0,
sizeof(struct ec_response_get_next_event));
if (cmd_version == 0) {
size = 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,
sizeof(struct ec_response_get_next_event_v1));
return get_next_event_xfer(ec_dev, msg, event, cmd_version, size);
}
static int get_keyboard_state_event(struct cros_ec_device *ec_dev)
......
......@@ -185,7 +185,7 @@ struct cros_ec_device {
bool host_sleep_v1;
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;
u32 host_event_wake_mask;
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