All of lore.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.