Przeglądaj źródła

Update v6.1 patches

Changes:
 - Fix patches broken in previous rebase
 - Update Surface SAM patches to upstream-accepted version

Links:
 - kernel: https://github.com/linux-surface/kernel/commit/227768d31de23ad9f5fa604862044d7803184c80
Maximilian Luz 2 lat temu
rodzic
commit
346cf6f9a1

+ 671 - 47
patches/6.1/0005-surface-sam.patch

@@ -1,6 +1,6 @@
-From 49d4e0f3885582fbc2a49dd6cb858ccd2d16a1bc Mon Sep 17 00:00:00 2001
+From d290ffa5b652cbbf0f9d89fa284d5542286a285e Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
-Date: Sat, 5 Nov 2022 21:23:53 +0100
+Date: Fri, 2 Dec 2022 23:33:20 +0100
 Subject: [PATCH] platform/surface: aggregator: Improve documentation and
 Subject: [PATCH] platform/surface: aggregator: Improve documentation and
  handling of message target and source IDs
  handling of message target and source IDs
 
 
@@ -10,19 +10,23 @@ indicating the peer from which the message originated and the peer for
 which it is intended.
 which it is intended.
 
 
 Change the naming of those fields accordingly and improve the protocol
 Change the naming of those fields accordingly and improve the protocol
-documenation. Additionally, introduce an enum containing all currently
+documentation. Additionally, introduce an enum containing all currently
 known peers, i.e. targets and sources.
 known peers, i.e. targets and sources.
 
 
 Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
 Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
+Link: https://lore.kernel.org/r/20221202223327.690880-3-luzmaximilian@gmail.com
+Reviewed-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
 Patchset: surface-sam
 Patchset: surface-sam
 ---
 ---
  .../driver-api/surface_aggregator/client.rst  |  4 +-
  .../driver-api/surface_aggregator/client.rst  |  4 +-
  .../driver-api/surface_aggregator/ssh.rst     | 36 +++++++++--------
  .../driver-api/surface_aggregator/ssh.rst     | 36 +++++++++--------
  .../platform/surface/aggregator/controller.c  | 12 +++---
  .../platform/surface/aggregator/controller.c  | 12 +++---
  .../platform/surface/aggregator/ssh_msgb.h    |  4 +-
  .../platform/surface/aggregator/ssh_msgb.h    |  4 +-
+ .../surface/aggregator/ssh_request_layer.c    | 11 ++---
  include/linux/surface_aggregator/controller.h |  4 +-
  include/linux/surface_aggregator/controller.h |  4 +-
  include/linux/surface_aggregator/serial_hub.h | 40 +++++++++++++------
  include/linux/surface_aggregator/serial_hub.h | 40 +++++++++++++------
- 6 files changed, 58 insertions(+), 42 deletions(-)
+ 7 files changed, 64 insertions(+), 47 deletions(-)
 
 
 diff --git a/Documentation/driver-api/surface_aggregator/client.rst b/Documentation/driver-api/surface_aggregator/client.rst
 diff --git a/Documentation/driver-api/surface_aggregator/client.rst b/Documentation/driver-api/surface_aggregator/client.rst
 index 27f95abdbe99..9d7411223a84 100644
 index 27f95abdbe99..9d7411223a84 100644
@@ -179,6 +183,30 @@ index f3ecad92eefd..438873e06098 100644
  	__msgb_push_u8(msgb, rqst->instance_id);	/* Instance ID. */
  	__msgb_push_u8(msgb, rqst->instance_id);	/* Instance ID. */
  	__msgb_push_u16(msgb, rqid);			/* Request ID. */
  	__msgb_push_u16(msgb, rqid);			/* Request ID. */
  	__msgb_push_u8(msgb, rqst->command_id);		/* Command ID. */
  	__msgb_push_u8(msgb, rqst->command_id);		/* Command ID. */
+diff --git a/drivers/platform/surface/aggregator/ssh_request_layer.c b/drivers/platform/surface/aggregator/ssh_request_layer.c
+index 69132976d297..90634dcacabf 100644
+--- a/drivers/platform/surface/aggregator/ssh_request_layer.c
++++ b/drivers/platform/surface/aggregator/ssh_request_layer.c
+@@ -920,13 +920,14 @@ static void ssh_rtl_rx_command(struct ssh_ptl *p, const struct ssam_span *data)
+ 	 * Check if the message was intended for us. If not, drop it.
+ 	 *
+ 	 * Note: We will need to change this to handle debug messages. On newer
+-	 * generation devices, these seem to be sent to tid_out=0x03. We as
+-	 * host can still receive them as they can be forwarded via an override
+-	 * option on SAM, but doing so does not change tid_out=0x00.
++	 * generation devices, these seem to be sent to SSAM_SSH_TID_DEBUG. We
++	 * as host can still receive them as they can be forwarded via an
++	 * override option on SAM, but doing so does not change the target ID
++	 * to SSAM_SSH_TID_HOST.
+ 	 */
+-	if (command->tid_out != 0x00) {
++	if (command->tid != SSAM_SSH_TID_HOST) {
+ 		rtl_warn(rtl, "rtl: dropping message not intended for us (tid = %#04x)\n",
+-			 command->tid_out);
++			 command->tid);
+ 		return;
+ 	}
+ 
 diff --git a/include/linux/surface_aggregator/controller.h b/include/linux/surface_aggregator/controller.h
 diff --git a/include/linux/surface_aggregator/controller.h b/include/linux/surface_aggregator/controller.h
 index d11a1c6e3186..8932bc0bae18 100644
 index d11a1c6e3186..8932bc0bae18 100644
 --- a/include/linux/surface_aggregator/controller.h
 --- a/include/linux/surface_aggregator/controller.h
@@ -261,9 +289,9 @@ index 45501b6e54e8..5c4ae1a26183 100644
 -- 
 -- 
 2.39.1
 2.39.1
 
 
-From 7bbedf41c6dc00352b90d84bddc951b2ff429b27 Mon Sep 17 00:00:00 2001
+From 9200b29dfce5ec28dba74373a4038c63b6e6feac Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
-Date: Sat, 5 Nov 2022 21:42:19 +0100
+Date: Fri, 2 Dec 2022 23:33:21 +0100
 Subject: [PATCH] platform/surface: aggregator: Add target and source IDs to
 Subject: [PATCH] platform/surface: aggregator: Add target and source IDs to
  command trace events
  command trace events
 
 
@@ -277,6 +305,9 @@ that interface). So it makes sense to also explicitly name the peers
 involved when tracing.
 involved when tracing.
 
 
 Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
 Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
+Link: https://lore.kernel.org/r/20221202223327.690880-4-luzmaximilian@gmail.com
+Reviewed-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
 Patchset: surface-sam
 Patchset: surface-sam
 ---
 ---
  drivers/platform/surface/aggregator/trace.h | 73 +++++++++++++++++++--
  drivers/platform/surface/aggregator/trace.h | 73 +++++++++++++++++++--
@@ -455,9 +486,9 @@ index 2a2c17771d01..55cc61bba1da 100644
 -- 
 -- 
 2.39.1
 2.39.1
 
 
-From bdeb5fd1669c2f2235aae296a2ec15d73cd6d160 Mon Sep 17 00:00:00 2001
+From 9279c3f3d6b2ae3efc9bf350837864df421b3c82 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
-Date: Sat, 5 Nov 2022 21:32:16 +0100
+Date: Fri, 2 Dec 2022 23:33:22 +0100
 Subject: [PATCH] platform/surface: aggregator_hub: Use target-ID enum instead
 Subject: [PATCH] platform/surface: aggregator_hub: Use target-ID enum instead
  of hard-coding values
  of hard-coding values
 
 
