Jelajahi Sumber

Update v5.11 patches

Changes:
 - SAM:
   - Add support for Surface Pro 7+
   - Minor updates and fixes.

 - IPTS:
   - Send commands during shutdown again, this is needed on some devices
     and readds the dependency on the MEI bus patch
   - Flush buffers during shutdown, to prevent a timeout from CLEAR_MEM_WINDOW
   - Added initial support for setting gen7 devices into multitouch

 - Add firmware file override for ath10k wifi driver.

Links:
 - kernel: https://github.com/linux-surface/kernel/commit/b3152dc5593c5ecf2b5f82600f3b99a436c72cc5
 - SAM: https://github.com/linux-surface/surface-aggregator-module/commit/a8b786bd6f5c36b93f4b4bbeac7f55bfdf170e03
 - IPTS: https://github.com/linux-surface/intel-precise-touch/commit/90de2d6e75147d349b34719545e8be75471730a6
Maximilian Luz 4 tahun lalu
induk
melakukan
a7dcf15133

+ 1 - 1
patches/5.11/0001-surface3-oemb.patch

@@ -1,4 +1,4 @@
-From be52a2ec3db3f16d7408b40fdaa17b8d066725b3 Mon Sep 17 00:00:00 2001
+From e9ccabbc550117695c61332c352e8d7b56753c0c Mon Sep 17 00:00:00 2001
 From: Tsuchiya Yuto <kitakar@gmail.com>
 From: Tsuchiya Yuto <kitakar@gmail.com>
 Date: Sun, 18 Oct 2020 16:42:44 +0900
 Date: Sun, 18 Oct 2020 16:42:44 +0900
 Subject: [PATCH] (surface3-oemb) add DMI matches for Surface 3 with broken DMI
 Subject: [PATCH] (surface3-oemb) add DMI matches for Surface 3 with broken DMI

+ 10 - 10
patches/5.11/0002-wifi.patch

@@ -1,4 +1,4 @@
-From b639c7ba32929ad309783a293029f831e0e4f1e2 Mon Sep 17 00:00:00 2001
+From ce8e4eee82fee52fb1531ba7c1c6f4a204605baf Mon Sep 17 00:00:00 2001
 From: Tsuchiya Yuto <kitakar@gmail.com>
 From: Tsuchiya Yuto <kitakar@gmail.com>
 Date: Mon, 28 Sep 2020 17:46:49 +0900
 Date: Mon, 28 Sep 2020 17:46:49 +0900
 Subject: [PATCH] mwifiex: pcie: add DMI-based quirk impl for Surface devices
 Subject: [PATCH] mwifiex: pcie: add DMI-based quirk impl for Surface devices
@@ -206,7 +206,7 @@ index 000000000000..5326ae7e5671
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From e996d2b5ad3ee4b2e6bcbb9483be5f0a67c4765f Mon Sep 17 00:00:00 2001
+From c9806809f41fcc75c4d249558e04433ee78edc30 Mon Sep 17 00:00:00 2001
 From: Tsuchiya Yuto <kitakar@gmail.com>
 From: Tsuchiya Yuto <kitakar@gmail.com>
 Date: Tue, 29 Sep 2020 17:25:22 +0900
 Date: Tue, 29 Sep 2020 17:25:22 +0900
 Subject: [PATCH] mwifiex: pcie: add reset_d3cold quirk for Surface gen4+
 Subject: [PATCH] mwifiex: pcie: add reset_d3cold quirk for Surface gen4+
@@ -407,7 +407,7 @@ index 5326ae7e5671..8b9dcb5070d8 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 85d61cb36f4e9fb4891b5f9cfe099bb9075c742f Mon Sep 17 00:00:00 2001
+From 478260a1e225edee0564f910fd50092355d8cdd3 Mon Sep 17 00:00:00 2001
 From: Tsuchiya Yuto <kitakar@gmail.com>
 From: Tsuchiya Yuto <kitakar@gmail.com>
 Date: Tue, 29 Sep 2020 17:32:22 +0900
 Date: Tue, 29 Sep 2020 17:32:22 +0900
 Subject: [PATCH] mwifiex: pcie: add reset_wsid quirk for Surface 3
 Subject: [PATCH] mwifiex: pcie: add reset_wsid quirk for Surface 3
@@ -586,7 +586,7 @@ index 8b9dcb5070d8..3ef7440418e3 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 5aacb771524eb91e98b7d36107936a82f7060103 Mon Sep 17 00:00:00 2001
+From 6f0697a2d9cf1b8513471d8f8eda3befd0235793 Mon Sep 17 00:00:00 2001
 From: Tsuchiya Yuto <kitakar@gmail.com>
 From: Tsuchiya Yuto <kitakar@gmail.com>
 Date: Wed, 30 Sep 2020 18:08:24 +0900
 Date: Wed, 30 Sep 2020 18:08:24 +0900
 Subject: [PATCH] mwifiex: pcie: (OEMB) add quirk for Surface 3 with broken DMI
 Subject: [PATCH] mwifiex: pcie: (OEMB) add quirk for Surface 3 with broken DMI
@@ -648,7 +648,7 @@ index f0a6fa0a7ae5..34dcd84f02a6 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From e929da72221262907056171eed43956850d4490c Mon Sep 17 00:00:00 2001
+From 93addb19794e6eb4cfcda6602038b595f0e46242 Mon Sep 17 00:00:00 2001
 From: Tsuchiya Yuto <kitakar@gmail.com>
 From: Tsuchiya Yuto <kitakar@gmail.com>
 Date: Thu, 24 Sep 2020 01:56:34 +0900
 Date: Thu, 24 Sep 2020 01:56:34 +0900
 Subject: [PATCH] mwifiex: pcie: use shutdown_sw()/reinit_sw() on
 Subject: [PATCH] mwifiex: pcie: use shutdown_sw()/reinit_sw() on
@@ -767,7 +767,7 @@ index bf9ef4ede3f1..30a602a18f9d 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 7a3800eb38818462b06617629d5d797f3be481c7 Mon Sep 17 00:00:00 2001
+From 619adb8c8d0277c326a8f70441a4818b3077ca4b Mon Sep 17 00:00:00 2001
 From: Tsuchiya Yuto <kitakar@gmail.com>
 From: Tsuchiya Yuto <kitakar@gmail.com>
 Date: Mon, 24 Aug 2020 17:11:35 +0900
 Date: Mon, 24 Aug 2020 17:11:35 +0900
 Subject: [PATCH] mwifiex: pcie: add enable_device_dump module parameter
 Subject: [PATCH] mwifiex: pcie: add enable_device_dump module parameter
@@ -816,7 +816,7 @@ index 30a602a18f9d..113636355dec 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 90a16cfa6779902faa82b5b458cd03bda6112c98 Mon Sep 17 00:00:00 2001
+From 3a8c34e479f994373b4fd38c68962deb76aee6c7 Mon Sep 17 00:00:00 2001
 From: Tsuchiya Yuto <kitakar@gmail.com>
 From: Tsuchiya Yuto <kitakar@gmail.com>
 Date: Sun, 4 Oct 2020 00:11:49 +0900
 Date: Sun, 4 Oct 2020 00:11:49 +0900
 Subject: [PATCH] mwifiex: pcie: disable bridge_d3 for Surface gen4+
 Subject: [PATCH] mwifiex: pcie: disable bridge_d3 for Surface gen4+
@@ -971,7 +971,7 @@ index 3ef7440418e3..a95ebac06e13 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 1b8dd96c2bd602eb6874fe3cff321a382fbd5533 Mon Sep 17 00:00:00 2001
+From 091be09b019eda77ca544bb13a5481ebc6a7c9a1 Mon Sep 17 00:00:00 2001
 From: Tsuchiya Yuto <kitakar@gmail.com>
 From: Tsuchiya Yuto <kitakar@gmail.com>
 Date: Sun, 4 Oct 2020 00:25:48 +0900
 Date: Sun, 4 Oct 2020 00:25:48 +0900
 Subject: [PATCH] mwifiex: add allow_ps_mode module parameter
 Subject: [PATCH] mwifiex: add allow_ps_mode module parameter
@@ -1033,7 +1033,7 @@ index a6b9dc6700b1..943bc1e8ceae 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From ef208c596398830c5f7aaa232de061fe2b538dfd Mon Sep 17 00:00:00 2001
+From 812dbb8f06dd6c9f9923e2fef13d7ff93dbeb7c3 Mon Sep 17 00:00:00 2001
 From: Tsuchiya Yuto <kitakar@gmail.com>
 From: Tsuchiya Yuto <kitakar@gmail.com>
 Date: Sun, 4 Oct 2020 00:38:48 +0900
 Date: Sun, 4 Oct 2020 00:38:48 +0900
 Subject: [PATCH] mwifiex: print message when changing ps_mode
 Subject: [PATCH] mwifiex: print message when changing ps_mode
@@ -1068,7 +1068,7 @@ index 943bc1e8ceae..a2eb8df8d385 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 0e1fc8f028817f9682711d21be5c703a7ea6fddc Mon Sep 17 00:00:00 2001
+From e6fc5f004273fe3f5dc71e47d839e24c67ff0187 Mon Sep 17 00:00:00 2001
 From: Tsuchiya Yuto <kitakar@gmail.com>
 From: Tsuchiya Yuto <kitakar@gmail.com>
 Date: Sun, 4 Oct 2020 00:59:37 +0900
 Date: Sun, 4 Oct 2020 00:59:37 +0900
 Subject: [PATCH] mwifiex: disable ps_mode explicitly by default instead
 Subject: [PATCH] mwifiex: disable ps_mode explicitly by default instead

+ 215 - 42
patches/5.11/0003-ipts.patch

@@ -1,4 +1,4 @@
-From 886d61e91ee345da44d3c0a4ad655fe4fb6d8519 Mon Sep 17 00:00:00 2001
+From 59cd8351a53682899325c43daaff7c6a314f4ffb Mon Sep 17 00:00:00 2001
 From: Dorian Stoll <dorian.stoll@tmsp.io>
 From: Dorian Stoll <dorian.stoll@tmsp.io>
 Date: Thu, 30 Jul 2020 13:21:53 +0200
 Date: Thu, 30 Jul 2020 13:21:53 +0200
 Subject: [PATCH] misc: mei: Add missing IPTS device IDs
 Subject: [PATCH] misc: mei: Add missing IPTS device IDs
@@ -10,7 +10,7 @@ Patchset: ipts
  2 files changed, 2 insertions(+)
  2 files changed, 2 insertions(+)
 
 
 diff --git a/drivers/misc/mei/hw-me-regs.h b/drivers/misc/mei/hw-me-regs.h
 diff --git a/drivers/misc/mei/hw-me-regs.h b/drivers/misc/mei/hw-me-regs.h
-index 9cf8d8f60cfe..ca2d4faff6a2 100644
+index 14be76d4c2e6..6cfdbedd9b13 100644
 --- a/drivers/misc/mei/hw-me-regs.h
 --- a/drivers/misc/mei/hw-me-regs.h
 +++ b/drivers/misc/mei/hw-me-regs.h
 +++ b/drivers/misc/mei/hw-me-regs.h
 @@ -92,6 +92,7 @@
 @@ -92,6 +92,7 @@
@@ -22,7 +22,7 @@ index 9cf8d8f60cfe..ca2d4faff6a2 100644
  #define MEI_DEV_ID_JSP_N      0x4DE0  /* Jasper Lake Point N */
  #define MEI_DEV_ID_JSP_N      0x4DE0  /* Jasper Lake Point N */
  
  
 diff --git a/drivers/misc/mei/pci-me.c b/drivers/misc/mei/pci-me.c
 diff --git a/drivers/misc/mei/pci-me.c b/drivers/misc/mei/pci-me.c
