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

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
Loading
Loading
Loading
Loading
+18 −9
Original line number Diff line number Diff line
@@ -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)
+1 −1
Original line number Diff line number Diff line
@@ -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;