@@ -465,6 +496,9 @@ Instead of hard-coding the target ID, use the respective enum
 ssam_ssh_tid value.
 ssam_ssh_tid value.
 
 
 Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
 Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
+Link: https://lore.kernel.org/r/20221202223327.690880-5-luzmaximilian@gmail.com
+Reviewed-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
 Patchset: surface-sam
 Patchset: surface-sam
 ---
 ---
  drivers/platform/surface/surface_aggregator_hub.c | 4 ++--
  drivers/platform/surface/surface_aggregator_hub.c | 4 ++--
@@ -495,9 +529,9 @@ index 43061514be38..62f27cdb6ca8 100644
 -- 
 -- 
 2.39.1
 2.39.1
 
 
-From 9b8a09ae48a87958a28d941bc5a3424d93e5ac88 Mon Sep 17 00:00:00 2001
+From 3e63472ff80d775dc2bd204125371436f99c6b13 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
-Date: Sat, 5 Nov 2022 21:33:26 +0100
+Date: Fri, 2 Dec 2022 23:33:23 +0100
 Subject: [PATCH] platform/surface: aggregator_tabletsw: Use target-ID enum
 Subject: [PATCH] platform/surface: aggregator_tabletsw: Use target-ID enum
  instead of hard-coding values
  instead of hard-coding values
 
 
@@ -505,6 +539,9 @@ Instead of hard-coding the target ID, use the respective enum
 ssam_ssh_tid value.
 ssam_ssh_tid value.
 
 
 Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
 Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
+Link: https://lore.kernel.org/r/20221202223327.690880-6-luzmaximilian@gmail.com
+Reviewed-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
 Patchset: surface-sam
 Patchset: surface-sam
 ---
 ---
  drivers/platform/surface/surface_aggregator_tabletsw.c | 6 +++---
  drivers/platform/surface/surface_aggregator_tabletsw.c | 6 +++---
@@ -544,9 +581,9 @@ index 27d95a6a7851..bd8cd453c393 100644
 -- 
 -- 
 2.39.1
 2.39.1
 
 
-From 9b0a4cdd3f96e6004dc34bba3c6ffbdc6bcb746d Mon Sep 17 00:00:00 2001
+From 5e27e9534629b3867f6512b1d49f7d6622f538e5 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
-Date: Sat, 5 Nov 2022 21:34:06 +0100
+Date: Fri, 2 Dec 2022 23:33:24 +0100
 Subject: [PATCH] platform/surface: dtx: Use target-ID enum instead of
 Subject: [PATCH] platform/surface: dtx: Use target-ID enum instead of
  hard-coding values
  hard-coding values
 
 
@@ -554,6 +591,9 @@ Instead of hard-coding the target ID, use the respective enum
 ssam_ssh_tid value.
 ssam_ssh_tid value.
 
 
 Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
 Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
+Link: https://lore.kernel.org/r/20221202223327.690880-7-luzmaximilian@gmail.com
+Reviewed-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
 Patchset: surface-sam
 Patchset: surface-sam
 ---
 ---
  drivers/platform/surface/surface_dtx.c | 18 +++++++++---------
  drivers/platform/surface/surface_dtx.c | 18 +++++++++---------
@@ -639,40 +679,9 @@ index ed36944467f9..0de76a784a35 100644
 -- 
 -- 
 2.39.1
 2.39.1
 
 
-From 9cc6a8de04a496870726ff69726c004a198530b2 Mon Sep 17 00:00:00 2001
-From: Maximilian Luz <luzmaximilian@gmail.com>
-Date: Sat, 5 Nov 2022 21:40:06 +0100
-Subject: [PATCH] HID: surface-hid: Use target-ID enum instead of hard-coding
- values
-
-Instead of hard-coding the target ID, use the respective enum
-ssam_ssh_tid value.
-
-Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
-Patchset: surface-sam
----
- drivers/hid/surface-hid/surface_kbd.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/drivers/hid/surface-hid/surface_kbd.c b/drivers/hid/surface-hid/surface_kbd.c
-index 0635341bc517..42933bf3e925 100644
---- a/drivers/hid/surface-hid/surface_kbd.c
-+++ b/drivers/hid/surface-hid/surface_kbd.c
-@@ -250,7 +250,7 @@ static int surface_kbd_probe(struct platform_device *pdev)
- 
- 	shid->uid.domain = SSAM_DOMAIN_SERIALHUB;
- 	shid->uid.category = SSAM_SSH_TC_KBD;
--	shid->uid.target = 2;
-+	shid->uid.target = SSAM_SSH_TID_KIP;
- 	shid->uid.instance = 0;
- 	shid->uid.function = 0;
- 
--- 
-2.39.1
-
-From 54e9685da6a18f97a58838547ad07e3baaa01ebf Mon Sep 17 00:00:00 2001
+From ecf46d8a50f1ae2e66f1ae6951a9b28d73abca4e Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
-Date: Sat, 5 Nov 2022 21:45:28 +0100
+Date: Fri, 2 Dec 2022 23:33:26 +0100
 Subject: [PATCH] platform/surface: aggregator: Enforce use of target-ID enum
 Subject: [PATCH] platform/surface: aggregator: Enforce use of target-ID enum
  in device ID macros
  in device ID macros
 
 
@@ -687,6 +696,10 @@ know the names for the target IDs, use the same trick for them as well.
 Also rename the SSAM_ANY_x macros to SSAM_SSH_x_ANY to better fit in.
 Also rename the SSAM_ANY_x macros to SSAM_SSH_x_ANY to better fit in.
 
 
 Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
 Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
+Acked-by: Sebastian Reichel <sebastian.reichel@collabora.com>
+Link: https://lore.kernel.org/r/20221202223327.690880-9-luzmaximilian@gmail.com
+Reviewed-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
 Patchset: surface-sam
 Patchset: surface-sam
 ---
 ---
  drivers/hid/surface-hid/surface_hid.c         |  2 +-
  drivers/hid/surface-hid/surface_hid.c         |  2 +-
@@ -902,9 +915,9 @@ index 46c45d1b6368..4da20b7a0ee5 100644
 -- 
 -- 
 2.39.1
 2.39.1
 
 
-From 795b4ddb4d3dad38b5123e354b25b327632e0ce5 Mon Sep 17 00:00:00 2001
+From 780e33c35efd2ae18ddeacf33dc4ed60f1d0975a Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
-Date: Sat, 5 Nov 2022 21:46:37 +0100
+Date: Fri, 2 Dec 2022 23:33:27 +0100
 Subject: [PATCH] platform/surface: aggregator_registry: Fix target-ID of
 Subject: [PATCH] platform/surface: aggregator_registry: Fix target-ID of
  base-hub
  base-hub
 
 
@@ -913,7 +926,15 @@ peripherals). However, even though it manages such devices with the KIP
 target ID, the base hub itself is actually accessed via the SAM target
 target ID, the base hub itself is actually accessed via the SAM target
 ID. So set it accordingly.
 ID. So set it accordingly.
 
 
+Note that the target ID of the hub can be chosen arbitrarily and does
+not directly correspond to any physical or virtual component of the EC.
+This change is only a code improvement intended for consistency and
+clarity, it does not fix an actual bug.
+
 Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
 Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
+Link: https://lore.kernel.org/r/20221202223327.690880-10-luzmaximilian@gmail.com
+Reviewed-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
 Patchset: surface-sam
 Patchset: surface-sam
 ---
 ---
  drivers/platform/surface/surface_aggregator_hub.c      | 2 +-
  drivers/platform/surface/surface_aggregator_hub.c      | 2 +-