-index 1de9ef7a272b..e12484840f88 100644
+index a7e179626b63..fdcc0eedc49f 100644
 --- a/drivers/misc/mei/pci-me.c
 --- a/drivers/misc/mei/pci-me.c
 +++ b/drivers/misc/mei/pci-me.c
 +++ b/drivers/misc/mei/pci-me.c
 @@ -96,6 +96,7 @@ static const struct pci_device_id mei_me_pci_tbl[] = {
 @@ -96,6 +96,7 @@ static const struct pci_device_id mei_me_pci_tbl[] = {
@@ -36,7 +36,36 @@ index 1de9ef7a272b..e12484840f88 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 92d426c6bb955e76e632652e4603e4fb392f4465 Mon Sep 17 00:00:00 2001
+From fefc86d977d0ac1bf0992eca084325c5cc55742f Mon Sep 17 00:00:00 2001
+From: Dorian Stoll <dorian.stoll@tmsp.io>
+Date: Thu, 25 Feb 2021 09:37:47 +0100
+Subject: [PATCH] misc: mei: Remove client devices before shutting down bus
+
+Patchset: ipts
+---
+ drivers/misc/mei/init.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/misc/mei/init.c b/drivers/misc/mei/init.c
+index bcee77768b91..21ed765003e1 100644
+--- a/drivers/misc/mei/init.c
++++ b/drivers/misc/mei/init.c
+@@ -302,10 +302,10 @@ void mei_stop(struct mei_device *dev)
+ {
+ 	dev_dbg(dev->dev, "stopping the device.\n");
+ 
++	mei_cl_bus_remove_devices(dev);
+ 	mutex_lock(&dev->device_lock);
+ 	mei_set_devstate(dev, MEI_DEV_POWER_DOWN);
+ 	mutex_unlock(&dev->device_lock);
+-	mei_cl_bus_remove_devices(dev);
+ 
+ 	mei_cancel_work(dev);
+ 
+-- 
+2.30.1
+
+From 5616edbf3d4709ea3a44e4126981a763d56984c1 Mon Sep 17 00:00:00 2001
 From: Dorian Stoll <dorian.stoll@tmsp.io>
 From: Dorian Stoll <dorian.stoll@tmsp.io>
 Date: Thu, 6 Aug 2020 11:20:41 +0200
 Date: Thu, 6 Aug 2020 11:20:41 +0200
 Subject: [PATCH] misc: Add support for Intel Precise Touch & Stylus
 Subject: [PATCH] misc: Add support for Intel Precise Touch & Stylus
@@ -50,18 +79,18 @@ Patchset: ipts
  drivers/misc/Makefile         |   1 +
  drivers/misc/Makefile         |   1 +
  drivers/misc/ipts/Kconfig     |  17 ++
  drivers/misc/ipts/Kconfig     |  17 ++
  drivers/misc/ipts/Makefile    |  12 ++
  drivers/misc/ipts/Makefile    |  12 ++
- drivers/misc/ipts/context.h   |  47 ++++++
- drivers/misc/ipts/control.c   |  76 +++++++++
- drivers/misc/ipts/control.h   |  22 +++
- drivers/misc/ipts/mei.c       | 118 ++++++++++++++
- drivers/misc/ipts/protocol.h  | 284 ++++++++++++++++++++++++++++++++++
- drivers/misc/ipts/receiver.c  | 188 ++++++++++++++++++++++
+ drivers/misc/ipts/context.h   |  47 +++++
+ drivers/misc/ipts/control.c   | 113 +++++++++++
+ drivers/misc/ipts/control.h   |  24 +++
+ drivers/misc/ipts/mei.c       | 127 +++++++++++++
+ drivers/misc/ipts/protocol.h  | 347 ++++++++++++++++++++++++++++++++++
+ drivers/misc/ipts/receiver.c  | 224 ++++++++++++++++++++++
  drivers/misc/ipts/receiver.h  |  16 ++
  drivers/misc/ipts/receiver.h  |  16 ++
- drivers/misc/ipts/resources.c | 128 +++++++++++++++
+ drivers/misc/ipts/resources.c | 128 +++++++++++++
  drivers/misc/ipts/resources.h |  17 ++
  drivers/misc/ipts/resources.h |  17 ++
- drivers/misc/ipts/uapi.c      | 211 +++++++++++++++++++++++++
- drivers/misc/ipts/uapi.h      |  47 ++++++
- 15 files changed, 1185 insertions(+)
+ drivers/misc/ipts/uapi.c      | 208 ++++++++++++++++++++
+ drivers/misc/ipts/uapi.h      |  47 +++++
+ 15 files changed, 1329 insertions(+)
  create mode 100644 drivers/misc/ipts/Kconfig
  create mode 100644 drivers/misc/ipts/Kconfig
  create mode 100644 drivers/misc/ipts/Makefile
  create mode 100644 drivers/misc/ipts/Makefile
  create mode 100644 drivers/misc/ipts/context.h
  create mode 100644 drivers/misc/ipts/context.h
@@ -191,10 +220,10 @@ index 000000000000..f4b06a2d3f72
 +#endif /* _IPTS_CONTEXT_H_ */
 +#endif /* _IPTS_CONTEXT_H_ */
 diff --git a/drivers/misc/ipts/control.c b/drivers/misc/ipts/control.c
 diff --git a/drivers/misc/ipts/control.c b/drivers/misc/ipts/control.c
 new file mode 100644
 new file mode 100644
-index 000000000000..24d3d19a667a
+index 000000000000..a1d1f97a13d7
 --- /dev/null
 --- /dev/null
 +++ b/drivers/misc/ipts/control.c
 +++ b/drivers/misc/ipts/control.c
-@@ -0,0 +1,76 @@
+@@ -0,0 +1,113 @@
 +// SPDX-License-Identifier: GPL-2.0-or-later
 +// SPDX-License-Identifier: GPL-2.0-or-later
 +/*
 +/*
 + * Copyright (c) 2016 Intel Corporation
 + * Copyright (c) 2016 Intel Corporation
@@ -223,13 +252,47 @@ index 000000000000..24d3d19a667a
 +		memcpy(&cmd.payload, payload, size);
 +		memcpy(&cmd.payload, payload, size);
 +
 +
 +	ret = mei_cldev_send(ipts->cldev, (u8 *)&cmd, sizeof(cmd.code) + size);
 +	ret = mei_cldev_send(ipts->cldev, (u8 *)&cmd, sizeof(cmd.code) + size);
-+	if (ret >= 0 || ret == -EINTR)
++	if (ret >= 0)
 +		return 0;
 +		return 0;
 +
 +
-+	dev_err(ipts->dev, "Error while sending: 0x%X:%d\n", code, ret);
++	/*
++	 * During shutdown the device might get pulled away from below our feet.
++	 * Dont log an error in this case, because it will confuse people.
++	 */
++	if (ret != -ENODEV || ipts->status != IPTS_HOST_STATUS_STOPPING)
++		dev_err(ipts->dev, "Error while sending: 0x%X:%d\n", code, ret);
++
 +	return ret;
 +	return ret;
 +}
 +}
 +
 +
++int ipts_control_send_feedback(struct ipts_context *ipts, u32 buffer)
++{
++	struct ipts_feedback_cmd cmd;
++
++	memset(&cmd, 0, sizeof(struct ipts_feedback_cmd));
++	cmd.buffer = buffer;
++
++	return ipts_control_send(ipts, IPTS_CMD_FEEDBACK, &cmd,
++				 sizeof(struct ipts_feedback_cmd));
++}
++
++int ipts_control_set_feature(struct ipts_context *ipts, u8 report, u8 value)
++{
++	struct ipts_feedback_buffer *feedback;
++
++	memset(ipts->host2me.address, 0, ipts->device_info.feedback_size);
++	feedback = (struct ipts_feedback_buffer *)ipts->host2me.address;
++
++	feedback->cmd_type = IPTS_FEEDBACK_CMD_TYPE_NONE;
++	feedback->data_type = IPTS_FEEDBACK_DATA_TYPE_SET_FEATURES;
++	feedback->buffer = IPTS_HOST2ME_BUFFER;
++	feedback->size = 2;
++	feedback->payload[0] = report;
++	feedback->payload[1] = value;
++
++	return ipts_control_send_feedback(ipts, IPTS_HOST2ME_BUFFER);
++}
++
 +int ipts_control_start(struct ipts_context *ipts)
 +int ipts_control_start(struct ipts_context *ipts)
 +{
 +{
 +	if (ipts->status != IPTS_HOST_STATUS_STOPPED)
 +	if (ipts->status != IPTS_HOST_STATUS_STOPPED)
@@ -245,6 +308,8 @@ index 000000000000..24d3d19a667a
 +
 +
 +int ipts_control_stop(struct ipts_context *ipts)
 +int ipts_control_stop(struct ipts_context *ipts)
 +{
 +{
++	int ret;
++
 +	if (ipts->status == IPTS_HOST_STATUS_STOPPING)
 +	if (ipts->status == IPTS_HOST_STATUS_STOPPING)
 +		return -EBUSY;
 +		return -EBUSY;
 +
 +
@@ -257,10 +322,11 @@ index 000000000000..24d3d19a667a
 +	ipts_uapi_unlink();
 +	ipts_uapi_unlink();
 +	ipts_resources_free(ipts);
 +	ipts_resources_free(ipts);
 +
 +
-+	if (!mei_cldev_enabled(ipts->cldev))
-+		return 0;
++	ret = ipts_control_send_feedback(ipts, 0);
++	if (ret == -ENODEV)
++		ipts->status = IPTS_HOST_STATUS_STOPPED;
 +
 +
-+	return ipts_control_send(ipts, IPTS_CMD_CLEAR_MEM_WINDOW, NULL, 0);
++	return ret;
 +}
 +}
 +
 +
 +int ipts_control_restart(struct ipts_context *ipts)
 +int ipts_control_restart(struct ipts_context *ipts)
@@ -273,10 +339,10 @@ index 000000000000..24d3d19a667a
 +}
 +}
 diff --git a/drivers/misc/ipts/control.h b/drivers/misc/ipts/control.h
 diff --git a/drivers/misc/ipts/control.h b/drivers/misc/ipts/control.h
 new file mode 100644
 new file mode 100644
-index 000000000000..4ee0ceb84749
+index 000000000000..2c44e9e0e99f
 --- /dev/null
 --- /dev/null
 +++ b/drivers/misc/ipts/control.h
 +++ b/drivers/misc/ipts/control.h
-@@ -0,0 +1,22 @@
+@@ -0,0 +1,24 @@
 +/* SPDX-License-Identifier: GPL-2.0-or-later */
 +/* SPDX-License-Identifier: GPL-2.0-or-later */
 +/*
 +/*
 + * Copyright (c) 2016 Intel Corporation
 + * Copyright (c) 2016 Intel Corporation
@@ -294,6 +360,8 @@ index 000000000000..4ee0ceb84749
 +
 +
 +int ipts_control_send(struct ipts_context *ipts, u32 cmd, void *payload,
 +int ipts_control_send(struct ipts_context *ipts, u32 cmd, void *payload,
 +		      size_t size);
 +		      size_t size);
++int ipts_control_send_feedback(struct ipts_context *ipts, u32 buffer);
++int ipts_control_set_feature(struct ipts_context *ipts, u8 report, u8 value);
 +int ipts_control_start(struct ipts_context *ipts);
 +int ipts_control_start(struct ipts_context *ipts);
 +int ipts_control_restart(struct ipts_context *ipts);
 +int ipts_control_restart(struct ipts_context *ipts);
 +int ipts_control_stop(struct ipts_context *ipts);
 +int ipts_control_stop(struct ipts_context *ipts);
@@ -301,10 +369,10 @@ index 000000000000..4ee0ceb84749
 +#endif /* _IPTS_CONTROL_H_ */
 +#endif /* _IPTS_CONTROL_H_ */
 diff --git a/drivers/misc/ipts/mei.c b/drivers/misc/ipts/mei.c
 diff --git a/drivers/misc/ipts/mei.c b/drivers/misc/ipts/mei.c
 new file mode 100644
 new file mode 100644
-index 000000000000..2945809d5b46
+index 000000000000..b3805a91383d
 --- /dev/null
 --- /dev/null
 +++ b/drivers/misc/ipts/mei.c
 +++ b/drivers/misc/ipts/mei.c
-@@ -0,0 +1,118 @@
+@@ -0,0 +1,127 @@
 +// SPDX-License-Identifier: GPL-2.0-or-later
 +// SPDX-License-Identifier: GPL-2.0-or-later
 +/*
 +/*
 + * Copyright (c) 2016 Intel Corporation
 + * Copyright (c) 2016 Intel Corporation
@@ -316,8 +384,8 @@ index 000000000000..2945809d5b46
 +#include <linux/delay.h>
 +#include <linux/delay.h>
 +#include <linux/dma-mapping.h>
 +#include <linux/dma-mapping.h>
 +#include <linux/mei_cl_bus.h>
 +#include <linux/mei_cl_bus.h>
-+#include <linux/module.h>
 +#include <linux/mod_devicetable.h>
 +#include <linux/mod_devicetable.h>
++#include <linux/module.h>
 +#include <linux/slab.h>
 +#include <linux/slab.h>
 +
 +
 +#include "context.h"
 +#include "context.h"
@@ -372,10 +440,19 @@ index 000000000000..2945809d5b46
 +
 +
 +static int ipts_mei_remove(struct mei_cl_device *cldev)
 +static int ipts_mei_remove(struct mei_cl_device *cldev)
 +{
 +{
++	int i;
 +	struct ipts_context *ipts = mei_cldev_get_drvdata(cldev);
 +	struct ipts_context *ipts = mei_cldev_get_drvdata(cldev);
 +
 +
-+	mei_cldev_disable(cldev);
 +	ipts_control_stop(ipts);
 +	ipts_control_stop(ipts);
++
++	for (i = 0; i < 20; i++) {
++		if (ipts->status == IPTS_HOST_STATUS_STOPPED)
++			break;
++
++		msleep(25);
++	}
++
++	mei_cldev_disable(cldev);
 +	kfree(ipts);
 +	kfree(ipts);
 +
 +
 +	return 0;
 +	return 0;
@@ -425,10 +502,10 @@ index 000000000000..2945809d5b46
 +module_exit(ipts_mei_exit);
 +module_exit(ipts_mei_exit);
 diff --git a/drivers/misc/ipts/protocol.h b/drivers/misc/ipts/protocol.h
 diff --git a/drivers/misc/ipts/protocol.h b/drivers/misc/ipts/protocol.h
 new file mode 100644
 new file mode 100644
-index 000000000000..381068504d46
+index 000000000000..c3458904a94d
 --- /dev/null
 --- /dev/null
 +++ b/drivers/misc/ipts/protocol.h
 +++ b/drivers/misc/ipts/protocol.h
-@@ -0,0 +1,284 @@
+@@ -0,0 +1,347 @@
 +/* SPDX-License-Identifier: GPL-2.0-or-later */
 +/* SPDX-License-Identifier: GPL-2.0-or-later */
 +/*
 +/*
 + * Copyright (c) 2016 Intel Corporation
 + * Copyright (c) 2016 Intel Corporation
@@ -572,6 +649,11 @@ index 000000000000..381068504d46
 + */
 + */
 +#define IPTS_BUFFERS 16
 +#define IPTS_BUFFERS 16
 +
 +
++/*
++ * The special buffer ID that is used for direct host2me feedback.
++ */
++#define IPTS_HOST2ME_BUFFER IPTS_BUFFERS
++
 +/**
 +/**
 + * enum ipts_mode - Operation mode for IPTS hardware
 + * enum ipts_mode - Operation mode for IPTS hardware
 + * @IPTS_MODE_SINGLETOUCH: Fallback that supports only one finger and no stylus.
 + * @IPTS_MODE_SINGLETOUCH: Fallback that supports only one finger and no stylus.
@@ -649,6 +731,56 @@ index 000000000000..381068504d46
 +} __packed;
 +} __packed;
 +
 +
 +/**
 +/**
++ * enum ipts_feedback_cmd_type - Commands that can be executed on the sensor through feedback.
++ */
++enum ipts_feedback_cmd_type {
++	IPTS_FEEDBACK_CMD_TYPE_NONE = 0,
++	IPTS_FEEDBACK_CMD_TYPE_SOFT_RESET = 1,
++	IPTS_FEEDBACK_CMD_TYPE_GOTO_ARMED = 2,
++	IPTS_FEEDBACK_CMD_TYPE_GOTO_SENSING = 3,
++	IPTS_FEEDBACK_CMD_TYPE_GOTO_SLEEP = 4,
++	IPTS_FEEDBACK_CMD_TYPE_GOTO_DOZE = 5,
++	IPTS_FEEDBACK_CMD_TYPE_HARD_RESET = 6,
++};
++
++/**
++ * enum ipts_feedback_data_type - Describes the data that a feedback buffer contains.
++ * @IPTS_FEEDBACK_DATA_TYPE_VENDOR:        The buffer contains vendor specific feedback.
++ * @IPTS_FEEDBACK_DATA_TYPE_SET_FEATURES:  The buffer contains a HID set features command.
++ * @IPTS_FEEDBACK_DATA_TYPE_GET_FEATURES:  The buffer contains a HID get features command.
++ * @IPTS_FEEDBACK_DATA_TYPE_OUTPUT_REPORT: The buffer contains a HID output report.
++ * @IPTS_FEEDBACK_DATA_TYPE_STORE_DATA:    The buffer contains calibration data for the sensor.
++ */
++enum ipts_feedback_data_type {
++	IPTS_FEEDBACK_DATA_TYPE_VENDOR = 0,
++	IPTS_FEEDBACK_DATA_TYPE_SET_FEATURES = 1,
++	IPTS_FEEDBACK_DATA_TYPE_GET_FEATURES = 2,
++	IPTS_FEEDBACK_DATA_TYPE_OUTPUT_REPORT = 3,
++	IPTS_FEEDBACK_DATA_TYPE_STORE_DATA = 4,
++};
++
++/**
++ * struct ipts_feedback_buffer - The contents of an IPTS feedback buffer.
++ * @cmd_type: A command that should be executed on the sensor.
++ * @size: The size of the payload to be written.
++ * @buffer: The ID of the buffer that contains this feedback data.
++ * @protocol: The protocol version of the EDS.
++ * @data_type: The type of payload that the buffer contains.
++ * @spi_offset: The offset at which to write the payload data.
++ * @payload: Payload for the feedback command, or 0 if no payload is sent.
++ */
++struct ipts_feedback_buffer {
++	enum ipts_feedback_cmd_type cmd_type;
++	u32 size;
++	u32 buffer;
++	u32 protocol;
++	enum ipts_feedback_data_type data_type;
++	u32 spi_offset;
++	u8 reserved[40];
++	u8 payload[];
++} __packed;
++
++/**
 + * enum ipts_reset_type - Possible ways of resetting the touch sensor
 + * enum ipts_reset_type - Possible ways of resetting the touch sensor
 + * @IPTS_RESET_TYPE_HARD: Perform hardware reset using GPIO pin.
 + * @IPTS_RESET_TYPE_HARD: Perform hardware reset using GPIO pin.
 + * @IPTS_RESET_TYPE_SOFT: Perform software reset using SPI interface.
 + * @IPTS_RESET_TYPE_SOFT: Perform software reset using SPI interface.
@@ -701,6 +833,14 @@ index 000000000000..381068504d46
 +} __packed;
 +} __packed;
 +
 +
 +/**
 +/**
++ * struct ipts_feedback_rsp - Payload for the FEEDBACK response.
++ * @buffer: The buffer that has received feedback.
++ */
++struct ipts_feedback_rsp {
++	u32 buffer;
++} __packed;
++
++/**
 + * struct ipts_response - A message sent from the ME to the host.
 + * struct ipts_response - A message sent from the ME to the host.
 + * @code:    The message code describing the response. (see IPTS_RSP_*)
 + * @code:    The message code describing the response. (see IPTS_RSP_*)
 + * @status:  The status code returned by the command.
 + * @status:  The status code returned by the command.
@@ -715,10 +855,10 @@ index 000000000000..381068504d46
 +#endif /* _IPTS_PROTOCOL_H_ */
 +#endif /* _IPTS_PROTOCOL_H_ */
 diff --git a/drivers/misc/ipts/receiver.c b/drivers/misc/ipts/receiver.c
 diff --git a/drivers/misc/ipts/receiver.c b/drivers/misc/ipts/receiver.c
 new file mode 100644
 new file mode 100644
-index 000000000000..916ba3ec211b
+index 000000000000..23dca13c2139
 --- /dev/null
 --- /dev/null
 +++ b/drivers/misc/ipts/receiver.c
 +++ b/drivers/misc/ipts/receiver.c
-@@ -0,0 +1,188 @@
+@@ -0,0 +1,224 @@
 +// SPDX-License-Identifier: GPL-2.0-or-later
 +// SPDX-License-Identifier: GPL-2.0-or-later
 +/*
 +/*
 + * Copyright (c) 2016 Intel Corporation
 + * Copyright (c) 2016 Intel Corporation
@@ -728,6 +868,7 @@ index 000000000000..916ba3ec211b
 + */
 + */
 +
 +
 +#include <linux/mei_cl_bus.h>
 +#include <linux/mei_cl_bus.h>
++#include <linux/moduleparam.h>
 +#include <linux/types.h>
 +#include <linux/types.h>
 +
 +
 +#include "context.h"
 +#include "context.h"
@@ -735,6 +876,13 @@ index 000000000000..916ba3ec211b
 +#include "protocol.h"
 +#include "protocol.h"
 +#include "resources.h"
 +#include "resources.h"
 +
 +
++/*
++ * Temporary parameter to guard gen7 multitouch mode.
++ * Remove once gen7 has stable iptsd support.
++ */
++static bool gen7mt;
++module_param(gen7mt, bool, 0644);
++
 +static int ipts_receiver_handle_get_device_info(struct ipts_context *ipts,
 +static int ipts_receiver_handle_get_device_info(struct ipts_context *ipts,
 +						struct ipts_response *rsp)
 +						struct ipts_response *rsp)
 +{
 +{
@@ -795,11 +943,36 @@ index 000000000000..916ba3ec211b
 +
 +
 +static int ipts_receiver_handle_set_mem_window(struct ipts_context *ipts)
 +static int ipts_receiver_handle_set_mem_window(struct ipts_context *ipts)
 +{
 +{
++	int ret;
++
 +	dev_info(ipts->dev, "Device %04hX:%04hX ready\n",
 +	dev_info(ipts->dev, "Device %04hX:%04hX ready\n",
 +		 ipts->device_info.vendor_id, ipts->device_info.device_id);
 +		 ipts->device_info.vendor_id, ipts->device_info.device_id);
 +	ipts->status = IPTS_HOST_STATUS_STARTED;
 +	ipts->status = IPTS_HOST_STATUS_STARTED;
 +
 +
-+	return ipts_control_send(ipts, IPTS_CMD_READY_FOR_DATA, NULL, 0);
++	ret = ipts_control_send(ipts, IPTS_CMD_READY_FOR_DATA, NULL, 0);
++	if (ret)
++		return ret;
++
++	if (!gen7mt)
++		return 0;
++
++	return ipts_control_set_feature(ipts, 0x5, 0x1);
++}
++
++static int ipts_receiver_handle_feedback(struct ipts_context *ipts,
++					 struct ipts_response *rsp)
++{
++	struct ipts_feedback_rsp feedback;
++
++	if (ipts->status != IPTS_HOST_STATUS_STOPPING)
++		return 0;
++
++	memcpy(&feedback, rsp->payload, sizeof(feedback));
++
++	if (feedback.buffer < IPTS_BUFFERS - 1)
++		return ipts_control_send_feedback(ipts, feedback.buffer + 1);
++
++	return ipts_control_send(ipts, IPTS_CMD_CLEAR_MEM_WINDOW, NULL, 0);
 +}
 +}
 +
 +
 +static int ipts_receiver_handle_clear_mem_window(struct ipts_context *ipts)
 +static int ipts_receiver_handle_clear_mem_window(struct ipts_context *ipts)
@@ -873,6 +1046,9 @@ index 000000000000..916ba3ec211b
 +	case IPTS_RSP_SET_MEM_WINDOW:
 +	case IPTS_RSP_SET_MEM_WINDOW:
 +		ret = ipts_receiver_handle_set_mem_window(ipts);
 +		ret = ipts_receiver_handle_set_mem_window(ipts);
 +		break;
 +		break;
++	case IPTS_RSP_FEEDBACK:
++		ret = ipts_receiver_handle_feedback(ipts, rsp);
++		break;
 +	case IPTS_RSP_CLEAR_MEM_WINDOW:
 +	case IPTS_RSP_CLEAR_MEM_WINDOW:
 +		ret = ipts_receiver_handle_clear_mem_window(ipts);
 +		ret = ipts_receiver_handle_clear_mem_window(ipts);
 +		break;
 +		break;
@@ -1088,10 +1264,10 @@ index 000000000000..fdac0eee9156
 +#endif /* _IPTS_RESOURCES_H_ */
 +#endif /* _IPTS_RESOURCES_H_ */
 diff --git a/drivers/misc/ipts/uapi.c b/drivers/misc/ipts/uapi.c
 diff --git a/drivers/misc/ipts/uapi.c b/drivers/misc/ipts/uapi.c
 new file mode 100644
 new file mode 100644
-index 000000000000..8107a027223f
+index 000000000000..598f0710ad64
 --- /dev/null
 --- /dev/null
 +++ b/drivers/misc/ipts/uapi.c
 +++ b/drivers/misc/ipts/uapi.c
-@@ -0,0 +1,211 @@
+@@ -0,0 +1,208 @@
 +// SPDX-License-Identifier: GPL-2.0-or-later
 +// SPDX-License-Identifier: GPL-2.0-or-later
 +/*
 +/*
 + * Copyright (c) 2016 Intel Corporation
 + * Copyright (c) 2016 Intel Corporation
@@ -1101,11 +1277,11 @@ index 000000000000..8107a027223f
 + */
 + */
 +
 +
 +#include <linux/cdev.h>
 +#include <linux/cdev.h>
++#include <linux/delay.h>
 +#include <linux/device.h>
 +#include <linux/device.h>
 +#include <linux/fs.h>
 +#include <linux/fs.h>
-+#include <linux/delay.h>
-+#include <linux/uaccess.h>
 +#include <linux/types.h>
 +#include <linux/types.h>
++#include <linux/uaccess.h>
 +
 +
 +#include "context.h"
 +#include "context.h"
 +#include "control.h"
 +#include "control.h"
@@ -1190,17 +1366,14 @@ index 000000000000..8107a027223f
 +					  struct file *file)
 +					  struct file *file)
 +{
 +{
 +	int ret;
 +	int ret;
-+	struct ipts_feedback_cmd cmd;
++	u32 buffer;
 +
 +
 +	if (!ipts || ipts->status != IPTS_HOST_STATUS_STARTED)
 +	if (!ipts || ipts->status != IPTS_HOST_STATUS_STARTED)
 +		return -ENODEV;
 +		return -ENODEV;
 +
 +
-+	memset(&cmd, 0, sizeof(struct ipts_feedback_cmd));
-+	cmd.buffer = MINOR(file->f_path.dentry->d_inode->i_rdev);
-+
-+	ret = ipts_control_send(ipts, IPTS_CMD_FEEDBACK, &cmd,
-+				sizeof(struct ipts_feedback_cmd));
++	buffer = MINOR(file->f_path.dentry->d_inode->i_rdev);
 +
 +
++	ret = ipts_control_send_feedback(ipts, buffer);
 +	if (ret)
 +	if (ret)
 +		return -EFAULT;
 +		return -EFAULT;
 +
 +

+ 2 - 2
patches/5.11/0004-surface-sam-over-hid.patch

@@ -1,4 +1,4 @@
-From e84ca436738d7fd8781f77e7bbcb813f602dce3c Mon Sep 17 00:00:00 2001
+From 4b5e30fbedddfa4eb0aa76d03c60e884968fe964 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 37c510d9347a..aed579942436 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 79a4b8747237071f0b4b2bda1d57fcfc730fd824 Mon Sep 17 00:00:00 2001
+From 57c502dbc48850cdbae683f2b703e54c3ac26467 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

+ 618 - 44
patches/5.11/0005-surface-sam.patch

@@ -1,4 +1,4 @@
-From e843aba556dfdcc3eb52a59da2581ba07c129264 Mon Sep 17 00:00:00 2001
+From d501d2140e2dc54a5d99988ba98dbfd6444f2bbe Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Mon, 21 Dec 2020 19:39:51 +0100
 Date: Mon, 21 Dec 2020 19:39:51 +0100
 Subject: [PATCH] platform/surface: Add Surface Aggregator subsystem
 Subject: [PATCH] platform/surface: Add Surface Aggregator subsystem
@@ -9160,7 +9160,7 @@ index 000000000000..64276fbfa1d5
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From c27a9fdec42a6256b5a108771c1ccccb4a022129 Mon Sep 17 00:00:00 2001
+From a5b7ae79f792640dc79474da5be422c6e4dd5477 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Mon, 21 Dec 2020 19:39:52 +0100
 Date: Mon, 21 Dec 2020 19:39:52 +0100
 Subject: [PATCH] platform/surface: aggregator: Add control packet allocation
 Subject: [PATCH] platform/surface: aggregator: Add control packet allocation
@@ -9322,7 +9322,7 @@ index 058f111292ca..e8757d03f279 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From dfa18cda7bcd165f010296f86b979d8184c7c424 Mon Sep 17 00:00:00 2001
+From 988a56392c1e49e18ddfd3e185b97d8b280cc4ab Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Mon, 21 Dec 2020 19:39:53 +0100
 Date: Mon, 21 Dec 2020 19:39:53 +0100
 Subject: [PATCH] platform/surface: aggregator: Add event item allocation
 Subject: [PATCH] platform/surface: aggregator: Add event item allocation
@@ -9550,7 +9550,7 @@ index 60d312f71436..37593234fb31 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 30c51ea3b67b30af16a7f79075ed72af3ed64449 Mon Sep 17 00:00:00 2001
+From dbc4ef3bb20b2219f42800683c52807790589050 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Mon, 21 Dec 2020 19:39:54 +0100
 Date: Mon, 21 Dec 2020 19:39:54 +0100
 Subject: [PATCH] platform/surface: aggregator: Add trace points
 Subject: [PATCH] platform/surface: aggregator: Add trace points
@@ -10444,7 +10444,7 @@ index 000000000000..dcca8007d876
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From c71a61eda0fe21590831ace0887ca6714aa9d551 Mon Sep 17 00:00:00 2001
+From 9a6408b60fe57adb7962cabeadc18e914e25815b Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Mon, 21 Dec 2020 19:39:55 +0100
 Date: Mon, 21 Dec 2020 19:39:55 +0100
 Subject: [PATCH] platform/surface: aggregator: Add error injection
 Subject: [PATCH] platform/surface: aggregator: Add error injection
@@ -10953,7 +10953,7 @@ index dcca8007d876..eb332bb53ae4 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 38a8ac1671564ba6cd91fdf7b226289da6e4b86a Mon Sep 17 00:00:00 2001
+From 0ed8048c061dc8066a03efcb18649d313595daaa Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Mon, 21 Dec 2020 19:39:56 +0100
 Date: Mon, 21 Dec 2020 19:39:56 +0100
 Subject: [PATCH] platform/surface: aggregator: Add dedicated bus and device
 Subject: [PATCH] platform/surface: aggregator: Add dedicated bus and device
@@ -12052,7 +12052,7 @@ index fb4827027536..d21d2871387b 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From cef2a8715a849b4416e2c3e8d0ef4a799a9f0c4b Mon Sep 17 00:00:00 2001
+From 942a3345fa7c106a7c21652d613c011a2bee8158 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Mon, 21 Dec 2020 19:39:57 +0100
 Date: Mon, 21 Dec 2020 19:39:57 +0100
 Subject: [PATCH] docs: driver-api: Add Surface Aggregator subsystem
 Subject: [PATCH] docs: driver-api: Add Surface Aggregator subsystem
@@ -13691,7 +13691,7 @@ index 2818a31d79db..c89d831e74e0 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From b1ef35b9076e896c80c2ddc77c694226db1aaee6 Mon Sep 17 00:00:00 2001
+From b18187e91146963b7d8b95614f2e95858dbe66b7 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Mon, 21 Dec 2020 19:39:58 +0100
 Date: Mon, 21 Dec 2020 19:39:58 +0100
 Subject: [PATCH] platform/surface: Add Surface Aggregator user-space interface
 Subject: [PATCH] platform/surface: Add Surface Aggregator user-space interface
@@ -14303,7 +14303,7 @@ index 000000000000..fbcce04abfe9
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From b42609f185ad3142d58ef16df9a62b57fefeef96 Mon Sep 17 00:00:00 2001
+From ffdb38a97b3ed9b99a17954a733491ab144eb1b8 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Mon, 21 Dec 2020 19:39:59 +0100
 Date: Mon, 21 Dec 2020 19:39:59 +0100
 Subject: [PATCH] platform/surface: Add Surface ACPI Notify driver
 Subject: [PATCH] platform/surface: Add Surface ACPI Notify driver
@@ -15418,7 +15418,7 @@ index 000000000000..8e3e86c7d78c
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From c4b99c73cfee54e7cf59c1cf45b4aee78fce2c81 Mon Sep 17 00:00:00 2001
+From d0c9ae12fba197f2b36046a22f6d784a0d2475e0 Mon Sep 17 00:00:00 2001
 From: Colin Ian King <colin.king@canonical.com>
 From: Colin Ian King <colin.king@canonical.com>
 Date: Mon, 11 Jan 2021 14:46:48 +0000
 Date: Mon, 11 Jan 2021 14:46:48 +0000
 Subject: [PATCH] platform/surface: fix potential integer overflow on shift of
 Subject: [PATCH] platform/surface: fix potential integer overflow on shift of
@@ -15456,7 +15456,7 @@ index 8cd67a669c86..ef9c1f8e8336 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From dcda1b902b58d38b65fb1ed95d1657839e657d73 Mon Sep 17 00:00:00 2001
+From 11ffaa764df755d12a14176b203044b7e076fb77 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Mon, 11 Jan 2021 16:48:50 +0100
 Date: Mon, 11 Jan 2021 16:48:50 +0100
 Subject: [PATCH] platform/surface: aggregator_cdev: Fix access of
 Subject: [PATCH] platform/surface: aggregator_cdev: Fix access of
@@ -15496,7 +15496,7 @@ index 340d15b148b9..979340cdd9de 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 023b9d531d3e26d351d0aaed8c785fb2a3434f49 Mon Sep 17 00:00:00 2001
+From 08fcb5aabe345920327295828a343cb21b38266f Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Mon, 11 Jan 2021 16:48:51 +0100
 Date: Mon, 11 Jan 2021 16:48:51 +0100
 Subject: [PATCH] platform/surface: aggregator_cdev: Add comments regarding
 Subject: [PATCH] platform/surface: aggregator_cdev: Add comments regarding
@@ -15565,7 +15565,7 @@ index 979340cdd9de..79e28fab7e40 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 794b4e9ca8d93da88444b48aa486e923f7c1adb4 Mon Sep 17 00:00:00 2001
+From e40f24dbc901fdfa623d1ad48dc189fa0cd2cf05 Mon Sep 17 00:00:00 2001
 From: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
 From: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
 Date: Thu, 14 Jan 2021 09:04:52 +0100
 Date: Thu, 14 Jan 2021 09:04:52 +0100
 Subject: [PATCH] platform/surface: aggregator: fix a kernel-doc markup
 Subject: [PATCH] platform/surface: aggregator: fix a kernel-doc markup
@@ -15600,7 +15600,7 @@ index bb1c862411a2..25db4d638cfa 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 475b311fa4c01f4391de90730daf0d1e718f5ada Mon Sep 17 00:00:00 2001
+From 8a72a107fc7ba9bf27295ab263ae7d218821a861 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Thu, 14 Jan 2021 16:08:26 +0100
 Date: Thu, 14 Jan 2021 16:08:26 +0100
 Subject: [PATCH] platform/surface: aggregator: Fix kernel-doc references
 Subject: [PATCH] platform/surface: aggregator: Fix kernel-doc references
@@ -15637,7 +15637,7 @@ index 25db4d638cfa..52a83a8fcf82 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 9f0cf2d2b5da3a6c3bb040794d295ee99a4ad5b2 Mon Sep 17 00:00:00 2001
+From 2e25eccababb35a7df5e7078af331b1545eb7091 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Tue, 26 Jan 2021 18:22:02 +0100
 Date: Tue, 26 Jan 2021 18:22:02 +0100
 Subject: [PATCH] platform/surface: aggregator: Fix braces in if condition with
 Subject: [PATCH] platform/surface: aggregator: Fix braces in if condition with
@@ -15700,7 +15700,7 @@ index 74f0faaa2b27..583315db8b02 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From c81c70309a61976d024c2cb898bc16fd19686d63 Mon Sep 17 00:00:00 2001
+From a9118a4d20085508588984edc8d93ef3d09c6fd4 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Thu, 11 Feb 2021 13:41:49 +0100
 Date: Thu, 11 Feb 2021 13:41:49 +0100
 Subject: [PATCH] platform/surface: aggregator: Fix access of unaligned value
 Subject: [PATCH] platform/surface: aggregator: Fix access of unaligned value
@@ -15740,7 +15740,7 @@ index 583315db8b02..15d96eac6811 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 245b63acc338f0d5998234bab3c5a0039fe8de85 Mon Sep 17 00:00:00 2001
+From c79e18e307808826e6dce7131c727deb9c25d12c Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Sun, 7 Feb 2021 03:42:45 +0100
 Date: Sun, 7 Feb 2021 03:42:45 +0100
 Subject: [PATCH] platform/surface: Set up Surface Aggregator device registry
 Subject: [PATCH] platform/surface: Set up Surface Aggregator device registry
@@ -16135,7 +16135,7 @@ index 000000000000..a051d941ad96
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 7ffa29669f90c35561bd0b9131b60f6ad56c7981 Mon Sep 17 00:00:00 2001
+From 55068c44b24b551e8db338ebea187adfaaf6a322 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Sun, 7 Feb 2021 04:14:35 +0100
 Date: Sun, 7 Feb 2021 04:14:35 +0100
 Subject: [PATCH] platform/surface: aggregator_registry: Add base device hub
 Subject: [PATCH] platform/surface: aggregator_registry: Add base device hub
@@ -16461,7 +16461,7 @@ index a051d941ad96..6c23d75a044c 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 3ef39d45e162a91ef20d41e4584f22213e838ac7 Mon Sep 17 00:00:00 2001
+From 5091d9c2501775903682f1a155b34e6df2acefaf Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Sun, 7 Feb 2021 04:55:09 +0100
 Date: Sun, 7 Feb 2021 04:55:09 +0100
 Subject: [PATCH] platform/surface: aggregator_registry: Add battery subsystem
 Subject: [PATCH] platform/surface: aggregator_registry: Add battery subsystem
@@ -16547,7 +16547,7 @@ index 6c23d75a044c..cde279692842 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 7e71870e30d8a2c0539f3c3a97b77d7dfcbcbfa4 Mon Sep 17 00:00:00 2001
+From d640cf19b11b6cd362f33e9e2b3f4ee47c3618c4 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Sun, 7 Feb 2021 05:01:08 +0100
 Date: Sun, 7 Feb 2021 05:01:08 +0100
 Subject: [PATCH] platform/surface: aggregator_registry: Add platform profile
 Subject: [PATCH] platform/surface: aggregator_registry: Add platform profile
@@ -16646,7 +16646,7 @@ index cde279692842..33904613dd4b 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 813f8ad53117549bfc1dce60b8700cecb76dff89 Mon Sep 17 00:00:00 2001
+From 9eb068b50213c8d57ff7bb360c3e57a54c2768f5 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Sun, 7 Feb 2021 05:06:41 +0100
 Date: Sun, 7 Feb 2021 05:06:41 +0100
 Subject: [PATCH] platform/surface: aggregator_registry: Add DTX device
 Subject: [PATCH] platform/surface: aggregator_registry: Add DTX device
@@ -16687,7 +16687,7 @@ index 33904613dd4b..dc044d06828b 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 603eba200fad0b5480c15ca0463166f6aee93264 Mon Sep 17 00:00:00 2001
+From b25c456e6bc32c93b667a4c41d225b2af6c09413 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Sun, 7 Feb 2021 05:16:44 +0100
 Date: Sun, 7 Feb 2021 05:16:44 +0100
 Subject: [PATCH] platform/surface: aggregator_registry: Add HID subsystem
 Subject: [PATCH] platform/surface: aggregator_registry: Add HID subsystem
@@ -16780,7 +16780,48 @@ index dc044d06828b..caee90d135c5 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From fe31d5f5e6c75f2c6619b3b0b52d5083eaca78da Mon Sep 17 00:00:00 2001
+From 8786955a1f821d5ee4d13b1c19af2541653f2dfb Mon Sep 17 00:00:00 2001
+From: Maximilian Luz <luzmaximilian@gmail.com>
+Date: Tue, 9 Mar 2021 17:03:15 +0100
+Subject: [PATCH] platform/surface: aggregator_registry: Add support for
+ Surface Pro 7+
+
+The Surface Pro 7+ is essentially a refresh of the Surface Pro 7 with
+updated hardware and a new WSID identifier.
+
+Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
+Patchset: surface-sam
+---
+ drivers/platform/surface/surface_aggregator_registry.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/platform/surface/surface_aggregator_registry.c b/drivers/platform/surface/surface_aggregator_registry.c
+index caee90d135c5..6de74e893d06 100644
+--- a/drivers/platform/surface/surface_aggregator_registry.c
++++ b/drivers/platform/surface/surface_aggregator_registry.c
+@@ -191,7 +191,7 @@ static const struct software_node *ssam_node_group_sp6[] = {
+ 	NULL,
+ };
+ 
+-/* Devices for Surface Pro 7. */
++/* Devices for Surface Pro 7 and Surface Pro 7+. */
+ static const struct software_node *ssam_node_group_sp7[] = {
+ 	&ssam_node_root,
+ 	&ssam_node_bat_ac,
+@@ -521,6 +521,9 @@ static const struct acpi_device_id ssam_platform_hub_match[] = {
+ 	/* Surface Pro 7 */
+ 	{ "MSHW0116", (unsigned long)ssam_node_group_sp7 },
+ 
++	/* Surface Pro 7+ */
++	{ "MSHW0119", (unsigned long)ssam_node_group_sp7 },
++
+ 	/* Surface Book 2 */
+ 	{ "MSHW0107", (unsigned long)ssam_node_group_sb2 },
+ 
+-- 
+2.30.1
+
+From 83ab20b8c641c93335439bccd9e083bc53596fba Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Tue, 9 Feb 2021 02:46:40 +0100
 Date: Tue, 9 Feb 2021 02:46:40 +0100
 Subject: [PATCH] platform/surface: Add DTX driver
 Subject: [PATCH] platform/surface: Add DTX driver
@@ -18271,7 +18312,7 @@ index 000000000000..0833aab0d819
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 5666bacf4fa214ee9b61767660ee796568ec881a Mon Sep 17 00:00:00 2001
+From cbce4b6b86fda90b9120a0943259d790623714ab Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Tue, 9 Feb 2021 02:50:11 +0100
 Date: Tue, 9 Feb 2021 02:50:11 +0100
 Subject: [PATCH] platform/surface: dtx: Add support for native SSAM devices
 Subject: [PATCH] platform/surface: dtx: Add support for native SSAM devices
@@ -18412,7 +18453,7 @@ index a95adc1094aa..4bb5d286bf95 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 21ef9d0ead48bb568c3898df5f5b0d99a21977b8 Mon Sep 17 00:00:00 2001
+From 7acdf3f22691ea81328bd4d3fe80c8c9e8914cc5 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Tue, 9 Feb 2021 02:55:31 +0100
 Date: Tue, 9 Feb 2021 02:55:31 +0100
 Subject: [PATCH] docs: driver-api: Add Surface DTX driver documentation
 Subject: [PATCH] docs: driver-api: Add Surface DTX driver documentation
@@ -19180,7 +19221,7 @@ index 8ea459fc56f4..ba2dfafeb28c 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 1699b3a1c4fadac21f7787d3237eaa636e501a83 Mon Sep 17 00:00:00 2001
+From 1ac0425ccc915648bb5e136f79eff64ae51d8e45 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Thu, 11 Feb 2021 20:02:57 +0100
 Date: Thu, 11 Feb 2021 20:02:57 +0100
 Subject: [PATCH] input: Add bus ID for Surface Aggregator Module
 Subject: [PATCH] input: Add bus ID for Surface Aggregator Module
@@ -19209,7 +19250,7 @@ index 9a61c28ed3ae..3e81ea3d7df2 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From c000bc102bd387084452507a7ce24e01fad471bb Mon Sep 17 00:00:00 2001
+From 28d661771a3edbd8dba2c03b58200021b51b9619 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Thu, 11 Feb 2021 20:08:50 +0100
 Date: Thu, 11 Feb 2021 20:08:50 +0100
 Subject: [PATCH] HID: Add support for Surface Aggregator Module HID transport
 Subject: [PATCH] HID: Add support for Surface Aggregator Module HID transport
@@ -19952,7 +19993,7 @@ index 000000000000..4b1a7b57e035
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From b50a40d767e1cd4479c879599d4996b4191fa61f Mon Sep 17 00:00:00 2001
+From 06b730bfa7ae353acda87086de464c4430dd21f9 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Thu, 11 Feb 2021 20:10:17 +0100
 Date: Thu, 11 Feb 2021 20:10:17 +0100
 Subject: [PATCH] HID: surface-hid: Add support for legacy keyboard interface
 Subject: [PATCH] HID: surface-hid: Add support for legacy keyboard interface
@@ -19974,8 +20015,9 @@ Patchset: surface-sam
 ---
 ---
  drivers/hid/surface-hid/Kconfig       |  14 ++
  drivers/hid/surface-hid/Kconfig       |  14 ++
  drivers/hid/surface-hid/Makefile      |   1 +
  drivers/hid/surface-hid/Makefile      |   1 +
- drivers/hid/surface-hid/surface_kbd.c | 303 ++++++++++++++++++++++++++
- 3 files changed, 318 insertions(+)
+ drivers/hid/surface-hid/surface_hid.c |   7 +-
+ drivers/hid/surface-hid/surface_kbd.c | 300 ++++++++++++++++++++++++++
+ 4 files changed, 317 insertions(+), 5 deletions(-)
  create mode 100644 drivers/hid/surface-hid/surface_kbd.c
  create mode 100644 drivers/hid/surface-hid/surface_kbd.c
 
 
 diff --git a/drivers/hid/surface-hid/Kconfig b/drivers/hid/surface-hid/Kconfig
 diff --git a/drivers/hid/surface-hid/Kconfig b/drivers/hid/surface-hid/Kconfig
@@ -20012,12 +20054,34 @@ index 62fc04632d3d..4ae11cf09b25 100644
  obj-$(CONFIG_SURFACE_HID_CORE)	+= surface_hid_core.o
  obj-$(CONFIG_SURFACE_HID_CORE)	+= surface_hid_core.o
  obj-$(CONFIG_SURFACE_HID)	+= surface_hid.o
  obj-$(CONFIG_SURFACE_HID)	+= surface_hid.o
 +obj-$(CONFIG_SURFACE_KBD)	+= surface_kbd.o
 +obj-$(CONFIG_SURFACE_KBD)	+= surface_kbd.o
+diff --git a/drivers/hid/surface-hid/surface_hid.c b/drivers/hid/surface-hid/surface_hid.c
+index e4477c328536..3477b31611ae 100644
+--- a/drivers/hid/surface-hid/surface_hid.c
++++ b/drivers/hid/surface-hid/surface_hid.c
+@@ -157,15 +157,12 @@ static int ssam_hid_get_raw_report(struct surface_hid_device *shid, u8 rprt_id,
+ static u32 ssam_hid_event_fn(struct ssam_event_notifier *nf, const struct ssam_event *event)
+ {
+ 	struct surface_hid_device *shid = container_of(nf, struct surface_hid_device, notif);
+-	int status;
+ 
+ 	if (event->command_id != 0x00)
+ 		return 0;
+ 
+-	status = hid_input_report(shid->hid, HID_INPUT_REPORT, (u8 *)&event->data[0],
+-				  event->length, 0);
+-
+-	return ssam_notifier_from_errno(status) | SSAM_NOTIF_HANDLED;
++	hid_input_report(shid->hid, HID_INPUT_REPORT, (u8 *)&event->data[0], event->length, 0);
++	return SSAM_NOTIF_HANDLED;
+ }
+ 
+ 
 diff --git a/drivers/hid/surface-hid/surface_kbd.c b/drivers/hid/surface-hid/surface_kbd.c
 diff --git a/drivers/hid/surface-hid/surface_kbd.c b/drivers/hid/surface-hid/surface_kbd.c
 new file mode 100644
 new file mode 100644
-index 000000000000..e72baac952ec
+index 000000000000..0635341bc517
 --- /dev/null
 --- /dev/null
 +++ b/drivers/hid/surface-hid/surface_kbd.c
 +++ b/drivers/hid/surface-hid/surface_kbd.c
-@@ -0,0 +1,303 @@
+@@ -0,0 +1,300 @@
 +// SPDX-License-Identifier: GPL-2.0+
 +// SPDX-License-Identifier: GPL-2.0+
 +/*
 +/*
 + * Surface System Aggregator Module (SSAM) HID transport driver for the legacy
 + * Surface System Aggregator Module (SSAM) HID transport driver for the legacy
@@ -20144,7 +20208,6 @@ index 000000000000..e72baac952ec
 +static u32 ssam_kbd_event_fn(struct ssam_event_notifier *nf, const struct ssam_event *event)
 +static u32 ssam_kbd_event_fn(struct ssam_event_notifier *nf, const struct ssam_event *event)
 +{
 +{
 +	struct surface_hid_device *shid = container_of(nf, struct surface_hid_device, notif);
 +	struct surface_hid_device *shid = container_of(nf, struct surface_hid_device, notif);
-+	int status;
 +
 +
 +	/*
 +	/*
 +	 * Check against device UID manually, as registry and device target
 +	 * Check against device UID manually, as registry and device target
@@ -20163,10 +20226,8 @@ index 000000000000..e72baac952ec
 +	if (!ssam_kbd_is_input_event(event))
 +	if (!ssam_kbd_is_input_event(event))
 +		return 0;
 +		return 0;
 +
 +
-+	status = hid_input_report(shid->hid, HID_INPUT_REPORT, (u8 *)&event->data[0],
-+				  event->length, 0);
-+
-+	return ssam_notifier_from_errno(status) | SSAM_NOTIF_HANDLED;
++	hid_input_report(shid->hid, HID_INPUT_REPORT, (u8 *)&event->data[0], event->length, 0);
++	return SSAM_NOTIF_HANDLED;
 +}
 +}
 +
 +
 +
 +
@@ -20324,7 +20385,7 @@ index 000000000000..e72baac952ec
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 883c16b19d9588593a8fc403bf5cf990a1d4e281 Mon Sep 17 00:00:00 2001
+From ae5f2370627050e0371686a7a1f2bdf17920eddf Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Fri, 12 Feb 2021 21:06:12 +0100
 Date: Fri, 12 Feb 2021 21:06:12 +0100
 Subject: [PATCH] power: supply: Add battery driver for Surface Aggregator
 Subject: [PATCH] power: supply: Add battery driver for Surface Aggregator
@@ -20374,10 +20435,10 @@ index d4ebe9f7ae69..b107e059770f 100644
  M:	Maximilian Luz <luzmaximilian@gmail.com>
  M:	Maximilian Luz <luzmaximilian@gmail.com>
  L:	platform-driver-x86@vger.kernel.org
  L:	platform-driver-x86@vger.kernel.org
 diff --git a/drivers/power/supply/Kconfig b/drivers/power/supply/Kconfig
 diff --git a/drivers/power/supply/Kconfig b/drivers/power/supply/Kconfig
-index eec646c568b7..ed132dde0735 100644
+index 1699b9269a78..b635331daba4 100644
 --- a/drivers/power/supply/Kconfig
 --- a/drivers/power/supply/Kconfig
 +++ b/drivers/power/supply/Kconfig
 +++ b/drivers/power/supply/Kconfig
-@@ -774,4 +774,20 @@ config RN5T618_POWER
+@@ -775,4 +775,20 @@ config RN5T618_POWER
  	  This driver can also be built as a module. If so, the module will be
  	  This driver can also be built as a module. If so, the module will be
  	  called rn5t618_power.
  	  called rn5t618_power.
  
  
@@ -21317,7 +21378,7 @@ index 000000000000..327fd7af386b
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 71bde8d631028d94e2132ba05302af1baf447414 Mon Sep 17 00:00:00 2001
+From 59806be0c63b97b7dd85f0dc99d0c8e11a34b487 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Fri, 12 Feb 2021 21:07:17 +0100
 Date: Fri, 12 Feb 2021 21:07:17 +0100
 Subject: [PATCH] power: supply: Add AC driver for Surface Aggregator Module
 Subject: [PATCH] power: supply: Add AC driver for Surface Aggregator Module
@@ -21359,10 +21420,10 @@ index b107e059770f..2144ec466377 100644
  MICROSOFT SURFACE DTX DRIVER
  MICROSOFT SURFACE DTX DRIVER
  M:	Maximilian Luz <luzmaximilian@gmail.com>
  M:	Maximilian Luz <luzmaximilian@gmail.com>
 diff --git a/drivers/power/supply/Kconfig b/drivers/power/supply/Kconfig
 diff --git a/drivers/power/supply/Kconfig b/drivers/power/supply/Kconfig
-index ed132dde0735..d4105228a2a5 100644
+index b635331daba4..d4d756d95778 100644
 --- a/drivers/power/supply/Kconfig
 --- a/drivers/power/supply/Kconfig
 +++ b/drivers/power/supply/Kconfig
 +++ b/drivers/power/supply/Kconfig
-@@ -790,4 +790,20 @@ config BATTERY_SURFACE
+@@ -791,4 +791,20 @@ config BATTERY_SURFACE
  	  Microsoft Surface devices, i.e. Surface Pro 7, Surface Laptop 3,
  	  Microsoft Surface devices, i.e. Surface Pro 7, Surface Laptop 3,
  	  Surface Book 3, and Surface Laptop Go.
  	  Surface Book 3, and Surface Laptop Go.
  
  
@@ -21697,7 +21758,7 @@ index 000000000000..982f9b9ef6f5
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From f983d2631fe3b634dd06198b2da985794a4b1259 Mon Sep 17 00:00:00 2001
+From 543dd0fdf499152300c99786ba28b7de43c3a6ee Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Sat, 13 Feb 2021 19:58:50 +0100
 Date: Sat, 13 Feb 2021 19:58:50 +0100
 Subject: [PATCH] platform/surface: Add performance mode driver
 Subject: [PATCH] platform/surface: Add performance mode driver
@@ -21884,3 +21945,516 @@ index 000000000000..3b92a43f8606
 -- 
 -- 
 2.30.1
 2.30.1
 
 
+From a361586c1ea6a5740e7cf64426d0a7946b57f700 Mon Sep 17 00:00:00 2001
+From: Maximilian Luz <luzmaximilian@gmail.com>
+Date: Thu, 4 Mar 2021 20:05:24 +0100
+Subject: [PATCH] platform/surface: aggregator: Make SSAM_DEFINE_SYNC_REQUEST_x
+ define static functions
+
+The SSAM_DEFINE_SYNC_REQUEST_x() macros are intended to reduce
+boiler-plate code for SSAM request definitions by defining a wrapper
+function for the specified request. The client device variants of those
+macros, i.e. SSAM_DEFINE_SYNC_REQUEST_CL_x() in particular rely on the
+multi-device (MD) variants, e.g.:
+
+    #define SSAM_DEFINE_SYNC_REQUEST_CL_R(name, rtype, spec...)   \
+        SSAM_DEFINE_SYNC_REQUEST_MD_R(__raw_##name, rtype, spec)  \
+        int name(struct ssam_device *sdev, rtype *ret)            \
+        {                                                         \
+            return __raw_##name(sdev->ctrl, sdev->uid.target,     \
+                                sdev->uid.instance, ret);         \
+        }
+
+This now creates the problem that it is not possible to declare the
+generated functions static via
+
+    static SSAM_DEFINE_SYNC_REQUEST_CL_R(...)
+
+as this will only apply to the function defined by the multi-device
+macro, i.e. SSAM_DEFINE_SYNC_REQUEST_MD_R(). Thus compiling with
+`-Wmissing-prototypes' rightfully complains that there is a 'static'
+keyword missing.
+
+To solve this, make all SSAM_DEFINE_SYNC_REQUEST_x() macros define
+static functions. Non-client-device macros are also changed for
+consistency. In general, we expect those functions to be only used
+locally in the respective drivers for the corresponding interfaces, so
+having to define a wrapper function to be able to export this should be
+the odd case out.
+
+Reported-by: kernel test robot <lkp@intel.com>
+Fixes: b78b4982d763 ("platform/surface: Add platform profile driver")
+Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
+Link: https://lore.kernel.org/r/20210304190524.1172197-1-luzmaximilian@gmail.com
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Patchset: surface-sam
+---
+ .../driver-api/surface_aggregator/client.rst  |  4 +-
+ .../platform/surface/aggregator/controller.c  | 10 +--
+ .../surface/surface_aggregator_registry.c     |  2 +-
+ drivers/platform/surface/surface_dtx.c        | 18 ++---
+ drivers/platform/surface/surface_perfmode.c   |  4 +-
+ drivers/power/supply/surface_battery.c        |  8 +-
+ drivers/power/supply/surface_charger.c        |  4 +-
+ include/linux/surface_aggregator/controller.h | 74 +++++++++----------
+ include/linux/surface_aggregator/device.h     | 31 ++++----
+ 9 files changed, 78 insertions(+), 77 deletions(-)
+
+diff --git a/Documentation/driver-api/surface_aggregator/client.rst b/Documentation/driver-api/surface_aggregator/client.rst
+index 26d13085a117..e519d374c378 100644
+--- a/Documentation/driver-api/surface_aggregator/client.rst
++++ b/Documentation/driver-api/surface_aggregator/client.rst
+@@ -248,7 +248,7 @@ This example defines a function
+ 
+ .. code-block:: c
+ 
+-   int __ssam_tmp_perf_mode_set(struct ssam_controller *ctrl, const __le32 *arg);
++   static int __ssam_tmp_perf_mode_set(struct ssam_controller *ctrl, const __le32 *arg);
+ 
+ executing the specified request, with the controller passed in when calling
+ said function. In this example, the argument is provided via the ``arg``
+@@ -296,7 +296,7 @@ This invocation of the macro defines a function
+ 
+ .. code-block:: c
+ 
+-   int ssam_bat_get_sta(struct ssam_device *sdev, __le32 *ret);
++   static int ssam_bat_get_sta(struct ssam_device *sdev, __le32 *ret);
+ 
+ executing the specified request, using the device IDs and controller given
+ in the client device. The full list of such macros for client devices is:
+diff --git a/drivers/platform/surface/aggregator/controller.c b/drivers/platform/surface/aggregator/controller.c
+index 5bcb59ed579d..aa6f37b4f46e 100644
+--- a/drivers/platform/surface/aggregator/controller.c
++++ b/drivers/platform/surface/aggregator/controller.c
+@@ -1750,35 +1750,35 @@ EXPORT_SYMBOL_GPL(ssam_request_sync_with_buffer);
+ 
+ /* -- Internal SAM requests. ------------------------------------------------ */
+ 
+-static SSAM_DEFINE_SYNC_REQUEST_R(ssam_ssh_get_firmware_version, __le32, {
++SSAM_DEFINE_SYNC_REQUEST_R(ssam_ssh_get_firmware_version, __le32, {
+ 	.target_category = SSAM_SSH_TC_SAM,
+ 	.target_id       = 0x01,
+ 	.command_id      = 0x13,
+ 	.instance_id     = 0x00,
+ });
+ 
+-static SSAM_DEFINE_SYNC_REQUEST_R(ssam_ssh_notif_display_off, u8, {
++SSAM_DEFINE_SYNC_REQUEST_R(ssam_ssh_notif_display_off, u8, {
+ 	.target_category = SSAM_SSH_TC_SAM,
+ 	.target_id       = 0x01,
+ 	.command_id      = 0x15,
+ 	.instance_id     = 0x00,
+ });
+ 
+-static SSAM_DEFINE_SYNC_REQUEST_R(ssam_ssh_notif_display_on, u8, {
++SSAM_DEFINE_SYNC_REQUEST_R(ssam_ssh_notif_display_on, u8, {
+ 	.target_category = SSAM_SSH_TC_SAM,
+ 	.target_id       = 0x01,
+ 	.command_id      = 0x16,
+ 	.instance_id     = 0x00,
+ });
+ 
+-static SSAM_DEFINE_SYNC_REQUEST_R(ssam_ssh_notif_d0_exit, u8, {
++SSAM_DEFINE_SYNC_REQUEST_R(ssam_ssh_notif_d0_exit, u8, {
+ 	.target_category = SSAM_SSH_TC_SAM,
+ 	.target_id       = 0x01,
+ 	.command_id      = 0x33,
+ 	.instance_id     = 0x00,
+ });
+ 
+-static SSAM_DEFINE_SYNC_REQUEST_R(ssam_ssh_notif_d0_entry, u8, {
++SSAM_DEFINE_SYNC_REQUEST_R(ssam_ssh_notif_d0_entry, u8, {
+ 	.target_category = SSAM_SSH_TC_SAM,
+ 	.target_id       = 0x01,
+ 	.command_id      = 0x34,
+diff --git a/drivers/platform/surface/surface_aggregator_registry.c b/drivers/platform/surface/surface_aggregator_registry.c
+index 6de74e893d06..c42b97f61a57 100644
+--- a/drivers/platform/surface/surface_aggregator_registry.c
++++ b/drivers/platform/surface/surface_aggregator_registry.c
+@@ -302,7 +302,7 @@ struct ssam_base_hub {
+ 	struct ssam_event_notifier notif;
+ };
+ 
+-static SSAM_DEFINE_SYNC_REQUEST_R(ssam_bas_query_opmode, u8, {
++SSAM_DEFINE_SYNC_REQUEST_R(ssam_bas_query_opmode, u8, {
+ 	.target_category = SSAM_SSH_TC_BAS,
+ 	.target_id       = 0x01,
+ 	.command_id      = 0x0d,
+diff --git a/drivers/platform/surface/surface_dtx.c b/drivers/platform/surface/surface_dtx.c
+index 4bb5d286bf95..85451eb94d98 100644
+--- a/drivers/platform/surface/surface_dtx.c
++++ b/drivers/platform/surface/surface_dtx.c
+@@ -69,63 +69,63 @@ struct ssam_bas_base_info {
+ 
+ static_assert(sizeof(struct ssam_bas_base_info) == 2);
+ 
+-static SSAM_DEFINE_SYNC_REQUEST_N(ssam_bas_latch_lock, {
++SSAM_DEFINE_SYNC_REQUEST_N(ssam_bas_latch_lock, {
+ 	.target_category = SSAM_SSH_TC_BAS,
+ 	.target_id       = 0x01,
+ 	.command_id      = 0x06,
+ 	.instance_id     = 0x00,
+ });
+ 
+-static SSAM_DEFINE_SYNC_REQUEST_N(ssam_bas_latch_unlock, {
++SSAM_DEFINE_SYNC_REQUEST_N(ssam_bas_latch_unlock, {
+ 	.target_category = SSAM_SSH_TC_BAS,
+ 	.target_id       = 0x01,
+ 	.command_id      = 0x07,
+ 	.instance_id     = 0x00,
+ });
+ 
+-static SSAM_DEFINE_SYNC_REQUEST_N(ssam_bas_latch_request, {
++SSAM_DEFINE_SYNC_REQUEST_N(ssam_bas_latch_request, {
+ 	.target_category = SSAM_SSH_TC_BAS,
+ 	.target_id       = 0x01,
+ 	.command_id      = 0x08,
+ 	.instance_id     = 0x00,
+ });
+ 
+-static SSAM_DEFINE_SYNC_REQUEST_N(ssam_bas_latch_confirm, {
++SSAM_DEFINE_SYNC_REQUEST_N(ssam_bas_latch_confirm, {
+ 	.target_category = SSAM_SSH_TC_BAS,
+ 	.target_id       = 0x01,
+ 	.command_id      = 0x09,
+ 	.instance_id     = 0x00,
+ });
+ 
+-static SSAM_DEFINE_SYNC_REQUEST_N(ssam_bas_latch_heartbeat, {
++SSAM_DEFINE_SYNC_REQUEST_N(ssam_bas_latch_heartbeat, {
+ 	.target_category = SSAM_SSH_TC_BAS,
+ 	.target_id       = 0x01,
+ 	.command_id      = 0x0a,
+ 	.instance_id     = 0x00,
+ });
+ 
+-static SSAM_DEFINE_SYNC_REQUEST_N(ssam_bas_latch_cancel, {
++SSAM_DEFINE_SYNC_REQUEST_N(ssam_bas_latch_cancel, {
+ 	.target_category = SSAM_SSH_TC_BAS,
+ 	.target_id       = 0x01,
+ 	.command_id      = 0x0b,
+ 	.instance_id     = 0x00,
+ });
+ 
+-static SSAM_DEFINE_SYNC_REQUEST_R(ssam_bas_get_base, struct ssam_bas_base_info, {
++SSAM_DEFINE_SYNC_REQUEST_R(ssam_bas_get_base, struct ssam_bas_base_info, {
+ 	.target_category = SSAM_SSH_TC_BAS,
+ 	.target_id       = 0x01,
+ 	.command_id      = 0x0c,
+ 	.instance_id     = 0x00,
+ });
+ 
+-static SSAM_DEFINE_SYNC_REQUEST_R(ssam_bas_get_device_mode, u8, {
++SSAM_DEFINE_SYNC_REQUEST_R(ssam_bas_get_device_mode, u8, {
+ 	.target_category = SSAM_SSH_TC_BAS,
+ 	.target_id       = 0x01,
+ 	.command_id      = 0x0d,
+ 	.instance_id     = 0x00,
+ });
+ 
+-static SSAM_DEFINE_SYNC_REQUEST_R(ssam_bas_get_latch_status, u8, {
++SSAM_DEFINE_SYNC_REQUEST_R(ssam_bas_get_latch_status, u8, {
+ 	.target_category = SSAM_SSH_TC_BAS,
+ 	.target_id       = 0x01,
+ 	.command_id      = 0x11,
+diff --git a/drivers/platform/surface/surface_perfmode.c b/drivers/platform/surface/surface_perfmode.c
+index 3b92a43f8606..a9114e001d0d 100644
+--- a/drivers/platform/surface/surface_perfmode.c
++++ b/drivers/platform/surface/surface_perfmode.c
+@@ -33,12 +33,12 @@ struct ssam_perf_info {
+ 	__le16 unknown2;
+ } __packed;
+ 
+-static SSAM_DEFINE_SYNC_REQUEST_CL_R(ssam_tmp_perf_mode_get, struct ssam_perf_info, {
++SSAM_DEFINE_SYNC_REQUEST_CL_R(ssam_tmp_perf_mode_get, struct ssam_perf_info, {
+ 	.target_category = SSAM_SSH_TC_TMP,
+ 	.command_id      = 0x02,
+ });
+ 
+-static SSAM_DEFINE_SYNC_REQUEST_CL_W(__ssam_tmp_perf_mode_set, __le32, {
++SSAM_DEFINE_SYNC_REQUEST_CL_W(__ssam_tmp_perf_mode_set, __le32, {
+ 	.target_category = SSAM_SSH_TC_TMP,
+ 	.command_id      = 0x03,
+ });
+diff --git a/drivers/power/supply/surface_battery.c b/drivers/power/supply/surface_battery.c
+index 327fd7af386b..b93a4f556b5c 100644
+--- a/drivers/power/supply/surface_battery.c
++++ b/drivers/power/supply/surface_battery.c
+@@ -85,25 +85,25 @@ static_assert(sizeof(struct spwr_bst) == 16);
+ #define SPWR_BATTERY_VALUE_UNKNOWN	0xffffffff
+ 
+ /* Get battery status (_STA) */
+-static SSAM_DEFINE_SYNC_REQUEST_CL_R(ssam_bat_get_sta, __le32, {
++SSAM_DEFINE_SYNC_REQUEST_CL_R(ssam_bat_get_sta, __le32, {
+ 	.target_category = SSAM_SSH_TC_BAT,
+ 	.command_id      = 0x01,
+ });
+ 
+ /* Get battery static information (_BIX). */
+-static SSAM_DEFINE_SYNC_REQUEST_CL_R(ssam_bat_get_bix, struct spwr_bix, {
++SSAM_DEFINE_SYNC_REQUEST_CL_R(ssam_bat_get_bix, struct spwr_bix, {
+ 	.target_category = SSAM_SSH_TC_BAT,
+ 	.command_id      = 0x02,
+ });
+ 
+ /* Get battery dynamic information (_BST). */
+-static SSAM_DEFINE_SYNC_REQUEST_CL_R(ssam_bat_get_bst, struct spwr_bst, {
++SSAM_DEFINE_SYNC_REQUEST_CL_R(ssam_bat_get_bst, struct spwr_bst, {
+ 	.target_category = SSAM_SSH_TC_BAT,
+ 	.command_id      = 0x03,
+ });
+ 
+ /* Set battery trip point (_BTP). */
+-static SSAM_DEFINE_SYNC_REQUEST_CL_W(ssam_bat_set_btp, __le32, {
++SSAM_DEFINE_SYNC_REQUEST_CL_W(ssam_bat_set_btp, __le32, {
+ 	.target_category = SSAM_SSH_TC_BAT,
+ 	.command_id      = 0x04,
+ });
+diff --git a/drivers/power/supply/surface_charger.c b/drivers/power/supply/surface_charger.c
+index 982f9b9ef6f5..fe484523a2c2 100644
+--- a/drivers/power/supply/surface_charger.c
++++ b/drivers/power/supply/surface_charger.c
+@@ -28,13 +28,13 @@ enum sam_battery_sta {
+ };
+ 
+ /* Get battery status (_STA). */
+-static SSAM_DEFINE_SYNC_REQUEST_CL_R(ssam_bat_get_sta, __le32, {
++SSAM_DEFINE_SYNC_REQUEST_CL_R(ssam_bat_get_sta, __le32, {
+ 	.target_category = SSAM_SSH_TC_BAT,
+ 	.command_id      = 0x01,
+ });
+ 
+ /* Get platform power source for battery (_PSR / DPTF PSRC). */
+-static SSAM_DEFINE_SYNC_REQUEST_CL_R(ssam_bat_get_psrc, __le32, {
++SSAM_DEFINE_SYNC_REQUEST_CL_R(ssam_bat_get_psrc, __le32, {
+ 	.target_category = SSAM_SSH_TC_BAT,
+ 	.command_id      = 0x0d,
+ });
+diff --git a/include/linux/surface_aggregator/controller.h b/include/linux/surface_aggregator/controller.h
+index f4b1ba887384..0806796eabcb 100644
+--- a/include/linux/surface_aggregator/controller.h
++++ b/include/linux/surface_aggregator/controller.h
+@@ -344,16 +344,16 @@ struct ssam_request_spec_md {
+  * request has been fully completed. The required transport buffer will be
+  * allocated on the stack.
+  *
+- * The generated function is defined as ``int name(struct ssam_controller
+- * *ctrl)``, returning the status of the request, which is zero on success and
+- * negative on failure. The ``ctrl`` parameter is the controller via which the
+- * request is being sent.
++ * The generated function is defined as ``static int name(struct
++ * ssam_controller *ctrl)``, returning the status of the request, which is
++ * 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
+  * the generated function.
+  */
+ #define SSAM_DEFINE_SYNC_REQUEST_N(name, spec...)				\
+-	int name(struct ssam_controller *ctrl)					\
++	static int name(struct ssam_controller *ctrl)				\
+ 	{									\
+ 		struct ssam_request_spec s = (struct ssam_request_spec)spec;	\
+ 		struct ssam_request rqst;					\
+@@ -383,17 +383,17 @@ struct ssam_request_spec_md {
+  * returning once the request has been fully completed. The required transport
+  * buffer will be allocated on the stack.
+  *
+- * The generated function is defined as ``int name(struct ssam_controller
+- * *ctrl, const atype *arg)``, returning the status of the request, which is
+- * zero on success and negative on failure. The ``ctrl`` parameter is the
+- * controller via which the request is sent. The request argument is specified
+- * via the ``arg`` pointer.
++ * The generated function is defined as ``static int name(struct
++ * ssam_controller *ctrl, const atype *arg)``, returning the status of the
++ * request, which is zero on success and negative on failure. The ``ctrl``
++ * 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
+  * the generated function.
+  */
+ #define SSAM_DEFINE_SYNC_REQUEST_W(name, atype, spec...)			\
+-	int name(struct ssam_controller *ctrl, const atype *arg)		\
++	static int name(struct ssam_controller *ctrl, const atype *arg)		\
+ 	{									\
+ 		struct ssam_request_spec s = (struct ssam_request_spec)spec;	\
+ 		struct ssam_request rqst;					\
+@@ -424,17 +424,17 @@ struct ssam_request_spec_md {
+  * request itself, returning once the request has been fully completed. The
+  * required transport buffer will be allocated on the stack.
+  *
+- * The generated function is defined as ``int name(struct ssam_controller
+- * *ctrl, rtype *ret)``, returning the status of the request, which is zero on
+- * success and negative on failure. The ``ctrl`` parameter is the controller
+- * via which the request is sent. The request's return value is written to the
+- * memory pointed to by the ``ret`` parameter.
++ * The generated function is defined as ``static int name(struct
++ * ssam_controller *ctrl, rtype *ret)``, returning the status of the request,
++ * which is zero on success and negative on failure. The ``ctrl`` parameter is
++ * 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
+  * the generated function.
+  */
+ #define SSAM_DEFINE_SYNC_REQUEST_R(name, rtype, spec...)			\
+-	int name(struct ssam_controller *ctrl, rtype *ret)			\
++	static int name(struct ssam_controller *ctrl, rtype *ret)		\
+ 	{									\
+ 		struct ssam_request_spec s = (struct ssam_request_spec)spec;	\
+ 		struct ssam_request rqst;					\
+@@ -483,17 +483,17 @@ struct ssam_request_spec_md {
+  * returning once the request has been fully completed. The required transport
+  * buffer will be allocated on the stack.
+  *
+- * The generated function is defined as ``int name(struct ssam_controller
+- * *ctrl, u8 tid, u8 iid)``, returning the status of the request, which is
+- * zero on success and negative on failure. The ``ctrl`` parameter is the
+- * controller via which the request is sent, ``tid`` the target ID for the
+- * request, and ``iid`` the instance ID.
++ * The generated function is defined as ``static int name(struct
++ * ssam_controller *ctrl, u8 tid, u8 iid)``, returning the status of the
++ * request, which is zero on success and negative on failure. The ``ctrl``
++ * 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
+  * the generated function.
+  */
+ #define SSAM_DEFINE_SYNC_REQUEST_MD_N(name, spec...)				\
+-	int name(struct ssam_controller *ctrl, u8 tid, u8 iid)			\
++	static int name(struct ssam_controller *ctrl, u8 tid, u8 iid)		\
+ 	{									\
+ 		struct ssam_request_spec_md s = (struct ssam_request_spec_md)spec; \
+ 		struct ssam_request rqst;					\
+@@ -524,18 +524,18 @@ struct ssam_request_spec_md {
+  * the request itself, returning once the request has been fully completed.
+  * The required transport buffer will be allocated on the stack.
+  *
+- * The generated function is defined as ``int name(struct ssam_controller
+- * *ctrl, u8 tid, u8 iid, const atype *arg)``, returning the status of the
+- * request, which is zero on success and negative on failure. The ``ctrl``
+- * parameter is the controller via which the request is sent, ``tid`` the
+- * target ID for the request, and ``iid`` the instance ID. The request argument
+- * is specified via the ``arg`` pointer.
++ * The generated function is defined as ``static int name(struct
++ * ssam_controller *ctrl, u8 tid, u8 iid, const atype *arg)``, returning the
++ * status of the request, which is zero on success and negative on failure.
++ * The ``ctrl`` parameter is the controller via which the request is sent,
++ * ``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
+  * the generated function.
+  */
+ #define SSAM_DEFINE_SYNC_REQUEST_MD_W(name, atype, spec...)			\
+-	int name(struct ssam_controller *ctrl, u8 tid, u8 iid, const atype *arg)\
++	static int name(struct ssam_controller *ctrl, u8 tid, u8 iid, const atype *arg) \
+ 	{									\
+ 		struct ssam_request_spec_md s = (struct ssam_request_spec_md)spec; \
+ 		struct ssam_request rqst;					\
+@@ -567,18 +567,18 @@ struct ssam_request_spec_md {
+  * execution of the request itself, returning once the request has been fully
+  * completed. The required transport buffer will be allocated on the stack.
+  *
+- * The generated function is defined as ``int name(struct ssam_controller
+- * *ctrl, u8 tid, u8 iid, rtype *ret)``, returning the status of the request,
+- * which is zero on success and negative on failure. The ``ctrl`` parameter is
+- * the controller via which the request is sent, ``tid`` 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.
++ * The generated function is defined as ``static int name(struct
++ * ssam_controller *ctrl, u8 tid, u8 iid, rtype *ret)``, returning the status
++ * of the request, which is zero on success and negative on failure. The
++ * ``ctrl`` parameter is the controller via which the request is sent, ``tid``
++ * 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
+  * the generated function.
+  */
+ #define SSAM_DEFINE_SYNC_REQUEST_MD_R(name, rtype, spec...)			\
+-	int name(struct ssam_controller *ctrl, u8 tid, u8 iid, rtype *ret)	\
++	static int name(struct ssam_controller *ctrl, u8 tid, u8 iid, rtype *ret) \
+ 	{									\
+ 		struct ssam_request_spec_md s = (struct ssam_request_spec_md)spec; \
+ 		struct ssam_request rqst;					\
+diff --git a/include/linux/surface_aggregator/device.h b/include/linux/surface_aggregator/device.h
+index 02f3e06c0a60..4441ad667c3f 100644
+--- a/include/linux/surface_aggregator/device.h
++++ b/include/linux/surface_aggregator/device.h
+@@ -336,17 +336,18 @@ void ssam_device_driver_unregister(struct ssam_device_driver *d);
+  * request has been fully completed. The required transport buffer will be
+  * allocated on the stack.
+  *
+- * The generated function is defined as ``int name(struct ssam_device *sdev)``,
+- * returning the status of the request, which is zero on success and negative
+- * on failure. The ``sdev`` parameter specifies both the target device of the
+- * request and by association the controller via which the request is sent.
++ * The generated function is defined as ``static int name(struct ssam_device
++ * *sdev)``, returning the status of the request, which is zero on success and
++ * negative on failure. The ``sdev`` parameter specifies both the target
++ * 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
+  * the generated function.
+  */
+ #define SSAM_DEFINE_SYNC_REQUEST_CL_N(name, spec...)			\
+ 	SSAM_DEFINE_SYNC_REQUEST_MD_N(__raw_##name, spec)		\
+-	int name(struct ssam_device *sdev)				\
++	static int name(struct ssam_device *sdev)			\
+ 	{								\
+ 		return __raw_##name(sdev->ctrl, sdev->uid.target,	\
+ 				    sdev->uid.instance);		\
+@@ -368,19 +369,19 @@ void ssam_device_driver_unregister(struct ssam_device_driver *d);
+  * itself, returning once the request has been fully completed. The required
+  * transport buffer will be allocated on the stack.
+  *
+- * The generated function is defined as ``int name(struct ssam_device *sdev,
+- * const atype *arg)``, returning the status of the request, which is zero on
+- * success and negative on failure. The ``sdev`` parameter specifies both the
+- * target device of the request and by association the controller via which
+- * the request is sent. The request's argument is specified via the ``arg``
+- * pointer.
++ * The generated function is defined as ``static int name(struct ssam_device
++ * *sdev, const atype *arg)``, returning the status of the request, which is
++ * zero on success and negative on failure. The ``sdev`` parameter specifies
++ * both the target device of the request and by association the controller via
++ * 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
+  * the generated function.
+  */
+ #define SSAM_DEFINE_SYNC_REQUEST_CL_W(name, atype, spec...)		\
+ 	SSAM_DEFINE_SYNC_REQUEST_MD_W(__raw_##name, atype, spec)	\
+-	int name(struct ssam_device *sdev, const atype *arg)		\
++	static int name(struct ssam_device *sdev, const atype *arg)	\
+ 	{								\
+ 		return __raw_##name(sdev->ctrl, sdev->uid.target,	\
+ 				    sdev->uid.instance, arg);		\
+@@ -402,8 +403,8 @@ void ssam_device_driver_unregister(struct ssam_device_driver *d);
+  * itself, returning once the request has been fully completed. The required
+  * transport buffer will be allocated on the stack.
+  *
+- * The generated function is defined as ``int name(struct ssam_device *sdev,
+- * rtype *ret)``, returning the status of the request, which is zero on
++ * The generated function is defined as ``static int name(struct ssam_device
++ * *sdev, rtype *ret)``, returning the status of the request, which is zero on
+  * success and negative on failure. The ``sdev`` parameter specifies both the
+  * target device of the request and by association the controller via which
+  * the request is sent. The request's return value is written to the memory
+@@ -414,7 +415,7 @@ void ssam_device_driver_unregister(struct ssam_device_driver *d);
+  */
+ #define SSAM_DEFINE_SYNC_REQUEST_CL_R(name, rtype, spec...)		\
+ 	SSAM_DEFINE_SYNC_REQUEST_MD_R(__raw_##name, rtype, spec)	\
+-	int name(struct ssam_device *sdev, rtype *ret)			\
++	static int name(struct ssam_device *sdev, rtype *ret)		\
+ 	{								\
+ 		return __raw_##name(sdev->ctrl, sdev->uid.target,	\
+ 				    sdev->uid.instance, ret);		\
+-- 
+2.30.1
+

+ 3 - 3
patches/5.11/0006-surface-hotplug.patch

@@ -1,4 +1,4 @@
-From 789f7b475f230ae8eca4a1792cd829f0aefdc190 Mon Sep 17 00:00:00 2001
+From c4a51a33b30769caab6ac407e3c5ce8c7658d42c Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Thu, 4 Feb 2021 23:06:40 +0100
 Date: Thu, 4 Feb 2021 23:06:40 +0100
 Subject: [PATCH] PCI: Run platform power transition on initial D0 entry
 Subject: [PATCH] PCI: Run platform power transition on initial D0 entry
@@ -43,7 +43,7 @@ Patchset: surface-hotplug
  1 file changed, 1 insertion(+), 1 deletion(-)
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 
 diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
 diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
-index 790393d1e318..c9fcd5514409 100644
+index ba791165ed19..0fa8e52208fe 100644
 --- a/drivers/pci/pci.c
 --- a/drivers/pci/pci.c
 +++ b/drivers/pci/pci.c
 +++ b/drivers/pci/pci.c
 @@ -1800,7 +1800,7 @@ static int do_pci_enable_device(struct pci_dev *dev, int bars)
 @@ -1800,7 +1800,7 @@ static int do_pci_enable_device(struct pci_dev *dev, int bars)
@@ -58,7 +58,7 @@ index 790393d1e318..c9fcd5514409 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 88347b2a5d4d24c78124b1c9fdda42088192199d Mon Sep 17 00:00:00 2001
+From e795af3b2f568aa849a0f3278327fe80bc7b1fb9 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Fri, 5 Feb 2021 02:26:57 +0100
 Date: Fri, 5 Feb 2021 02:26:57 +0100
 Subject: [PATCH] platform/surface: Add Surface Hot-Plug driver
 Subject: [PATCH] platform/surface: Add Surface Hot-Plug driver

+ 1 - 1
patches/5.11/0007-surface-typecover.patch

@@ -1,4 +1,4 @@
-From be2a2310c392ac571f62c5180d1795f132a0f8fd Mon Sep 17 00:00:00 2001
+From 886c643c9affeb43bae8ad1713bd1e19f8368cf6 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

+ 1 - 1
patches/5.11/0008-surface-sensors.patch

@@ -1,4 +1,4 @@
-From 85bf81d420abd726680d219c6cc338af1dd3d480 Mon Sep 17 00:00:00 2001
+From 7202f640893255d3291bf1dbeb44fc26876b7d5b Mon Sep 17 00:00:00 2001
 From: Max Leiter <maxwell.leiter@gmail.com>
 From: Max Leiter <maxwell.leiter@gmail.com>
 Date: Sat, 19 Dec 2020 17:50:55 -0800
 Date: Sat, 19 Dec 2020 17:50:55 -0800
 Subject: [PATCH] iio:light:apds9960 add detection for MSHW0184 ACPI device in
 Subject: [PATCH] iio:light:apds9960 add detection for MSHW0184 ACPI device in

+ 58 - 106
patches/5.11/0009-cameras.patch

@@ -1,52 +1,4 @@
-From b6df1f1f4904e1f9a4735c430c11a472fa3c474d Mon Sep 17 00:00:00 2001
-From: Daniel Scally <djrscally@gmail.com>
-Date: Sat, 10 Oct 2020 23:42:09 +0100
-Subject: [PATCH] software_node: Fix refcounts in
- software_node_get_next_child()
-
-The software_node_get_next_child() function currently does not hold
-references to the child software_node that it finds or put the ref that
-is held against the old child - fix that.
-
-Fixes: 59abd83672f7 ("drivers: base: Introducing software nodes to the firmware node framework")
-Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
-Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-Reviewed-by: Sakari Ailus <sakari.ailus@linux.intel.com>
-Signed-off-by: Daniel Scally <djrscally@gmail.com>
-Patchset: cameras
----
- drivers/base/swnode.c | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/base/swnode.c b/drivers/base/swnode.c
-index 4a4b2008fbc2..4fcc1a6fb724 100644
---- a/drivers/base/swnode.c
-+++ b/drivers/base/swnode.c
-@@ -443,14 +443,18 @@ software_node_get_next_child(const struct fwnode_handle *fwnode,
- 	struct swnode *c = to_swnode(child);
- 
- 	if (!p || list_empty(&p->children) ||
--	    (c && list_is_last(&c->entry, &p->children)))
-+	    (c && list_is_last(&c->entry, &p->children))) {
-+		fwnode_handle_put(child);
- 		return NULL;
-+	}
- 
- 	if (c)
- 		c = list_next_entry(c, entry);
- 	else
- 		c = list_first_entry(&p->children, struct swnode, entry);
--	return &c->fwnode;
-+
-+	fwnode_handle_put(child);
-+	return fwnode_handle_get(&c->fwnode);
- }
- 
- static struct fwnode_handle *
--- 
-2.30.1
-
-From 9119d068d1f45d793de73f2c791f16f5c36b5458 Mon Sep 17 00:00:00 2001
+From 87808db00a9bec80f5c7e61af87d8920c1140276 Mon Sep 17 00:00:00 2001
 From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
 From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
 Date: Wed, 30 Dec 2020 22:44:05 +0200
 Date: Wed, 30 Dec 2020 22:44:05 +0200
 Subject: [PATCH] media: ipu3-cio2: Add headers that ipu3-cio2.h is direct user
 Subject: [PATCH] media: ipu3-cio2: Add headers that ipu3-cio2.h is direct user
@@ -98,7 +50,7 @@ index ccf0b85ae36f..62187ab5ae43 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 6d388078962c74c27edecdc3f9350c73a4b06be7 Mon Sep 17 00:00:00 2001
+From 7d3ab2200e50851ec1020f291231b7f9b98e857b Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Sat, 24 Oct 2020 22:42:28 +0100
 Date: Sat, 24 Oct 2020 22:42:28 +0100
 Subject: [PATCH] device property: Return true in fwnode_device_is_available
 Subject: [PATCH] device property: Return true in fwnode_device_is_available
@@ -143,7 +95,7 @@ index 35b95c6ac0c6..0bf5260f14c6 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From d937d514c28776fc4a0a3f9bbd44aa5bd3650161 Mon Sep 17 00:00:00 2001
+From fbcf60d36e7a531adc97e0a1b46ae8ce45feee65 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Sat, 21 Nov 2020 22:06:38 +0000
 Date: Sat, 21 Nov 2020 22:06:38 +0000
 Subject: [PATCH] device property: Call fwnode_graph_get_endpoint_by_id() for
 Subject: [PATCH] device property: Call fwnode_graph_get_endpoint_by_id() for
@@ -187,7 +139,7 @@ index 0bf5260f14c6..1421e9548857 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From e4f8f968690d7edeee00513081b012fd67e7cce0 Mon Sep 17 00:00:00 2001
+From 0610f7bece4792c305fde64c2a50c1bf366e0e49 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Sun, 25 Oct 2020 22:49:08 +0000
 Date: Sun, 25 Oct 2020 22:49:08 +0000
 Subject: [PATCH] software_node: Enforce parent before child ordering of nodes
 Subject: [PATCH] software_node: Enforce parent before child ordering of nodes
@@ -290,7 +242,7 @@ index 4fcc1a6fb724..166c5cc73f39 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 0a4f7d6ed8bdfea4dc5dcf3a60ab451c1053fe80 Mon Sep 17 00:00:00 2001
+From d295abae3b2f332c1687829eb1513e02f54c88b8 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Wed, 21 Oct 2020 22:25:03 +0100
 Date: Wed, 21 Oct 2020 22:25:03 +0100
 Subject: [PATCH] software_node: unregister software_nodes in reverse order
 Subject: [PATCH] software_node: unregister software_nodes in reverse order
@@ -345,7 +297,7 @@ index 166c5cc73f39..6f7443c6d3b5 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From f823cf632a2493e3ed7b9445af8558255b233060 Mon Sep 17 00:00:00 2001
+From 2c65b3e862143735638f649a89649e82f51cc241 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Tue, 22 Dec 2020 13:09:05 +0000
 Date: Tue, 22 Dec 2020 13:09:05 +0000
 Subject: [PATCH] device property: Define format macros for ports and endpoints
 Subject: [PATCH] device property: Define format macros for ports and endpoints
@@ -386,7 +338,7 @@ index fde4ad97564c..77414e431e89 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 1e9cc0db2370b954e7cf6e365982d6028d48f47e Mon Sep 17 00:00:00 2001
+From 7d7da50bc117568c5d399cdc7017e030b8194f8e Mon Sep 17 00:00:00 2001
 From: Heikki Krogerus <heikki.krogerus@linux.intel.com>
 From: Heikki Krogerus <heikki.krogerus@linux.intel.com>
 Date: Tue, 15 Sep 2020 15:47:46 +0100
 Date: Tue, 15 Sep 2020 15:47:46 +0100
 Subject: [PATCH] software_node: Add support for fwnode_graph*() family of
 Subject: [PATCH] software_node: Add support for fwnode_graph*() family of
@@ -554,7 +506,7 @@ index 6f7443c6d3b5..9104a0abd531 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 076f3a5f8b5208c2601870ac7ed6789ee93bc1b9 Mon Sep 17 00:00:00 2001
+From 987fcc4a7f64afcf7ea9b05de6b4f936adf6744f Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Sat, 10 Oct 2020 23:07:22 +0100
 Date: Sat, 10 Oct 2020 23:07:22 +0100
 Subject: [PATCH] lib/test_printf.c: Use helper function to unwind array of
 Subject: [PATCH] lib/test_printf.c: Use helper function to unwind array of
@@ -592,7 +544,7 @@ index 7ac87f18a10f..7d60f24240a4 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From f2216eb19d6643cba7876af0d3d7f2fe9193bd16 Mon Sep 17 00:00:00 2001
+From 5209d9e8919d703ceb63d6f7c88c1274a7d30a25 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Sat, 10 Oct 2020 23:11:36 +0100
 Date: Sat, 10 Oct 2020 23:11:36 +0100
 Subject: [PATCH] ipu3-cio2: Add T: entry to MAINTAINERS
 Subject: [PATCH] ipu3-cio2: Add T: entry to MAINTAINERS
@@ -623,7 +575,7 @@ index a4a0519ce88c..66ce274c17d7 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From d296a20a7e3452abafc94e1ab070673864f46eae Mon Sep 17 00:00:00 2001
+From b3710b74d073a6e0c1638e52488301bfadd4c1e7 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Sat, 10 Oct 2020 22:47:21 +0100
 Date: Sat, 10 Oct 2020 22:47:21 +0100
 Subject: [PATCH] ipu3-cio2: Rename ipu3-cio2.c
 Subject: [PATCH] ipu3-cio2: Rename ipu3-cio2.c
@@ -658,7 +610,7 @@ rename to drivers/media/pci/intel/ipu3/ipu3-cio2-main.c
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From c68d9e1970c22cb653c66d2b5265313bdc57fefb Mon Sep 17 00:00:00 2001
+From 0fa14fefa139cc528a9c24eab102a44b5979656d Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Wed, 21 Oct 2020 21:53:05 +0100
 Date: Wed, 21 Oct 2020 21:53:05 +0100
 Subject: [PATCH] media: v4l2-core: v4l2-async: Check sd->fwnode->secondary in
 Subject: [PATCH] media: v4l2-core: v4l2-async: Check sd->fwnode->secondary in
@@ -699,7 +651,7 @@ index e3ab003a6c85..9dd896d085ec 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 59a8a1e0fe448a026d2b58d3f253c2d21e40bd44 Mon Sep 17 00:00:00 2001
+From 990e177da9a00f84f6d1779c9b84fd4a5b8d83a2 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Sun, 15 Nov 2020 08:15:34 +0000
 Date: Sun, 15 Nov 2020 08:15:34 +0000
 Subject: [PATCH] ACPI / bus: Add acpi_dev_get_next_match_dev() and helper
 Subject: [PATCH] ACPI / bus: Add acpi_dev_get_next_match_dev() and helper
@@ -808,7 +760,7 @@ index 6d1879bf9440..02a716a0af5d 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From bfdb7fa362ffe0e50e5f90bb9d39a2ab61c1fd02 Mon Sep 17 00:00:00 2001
+From b62cadbe3c03cc44806af0bd2785c7798cf5830a Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Sat, 19 Dec 2020 23:55:04 +0000
 Date: Sat, 19 Dec 2020 23:55:04 +0000
 Subject: [PATCH] media: v4l2-fwnode: Include v4l2_fwnode_bus_type
 Subject: [PATCH] media: v4l2-fwnode: Include v4l2_fwnode_bus_type
@@ -885,7 +837,7 @@ index 4365430eea6f..77fd6a3ec308 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 2ecacb9cd48ca324e4d74eeb0ce4d3128cd43710 Mon Sep 17 00:00:00 2001
+From d92eb11b231d731f2f1bc96df934a08129a59297 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Wed, 21 Oct 2020 21:53:44 +0100
 Date: Wed, 21 Oct 2020 21:53:44 +0100
 Subject: [PATCH] ipu3-cio2: Add cio2-bridge to ipu3-cio2 driver
 Subject: [PATCH] ipu3-cio2: Add cio2-bridge to ipu3-cio2 driver
@@ -926,10 +878,10 @@ index 66ce274c17d7..fb99543648d3 100644
  L:	linux-media@vger.kernel.org
  L:	linux-media@vger.kernel.org
  S:	Maintained
  S:	Maintained
 diff --git a/drivers/media/pci/intel/ipu3/Kconfig b/drivers/media/pci/intel/ipu3/Kconfig
 diff --git a/drivers/media/pci/intel/ipu3/Kconfig b/drivers/media/pci/intel/ipu3/Kconfig
-index 82d7f17e6a02..96a2231b16ad 100644
+index 7a805201034b..24f4e79fe0cb 100644
 --- a/drivers/media/pci/intel/ipu3/Kconfig
 --- a/drivers/media/pci/intel/ipu3/Kconfig
 +++ b/drivers/media/pci/intel/ipu3/Kconfig
 +++ b/drivers/media/pci/intel/ipu3/Kconfig
-@@ -16,3 +16,21 @@ config VIDEO_IPU3_CIO2
+@@ -17,3 +17,21 @@ config VIDEO_IPU3_CIO2
  	  Say Y or M here if you have a Skylake/Kaby Lake SoC with MIPI CSI-2
  	  Say Y or M here if you have a Skylake/Kaby Lake SoC with MIPI CSI-2
  	  connected camera.
  	  connected camera.
  	  The module will be called ipu3-cio2.
  	  The module will be called ipu3-cio2.
@@ -1409,7 +1361,7 @@ index 000000000000..dd0ffcafa489
 +
 +
 +#endif
 +#endif
 diff --git a/drivers/media/pci/intel/ipu3/ipu3-cio2-main.c b/drivers/media/pci/intel/ipu3/ipu3-cio2-main.c
 diff --git a/drivers/media/pci/intel/ipu3/ipu3-cio2-main.c b/drivers/media/pci/intel/ipu3/ipu3-cio2-main.c
-index 6cada8a6e50c..c830c12babd9 100644
+index 143ba9d90342..d13d64ae342e 100644
 --- a/drivers/media/pci/intel/ipu3/ipu3-cio2-main.c
 --- a/drivers/media/pci/intel/ipu3/ipu3-cio2-main.c
 +++ b/drivers/media/pci/intel/ipu3/ipu3-cio2-main.c
 +++ b/drivers/media/pci/intel/ipu3/ipu3-cio2-main.c
 @@ -1702,11 +1702,28 @@ static void cio2_queues_exit(struct cio2_device *cio2)
 @@ -1702,11 +1702,28 @@ static void cio2_queues_exit(struct cio2_device *cio2)
@@ -1483,7 +1435,7 @@ index 62187ab5ae43..dc3e343a37fb 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From b3f74699bf73617b5dca455e08005e5150b29d89 Mon Sep 17 00:00:00 2001
+From 7ef611d32079b60fdb259e02a7e38a88704eb080 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Wed, 2 Dec 2020 12:38:10 +0000
 Date: Wed, 2 Dec 2020 12:38:10 +0000
 Subject: [PATCH] acpi: utils: move acpi_lpss_dep() to utils
 Subject: [PATCH] acpi: utils: move acpi_lpss_dep() to utils
@@ -1585,7 +1537,7 @@ index ddca1550cce6..78b38775f18b 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From c8a8199d91263824437e9d704738e4f802218d92 Mon Sep 17 00:00:00 2001
+From 926f38272c0bcefe876c97d66af84b3a9bfa0a40 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Thu, 26 Nov 2020 21:12:41 +0000
 Date: Thu, 26 Nov 2020 21:12:41 +0000
 Subject: [PATCH] acpi: utils: Add function to fetch dependent acpi_devices
 Subject: [PATCH] acpi: utils: Add function to fetch dependent acpi_devices
@@ -1671,7 +1623,7 @@ index 02a716a0af5d..33deb22294f2 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From d18c420c43a3ddab897837fe408766ff3599e1b6 Mon Sep 17 00:00:00 2001
+From 44cf4f3e3eb4d9fc28fb4bb25969f63e9ffb6e5b Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Mon, 16 Nov 2020 21:38:49 +0000
 Date: Mon, 16 Nov 2020 21:38:49 +0000
 Subject: [PATCH] i2c: i2c-core-base: Use format macro in i2c_dev_set_name()
 Subject: [PATCH] i2c: i2c-core-base: Use format macro in i2c_dev_set_name()
@@ -1739,7 +1691,7 @@ index 56622658b215..65acae61dc5c 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From c77e0ac04cb8e73291c520554153aee9bb3761ad Mon Sep 17 00:00:00 2001
+From 81c4f7153d35280aee130326b0063dfc1e7e993d Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Wed, 2 Dec 2020 16:41:42 +0000
 Date: Wed, 2 Dec 2020 16:41:42 +0000
 Subject: [PATCH] i2c: i2c-core-acpi: Add i2c_acpi_dev_name()
 Subject: [PATCH] i2c: i2c-core-acpi: Add i2c_acpi_dev_name()
@@ -1797,7 +1749,7 @@ index 65acae61dc5c..b82aac05b17f 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 3697ae368de6eba0dcf4f776c752e5d4bbf5aa35 Mon Sep 17 00:00:00 2001
+From 0344c27fbf5d528d3224015a11bc714d1fafe8ef Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Mon, 16 Nov 2020 00:16:56 +0000
 Date: Mon, 16 Nov 2020 00:16:56 +0000
 Subject: [PATCH] gpio: gpiolib-acpi: Export acpi_get_gpiod()
 Subject: [PATCH] gpio: gpiolib-acpi: Export acpi_get_gpiod()
@@ -1861,7 +1813,7 @@ index 053bf05fb1f7..626d43b00c4f 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 2d9e688f36d83ffdfebe60223bf3ec24be34b019 Mon Sep 17 00:00:00 2001
+From 6a9bc940f7bdfa0dfa25e1a0540a0d4624313746 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Sat, 12 Dec 2020 23:56:59 +0000
 Date: Sat, 12 Dec 2020 23:56:59 +0000
 Subject: [PATCH] mfd: Remove tps68470 MFD driver
 Subject: [PATCH] mfd: Remove tps68470 MFD driver
@@ -2052,7 +2004,7 @@ index 4a4df4ffd18c..000000000000
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 35c50c04d90453ec373602263c14209453be8f59 Mon Sep 17 00:00:00 2001
+From 22cc6004e98f1ff2dd83a77278bd8f04f6f22dc6 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Fri, 15 Jan 2021 12:37:31 +0000
 Date: Fri, 15 Jan 2021 12:37:31 +0000
 Subject: [PATCH] platform: x86: Add intel_skl_int3472 driver
 Subject: [PATCH] platform: x86: Add intel_skl_int3472 driver
@@ -2110,7 +2062,7 @@ index fb99543648d3..f543702b8c65 100644
  M:	Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
  M:	Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
  L:	platform-driver-x86@vger.kernel.org
  L:	platform-driver-x86@vger.kernel.org
 diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
 diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
-index 91e6176cdfbd..916b077df2d5 100644
+index ac4125ec0660..ca95ec1cbc4e 100644
 --- a/drivers/platform/x86/Kconfig
 --- a/drivers/platform/x86/Kconfig
 +++ b/drivers/platform/x86/Kconfig
 +++ b/drivers/platform/x86/Kconfig
 @@ -844,6 +844,31 @@ config INTEL_CHT_INT33FE
 @@ -844,6 +844,31 @@ config INTEL_CHT_INT33FE
@@ -3021,7 +2973,7 @@ index 000000000000..3fe27ec0caff
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 5c51db3de4fed9f76e34fb07369235cadc0667d9 Mon Sep 17 00:00:00 2001
+From e0e56e5c4ec4483bc3b85d0ebbf3c2251c5d8398 Mon Sep 17 00:00:00 2001
 From: Jake Day <jake@ninebysix.com>
 From: Jake Day <jake@ninebysix.com>
 Date: Fri, 25 Sep 2020 10:24:53 -0400
 Date: Fri, 25 Sep 2020 10:24:53 -0400
 Subject: [PATCH] media: i2c: Add support for the OV5693 image sensor
 Subject: [PATCH] media: i2c: Add support for the OV5693 image sensor
@@ -3043,7 +2995,7 @@ Patchset: cameras
  create mode 100644 drivers/media/i2c/ov5693.h
  create mode 100644 drivers/media/i2c/ov5693.h
 
 
 diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig
 diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig
-index 2b9d81e4794a..3099cb91ef21 100644
+index 6eed3209ee2d..fc96e3d4764b 100644
 --- a/drivers/media/i2c/Kconfig
 --- a/drivers/media/i2c/Kconfig
 +++ b/drivers/media/i2c/Kconfig
 +++ b/drivers/media/i2c/Kconfig
 @@ -972,6 +972,17 @@ config VIDEO_OV5675
 @@ -972,6 +972,17 @@ config VIDEO_OV5675
@@ -6378,7 +6330,7 @@ index 000000000000..9a508e1f3624
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 1a0606e05a713465f2d4396b926448029cb383ab Mon Sep 17 00:00:00 2001
+From b71f733a7cbdfaefad333d218a23f5902a405e7e Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Sun, 17 Jan 2021 19:08:18 +0000
 Date: Sun, 17 Jan 2021 19:08:18 +0000
 Subject: [PATCH] media: i2c: Add reset pin toggling to ov5693
 Subject: [PATCH] media: i2c: Add reset pin toggling to ov5693
@@ -6419,7 +6371,7 @@ index 32485e4ed42b..f9ced52ad37a 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 8483265d4a23150a773fd0fb760f2bf8c5307426 Mon Sep 17 00:00:00 2001
+From 23d3da32422d08c3deb15c324e68944b424ff08d Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Sun, 17 Jan 2021 21:39:15 +0000
 Date: Sun, 17 Jan 2021 21:39:15 +0000
 Subject: [PATCH] media: i2c: Fix misnamed variable in power_down() for ov5693
 Subject: [PATCH] media: i2c: Fix misnamed variable in power_down() for ov5693
@@ -6448,7 +6400,7 @@ index f9ced52ad37a..9fd44a3d1d85 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From d90e95ac0ba73580c98af561a74152d538d7fbac Mon Sep 17 00:00:00 2001
+From 36dd147f28b485c502868acae951a61e3a034d31 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Fabian=20W=C3=BCthrich?= <me@fabwu.ch>
 From: =?UTF-8?q?Fabian=20W=C3=BCthrich?= <me@fabwu.ch>
 Date: Fri, 22 Jan 2021 20:58:13 +0100
 Date: Fri, 22 Jan 2021 20:58:13 +0100
 Subject: [PATCH] cio2-bridge: Parse sensor orientation and rotation
 Subject: [PATCH] cio2-bridge: Parse sensor orientation and rotation
@@ -6611,7 +6563,7 @@ index dd0ffcafa489..924d99d20328 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 89fb5c747609d2c10c77f6595638883a5700e395 Mon Sep 17 00:00:00 2001
+From 173d655455237910750b8f08f53c1fbef0ea20a2 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Fabian=20W=C3=BCthrich?= <me@fabwu.ch>
 From: =?UTF-8?q?Fabian=20W=C3=BCthrich?= <me@fabwu.ch>
 Date: Fri, 22 Jan 2021 21:23:47 +0100
 Date: Fri, 22 Jan 2021 21:23:47 +0100
 Subject: [PATCH] ov5693: Add orientation and rotation controls
 Subject: [PATCH] ov5693: Add orientation and rotation controls
@@ -6667,7 +6619,7 @@ index 9fd44a3d1d85..1a85800df7ed 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 2ba5f312ff72c2744848983a4098177cbf054081 Mon Sep 17 00:00:00 2001
+From a23bd2514938e1063b40ce374f9474ee0c738c67 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Sat, 23 Jan 2021 00:28:32 +0000
 Date: Sat, 23 Jan 2021 00:28:32 +0000
 Subject: [PATCH] platform: x86: Stylistic updates for intel-skl-int3472
 Subject: [PATCH] platform: x86: Stylistic updates for intel-skl-int3472
@@ -7084,7 +7036,7 @@ index 3fe27ec0caff..40629291b339 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 75b63fc7f75d662d516d8120c3a870bd781e14c7 Mon Sep 17 00:00:00 2001
+From bfa0494efc110ec10b813fa251d110e3adb651fc Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Sat, 23 Jan 2021 00:30:15 +0000
 Date: Sat, 23 Jan 2021 00:30:15 +0000
 Subject: [PATCH] platform: x86: Add recalc_rate opp to int3472-discrete clock
 Subject: [PATCH] platform: x86: Add recalc_rate opp to int3472-discrete clock
@@ -7211,7 +7163,7 @@ index 42ae8396eb64..98eb1ec3399e 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 0b11240196604cd0bd721b4a46180fe7823ee06b Mon Sep 17 00:00:00 2001
+From e0ad52e910564795fb13077e195efe47d9450d9b Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Fabian=20W=C3=BCthrich?= <me@fabwu.ch>
 From: =?UTF-8?q?Fabian=20W=C3=BCthrich?= <me@fabwu.ch>
 Date: Sun, 24 Jan 2021 11:07:42 +0100
 Date: Sun, 24 Jan 2021 11:07:42 +0100
 Subject: [PATCH] cio2-bridge: Use macros and add warnings
 Subject: [PATCH] cio2-bridge: Use macros and add warnings
@@ -7315,7 +7267,7 @@ index 924d99d20328..e1e388cc9f45 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 08a3bb7988c47cd2857802bfe4c438cf1e395582 Mon Sep 17 00:00:00 2001
+From 7bd176a9e98e9a199232975799c180e65e2693ad Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Mon, 8 Feb 2021 21:44:38 +0000
 Date: Mon, 8 Feb 2021 21:44:38 +0000
 Subject: [PATCH] media: i2c: Tidy up ov5693_init_controls()
 Subject: [PATCH] media: i2c: Tidy up ov5693_init_controls()
@@ -7437,7 +7389,7 @@ index 9a508e1f3624..26819cf3f4d2 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 252fa0aaa35d6f4f8a1bc83737070c22df65279e Mon Sep 17 00:00:00 2001
+From 75e46b44c5e81c3eae596e9fd54e4c8a53f8c670 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Mon, 8 Feb 2021 21:46:49 +0000
 Date: Mon, 8 Feb 2021 21:46:49 +0000
 Subject: [PATCH] media: i2c: Remove OV5693_PPL_DEFAULT
 Subject: [PATCH] media: i2c: Remove OV5693_PPL_DEFAULT
@@ -7475,7 +7427,7 @@ index a9747ab783d7..7fb368eec327 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From a887349f340c1c4289e2c7510d2f13942c3b5fa3 Mon Sep 17 00:00:00 2001
+From 99b3425614d465dff825f507cc56616549a4b6d4 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Mon, 8 Feb 2021 22:53:02 +0000
 Date: Mon, 8 Feb 2021 22:53:02 +0000
 Subject: [PATCH] media: i2c: Add vblank control to ov5693 driver
 Subject: [PATCH] media: i2c: Add vblank control to ov5693 driver
@@ -7551,7 +7503,7 @@ index 26819cf3f4d2..9d7eed97963b 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From a30ff7e85e20058b44895896cc607afeff6b3cfc Mon Sep 17 00:00:00 2001
+From 69a956301158060de1297d2c04300af6f4e23c09 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Wed, 10 Feb 2021 00:36:32 +0000
 Date: Wed, 10 Feb 2021 00:36:32 +0000
 Subject: [PATCH] media: i2c: update exposure control for ov5693
 Subject: [PATCH] media: i2c: update exposure control for ov5693
@@ -7626,7 +7578,7 @@ index 1950d7ac2d54..cea767230aa9 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 14cb1065b1f464fe00330c4fb764157e1cda8173 Mon Sep 17 00:00:00 2001
+From c86a8c5729d9b4cf9f193801fe56ee8ef7730ee6 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Wed, 10 Feb 2021 00:39:42 +0000
 Date: Wed, 10 Feb 2021 00:39:42 +0000
 Subject: [PATCH] media: i2c: Fix incorrect bit-setting
 Subject: [PATCH] media: i2c: Fix incorrect bit-setting
@@ -7662,7 +7614,7 @@ index cea767230aa9..f681dbfcec56 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 6edf21c2eeed5c8ac2656ff6de0b465fd852deb2 Mon Sep 17 00:00:00 2001
+From 7c18b8ef50454eafb757838859f0faed7efb62fc Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Wed, 10 Feb 2021 16:25:48 +0000
 Date: Wed, 10 Feb 2021 16:25:48 +0000
 Subject: [PATCH] media: i2c: Don't set stream on during mode config
 Subject: [PATCH] media: i2c: Don't set stream on during mode config
@@ -7812,7 +7764,7 @@ index 9d7eed97963b..965208078c2b 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From bfab6b01e4e984f7fce2e10168b0fe4242ceee83 Mon Sep 17 00:00:00 2001
+From 7c1acdf7f6e92976050a3d9eab123cd9700426ab Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Wed, 10 Feb 2021 16:35:24 +0000
 Date: Wed, 10 Feb 2021 16:35:24 +0000
 Subject: [PATCH] media: i2c: Update gain control for ov5693
 Subject: [PATCH] media: i2c: Update gain control for ov5693
@@ -7884,7 +7836,7 @@ index f681dbfcec56..51eb3b05d121 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 052136967d4972f1c91817e35eb9d9538e80a832 Mon Sep 17 00:00:00 2001
+From 31fef3605057bace741136d282dee35da1c44bd6 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Wed, 10 Feb 2021 23:44:39 +0000
 Date: Wed, 10 Feb 2021 23:44:39 +0000
 Subject: [PATCH] media: i2c: Fixup gain read
 Subject: [PATCH] media: i2c: Fixup gain read
@@ -7947,7 +7899,7 @@ index 51eb3b05d121..952558c4f33b 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 3139bc00474507b373240f08f11f798643b490c8 Mon Sep 17 00:00:00 2001
+From 34030f540523c5db8c6497bf4fce8ff7bed129fe Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Thu, 11 Feb 2021 00:40:10 +0000
 Date: Thu, 11 Feb 2021 00:40:10 +0000
 Subject: [PATCH] media: i2c: Update controls on stream
 Subject: [PATCH] media: i2c: Update controls on stream
@@ -7982,7 +7934,7 @@ index 952558c4f33b..dd31083eeb7b 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 4be03779770b9b17c12cf2ac8775501c8623105f Mon Sep 17 00:00:00 2001
+From 3e1edf7b50b78525cb03b2ebc209929bf343fb06 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Thu, 11 Feb 2021 23:29:15 +0000
 Date: Thu, 11 Feb 2021 23:29:15 +0000
 Subject: [PATCH] media: i2c: Correct link frequency value
 Subject: [PATCH] media: i2c: Correct link frequency value
@@ -8021,7 +7973,7 @@ index 965208078c2b..7f1d31a82d3d 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 58ae978d22ef1b1128226a3c16afc5bc2f191286 Mon Sep 17 00:00:00 2001
+From eb6ecc3d06a479b8f470da0507151e506c607d60 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Mon, 25 Jan 2021 23:12:09 +0000
 Date: Mon, 25 Jan 2021 23:12:09 +0000
 Subject: [PATCH] media: i2c: Cleanup ov5693 driver
 Subject: [PATCH] media: i2c: Cleanup ov5693 driver
@@ -8942,7 +8894,7 @@ index 7f1d31a82d3d..70ccb3aae4c7 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 7782702ee9456f20e2a43b92e78513760cd74342 Mon Sep 17 00:00:00 2001
+From a68625a771c755ca74154aa7d0af9bf2477096e5 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Thu, 28 Jan 2021 12:04:38 +0000
 Date: Thu, 28 Jan 2021 12:04:38 +0000
 Subject: [PATCH] media: i2c: Add pm_runtime support to ov5693 driver
 Subject: [PATCH] media: i2c: Add pm_runtime support to ov5693 driver
@@ -9287,7 +9239,7 @@ index 70ccb3aae4c7..b78d3b474a43 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 103d1e9d84c51990aea3d5ddb43e64fafb03908d Mon Sep 17 00:00:00 2001
+From eb586cf951c1a5f78774686c3cc62642fad497b1 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Thu, 28 Jan 2021 12:07:36 +0000
 Date: Thu, 28 Jan 2021 12:07:36 +0000
 Subject: [PATCH] media: i2c: Remove old power methods from ov5693
 Subject: [PATCH] media: i2c: Remove old power methods from ov5693
@@ -9458,7 +9410,7 @@ index f2eaa5f71a31..ce26ce86fbd5 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From faea14734a72b8dcc08860d85709fad37fe15567 Mon Sep 17 00:00:00 2001
+From e27947a296518692f81a77e17c3539519c269da8 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Thu, 28 Jan 2021 12:14:00 +0000
 Date: Thu, 28 Jan 2021 12:14:00 +0000
 Subject: [PATCH] media: i2c: Trim unused headers from ov5693
 Subject: [PATCH] media: i2c: Trim unused headers from ov5693
@@ -9499,7 +9451,7 @@ index ce26ce86fbd5..b3b391a49fdb 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From bcb92e99e64d26c45b463436002e445fff6c0d47 Mon Sep 17 00:00:00 2001
+From 8d15bc69fe81ad66f40e822a1b26f534e78ae185 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Sat, 13 Feb 2021 21:39:35 +0000
 Date: Sat, 13 Feb 2021 21:39:35 +0000
 Subject: [PATCH] media: i2c: Remove VCM stuff
 Subject: [PATCH] media: i2c: Remove VCM stuff
@@ -9918,7 +9870,7 @@ index b3b391a49fdb..2c82b6578de9 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From da0b81ee826e58b1e5e5530cee2f77c9ffa4bbba Mon Sep 17 00:00:00 2001
+From 8acae4db377a938ff089d3b673a359aac1bca75c Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Sat, 13 Feb 2021 22:16:08 +0000
 Date: Sat, 13 Feb 2021 22:16:08 +0000
 Subject: [PATCH] media: i2c: Tidy up ov5693 sensor init
 Subject: [PATCH] media: i2c: Tidy up ov5693 sensor init
@@ -10074,7 +10026,7 @@ index 2c82b6578de9..313bc9177328 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 58c8f883b0c227f30a7317e2206e8ab6939dd7cd Mon Sep 17 00:00:00 2001
+From 0efea969af985e646868a2e03acb61d9088c29fe Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Fri, 12 Feb 2021 16:14:04 +0000
 Date: Fri, 12 Feb 2021 16:14:04 +0000
 Subject: [PATCH] media: i2c: cleanup macros in ov5693.h
 Subject: [PATCH] media: i2c: cleanup macros in ov5693.h
@@ -10220,7 +10172,7 @@ index b78d3b474a43..6502777eb5f3 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 044cf8819322eeaa99c8e52499b6764357fd21c6 Mon Sep 17 00:00:00 2001
+From 6b76a59d6a7964aefaffd4df2621d111398e5dff Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Fri, 12 Feb 2021 16:19:09 +0000
 Date: Fri, 12 Feb 2021 16:19:09 +0000
 Subject: [PATCH] media: i2c: use devm_kzalloc() to initialise ov5693
 Subject: [PATCH] media: i2c: use devm_kzalloc() to initialise ov5693
@@ -10250,7 +10202,7 @@ index 313bc9177328..d092ed698eb3 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 0477079d23bb8559d318d0803f0e7d06d9e45be6 Mon Sep 17 00:00:00 2001
+From 6cdaa6994c03c4edd4b27cda4413d62478653bf5 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Fri, 12 Feb 2021 16:26:21 +0000
 Date: Fri, 12 Feb 2021 16:26:21 +0000
 Subject: [PATCH] media: i2c: Check for supported clk rate in probe
 Subject: [PATCH] media: i2c: Check for supported clk rate in probe
@@ -10307,7 +10259,7 @@ index 6502777eb5f3..0dfbbe9a0ff2 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From f8dec837099fd628522f29a33e4a0688be938b27 Mon Sep 17 00:00:00 2001
+From 05b3e1c013910ee54877cb0883ec68bde48f910d Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Sat, 13 Feb 2021 23:17:50 +0000
 Date: Sat, 13 Feb 2021 23:17:50 +0000
 Subject: [PATCH] media: i2c: Use devres to fetch gpios
 Subject: [PATCH] media: i2c: Use devres to fetch gpios
@@ -10381,7 +10333,7 @@ index 8082d37841da..c580159079d2 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 0385044877ff117385d9042666cbffaf68dae788 Mon Sep 17 00:00:00 2001
+From 44f8b2d74cf8d0ecda0b34119675977be5f60cc0 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Sat, 13 Feb 2021 23:20:47 +0000
 Date: Sat, 13 Feb 2021 23:20:47 +0000
 Subject: [PATCH] media: i2c: Use devres to fetch regulators
 Subject: [PATCH] media: i2c: Use devres to fetch regulators
@@ -10424,7 +10376,7 @@ index c580159079d2..9f61b470f8ba 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From f5a33a3fec053a1fef75409be2b5cabf6aa0896a Mon Sep 17 00:00:00 2001
+From 8851c67a028b75aa25876baeef5637872e0bddc0 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Sun, 14 Feb 2021 12:39:14 +0000
 Date: Sun, 14 Feb 2021 12:39:14 +0000
 Subject: [PATCH] media: i2c: remove debug print
 Subject: [PATCH] media: i2c: remove debug print
@@ -10503,7 +10455,7 @@ index 9f61b470f8ba..622a7ddf4063 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 7ea821a1907225382ec148ee1d0bbbf8369ee113 Mon Sep 17 00:00:00 2001
+From dccc0c21df12e39bc3eb994ca23650b9445d2261 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Sun, 14 Feb 2021 14:32:50 +0000
 Date: Sun, 14 Feb 2021 14:32:50 +0000
 Subject: [PATCH] media: i2c: Remove unused resolutions from ov5693
 Subject: [PATCH] media: i2c: Remove unused resolutions from ov5693
@@ -10932,7 +10884,7 @@ index 0dfbbe9a0ff2..29e6735112da 100644
 -- 
 -- 
 2.30.1
 2.30.1
 
 
-From 2d4ebcefd309fd583a75fe1d61242ede4d341237 Mon Sep 17 00:00:00 2001
+From dcf7ffb69fd62c1ea6e821d5203346c4637cada9 Mon Sep 17 00:00:00 2001
 From: Daniel Scally <djrscally@gmail.com>
 From: Daniel Scally <djrscally@gmail.com>
 Date: Sun, 14 Feb 2021 14:45:58 +0000
 Date: Sun, 14 Feb 2021 14:45:58 +0000
 Subject: [PATCH] media: i2c: update set_fmt() for ov5693
 Subject: [PATCH] media: i2c: update set_fmt() for ov5693

+ 120 - 0
patches/5.11/0010-ath10k-firmware-override.patch

@@ -0,0 +1,120 @@
+From 8f475731fb84c2718743c8dbc03610a6f987cc1e Mon Sep 17 00:00:00 2001
+From: Maximilian Luz <luzmaximilian@gmail.com>
+Date: Sat, 27 Feb 2021 00:45:52 +0100
+Subject: [PATCH] ath10k: Add module parameters to override board files
+
+Some Surface devices, specifically the Surface Go and AMD version of the
+Surface Laptop 3 (wich both come with QCA6174 WiFi chips), work better
+with a different board file, as it seems that the firmeware included
+upstream is buggy.
+
+As it is generally not a good idea to randomly overwrite files, let
+alone doing so via packages, we add module parameters to override those
+file names in the driver. This allows us to package/deploy the override
+via a modprobe.d config.
+
+Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
+---
+ drivers/net/wireless/ath/ath10k/core.c | 58 ++++++++++++++++++++++++++
+ 1 file changed, 58 insertions(+)
+
+diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c
+index a419ec7130f9..b2c21bf5995e 100644
+--- a/drivers/net/wireless/ath/ath10k/core.c
++++ b/drivers/net/wireless/ath/ath10k/core.c
+@@ -35,6 +35,9 @@ static bool skip_otp;
+ static bool rawmode;
+ static bool fw_diag_log;
+ 
++static char *override_board = "";
++static char *override_board2 = "";
++
+ unsigned long ath10k_coredump_mask = BIT(ATH10K_FW_CRASH_DUMP_REGISTERS) |
+ 				     BIT(ATH10K_FW_CRASH_DUMP_CE_DATA);
+ 
+@@ -47,6 +50,9 @@ module_param(rawmode, bool, 0644);
+ module_param(fw_diag_log, bool, 0644);
+ module_param_named(coredump_mask, ath10k_coredump_mask, ulong, 0444);
+ 
++module_param(override_board, charp, 0644);
++module_param(override_board2, charp, 0644);
++
+ MODULE_PARM_DESC(debug_mask, "Debugging mask");
+ MODULE_PARM_DESC(uart_print, "Uart target debugging");
+ MODULE_PARM_DESC(skip_otp, "Skip otp failure for calibration in testmode");
+@@ -55,6 +61,9 @@ MODULE_PARM_DESC(rawmode, "Use raw 802.11 frame datapath");
+ MODULE_PARM_DESC(coredump_mask, "Bitfield of what to include in firmware crash file");
+ MODULE_PARM_DESC(fw_diag_log, "Diag based fw log debugging");
+ 
++MODULE_PARM_DESC(override_board, "Override for board.bin file");
++MODULE_PARM_DESC(override_board2, "Override for board-2.bin file");
++
+ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
+ 	{
+ 		.id = QCA988X_HW_2_0_VERSION,
+@@ -810,6 +819,42 @@ static int ath10k_init_configure_target(struct ath10k *ar)
+ 	return 0;
+ }
+ 
++static const char *ath10k_override_board_fw_file(struct ath10k *ar,
++						 const char *file)
++{
++	if (strcmp(file, "board.bin") == 0) {
++		if (strcmp(override_board, "") == 0)
++			return file;
++
++		if (strcmp(override_board, "none") == 0) {
++			dev_info(ar->dev, "firmware override: pretending 'board.bin' does not exist\n");
++			return NULL;
++		}
++
++		dev_info(ar->dev, "firmware override: replacing 'board.bin' with '%s'\n",
++			 override_board);
++
++		return override_board;
++	}
++
++	if (strcmp(file, "board-2.bin") == 0) {
++		if (strcmp(override_board2, "") == 0)
++			return file;
++
++		if (strcmp(override_board2, "none") == 0) {
++			dev_info(ar->dev, "firmware override: pretending 'board-2.bin' does not exist\n");
++			return NULL;
++		}
++
++		dev_info(ar->dev, "firmware override: replacing 'board-2.bin' with '%s'\n",
++			 override_board2);
++
++		return override_board2;
++	}
++
++	return file;
++}
++
+ static const struct firmware *ath10k_fetch_fw_file(struct ath10k *ar,
+ 						   const char *dir,
+ 						   const char *file)
+@@ -824,6 +869,19 @@ static const struct firmware *ath10k_fetch_fw_file(struct ath10k *ar,
+ 	if (dir == NULL)
+ 		dir = ".";
+ 
++	/* HACK: Override board.bin and board-2.bin files if specified.
++	 *
++	 * Some Surface devices perform better with a different board
++	 * configuration. To this end, one would need to replace the board.bin
++	 * file with the modified config and remove the board-2.bin file.
++	 * Unfortunately, that's not a solution that we can easily package. So
++	 * we add module options to perform these overrides here.
++	 */
++
++	file = ath10k_override_board_fw_file(ar, file);
++	if (!file)
++		return ERR_PTR(-ENOENT);
++
+ 	snprintf(filename, sizeof(filename), "%s/%s", dir, file);
+ 	ret = firmware_request_nowarn(&fw, filename, ar->dev);
+ 	ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot fw request '%s': %d\n",
+-- 
+2.30.1
+

+ 1 - 0
pkg/arch/kernel/0010-ath10k-firmware-override.patch

@@ -0,0 +1 @@
+../../../patches/5.11/0010-ath10k-firmware-override.patch

+ 11 - 9
pkg/arch/kernel/PKGBUILD

@@ -36,6 +36,7 @@ source=(
   0007-surface-typecover.patch
   0007-surface-typecover.patch
   0008-surface-sensors.patch
   0008-surface-sensors.patch
   0009-cameras.patch
   0009-cameras.patch
+  0010-ath10k-firmware-override.patch
 )
 )
 validpgpkeys=(
 validpgpkeys=(
   'ABAF11C65A2970B130ABE3C479BE3E4300411886'  # Linus Torvalds
   'ABAF11C65A2970B130ABE3C479BE3E4300411886'  # Linus Torvalds
@@ -46,15 +47,16 @@ sha256sums=('90820a7e47c958d01a9d001f87d9b13edd32b63b9a880fca8caae3ae6367ca29'
             'd8d5d11c80424985642b0eea6ace3256b5a1e5e69d637104523460a5ebdda202'
             'd8d5d11c80424985642b0eea6ace3256b5a1e5e69d637104523460a5ebdda202'
             '3fbd134c61de6f4fa86567bb0faf02c4eb2c54111b6dc45367b8f6e9ef06556e'
             '3fbd134c61de6f4fa86567bb0faf02c4eb2c54111b6dc45367b8f6e9ef06556e'
             '8cd2b019aac6d3807a5cdcbbbe0aad81e63193ff3e8dffd7a79d4a1421b858f6'
             '8cd2b019aac6d3807a5cdcbbbe0aad81e63193ff3e8dffd7a79d4a1421b858f6'
-            'b7c6f90940e045d9b98704f6c1ee783de3a6036f6509d51ed40e5cb4fd6573b7'
-            '0fabd3dad13b191ff0f0154faee6d689749e7557f606ee21e89197a6219fd8f6'
-            '5cebfbd408af53cf47057a515b0e31d5d7cef077d6504e6a92e40c4f851a37e1'
-            '4756e2c7d0fdd53e0079175915bb0c7e2e5b0d027c42b2a36a8ed64728f1a53e'
-            'e4984dedbac210b1f145dbd73164e9a2192a462e7092eb05060ddda6c8e7bb4d'
-            'ea243724dae4cd66638767d7551892b11d2b69460dfc4f519ecf13342f1a76f4'
-            '2b5bcd34340c60320566e0b13d0d2337e14606d96514541ee6d62182bef22e52'
-            '9aeb52e72929f1806dbedb08ba16ce49da65b7078c93dd783cd8f6a7abe006bf'
-            'a422d3a6eb82b44940ffabe7b0bb89e0ebaad0016aa5b964355eeeeafab7eb24')
+            '9e7fea8b5c65b48257f54e42cacbedfb29f9c9878866d8435c8e03bc75ee6ee4'
+            '497358ccba2f03346bab2b0d152ee7aa5aa605c03081e66c8e4d8c1185f0be90'
+            'b5389b02d7a5b7ac2d2e1f1036b1feed9877db5c602f1581698cd12b429aea76'
+            'cd05489b441f7357c1fd0d74ca60b0ceafe5c798eee27fcad79a4653162a23c7'
+            'f194e1a66eec726b9dd3c828f556d2a0a31164450293cc07cee467f756efbfad'
+            'a0728b87f7abeccd9508f0bc8f5617336d6253a072a54e4d2323981dfacb5de4'
+            'bc7c63cd6f9781f04f19028cc7ca557283d4a65be56de58342cd99d4127ad04f'
+            '7d0251fd15c9c38bbd2a68120b0160f6f7db0245b2d48b6e296547f176df81cd'
+            'b5587e78db8c8a8b2b3e53dc987c9d884bc36507442e1c7440fb30deb7a9f58b'
+            '719033b5da72d233dbeb8aef4019461554a76954ea6566c012efc866a465086c')
 
 
 
 
 export KBUILD_BUILD_HOST=archlinux
 export KBUILD_BUILD_HOST=archlinux