public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] platform/chrome: cros_ec_proto: Upgrade get_next_event to v3
@ 2024-06-04  0:53 Daisuke Nojiri
  2024-06-04  3:12 ` Tzung-Bi Shih
                   ` (11 more replies)
  0 siblings, 12 replies; 25+ messages in thread
From: Daisuke Nojiri @ 2024-06-04  0:53 UTC (permalink / raw)
  Cc: Daisuke Nojiri, Benson Leung, Tzung-Bi Shih, Guenter Roeck,
	Hans Verkuil, Reka Norman, Abhishek Pandit-Subedi,
	Gwendal Grignou, Pavan Holla, Ching-Kang Yen, Lukasz Majczak,
	Stephen Boyd, Prashant Malani, chrome-platform, linux-kernel

This CL upgrades 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+.

BUG=b:331761304
TEST=Type keys on Kyogre.

Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org>
---
 drivers/platform/chrome/cros_ec_proto.c       | 27 ++++++++++-----
 .../linux/platform_data/cros_ec_commands.h    | 34 +++++++++++++++++++
 include/linux/platform_data/cros_ec_proto.h   |  2 +-
 3 files changed, 53 insertions(+), 10 deletions(-)

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_commands.h b/include/linux/platform_data/cros_ec_commands.h
index 070e49c5381e..fff191a8d413 100644
--- a/include/linux/platform_data/cros_ec_commands.h
+++ b/include/linux/platform_data/cros_ec_commands.h
@@ -3527,6 +3527,34 @@ union __ec_align_offset1 ec_response_get_next_data_v1 {
 };
 BUILD_ASSERT(sizeof(union ec_response_get_next_data_v1) == 16);
 
+union __ec_align_offset1 ec_response_get_next_data_v3 {
+	uint8_t key_matrix[18];
+
+	/* Unaligned */
+	uint32_t host_event;
+	uint64_t host_event64;
+
+	struct __ec_todo_unpacked {
+		/* For aligning the fifo_info */
+		uint8_t reserved[3];
+		struct ec_response_motion_sense_fifo_info info;
+	} sensor_fifo;
+
+	uint32_t buttons;
+
+	uint32_t switches;
+
+	uint32_t fp_events;
+
+	uint32_t sysrq;
+
+	/* CEC events from enum mkbp_cec_event */
+	uint32_t cec_events;
+
+	uint8_t cec_message[16];
+};
+BUILD_ASSERT(sizeof(union ec_response_get_next_data_v3) == 18);
+
 struct ec_response_get_next_event {
 	uint8_t event_type;
 	/* Followed by event data if any */
@@ -3539,6 +3567,12 @@ struct ec_response_get_next_event_v1 {
 	union ec_response_get_next_data_v1 data;
 } __ec_align1;
 
+struct ec_response_get_next_event_v3 {
+	uint8_t event_type;
+	/* Followed by event data if any */
+	union ec_response_get_next_data_v3 data;
+} __ec_align1;
+
 /* Bit indices for buttons and switches.*/
 /* Buttons */
 #define EC_MKBP_POWER_BUTTON	0
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;
-- 
2.45.1.288.g0e0cd299f1-goog


^ permalink raw reply related	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2024-06-06 17:40 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-04  0:53 [PATCH 1/2] platform/chrome: cros_ec_proto: Upgrade get_next_event to v3 Daisuke Nojiri
2024-06-04  3:12 ` Tzung-Bi Shih
2024-06-04 17:01 ` [PATCH 1/3] platform/chrome: Add struct ec_response_get_next_event_v3 Daisuke Nojiri
2024-06-05  2:40   ` patchwork-bot+chrome-platform
2024-06-05  2:40   ` patchwork-bot+chrome-platform
2024-06-05  2:43   ` Tzung-Bi Shih
2024-06-04 17:07 ` [PATCH 2/3] platform/chrome: cros_ec_proto: Upgrade get_next_event to v3 Daisuke Nojiri
2024-06-04 17:09 ` [PATCH 3/3] ARM: dts: cros-ec-keyboard: Add keyboard matrix v3.0 Daisuke Nojiri
2024-06-04 19:09   ` Dmitry Torokhov
2024-06-04 23:07 ` [PATCH 1/3] platform/chrome: Add struct ec_response_get_next_event_v3 Daisuke Nojiri
2024-06-05  2:40   ` patchwork-bot+chrome-platform
2024-06-05  2:40   ` patchwork-bot+chrome-platform
2024-06-04 23:08 ` [PATCH 2/3] platform/chrome: cros_ec_proto: Upgrade get_next_event to v3 Daisuke Nojiri
2024-06-05  2:40   ` patchwork-bot+chrome-platform
2024-06-05  2:40   ` patchwork-bot+chrome-platform
2024-06-04 23:09 ` [PATCH 3/3] ARM: dts: cros-ec-keyboard: Add keyboard matrix v3.0 Daisuke Nojiri
2024-06-06  0:24   ` Rob Herring
2024-06-06  1:06 ` [PATCH 1/3] platform/chrome: Add struct ec_response_get_next_event_v3 Daisuke Nojiri
2024-06-06  1:07 ` [PATCH 2/3] platform/chrome: cros_ec_proto: Upgrade get_next_event to v3 Daisuke Nojiri
2024-06-06  1:08 ` [PATCH 3/3] dt-bindings: cros-ec-keyboard: Add keyboard matrix v3.0 Daisuke Nojiri
2024-06-06  6:27   ` Krzysztof Kozlowski
     [not found] ` <20240606173509.243739-1-dnojiri@chromium.org>
2024-06-06 17:34   ` [PATCH 1/3 v4] platform/chrome: Add struct ec_response_get_next_event_v3 Daisuke Nojiri
2024-06-06 17:34   ` [PATCH 2/3 v4] platform/chrome: cros_ec_proto: Upgrade get_next_event to v3 Daisuke Nojiri
2024-06-06 17:34   ` [PATCH 3/3 v4] dt-bindings: cros-ec-keyboard: Add keyboard matrix v3.0 Daisuke Nojiri
2024-06-06 17:40 ` [PATCH 0/3 v4] Add cros-ec-keyboard v3.0 Daisuke Nojiri

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox