diff mbox series

[2/3] platform/chrome: cros_ec_proto: Upgrade get_next_event to v3

Message ID 20240604230837.2878737-1-dnojiri@chromium.org (mailing list archive)
State Accepted
Commit db9b2f0fe681d90d42c599b5a832f24ba285cbbc
Headers show
Series None | expand

Commit Message

Daisuke Nojiri June 4, 2024, 11:08 p.m. UTC
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: Daisuke Nojiri <dnojiri@chromium.org>
Change-Id: I3af4912c4f7bfdb24445dbbff5f1c6b7a4453de4
---
 drivers/platform/chrome/cros_ec_proto.c     | 27 ++++++++++++++-------
 include/linux/platform_data/cros_ec_proto.h |  2 +-
 2 files changed, 19 insertions(+), 10 deletions(-)

Comments

patchwork-bot+chrome-platform@kernel.org June 5, 2024, 2:40 a.m. UTC | #1
Hello:

This patch was applied to chrome-platform/linux.git (for-kernelci)
by Tzung-Bi Shih <tzungbi@kernel.org>:

On Tue,  4 Jun 2024 16:08:25 -0700 you wrote:
> 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: Daisuke Nojiri <dnojiri@chromium.org>
> Change-Id: I3af4912c4f7bfdb24445dbbff5f1c6b7a4453de4
> 
> [...]

Here is the summary with links:
  - [2/3] platform/chrome: cros_ec_proto: Upgrade get_next_event to v3
    https://git.kernel.org/chrome-platform/c/db9b2f0fe681

You are awesome, thank you!
patchwork-bot+chrome-platform@kernel.org June 5, 2024, 2:40 a.m. UTC | #2
Hello:

This patch was applied to chrome-platform/linux.git (for-next)
by Tzung-Bi Shih <tzungbi@kernel.org>:

On Tue,  4 Jun 2024 16:08:25 -0700 you wrote:
> 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: Daisuke Nojiri <dnojiri@chromium.org>
> Change-Id: I3af4912c4f7bfdb24445dbbff5f1c6b7a4453de4
> 
> [...]

Here is the summary with links:
  - [2/3] platform/chrome: cros_ec_proto: Upgrade get_next_event to v3
    https://git.kernel.org/chrome-platform/c/db9b2f0fe681

You are awesome, thank you!
diff mbox series

Patch

diff --git a/drivers/platform/chrome/cros_ec_proto.c b/drivers/platform/chrome/cros_ec_proto.c
index 945b1b15a04c..df257ab12968 100644
--- a/drivers/platform/chrome/cros_ec_proto.c
+++ b/drivers/platform/chrome/cros_ec_proto.c
@@ -686,7 +686,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;
@@ -709,11 +709,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;
+	uint32_t size;
 
 	memset(msg, 0, sizeof(*msg));
 	if (ec_dev->suspended) {
@@ -721,12 +722,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)
diff --git a/include/linux/platform_data/cros_ec_proto.h b/include/linux/platform_data/cros_ec_proto.h
index 8865e350c12a..dbfd38b3becd 100644
--- a/include/linux/platform_data/cros_ec_proto.h
+++ b/include/linux/platform_data/cros_ec_proto.h
@@ -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;