@@ -949,3 +970,606 @@ index 023f126121d7..296f72d52e6a 100644
 -- 
 -- 
 2.39.1
 2.39.1
 
 
+From 111516425f2a2cd0eef9265cfb70de21e97e7887 Mon Sep 17 00:00:00 2001
+From: Maximilian Luz <luzmaximilian@gmail.com>
+Date: Tue, 20 Dec 2022 18:56:08 +0100
+Subject: [PATCH] platform/surface: aggregator: Rename top-level request
+ functions to avoid ambiguities
+
+We currently have a struct ssam_request_sync and a function
+ssam_request_sync(). While this is valid C, there are some downsides to
+it.
+
+One of these is that current Sphinx versions (>= 3.0) cannot
+disambiguate between the two (see disucssion and pull request linked
+below). It instead emits a "WARNING: Duplicate C declaration" and links
+for the struct and function in the resulting documentation link to the
+same entry (i.e. both to either function or struct documentation)
+instead of their respective own entries.
+
+While we could just ignore that and wait for a fix, there's also a point
+to be made that the current naming can be somewhat confusing when
+searching (e.g. via grep) or trying to understand the levels of
+abstraction at play:
+
+We currently have struct ssam_request_sync and associated functions
+ssam_request_sync_[alloc|free|init|wait|...]() operating on this struct.
+However, function ssam_request_sync() is one abstraction level above
+this. Similarly, ssam_request_sync_with_buffer() is not a function
+operating on struct ssam_request_sync, but rather a sibling to
+ssam_request_sync(), both using the struct under the hood.
+
+Therefore, rename the top level request functions:
+
+  ssam_request_sync() -> ssam_request_do_sync()
+  ssam_request_sync_with_buffer() -> ssam_request_do_sync_with_buffer()
+  ssam_request_sync_onstack() -> ssam_request_do_sync_onstack()
+
+Link: https://lore.kernel.org/all/085e0ada65c11da9303d07e70c510dc45f21315b.1656756450.git.mchehab@kernel.org/
+Link: https://github.com/sphinx-doc/sphinx/pull/8313
+Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
+Link: https://lore.kernel.org/r/20221220175608.1436273-2-luzmaximilian@gmail.com
+Reviewed-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Patchset: surface-sam
+---
+ .../driver-api/surface_aggregator/client.rst  |  8 +--
+ drivers/hid/surface-hid/surface_hid.c         |  6 +-
+ drivers/hid/surface-hid/surface_kbd.c         |  6 +-
+ drivers/platform/surface/aggregator/bus.c     |  6 +-
+ .../platform/surface/aggregator/controller.c  | 32 +++++------
+ .../platform/surface/surface_acpi_notify.c    |  2 +-
+ .../surface/surface_aggregator_cdev.c         |  6 +-
+ .../surface/surface_aggregator_tabletsw.c     |  2 +-
+ include/linux/surface_aggregator/controller.h | 56 +++++++++----------
+ include/linux/surface_aggregator/device.h     |  8 +--
+ 10 files changed, 66 insertions(+), 66 deletions(-)
+
+diff --git a/Documentation/driver-api/surface_aggregator/client.rst b/Documentation/driver-api/surface_aggregator/client.rst
+index 9d7411223a84..e100ab0a24cc 100644
+--- a/Documentation/driver-api/surface_aggregator/client.rst
++++ b/Documentation/driver-api/surface_aggregator/client.rst
+@@ -19,7 +19,7 @@
+ .. |ssam_notifier_unregister| replace:: :c:func:`ssam_notifier_unregister`
+ .. |ssam_device_notifier_register| replace:: :c:func:`ssam_device_notifier_register`
+ .. |ssam_device_notifier_unregister| replace:: :c:func:`ssam_device_notifier_unregister`
+-.. |ssam_request_sync| replace:: :c:func:`ssam_request_sync`
++.. |ssam_request_do_sync| replace:: :c:func:`ssam_request_do_sync`
+ .. |ssam_event_mask| replace:: :c:type:`enum ssam_event_mask <ssam_event_mask>`
+ 
+ 
+@@ -209,12 +209,12 @@ data received from it is converted from little-endian to host endianness.
+             * with the SSAM_REQUEST_HAS_RESPONSE flag set in the specification
+             * above.
+             */
+-           status = ssam_request_sync(ctrl, &rqst, &resp);
++           status = ssam_request_do_sync(ctrl, &rqst, &resp);
+ 
+            /*
+             * Alternatively use
+             *
+-            *   ssam_request_sync_onstack(ctrl, &rqst, &resp, sizeof(arg_le));
++            *   ssam_request_do_sync_onstack(ctrl, &rqst, &resp, sizeof(arg_le));
+             *
+             * to perform the request, allocating the message buffer directly
+             * on the stack as opposed to allocation via kzalloc().
+@@ -230,7 +230,7 @@ data received from it is converted from little-endian to host endianness.
+            return status;
+    }
+ 
+-Note that |ssam_request_sync| in its essence is a wrapper over lower-level
++Note that |ssam_request_do_sync| in its essence is a wrapper over lower-level
+ request primitives, which may also be used to perform requests. Refer to its
+ implementation and documentation for more details.
+ 
+diff --git a/drivers/hid/surface-hid/surface_hid.c b/drivers/hid/surface-hid/surface_hid.c
+index aa80d83a83d1..61e5814b0ad7 100644
+--- a/drivers/hid/surface-hid/surface_hid.c
++++ b/drivers/hid/surface-hid/surface_hid.c
+@@ -80,7 +80,7 @@ static int ssam_hid_get_descriptor(struct surface_hid_device *shid, u8 entry, u8
+ 
+ 		rsp.length = 0;
+ 
+-		status = ssam_retry(ssam_request_sync_onstack, shid->ctrl, &rqst, &rsp,
++		status = ssam_retry(ssam_request_do_sync_onstack, shid->ctrl, &rqst, &rsp,
+ 				    sizeof(*slice));
+ 		if (status)
+ 			return status;
+@@ -131,7 +131,7 @@ static int ssam_hid_set_raw_report(struct surface_hid_device *shid, u8 rprt_id,
+ 
+ 	buf[0] = rprt_id;
+ 
+-	return ssam_retry(ssam_request_sync, shid->ctrl, &rqst, NULL);
++	return ssam_retry(ssam_request_do_sync, shid->ctrl, &rqst, NULL);
+ }
+ 
+ static int ssam_hid_get_raw_report(struct surface_hid_device *shid, u8 rprt_id, u8 *buf, size_t len)
+@@ -151,7 +151,7 @@ static int ssam_hid_get_raw_report(struct surface_hid_device *shid, u8 rprt_id,
+ 	rsp.length = 0;
+ 	rsp.pointer = buf;
+ 
+-	return ssam_retry(ssam_request_sync_onstack, shid->ctrl, &rqst, &rsp, sizeof(rprt_id));
++	return ssam_retry(ssam_request_do_sync_onstack, shid->ctrl, &rqst, &rsp, sizeof(rprt_id));
+ }
+ 
+ static u32 ssam_hid_event_fn(struct ssam_event_notifier *nf, const struct ssam_event *event)
+diff --git a/drivers/hid/surface-hid/surface_kbd.c b/drivers/hid/surface-hid/surface_kbd.c
+index 0635341bc517..7ca8038026ce 100644
+--- a/drivers/hid/surface-hid/surface_kbd.c
++++ b/drivers/hid/surface-hid/surface_kbd.c
+@@ -49,7 +49,7 @@ static int ssam_kbd_get_descriptor(struct surface_hid_device *shid, u8 entry, u8
+ 	rsp.length = 0;
+ 	rsp.pointer = buf;
+ 
+-	status = ssam_retry(ssam_request_sync_onstack, shid->ctrl, &rqst, &rsp, sizeof(entry));
++	status = ssam_retry(ssam_request_do_sync_onstack, shid->ctrl, &rqst, &rsp, sizeof(entry));
+ 	if (status)
+ 		return status;
+ 
+@@ -75,7 +75,7 @@ static int ssam_kbd_set_caps_led(struct surface_hid_device *shid, bool value)
+ 	rqst.length = sizeof(value_u8);
+ 	rqst.payload = &value_u8;
+ 
+-	return ssam_retry(ssam_request_sync_onstack, shid->ctrl, &rqst, NULL, sizeof(value_u8));
++	return ssam_retry(ssam_request_do_sync_onstack, shid->ctrl, &rqst, NULL, sizeof(value_u8));
+ }
+ 
+ static int ssam_kbd_get_feature_report(struct surface_hid_device *shid, u8 *buf, size_t len)
+@@ -97,7 +97,7 @@ static int ssam_kbd_get_feature_report(struct surface_hid_device *shid, u8 *buf,
+ 	rsp.length = 0;
+ 	rsp.pointer = buf;
+ 
+-	status = ssam_retry(ssam_request_sync_onstack, shid->ctrl, &rqst, &rsp, sizeof(payload));
++	status = ssam_retry(ssam_request_do_sync_onstack, shid->ctrl, &rqst, &rsp, sizeof(payload));
+ 	if (status)
+ 		return status;
+ 
+diff --git a/drivers/platform/surface/aggregator/bus.c b/drivers/platform/surface/aggregator/bus.c
+index de539938896e..7004eb4a63a2 100644
+--- a/drivers/platform/surface/aggregator/bus.c
++++ b/drivers/platform/surface/aggregator/bus.c
+@@ -136,9 +136,9 @@ int ssam_device_add(struct ssam_device *sdev)
+ 	 * is always valid and can be used for requests as long as the client
+ 	 * device we add here is registered as child under it. This essentially
+ 	 * guarantees that the client driver can always expect the preconditions
+-	 * for functions like ssam_request_sync (controller has to be started
+-	 * and is not suspended) to hold and thus does not have to check for
+-	 * them.
++	 * for functions like ssam_request_do_sync() (controller has to be
++	 * started and is not suspended) to hold and thus does not have to check
++	 * for them.
+ 	 *
+ 	 * Note that for this to work, the controller has to be a parent device.
+ 	 * If it is not a direct parent, care has to be taken that the device is
+diff --git a/drivers/platform/surface/aggregator/controller.c b/drivers/platform/surface/aggregator/controller.c
+index 2c99f51ccd4e..535581c0471c 100644
+--- a/drivers/platform/surface/aggregator/controller.c
++++ b/drivers/platform/surface/aggregator/controller.c
+@@ -1674,7 +1674,7 @@ int ssam_request_sync_submit(struct ssam_controller *ctrl,
+ EXPORT_SYMBOL_GPL(ssam_request_sync_submit);
+ 
+ /**
+- * ssam_request_sync() - Execute a synchronous request.
++ * ssam_request_do_sync() - Execute a synchronous request.
+  * @ctrl: The controller via which the request will be submitted.
+  * @spec: The request specification and payload.
+  * @rsp:  The response buffer.
+@@ -1686,9 +1686,9 @@ EXPORT_SYMBOL_GPL(ssam_request_sync_submit);
+  *
+  * Return: Returns the status of the request or any failure during setup.
+  */
+-int ssam_request_sync(struct ssam_controller *ctrl,
+-		      const struct ssam_request *spec,
+-		      struct ssam_response *rsp)
++int ssam_request_do_sync(struct ssam_controller *ctrl,
++			 const struct ssam_request *spec,
++			 struct ssam_response *rsp)
+ {
+ 	struct ssam_request_sync *rqst;
+ 	struct ssam_span buf;
+@@ -1722,10 +1722,10 @@ int ssam_request_sync(struct ssam_controller *ctrl,
+ 	ssam_request_sync_free(rqst);
+ 	return status;
+ }
+-EXPORT_SYMBOL_GPL(ssam_request_sync);
++EXPORT_SYMBOL_GPL(ssam_request_do_sync);
+ 
+ /**
+- * ssam_request_sync_with_buffer() - Execute a synchronous request with the
++ * ssam_request_do_sync_with_buffer() - Execute a synchronous request with the
+  * provided buffer as back-end for the message buffer.
+  * @ctrl: The controller via which the request will be submitted.
+  * @spec: The request specification and payload.
+@@ -1738,17 +1738,17 @@ EXPORT_SYMBOL_GPL(ssam_request_sync);
+  * SSH_COMMAND_MESSAGE_LENGTH() macro can be used to compute the required
+  * message buffer size.
+  *
+- * This function does essentially the same as ssam_request_sync(), but instead
+- * of dynamically allocating the request and message data buffer, it uses the
+- * provided message data buffer and stores the (small) request struct on the
+- * heap.
++ * This function does essentially the same as ssam_request_do_sync(), but
++ * instead of dynamically allocating the request and message data buffer, it
++ * uses the provided message data buffer and stores the (small) request struct
++ * on the heap.
+  *
+  * Return: Returns the status of the request or any failure during setup.
+  */
+-int ssam_request_sync_with_buffer(struct ssam_controller *ctrl,
+-				  const struct ssam_request *spec,
+-				  struct ssam_response *rsp,
+-				  struct ssam_span *buf)
++int ssam_request_do_sync_with_buffer(struct ssam_controller *ctrl,
++				     const struct ssam_request *spec,
++				     struct ssam_response *rsp,
++				     struct ssam_span *buf)
+ {
+ 	struct ssam_request_sync rqst;
+ 	ssize_t len;
+@@ -1772,7 +1772,7 @@ int ssam_request_sync_with_buffer(struct ssam_controller *ctrl,
+ 
+ 	return status;
+ }
+-EXPORT_SYMBOL_GPL(ssam_request_sync_with_buffer);
++EXPORT_SYMBOL_GPL(ssam_request_do_sync_with_buffer);
+ 
+ 
+ /* -- Internal SAM requests. ------------------------------------------------ */
+@@ -1864,7 +1864,7 @@ static int __ssam_ssh_event_request(struct ssam_controller *ctrl,
+ 	result.length = 0;
+ 	result.pointer = &buf;
+ 
+-	status = ssam_retry(ssam_request_sync_onstack, ctrl, &rqst, &result,
++	status = ssam_retry(ssam_request_do_sync_onstack, ctrl, &rqst, &result,
+ 			    sizeof(params));
+ 
+ 	return status < 0 ? status : buf;
+diff --git a/drivers/platform/surface/surface_acpi_notify.c b/drivers/platform/surface/surface_acpi_notify.c
+index 50500e562963..897cdd9c3aae 100644
+--- a/drivers/platform/surface/surface_acpi_notify.c
++++ b/drivers/platform/surface/surface_acpi_notify.c
+@@ -590,7 +590,7 @@ static acpi_status san_rqst(struct san_data *d, struct gsb_buffer *buffer)
+ 		return san_rqst_fixup_suspended(d, &rqst, buffer);
+ 	}
+ 
+-	status = __ssam_retry(ssam_request_sync_onstack, SAN_REQUEST_NUM_TRIES,
++	status = __ssam_retry(ssam_request_do_sync_onstack, SAN_REQUEST_NUM_TRIES,
+ 			      d->ctrl, &rqst, &rsp, SAN_GSB_MAX_RQSX_PAYLOAD);
+ 
+ 	if (!status) {
+diff --git a/drivers/platform/surface/surface_aggregator_cdev.c b/drivers/platform/surface/surface_aggregator_cdev.c
+index 492c82e69182..07f0ed658369 100644
+--- a/drivers/platform/surface/surface_aggregator_cdev.c
++++ b/drivers/platform/surface/surface_aggregator_cdev.c
+@@ -302,8 +302,8 @@ static long ssam_cdev_request(struct ssam_cdev_client *client, struct ssam_cdev_
+ 		 * theoretical maximum (SSH_COMMAND_MAX_PAYLOAD_SIZE) of the
+ 		 * underlying protocol (note that nothing remotely this size
+ 		 * should ever be allocated in any normal case). This size is
+-		 * validated later in ssam_request_sync(), for allocation the
+-		 * bound imposed by u16 should be enough.
++		 * validated later in ssam_request_do_sync(), for allocation
++		 * the bound imposed by u16 should be enough.
+ 		 */
+ 		spec.payload = kzalloc(spec.length, GFP_KERNEL);
+ 		if (!spec.payload) {
+@@ -342,7 +342,7 @@ static long ssam_cdev_request(struct ssam_cdev_client *client, struct ssam_cdev_
+ 	}
+ 
+ 	/* Perform request. */
+-	status = ssam_request_sync(client->cdev->ctrl, &spec, &rsp);
++	status = ssam_request_do_sync(client->cdev->ctrl, &spec, &rsp);
+ 	if (status)
+ 		goto out;
+ 
+diff --git a/drivers/platform/surface/surface_aggregator_tabletsw.c b/drivers/platform/surface/surface_aggregator_tabletsw.c
+index 6147aa887939..9fed800c7cc0 100644
+--- a/drivers/platform/surface/surface_aggregator_tabletsw.c
++++ b/drivers/platform/surface/surface_aggregator_tabletsw.c
+@@ -382,7 +382,7 @@ static int ssam_pos_get_sources_list(struct ssam_tablet_sw *sw, struct ssam_sour
+ 	rsp.length = 0;
+ 	rsp.pointer = (u8 *)sources;
+ 
+-	status = ssam_retry(ssam_request_sync_onstack, sw->sdev->ctrl, &rqst, &rsp, 0);
++	status = ssam_retry(ssam_request_do_sync_onstack, sw->sdev->ctrl, &rqst, &rsp, 0);
+ 	if (status)
+ 		return status;
+ 
+diff --git a/include/linux/surface_aggregator/controller.h b/include/linux/surface_aggregator/controller.h
+index 8932bc0bae18..cb7980805920 100644
+--- a/include/linux/surface_aggregator/controller.h
++++ b/include/linux/surface_aggregator/controller.h
+@@ -207,17 +207,17 @@ static inline int ssam_request_sync_wait(struct ssam_request_sync *rqst)
+ 	return rqst->status;
+ }
+ 
+-int ssam_request_sync(struct ssam_controller *ctrl,
+-		      const struct ssam_request *spec,
+-		      struct ssam_response *rsp);
++int ssam_request_do_sync(struct ssam_controller *ctrl,
++			 const struct ssam_request *spec,
++			 struct ssam_response *rsp);
+ 
+-int ssam_request_sync_with_buffer(struct ssam_controller *ctrl,
+-				  const struct ssam_request *spec,
+-				  struct ssam_response *rsp,
+-				  struct ssam_span *buf);
++int ssam_request_do_sync_with_buffer(struct ssam_controller *ctrl,
++				     const struct ssam_request *spec,
++				     struct ssam_response *rsp,
++				     struct ssam_span *buf);
+ 
+ /**
+- * ssam_request_sync_onstack - Execute a synchronous request on the stack.
++ * ssam_request_do_sync_onstack - Execute a synchronous request on the stack.
+  * @ctrl: The controller via which the request is submitted.
+  * @rqst: The request specification.
+  * @rsp:  The response buffer.
+@@ -227,7 +227,7 @@ int ssam_request_sync_with_buffer(struct ssam_controller *ctrl,
+  * fully initializes it via the provided request specification, submits it,
+  * and finally waits for its completion before returning its status. This
+  * helper macro essentially allocates the request message buffer on the stack
+- * and then calls ssam_request_sync_with_buffer().
++ * and then calls ssam_request_do_sync_with_buffer().
+  *
+  * Note: The @payload_len parameter specifies the maximum payload length, used
+  * for buffer allocation. The actual payload length may be smaller.
+@@ -235,12 +235,12 @@ int ssam_request_sync_with_buffer(struct ssam_controller *ctrl,
+  * Return: Returns the status of the request or any failure during setup, i.e.
+  * zero on success and a negative value on failure.
+  */
+-#define ssam_request_sync_onstack(ctrl, rqst, rsp, payload_len)			\
++#define ssam_request_do_sync_onstack(ctrl, rqst, rsp, payload_len)		\
+ 	({									\
+ 		u8 __data[SSH_COMMAND_MESSAGE_LENGTH(payload_len)];		\
+ 		struct ssam_span __buf = { &__data[0], ARRAY_SIZE(__data) };	\
+ 										\
+-		ssam_request_sync_with_buffer(ctrl, rqst, rsp, &__buf);		\
++		ssam_request_do_sync_with_buffer(ctrl, rqst, rsp, &__buf);	\
+ 	})
+ 
+ /**
+@@ -349,7 +349,7 @@ struct ssam_request_spec_md {
+  * zero on success and negative on failure. The ``ctrl`` parameter is the
+  * controller via which the request is being sent.
+  *
+- * Refer to ssam_request_sync_onstack() for more details on the behavior of
++ * Refer to ssam_request_do_sync_onstack() for more details on the behavior of
+  * the generated function.
+  */
+ #define SSAM_DEFINE_SYNC_REQUEST_N(name, spec...)				\
+@@ -366,7 +366,7 @@ struct ssam_request_spec_md {
+ 		rqst.length = 0;						\
+ 		rqst.payload = NULL;						\
+ 										\
+-		return ssam_request_sync_onstack(ctrl, &rqst, NULL, 0);		\
++		return ssam_request_do_sync_onstack(ctrl, &rqst, NULL, 0);	\
+ 	}
+ 
+ /**
+@@ -389,7 +389,7 @@ struct ssam_request_spec_md {
+  * parameter is the controller via which the request is sent. The request
+  * argument is specified via the ``arg`` pointer.
+  *
+- * Refer to ssam_request_sync_onstack() for more details on the behavior of
++ * Refer to ssam_request_do_sync_onstack() for more details on the behavior of
+  * the generated function.
+  */
+ #define SSAM_DEFINE_SYNC_REQUEST_W(name, atype, spec...)			\
+@@ -406,8 +406,8 @@ struct ssam_request_spec_md {
+ 		rqst.length = sizeof(atype);					\
+ 		rqst.payload = (u8 *)arg;					\
+ 										\
+-		return ssam_request_sync_onstack(ctrl, &rqst, NULL,		\
+-						 sizeof(atype));		\
++		return ssam_request_do_sync_onstack(ctrl, &rqst, NULL,		\
++						    sizeof(atype));		\
+ 	}
+ 
+ /**
+@@ -430,7 +430,7 @@ struct ssam_request_spec_md {
+  * the controller via which the request is sent. The request's return value is
+  * written to the memory pointed to by the ``ret`` parameter.
+  *
+- * Refer to ssam_request_sync_onstack() for more details on the behavior of
++ * Refer to ssam_request_do_sync_onstack() for more details on the behavior of
+  * the generated function.
+  */
+ #define SSAM_DEFINE_SYNC_REQUEST_R(name, rtype, spec...)			\
+@@ -453,7 +453,7 @@ struct ssam_request_spec_md {
+ 		rsp.length = 0;							\
+ 		rsp.pointer = (u8 *)ret;					\
+ 										\
+-		status = ssam_request_sync_onstack(ctrl, &rqst, &rsp, 0);	\
++		status = ssam_request_do_sync_onstack(ctrl, &rqst, &rsp, 0);	\
+ 		if (status)							\
+ 			return status;						\
+ 										\
+@@ -491,7 +491,7 @@ struct ssam_request_spec_md {
+  * request argument is specified via the ``arg`` pointer. The request's return
+  * value is written to the memory pointed to by the ``ret`` parameter.
+  *
+- * Refer to ssam_request_sync_onstack() for more details on the behavior of
++ * Refer to ssam_request_do_sync_onstack() for more details on the behavior of
+  * the generated function.
+  */
+ #define SSAM_DEFINE_SYNC_REQUEST_WR(name, atype, rtype, spec...)		\
+@@ -514,7 +514,7 @@ struct ssam_request_spec_md {
+ 		rsp.length = 0;							\
+ 		rsp.pointer = (u8 *)ret;					\
+ 										\
+-		status = ssam_request_sync_onstack(ctrl, &rqst, &rsp, sizeof(atype)); \
++		status = ssam_request_do_sync_onstack(ctrl, &rqst, &rsp, sizeof(atype)); \
+ 		if (status)							\
+ 			return status;						\
+ 										\
+@@ -550,7 +550,7 @@ struct ssam_request_spec_md {
+  * parameter is the controller via which the request is sent, ``tid`` the
+  * target ID for the request, and ``iid`` the instance ID.
+  *
+- * Refer to ssam_request_sync_onstack() for more details on the behavior of
++ * Refer to ssam_request_do_sync_onstack() for more details on the behavior of
+  * the generated function.
+  */
+ #define SSAM_DEFINE_SYNC_REQUEST_MD_N(name, spec...)				\
+@@ -567,7 +567,7 @@ struct ssam_request_spec_md {
+ 		rqst.length = 0;						\
+ 		rqst.payload = NULL;						\
+ 										\
+-		return ssam_request_sync_onstack(ctrl, &rqst, NULL, 0);		\
++		return ssam_request_do_sync_onstack(ctrl, &rqst, NULL, 0);	\
+ 	}
+ 
+ /**
+@@ -592,7 +592,7 @@ struct ssam_request_spec_md {
+  * ``tid`` the target ID for the request, and ``iid`` the instance ID. The
+  * request argument is specified via the ``arg`` pointer.
+  *
+- * Refer to ssam_request_sync_onstack() for more details on the behavior of
++ * Refer to ssam_request_do_sync_onstack() for more details on the behavior of
+  * the generated function.
+  */
+ #define SSAM_DEFINE_SYNC_REQUEST_MD_W(name, atype, spec...)			\
+@@ -609,7 +609,7 @@ struct ssam_request_spec_md {
+ 		rqst.length = sizeof(atype);					\
+ 		rqst.payload = (u8 *)arg;					\
+ 										\
+-		return ssam_request_sync_onstack(ctrl, &rqst, NULL,		\
++		return ssam_request_do_sync_onstack(ctrl, &rqst, NULL,		\
+ 						 sizeof(atype));		\
+ 	}
+ 
+@@ -635,7 +635,7 @@ struct ssam_request_spec_md {
+  * the target ID for the request, and ``iid`` the instance ID. The request's
+  * return value is written to the memory pointed to by the ``ret`` parameter.
+  *
+- * Refer to ssam_request_sync_onstack() for more details on the behavior of
++ * Refer to ssam_request_do_sync_onstack() for more details on the behavior of
+  * the generated function.
+  */
+ #define SSAM_DEFINE_SYNC_REQUEST_MD_R(name, rtype, spec...)			\
+@@ -658,7 +658,7 @@ struct ssam_request_spec_md {
+ 		rsp.length = 0;							\
+ 		rsp.pointer = (u8 *)ret;					\
+ 										\
+-		status = ssam_request_sync_onstack(ctrl, &rqst, &rsp, 0);	\
++		status = ssam_request_do_sync_onstack(ctrl, &rqst, &rsp, 0);	\
+ 		if (status)							\
+ 			return status;						\
+ 										\
+@@ -698,7 +698,7 @@ struct ssam_request_spec_md {
+  * The request argument is specified via the ``arg`` pointer. The request's
+  * return value is written to the memory pointed to by the ``ret`` parameter.
+  *
+- * Refer to ssam_request_sync_onstack() for more details on the behavior of
++ * Refer to ssam_request_do_sync_onstack() for more details on the behavior of
+  * the generated function.
+  */
+ #define SSAM_DEFINE_SYNC_REQUEST_MD_WR(name, atype, rtype, spec...)		\
+@@ -722,7 +722,7 @@ struct ssam_request_spec_md {
+ 		rsp.length = 0;							\
+ 		rsp.pointer = (u8 *)ret;					\
+ 										\
+-		status = ssam_request_sync_onstack(ctrl, &rqst, &rsp, sizeof(atype)); \
++		status = ssam_request_do_sync_onstack(ctrl, &rqst, &rsp, sizeof(atype)); \
+ 		if (status)							\
+ 			return status;						\
+ 										\
+diff --git a/include/linux/surface_aggregator/device.h b/include/linux/surface_aggregator/device.h
+index 4da20b7a0ee5..1545e5567b15 100644
+--- a/include/linux/surface_aggregator/device.h
++++ b/include/linux/surface_aggregator/device.h
+@@ -456,7 +456,7 @@ static inline int ssam_device_register_clients(struct ssam_device *sdev)
+  * device of the request and by association the controller via which the
+  * request is sent.
+  *
+- * Refer to ssam_request_sync_onstack() for more details on the behavior of
++ * Refer to ssam_request_do_sync_onstack() for more details on the behavior of
+  * the generated function.
+  */
+ #define SSAM_DEFINE_SYNC_REQUEST_CL_N(name, spec...)			\
+@@ -490,7 +490,7 @@ static inline int ssam_device_register_clients(struct ssam_device *sdev)
+  * which the request is sent. The request's argument is specified via the
+  * ``arg`` pointer.
+  *
+- * Refer to ssam_request_sync_onstack() for more details on the behavior of
++ * Refer to ssam_request_do_sync_onstack() for more details on the behavior of
+  * the generated function.
+  */
+ #define SSAM_DEFINE_SYNC_REQUEST_CL_W(name, atype, spec...)		\
+@@ -524,7 +524,7 @@ static inline int ssam_device_register_clients(struct ssam_device *sdev)
+  * the request is sent. The request's return value is written to the memory
+  * pointed to by the ``ret`` parameter.
+  *
+- * Refer to ssam_request_sync_onstack() for more details on the behavior of
++ * Refer to ssam_request_do_sync_onstack() for more details on the behavior of
+  * the generated function.
+  */
+ #define SSAM_DEFINE_SYNC_REQUEST_CL_R(name, rtype, spec...)		\
+@@ -560,7 +560,7 @@ static inline int ssam_device_register_clients(struct ssam_device *sdev)
+  * specified via the ``arg`` pointer. The request's return value is written to
+  * the memory pointed to by the ``ret`` parameter.
+  *
+- * Refer to ssam_request_sync_onstack() for more details on the behavior of
++ * Refer to ssam_request_do_sync_onstack() for more details on the behavior of
+  * the generated function.
+  */
+ #define SSAM_DEFINE_SYNC_REQUEST_CL_WR(name, atype, rtype, spec...)		\
+-- 
+2.39.1
+
+From 4f6ea2783dac3c33d2b20d5d640a37d446a78f3e Mon Sep 17 00:00:00 2001
+From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Date: Wed, 18 Jan 2023 11:38:23 +0200
+Subject: [PATCH] platform/surface: Switch to use acpi_evaluate_dsm_typed()
+
+The acpi_evaluate_dsm_typed() provides a way to check the type of the
+object evaluated by _DSM call. Use it instead of open coded variant.
+
+Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Reviewed-by: Maximilian Luz <luzmaximilian@gmail.com>
+Link: https://lore.kernel.org/r/20230118093823.39679-1-andriy.shevchenko@linux.intel.com
+Reviewed-by: Hans de Goede <hdegoede@redhat.com>
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Patchset: surface-sam
+---
+ drivers/platform/surface/surface_hotplug.c | 13 +++----------
+ 1 file changed, 3 insertions(+), 10 deletions(-)
+
+diff --git a/drivers/platform/surface/surface_hotplug.c b/drivers/platform/surface/surface_hotplug.c
+index f004a2495201..7b6d887dccdb 100644
+--- a/drivers/platform/surface/surface_hotplug.c
++++ b/drivers/platform/surface/surface_hotplug.c
+@@ -101,18 +101,12 @@ static void shps_dsm_notify_irq(struct platform_device *pdev, enum shps_irq_type
+ 	param.type = ACPI_TYPE_INTEGER;
+ 	param.integer.value = value;
+ 
+-	result = acpi_evaluate_dsm(handle, &shps_dsm_guid, SHPS_DSM_REVISION,
+-				   shps_dsm_fn_for_irq(type), &param);
+-
++	result = acpi_evaluate_dsm_typed(handle, &shps_dsm_guid, SHPS_DSM_REVISION,
++					 shps_dsm_fn_for_irq(type), &param, ACPI_TYPE_BUFFER);
+ 	if (!result) {
+ 		dev_err(&pdev->dev, "IRQ notification via DSM failed (irq=%d, gpio=%d)\n",
+ 			type, value);
+ 
+-	} else if (result->type != ACPI_TYPE_BUFFER) {
+-		dev_err(&pdev->dev,
+-			"IRQ notification via DSM failed: unexpected result type (irq=%d, gpio=%d)\n",
+-			type, value);
+-
+ 	} else if (result->buffer.length != 1 || result->buffer.pointer[0] != 0) {
+ 		dev_err(&pdev->dev,
+ 			"IRQ notification via DSM failed: unexpected result value (irq=%d, gpio=%d)\n",
+@@ -121,8 +115,7 @@ static void shps_dsm_notify_irq(struct platform_device *pdev, enum shps_irq_type
+ 
+ 	mutex_unlock(&sdev->lock[type]);
+ 
+-	if (result)
+-		ACPI_FREE(result);
++	ACPI_FREE(result);
+ }
+ 
+ static irqreturn_t shps_handle_irq(int irq, void *data)
+-- 
+2.39.1
+

+ 2 - 2
patches/6.1/0006-surface-sam-over-hid.patch

@@ -1,4 +1,4 @@
-From 979716988ad9089d7c514f2bd46af44bba8e4c15 Mon Sep 17 00:00:00 2001
+From 530b9f4a9877371ee7979b6c7e5736f07a88dbc5 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Sat, 25 Jul 2020 17:19:53 +0200
 Date: Sat, 25 Jul 2020 17:19:53 +0200
 Subject: [PATCH] i2c: acpi: Implement RawBytes read access
 Subject: [PATCH] i2c: acpi: Implement RawBytes read access
@@ -110,7 +110,7 @@ index 4dd777cc0c89..b2338618163a 100644
 -- 
 -- 
 2.39.1
 2.39.1
 
 
-From 509a5fbfc31b5493b852b1733cf4e10f1d868e34 Mon Sep 17 00:00:00 2001
+From 289d008855c4a025e3a38a79f540417421b2b4fc Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Sat, 13 Feb 2021 16:41:18 +0100
 Date: Sat, 13 Feb 2021 16:41:18 +0100
 Subject: [PATCH] platform/surface: Add driver for Surface Book 1 dGPU switch
 Subject: [PATCH] platform/surface: Add driver for Surface Book 1 dGPU switch

+ 2 - 2
patches/6.1/0007-surface-button.patch

@@ -1,4 +1,4 @@
-From c624d3beb3b35ff81f7039743e0327adf244c6a3 Mon Sep 17 00:00:00 2001
+From 6c110e9561690e917329edf70cfb3cbdb821061b Mon Sep 17 00:00:00 2001
 From: Sachi King <nakato@nakato.io>
 From: Sachi King <nakato@nakato.io>
 Date: Tue, 5 Oct 2021 00:05:09 +1100
 Date: Tue, 5 Oct 2021 00:05:09 +1100
 Subject: [PATCH] Input: soc_button_array - support AMD variant Surface devices
 Subject: [PATCH] Input: soc_button_array - support AMD variant Surface devices
@@ -75,7 +75,7 @@ index 09489380afda..0f02411a60f1 100644
 -- 
 -- 
 2.39.1
 2.39.1
 
 
-From 1e0b7fe3e1b09f1c8833c8e3b2243577e5bd66d2 Mon Sep 17 00:00:00 2001
+From 289c3004aa7582e0c4041fb12d433b277e0955ae Mon Sep 17 00:00:00 2001
 From: Sachi King <nakato@nakato.io>
 From: Sachi King <nakato@nakato.io>
 Date: Tue, 5 Oct 2021 00:22:57 +1100
 Date: Tue, 5 Oct 2021 00:22:57 +1100
 Subject: [PATCH] platform/surface: surfacepro3_button: don't load on amd
 Subject: [PATCH] platform/surface: surfacepro3_button: don't load on amd

+ 2 - 2
patches/6.1/0008-surface-typecover.patch

@@ -1,4 +1,4 @@
-From 8ee33077bf928467ebec5b139729e1091e2a1579 Mon Sep 17 00:00:00 2001
+From 0fea1fb65ab4117880dc921c3987c69b73d2e3bb Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= <verdre@v0yd.nl>
 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= <verdre@v0yd.nl>
 Date: Thu, 5 Nov 2020 13:09:45 +0100
 Date: Thu, 5 Nov 2020 13:09:45 +0100
 Subject: [PATCH] hid/multitouch: Turn off Type Cover keyboard backlight when
 Subject: [PATCH] hid/multitouch: Turn off Type Cover keyboard backlight when
@@ -231,7 +231,7 @@ index 372cbdd223e0..fe849df6a948 100644
 -- 
 -- 
 2.39.1
 2.39.1
 
 
-From 752f2f89096ba2555c3123d388f076ab8054110e Mon Sep 17 00:00:00 2001
+From b9590f3c749aa5b5ef0af36a03d653cc0a3493c4 Mon Sep 17 00:00:00 2001
 From: PJungkamp <p.jungkamp@gmail.com>
 From: PJungkamp <p.jungkamp@gmail.com>
 Date: Fri, 25 Feb 2022 12:04:25 +0100
 Date: Fri, 25 Feb 2022 12:04:25 +0100
 Subject: [PATCH] hid/multitouch: Add support for surface pro type cover tablet
 Subject: [PATCH] hid/multitouch: Add support for surface pro type cover tablet

+ 7 - 7
patches/6.1/0009-cameras.patch

@@ -1,4 +1,4 @@
-From 3b3d5bc599a2d574cbbea9bd9441242d94334127 Mon Sep 17 00:00:00 2001
+From bab23929e82b78566d2fdac13616155f8fb42538 Mon Sep 17 00:00:00 2001
 From: Hans de Goede <hdegoede@redhat.com>
 From: Hans de Goede <hdegoede@redhat.com>
 Date: Sun, 10 Oct 2021 20:56:57 +0200
 Date: Sun, 10 Oct 2021 20:56:57 +0200
 Subject: [PATCH] ACPI: delay enumeration of devices with a _DEP pointing to an
 Subject: [PATCH] ACPI: delay enumeration of devices with a _DEP pointing to an
@@ -74,7 +74,7 @@ index dbfa58e799e2..ccbd3f8b523e 100644
 -- 
 -- 
 2.39.1
 2.39.1
 
 
-From 75a1c8fad69de12e2d6fe05401ea02413c02bb15 Mon Sep 17 00:00:00 2001
+From f4c96c247fb7d0c853d7ff996e673cfba4423891 Mon Sep 17 00:00:00 2001
 From: zouxiaoh <xiaohong.zou@intel.com>
 From: zouxiaoh <xiaohong.zou@intel.com>
 Date: Fri, 25 Jun 2021 08:52:59 +0800
 Date: Fri, 25 Jun 2021 08:52:59 +0800
 Subject: [PATCH] iommu: intel-ipu: use IOMMU passthrough mode for Intel IPUs
 Subject: [PATCH] iommu: intel-ipu: use IOMMU passthrough mode for Intel IPUs
@@ -191,7 +191,7 @@ index 408c321b929a..6e58effbe12b 100644
 -- 
 -- 
 2.39.1
 2.39.1
 
 
-From 87759669409640b92e2d66b1c6644d205d80d9ca Mon Sep 17 00:00:00 2001
+From f89ff4f5168eadf316680bc1b392f8556e4e1576 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Sun, 10 Oct 2021 20:57:02 +0200
 Date: Sun, 10 Oct 2021 20:57:02 +0200
 Subject: [PATCH] platform/x86: int3472: Enable I2c daisy chain
 Subject: [PATCH] platform/x86: int3472: Enable I2c daisy chain
@@ -228,7 +228,7 @@ index 5b8d1a9620a5..6a0ff035cf20 100644
 -- 
 -- 
 2.39.1
 2.39.1
 
 
-From 2af8c34fdf6b8686341b269082ac53c65869fcf5 Mon Sep 17 00:00:00 2001
+From af9dd99da0373d9002e94583832ecaf416e86016 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Thu, 28 Oct 2021 21:55:16 +0100
 Date: Thu, 28 Oct 2021 21:55:16 +0100
 Subject: [PATCH] media: i2c: Add driver for DW9719 VCM
 Subject: [PATCH] media: i2c: Add driver for DW9719 VCM
@@ -732,7 +732,7 @@ index 000000000000..180b04d2a6b3
 -- 
 -- 
 2.39.1
 2.39.1
 
 
-From c809a70d80cd54972431868f3a4f24332574ea92 Mon Sep 17 00:00:00 2001
+From 9cda3dd05371ba1b2fec7ccf28784dea5f9851bb Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Wed, 4 May 2022 23:21:45 +0100
 Date: Wed, 4 May 2022 23:21:45 +0100
 Subject: [PATCH] media: ipu3-cio2: Move functionality from .complete() to
 Subject: [PATCH] media: ipu3-cio2: Move functionality from .complete() to
@@ -847,7 +847,7 @@ index 390bd5ea3472..76339fb842bf 100644
 -- 
 -- 
 2.39.1
 2.39.1
 
 
-From 4850a7dba77284e47ef1d3cdb0da237ff61c86d2 Mon Sep 17 00:00:00 2001
+From f0db2c63da4fd2cdbf63a19c16f8f7935518fcdf Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Thu, 2 Jun 2022 22:15:56 +0100
 Date: Thu, 2 Jun 2022 22:15:56 +0100
 Subject: [PATCH] media: ipu3-cio2: Re-add .complete() to ipu3-cio2
 Subject: [PATCH] media: ipu3-cio2: Re-add .complete() to ipu3-cio2
@@ -890,7 +890,7 @@ index 76339fb842bf..eb7aa269ec2b 100644
 -- 
 -- 
 2.39.1
 2.39.1
 
 
-From 6dcadafc4dda4a5cd0549170fd066485711cc778 Mon Sep 17 00:00:00 2001
+From 4770fef6949ae8bebdce271ce33f0269ba4c13a1 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Fri, 15 Jul 2022 23:48:00 +0200
 Date: Fri, 15 Jul 2022 23:48:00 +0200
 Subject: [PATCH] drivers/media/i2c: Fix DW9719 dependencies
 Subject: [PATCH] drivers/media/i2c: Fix DW9719 dependencies

+ 2 - 2
patches/6.1/0010-amd-gpio.patch

@@ -1,4 +1,4 @@
-From b33468d1241a2c99ebf0e85f18504dcea8922054 Mon Sep 17 00:00:00 2001
+From 74c8d421521a5a1699b479cdcab3c58432b776dc Mon Sep 17 00:00:00 2001
 From: Sachi King <nakato@nakato.io>
 From: Sachi King <nakato@nakato.io>
 Date: Sat, 29 May 2021 17:47:38 +1000
 Date: Sat, 29 May 2021 17:47:38 +1000
 Subject: [PATCH] ACPI: Add quirk for Surface Laptop 4 AMD missing irq 7
 Subject: [PATCH] ACPI: Add quirk for Surface Laptop 4 AMD missing irq 7
@@ -65,7 +65,7 @@ index 907cc98b1938..0116d27b29ea 100644
 -- 
 -- 
 2.39.1
 2.39.1
 
 
-From b61c1aae91104e9a1a4eb0da6cc2830e612979e8 Mon Sep 17 00:00:00 2001
+From 0911f1d9e188e47e57819f667320cd865baef420 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Thu, 3 Jun 2021 14:04:26 +0200
 Date: Thu, 3 Jun 2021 14:04:26 +0200
 Subject: [PATCH] ACPI: Add AMD 13" Surface Laptop 4 model to irq 7 override
 Subject: [PATCH] ACPI: Add AMD 13" Surface Laptop 4 model to irq 7 override

+ 1 - 1
patches/6.1/0011-rtc.patch

@@ -1,4 +1,4 @@
-From a3547b23b77a3069fd6eb4cc7444f48a71eb3405 Mon Sep 17 00:00:00 2001
+From a5f2e7f9d7b7f6e831e229558f6fd39a6d82cf52 Mon Sep 17 00:00:00 2001
 From: "Bart Groeneveld | GPX Solutions B.V" <bart@gpxbv.nl>
 From: "Bart Groeneveld | GPX Solutions B.V" <bart@gpxbv.nl>
 Date: Mon, 5 Dec 2022 16:08:46 +0100
 Date: Mon, 5 Dec 2022 16:08:46 +0100
 Subject: [PATCH] acpi: allow usage of acpi_tad on HW-reduced platforms
 Subject: [PATCH] acpi: allow usage of acpi_tad on HW-reduced platforms