Update v5.10 patches

Changes:
 - SAM:
   - Move and split drivers to closer reflect upstreaming process
   - Various updates to HID and battery/AC drivers for upstreaming

 - Hotplug:
   - Various fixes and improvements

 - GPE:
   - Fix Kconfig dependency

 - IPTS
   - Various fixes and improvements

Links:
 - kernel: 5c7b5b588e
 - SAM: bee2add45f
 - GPE: 6ecfdb3905
 - Hotplug: 595ed62f24
 - IPTS: 3642d0e4eb
This commit is contained in:
Maximilian Luz 2021-02-15 21:36:42 +01:00
parent 5399769982
commit 88e2e104f2
No known key found for this signature in database
GPG key ID: 70EC0937F6C26F02
12 changed files with 5711 additions and 5603 deletions

View file

@ -6,12 +6,17 @@ CONFIG_SURFACE_AGGREGATOR_ERROR_INJECTION=n
CONFIG_SURFACE_AGGREGATOR_BUS=y
CONFIG_SURFACE_AGGREGATOR_CDEV=m
CONFIG_SURFACE_AGGREGATOR_REGISTRY=m
CONFIG_SURFACE_ACPI_NOTIFY=m
CONFIG_SURFACE_BATTERY=m
CONFIG_SURFACE_DTX=m
CONFIG_SURFACE_HID=m
CONFIG_SURFACE_PERFMODE=m
CONFIG_SURFACE_HID=m
CONFIG_SURFACE_KBD=m
CONFIG_BATTERY_SURFACE=m
CONFIG_CHARGER_SURFACE=m
#
# Surface Hotplug
#

View file

@ -1,4 +1,4 @@
From c49b5dc630a1a24d1f0b21e5eb70339ef97ba0de Mon Sep 17 00:00:00 2001
From f696bf9c577af759678b5296ac4b944dbb188c9e Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Sun, 18 Oct 2020 16:42:44 +0900
Subject: [PATCH] (surface3-oemb) add DMI matches for Surface 3 with broken DMI
@ -97,5 +97,5 @@ index 2752dc955733..ef36a316e2ed 100644
};
--
2.30.0
2.30.1

View file

@ -1,4 +1,4 @@
From 87009a45b3fb8bd697cca306828bb7bc7f6d80d5 Mon Sep 17 00:00:00 2001
From 7142aae4519bf0728c574940e21cc7ab2c4a9e0f Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Thu, 24 Sep 2020 18:02:06 +0900
Subject: [PATCH] mwifiex: pcie: skip cancel_work_sync() on reset failure path
@ -154,9 +154,9 @@ index 843d57eda820..5ed613d65709 100644
static inline int
--
2.30.0
2.30.1
From ea4297c1c464ab216c09d25c2f1af292c228b18e Mon Sep 17 00:00:00 2001
From 8ee97a2be558e3ee3fbdcee4c3934ffc46df6a66 Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Mon, 28 Sep 2020 17:46:49 +0900
Subject: [PATCH] mwifiex: pcie: add DMI-based quirk impl for Surface devices
@ -362,9 +362,9 @@ index 000000000000..5326ae7e5671
+
+void mwifiex_initialize_quirks(struct pcie_service_card *card);
--
2.30.0
2.30.1
From f36f5936f9fbca30a9e9ef785015186bca8ee006 Mon Sep 17 00:00:00 2001
From 012378c78ce0aa9f54e6233fb03f15ab662b4bff Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Tue, 29 Sep 2020 17:25:22 +0900
Subject: [PATCH] mwifiex: pcie: add reset_d3cold quirk for Surface gen4+
@ -563,9 +563,9 @@ index 5326ae7e5671..8b9dcb5070d8 100644
void mwifiex_initialize_quirks(struct pcie_service_card *card);
+int mwifiex_pcie_reset_d3cold_quirk(struct pci_dev *pdev);
--
2.30.0
2.30.1
From c8cbe2b6d4c0b8d5a6d30f6e4cab17390adf5b77 Mon Sep 17 00:00:00 2001
From e0e72a8bd4641edbd1f4f3c386f8573b3359a713 Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Tue, 29 Sep 2020 17:32:22 +0900
Subject: [PATCH] mwifiex: pcie: add reset_wsid quirk for Surface 3
@ -742,9 +742,9 @@ index 8b9dcb5070d8..3ef7440418e3 100644
int mwifiex_pcie_reset_d3cold_quirk(struct pci_dev *pdev);
+int mwifiex_pcie_reset_wsid_quirk(struct pci_dev *pdev);
--
2.30.0
2.30.1
From 970c5d56583d2a940706580cea083a14431d7aa0 Mon Sep 17 00:00:00 2001
From 7690864649999f7373e5800a04b4b053efb9232a Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Wed, 30 Sep 2020 18:08:24 +0900
Subject: [PATCH] mwifiex: pcie: (OEMB) add quirk for Surface 3 with broken DMI
@ -804,9 +804,9 @@ index f0a6fa0a7ae5..34dcd84f02a6 100644
.ident = "Surface Pro 3",
.matches = {
--
2.30.0
2.30.1
From 30ac4d3ad1f5f70e9cf12e249d8f78d680359fe0 Mon Sep 17 00:00:00 2001
From 9db151b0136ea9d7d9170020e0c74d45fa17a824 Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Thu, 24 Sep 2020 01:56:34 +0900
Subject: [PATCH] mwifiex: pcie: use shutdown_sw()/reinit_sw() on
@ -946,9 +946,9 @@ index 94561ddaf126..7b25335f1df3 100644
return 0;
}
--
2.30.0
2.30.1
From 0e150dd486af10093035f0cc54a1e3a67cf11b65 Mon Sep 17 00:00:00 2001
From 3b864ce43d794995d3f3ea182ad5bff74be4a573 Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Mon, 24 Aug 2020 17:11:35 +0900
Subject: [PATCH] mwifiex: pcie: add enable_device_dump module parameter
@ -995,9 +995,9 @@ index 7b25335f1df3..f7e0b86eb553 100644
if (!adapter->devdump_data) {
mwifiex_dbg(adapter, ERROR,
--
2.30.0
2.30.1
From a17560e923a7e1e8928e051bf2edecdf5d4dafc5 Mon Sep 17 00:00:00 2001
From 31ab9786797227365c34354d842efe0aaf6e62dd Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Sun, 4 Oct 2020 00:11:49 +0900
Subject: [PATCH] mwifiex: pcie: disable bridge_d3 for Surface gen4+
@ -1150,9 +1150,9 @@ index 3ef7440418e3..a95ebac06e13 100644
void mwifiex_initialize_quirks(struct pcie_service_card *card);
int mwifiex_pcie_reset_d3cold_quirk(struct pci_dev *pdev);
--
2.30.0
2.30.1
From e1b592170064cb85d811337b40ad0f30ec7526f8 Mon Sep 17 00:00:00 2001
From 9c5b054473350dae8139e9b5c1ceea86b0560264 Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Sun, 4 Oct 2020 00:25:48 +0900
Subject: [PATCH] mwifiex: add allow_ps_mode module parameter
@ -1212,9 +1212,9 @@ index a6b9dc6700b1..943bc1e8ceae 100644
}
--
2.30.0
2.30.1
From cad3b0ba3e206ec40d3f425da7f7308d2f43556b Mon Sep 17 00:00:00 2001
From 635922ff9b7d620d892a0bf5757dbc852d432a2e Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Sun, 4 Oct 2020 00:38:48 +0900
Subject: [PATCH] mwifiex: print message when changing ps_mode
@ -1247,9 +1247,9 @@ index 943bc1e8ceae..a2eb8df8d385 100644
}
--
2.30.0
2.30.1
From dfa6f63ee590f00a02c0cf7fbb899a573f034ed0 Mon Sep 17 00:00:00 2001
From c53651a257e2f7af1daa566df43e7724ac75e04f Mon Sep 17 00:00:00 2001
From: Tsuchiya Yuto <kitakar@gmail.com>
Date: Sun, 4 Oct 2020 00:59:37 +0900
Subject: [PATCH] mwifiex: disable ps_mode explicitly by default instead
@ -1295,5 +1295,5 @@ index d3a968ef21ef..9b7b52fbc9c4 100644
if (drcs) {
--
2.30.0
2.30.1

View file

@ -1,33 +1,4 @@
From ea5fed3f7755a0753d74233fed09257e2f0d3ba7 Mon Sep 17 00:00:00 2001
From: Dorian Stoll <dorian.stoll@tmsp.io>
Date: Fri, 25 Sep 2020 18:06:05 +0200
Subject: [PATCH] mei: Remove client devices before shutting down
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.0
From 2b77466eb637e9418cb661b61e3c18de800c3c6f Mon Sep 17 00:00:00 2001
From b0ddc5d69f3ed78e7689a7d1e143567fbc16e55e Mon Sep 17 00:00:00 2001
From: Dorian Stoll <dorian.stoll@tmsp.io>
Date: Thu, 30 Jul 2020 13:21:53 +0200
Subject: [PATCH] misc: mei: Add missing IPTS device IDs
@ -63,9 +34,9 @@ index 1de9ef7a272b..e12484840f88 100644
{MEI_PCI_DEVICE(MEI_DEV_ID_TGP_LP, MEI_ME_PCH15_CFG)},
{MEI_PCI_DEVICE(MEI_DEV_ID_TGP_H, MEI_ME_PCH15_SPS_CFG)},
--
2.30.0
2.30.1
From 99cb44358ee4d8ed8be3f1e01963a5e264e010c9 Mon Sep 17 00:00:00 2001
From 23313b15879627928315f6d97d1002264dc511f7 Mon Sep 17 00:00:00 2001
From: Dorian Stoll <dorian.stoll@tmsp.io>
Date: Thu, 6 Aug 2020 11:20:41 +0200
Subject: [PATCH] misc: Add support for Intel Precise Touch & Stylus
@ -79,18 +50,18 @@ Patchset: ipts
drivers/misc/Makefile | 1 +
drivers/misc/ipts/Kconfig | 17 ++
drivers/misc/ipts/Makefile | 12 ++
drivers/misc/ipts/context.h | 48 +++++
drivers/misc/ipts/control.c | 73 ++++++++
drivers/misc/ipts/control.h | 23 +++
drivers/misc/ipts/mei.c | 128 ++++++++++++++
drivers/misc/ipts/protocol.h | 319 ++++++++++++++++++++++++++++++++++
drivers/misc/ipts/receiver.c | 183 +++++++++++++++++++
drivers/misc/ipts/receiver.h | 17 ++
drivers/misc/ipts/resources.c | 134 ++++++++++++++
drivers/misc/ipts/resources.h | 18 ++
drivers/misc/ipts/uapi.c | 190 ++++++++++++++++++++
drivers/misc/ipts/uapi.h | 47 +++++
15 files changed, 1211 insertions(+)
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/receiver.h | 16 ++
drivers/misc/ipts/resources.c | 128 +++++++++++++++
drivers/misc/ipts/resources.h | 17 ++
drivers/misc/ipts/uapi.c | 211 +++++++++++++++++++++++++
drivers/misc/ipts/uapi.h | 47 ++++++
15 files changed, 1185 insertions(+)
create mode 100644 drivers/misc/ipts/Kconfig
create mode 100644 drivers/misc/ipts/Makefile
create mode 100644 drivers/misc/ipts/context.h
@ -167,10 +138,10 @@ index 000000000000..8f58b9adbc94
+
diff --git a/drivers/misc/ipts/context.h b/drivers/misc/ipts/context.h
new file mode 100644
index 000000000000..6e8eba3a47e5
index 000000000000..f4b06a2d3f72
--- /dev/null
+++ b/drivers/misc/ipts/context.h
@@ -0,0 +1,48 @@
@@ -0,0 +1,47 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (c) 2016 Intel Corporation
@ -218,13 +189,12 @@ index 000000000000..6e8eba3a47e5
+};
+
+#endif /* _IPTS_CONTEXT_H_ */
+
diff --git a/drivers/misc/ipts/control.c b/drivers/misc/ipts/control.c
new file mode 100644
index 000000000000..98787d7ea292
index 000000000000..24d3d19a667a
--- /dev/null
+++ b/drivers/misc/ipts/control.c
@@ -0,0 +1,73 @@
@@ -0,0 +1,76 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2016 Intel Corporation
@ -240,8 +210,8 @@ index 000000000000..98787d7ea292
+#include "resources.h"
+#include "uapi.h"
+
+int ipts_control_send(struct ipts_context *ipts,
+ u32 code, void *payload, size_t size)
+int ipts_control_send(struct ipts_context *ipts, u32 code, void *payload,
+ size_t size)
+{
+ int ret;
+ struct ipts_command cmd;
@ -286,6 +256,10 @@ index 000000000000..98787d7ea292
+
+ ipts_uapi_unlink();
+ ipts_resources_free(ipts);
+
+ if (!mei_cldev_enabled(ipts->cldev))
+ return 0;
+
+ return ipts_control_send(ipts, IPTS_CMD_CLEAR_MEM_WINDOW, NULL, 0);
+}
+
@ -297,13 +271,12 @@ index 000000000000..98787d7ea292
+ ipts->restart = true;
+ return ipts_control_stop(ipts);
+}
+
diff --git a/drivers/misc/ipts/control.h b/drivers/misc/ipts/control.h
new file mode 100644
index 000000000000..2b3172c16063
index 000000000000..4ee0ceb84749
--- /dev/null
+++ b/drivers/misc/ipts/control.h
@@ -0,0 +1,23 @@
@@ -0,0 +1,22 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (c) 2016 Intel Corporation
@ -319,20 +292,19 @@ index 000000000000..2b3172c16063
+
+#include "context.h"
+
+int ipts_control_send(struct ipts_context *ipts,
+ u32 cmd, void *payload, size_t size);
+int ipts_control_send(struct ipts_context *ipts, u32 cmd, void *payload,
+ size_t size);
+int ipts_control_start(struct ipts_context *ipts);
+int ipts_control_restart(struct ipts_context *ipts);
+int ipts_control_stop(struct ipts_context *ipts);
+
+#endif /* _IPTS_CONTROL_H_ */
+
diff --git a/drivers/misc/ipts/mei.c b/drivers/misc/ipts/mei.c
new file mode 100644
index 000000000000..b74e45c55b62
index 000000000000..2945809d5b46
--- /dev/null
+++ b/drivers/misc/ipts/mei.c
@@ -0,0 +1,128 @@
@@ -0,0 +1,118 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2016 Intel Corporation
@ -366,7 +338,7 @@ index 000000000000..b74e45c55b62
+}
+
+static int ipts_mei_probe(struct mei_cl_device *cldev,
+ const struct mei_cl_device_id *id)
+ const struct mei_cl_device_id *id)
+{
+ int ret;
+ struct ipts_context *ipts;
@ -382,7 +354,7 @@ index 000000000000..b74e45c55b62
+ return ret;
+ }
+
+ ipts = kzalloc(sizeof(struct ipts_context), GFP_KERNEL);
+ ipts = kzalloc(sizeof(*ipts), GFP_KERNEL);
+ if (!ipts) {
+ mei_cldev_disable(cldev);
+ return -ENOMEM;
@ -400,19 +372,10 @@ index 000000000000..b74e45c55b62
+
+static int ipts_mei_remove(struct mei_cl_device *cldev)
+{
+ int i;
+ struct ipts_context *ipts = mei_cldev_get_drvdata(cldev);
+
+ ipts_control_stop(ipts);
+
+ for (i = 0; i < 20; i++) {
+ if (ipts->status == IPTS_HOST_STATUS_STOPPED)
+ break;
+
+ msleep(25);
+ }
+
+ mei_cldev_disable(cldev);
+ ipts_control_stop(ipts);
+ kfree(ipts);
+
+ return 0;
@ -420,7 +383,7 @@ index 000000000000..b74e45c55b62
+
+static struct mei_cl_device_id ipts_mei_device_id_table[] = {
+ { "", IPTS_MEI_UUID, MEI_CL_VERSION_ANY },
+ { },
+ {},
+};
+MODULE_DEVICE_TABLE(mei, ipts_mei_device_id_table);
+
@ -460,13 +423,12 @@ index 000000000000..b74e45c55b62
+
+module_init(ipts_mei_init);
+module_exit(ipts_mei_exit);
+
diff --git a/drivers/misc/ipts/protocol.h b/drivers/misc/ipts/protocol.h
new file mode 100644
index 000000000000..2e179cbb9af3
index 000000000000..381068504d46
--- /dev/null
+++ b/drivers/misc/ipts/protocol.h
@@ -0,0 +1,319 @@
@@ -0,0 +1,284 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (c) 2016 Intel Corporation
@ -483,8 +445,9 @@ index 000000000000..2e179cbb9af3
+/*
+ * The MEI client ID for IPTS functionality.
+ */
+#define IPTS_MEI_UUID UUID_LE(0x3e8d0870, 0x271a, 0x4208, \
+ 0x8e, 0xb5, 0x9a, 0xcb, 0x94, 0x02, 0xae, 0x04)
+#define IPTS_MEI_UUID \
+ UUID_LE(0x3e8d0870, 0x271a, 0x4208, 0x8e, 0xb5, 0x9a, 0xcb, 0x94, \
+ 0x02, 0xae, 0x04)
+
+/*
+ * Queries the device for vendor specific information.
@ -543,149 +506,99 @@ index 000000000000..2e179cbb9af3
+#define IPTS_RSP_CLEAR_MEM_WINDOW 0x80000007
+
+/*
+ * Singletouch mode is a fallback that does not support
+ * a stylus or more than one touch input. The data is
+ * received as a HID report with report ID 64.
+ * Instructs the ME to reset the touch sensor.
+ *
+ * The command must contain struct ipts_reset_sensor_cmd as payload.
+ * The response will not contain any payload.
+ */
+#define IPTS_MODE_SINGLETOUCH 0x0
+#define IPTS_CMD_RESET_SENSOR 0x0000000B
+#define IPTS_RSP_RESET_SENSOR 0x8000000B
+
+/*
+ * Multitouch mode is the "proper" operation mode for IPTS. It will
+ * return stylus data as well as capacitive heatmap touch data.
+ * This data needs to be processed in userspace before it can be used.
+/**
+ * enum ipts_status - Possible status codes returned by IPTS commands.
+ * @IPTS_STATUS_SUCCESS: Operation completed successfully.
+ * @IPTS_STATUS_INVALID_PARAMS: Command contained a payload with invalid parameters.
+ * @IPTS_STATUS_ACCESS_DENIED: ME could not validate buffer addresses supplied by host.
+ * @IPTS_STATUS_CMD_SIZE_ERROR: Command contains an invalid payload.
+ * @IPTS_STATUS_NOT_READY: Buffer addresses have not been set.
+ * @IPTS_STATUS_REQUEST_OUTSTANDING: There is an outstanding command of the same type.
+ * The host must wait for a response before sending another
+ * command of the same type.
+ * @IPTS_STATUS_NO_SENSOR_FOUND: No sensor could be found. Either no sensor is connected, it
+ * has not been initialized yet, or the system is improperly
+ * configured.
+ * @IPTS_STATUS_OUT_OF_MEMORY: Not enough free memory for requested operation.
+ * @IPTS_STATUS_INTERNAL_ERROR: An unexpected error occurred.
+ * @IPTS_STATUS_SENSOR_DISABLED: The sensor has been disabled and must be reinitialized.
+ * @IPTS_STATUS_COMPAT_CHECK_FAIL: Compatibility revision check between sensor and ME failed.
+ * The host can ignore this error and attempt to continue.
+ * @IPTS_STATUS_SENSOR_EXPECTED_RESET: The sensor went through a reset initiated by ME or host.
+ * @IPTS_STATUS_SENSOR_UNEXPECTED_RESET: The sensor went through an unexpected reset.
+ * @IPTS_STATUS_RESET_FAILED: Requested sensor reset failed to complete.
+ * @IPTS_STATUS_TIMEOUT: The operation timed out.
+ * @IPTS_STATUS_TEST_MODE_FAIL: Test mode pattern did not match expected values.
+ * @IPTS_STATUS_SENSOR_FAIL_FATAL: The sensor reported a fatal error during reset sequence.
+ * Further progress is not possible.
+ * @IPTS_STATUS_SENSOR_FAIL_NONFATAL: The sensor reported a fatal error during reset sequence.
+ * The host can attempt to continue.
+ * @IPTS_STATUS_INVALID_DEVICE_CAPS: The device reported invalid capabilities.
+ * @IPTS_STATUS_QUIESCE_IO_IN_PROGRESS: Command cannot be completed until Quiesce IO is done.
+ */
+#define IPTS_MODE_MULTITOUCH 0x1
+
+/*
+ * Operation completed successfully.
+ */
+#define IPTS_STATUS_SUCCESS 0x0
+
+/*
+ * Command contained a payload with invalid parameters.
+ */
+#define IPTS_STATUS_INVALID_PARAMS 0x1
+
+/*
+ * ME was unable to validate buffer addresses supplied by the host.
+ */
+#define IPTS_STATUS_ACCESS_DENIED 0x2
+
+/*
+ * Command contained a payload with an invalid size.
+ */
+#define IPTS_STATUS_CMD_SIZE_ERROR 0x3
+
+/*
+ * Buffer addresses have not been set, or the
+ * device is not ready for operation yet.
+ */
+#define IPTS_STATUS_NOT_READY 0x4
+
+/*
+ * There is an outstanding command of the same type. The host must
+ * wait for a response before sending another command of the same type.
+ */
+#define IPTS_STATUS_REQUEST_OUTSTANDING 0x5
+
+/*
+ * No sensor could be found. Either no sensor is connected, it has not
+ * been initialized yet, or the system is improperly configured.
+ */
+#define IPTS_STATUS_NO_SENSOR_FOUND 0x6
+
+/*
+ * Not enough free memory for requested operation.
+ */
+#define IPTS_STATUS_OUT_OF_MEMORY 0x7
+
+/*
+ * An unexpected error occured.
+ */
+#define IPTS_STATUS_INTERNAL_ERROR 0x8
+
+/*
+ * The sensor has been disabled / reset and must be reinitialized.
+ */
+#define IPTS_STATUS_SENSOR_DISABLED 0x9
+
+/*
+ * Compatibility revision check between sensor and ME failed.
+ * The host can ignore this error and attempt to continue.
+ */
+#define IPTS_STATUS_COMPAT_CHECK_FAIL 0xA
+
+/*
+ * The sensor went through a reset initiated by the ME / the host.
+ */
+#define IPTS_STATUS_SENSOR_EXPECTED_RESET 0xB
+
+/*
+ * The sensor went through an unexpected reset.
+ */
+#define IPTS_STATUS_SENSOR_UNEXPECTED_RESET 0xC
+
+/*
+ * Requested sensor reset failed to complete.
+ */
+#define IPTS_STATUS_RESET_FAILED 0xD
+
+/*
+ * The operation timed out.
+ */
+#define IPTS_STATUS_TIMEOUT 0xE
+
+/*
+ * Test mode pattern did not match expected values.
+ */
+#define IPTS_STATUS_TEST_MODE_FAIL 0xF
+
+/*
+ * The sensor reported fatal error during reset sequence.
+ * Futher progress is not possible.
+ */
+#define IPTS_STATUS_SENSOR_FAIL_FATAL 0x10
+
+/*
+ * The sensor reported fatal error during reset sequence.
+ * The host can attempt to continue.
+ */
+#define IPTS_STATUS_SENSOR_FAIL_NONFATAL 0x11
+
+/*
+ * The sensor reported invalid capabilities.
+ */
+#define IPTS_STATUS_INVALID_DEVICE_CAPS 0x12
+
+/*
+ * The command cannot be completed until Quiesce IO flow has completed.
+ */
+#define IPTS_STATUS_QUIESCE_IO_IN_PROGRESS 0x13
+enum ipts_status {
+ IPTS_STATUS_SUCCESS = 0,
+ IPTS_STATUS_INVALID_PARAMS = 1,
+ IPTS_STATUS_ACCESS_DENIED = 2,
+ IPTS_STATUS_CMD_SIZE_ERROR = 3,
+ IPTS_STATUS_NOT_READY = 4,
+ IPTS_STATUS_REQUEST_OUTSTANDING = 5,
+ IPTS_STATUS_NO_SENSOR_FOUND = 6,
+ IPTS_STATUS_OUT_OF_MEMORY = 7,
+ IPTS_STATUS_INTERNAL_ERROR = 8,
+ IPTS_STATUS_SENSOR_DISABLED = 9,
+ IPTS_STATUS_COMPAT_CHECK_FAIL = 10,
+ IPTS_STATUS_SENSOR_EXPECTED_RESET = 11,
+ IPTS_STATUS_SENSOR_UNEXPECTED_RESET = 12,
+ IPTS_STATUS_RESET_FAILED = 13,
+ IPTS_STATUS_TIMEOUT = 14,
+ IPTS_STATUS_TEST_MODE_FAIL = 15,
+ IPTS_STATUS_SENSOR_FAIL_FATAL = 16,
+ IPTS_STATUS_SENSOR_FAIL_NONFATAL = 17,
+ IPTS_STATUS_INVALID_DEVICE_CAPS = 18,
+ IPTS_STATUS_QUIESCE_IO_IN_PROGRESS = 19,
+};
+
+/*
+ * The amount of buffers that is used for IPTS
+ */
+#define IPTS_BUFFERS 16
+
+#define IPTS_WORKQUEUE_SIZE 8192
+#define IPTS_WORKQUEUE_ITEM_SIZE 16
+/**
+ * enum ipts_mode - Operation mode for IPTS hardware
+ * @IPTS_MODE_SINGLETOUCH: Fallback that supports only one finger and no stylus.
+ * The data is received as a HID report with ID 64.
+ * @IPTS_MODE_MULTITOUCH: The "proper" operation mode for IPTS. It will return
+ * stylus data as well as capacitive heatmap touch data.
+ * This data needs to be processed in userspace.
+ */
+enum ipts_mode {
+ IPTS_MODE_SINGLETOUCH = 0,
+ IPTS_MODE_MULTITOUCH = 1,
+};
+
+/**
+ * struct ipts_set_mode_cmd - Payload for the SET_MODE command.
+ *
+ * @mode: The mode that IPTS should operate in. (IPTS_MODE_*)
+ *
+ * This driver only supports multitouch mode. Singletouch mode
+ * requires a different control flow that is not implemented.
+ * @mode: The mode that IPTS should operate in.
+ */
+struct ipts_set_mode_cmd {
+ u32 mode;
+ enum ipts_mode mode;
+ u8 reserved[12];
+} __packed;
+
+#define IPTS_WORKQUEUE_SIZE 8192
+#define IPTS_WORKQUEUE_ITEM_SIZE 16
+
+/**
+ * struct ipts_set_mem_window_cmd - Payload for the SET_MEM_WINDOW command.
+ *
+ * @data_buffer_addr_lower: Lower 32 bits of the data buffer addresses.
+ * @data_buffer_addr_upper: Upper 32 bits of the data buffer addresses.
+ * @workqueue_addr_lower: Lower 32 bits of the workqueue buffer address.
@ -696,8 +609,8 @@ index 000000000000..2e179cbb9af3
+ * @feedback_buffer_addr_upper: Upper 32 bits of the feedback buffer addresses.
+ * @host2me_addr_lower: Lower 32 bits of the host2me buffer address.
+ * @host2me_addr_upper: Upper 32 bits of the host2me buffer address.
+ * @workqueue_item_size: Constant value. (IPTS_WORKQUEUE_ITEM_SIZE)
+ * @workqueue_size: Constant value. (IPTS_WORKQUEUE_SIZE)
+ * @workqueue_item_size: Magic value. (IPTS_WORKQUEUE_ITEM_SIZE)
+ * @workqueue_size: Magic value. (IPTS_WORKQUEUE_SIZE)
+ *
+ * The data buffers are buffers that get filled with touch data by the ME.
+ * The doorbell buffer is a u32 that gets incremented by the ME once a data
@ -705,8 +618,8 @@ index 000000000000..2e179cbb9af3
+ *
+ * The other buffers are required for using GuC submission with binary
+ * firmware. Since support for GuC submission has been dropped from i915,
+ * they are not used anymore, but they need to be allocated to ensure proper
+ * operation.
+ * they are not used anymore, but they need to be allocated and passed,
+ * otherwise the hardware will refuse to start.
+ */
+struct ipts_set_mem_window_cmd {
+ u32 data_buffer_addr_lower[IPTS_BUFFERS];
@ -728,7 +641,6 @@ index 000000000000..2e179cbb9af3
+
+/**
+ * struct ipts_feedback_cmd - Payload for the FEEDBACK command.
+ *
+ * @buffer: The buffer that the ME should refill.
+ */
+struct ipts_feedback_cmd {
@ -737,9 +649,27 @@ index 000000000000..2e179cbb9af3
+} __packed;
+
+/**
+ * enum ipts_reset_type - Possible ways of resetting the touch sensor
+ * @IPTS_RESET_TYPE_HARD: Perform hardware reset using GPIO pin.
+ * @IPTS_RESET_TYPE_SOFT: Perform software reset using SPI interface.
+ */
+enum ipts_reset_type {
+ IPTS_RESET_TYPE_HARD = 0,
+ IPTS_RESET_TYPE_SOFT = 1,
+};
+
+/**
+ * struct ipts_reset_sensor_cmd - Payload for the RESET_SENSOR command.
+ * @type: What type of reset should be performed.
+ */
+struct ipts_reset_sensor_cmd {
+ enum ipts_reset_type type;
+ u8 reserved[4];
+} __packed;
+
+/**
+ * struct ipts_command - A message sent from the host to the ME.
+ *
+ * @code: The message code describing the command (IPTS_CMD_*)
+ * @code: The message code describing the command. (see IPTS_CMD_*)
+ * @payload: Payload for the command, or 0 if no payload is required.
+ */
+struct ipts_command {
@ -749,14 +679,13 @@ index 000000000000..2e179cbb9af3
+
+/**
+ * struct ipts_device_info - Payload for the GET_DEVICE_INFO response.
+ *
+ * @vendor_id: Vendor ID of the touch sensor.
+ * @device_id: Device ID of the touch sensor.
+ * @hw_rev: Hardware revision of the touch sensor.
+ * @fw_rev: Firmware revision of the touch sensor.
+ * @data_size: Required size of one data buffer.
+ * @feedback_size: Required size of one feedback buffer.
+ * @mode: Current operation mode of IPTS (IPTS_MODE_*)
+ * @mode: Current operation mode of IPTS.
+ * @max_contacts: The amount of concurrent touches supported by the sensor.
+ */
+struct ipts_get_device_info_rsp {
@ -766,32 +695,30 @@ index 000000000000..2e179cbb9af3
+ u32 fw_rev;
+ u32 data_size;
+ u32 feedback_size;
+ u32 mode;
+ enum ipts_mode mode;
+ u8 max_contacts;
+ u8 reserved[19];
+} __packed;
+
+/**
+ * struct ipts_response - A message sent from the ME to the host.
+ *
+ * @code: The message code describing the response (IPTS_RSP_*)
+ * @status: The status code returned by the command. (IPTS_STATUS_*)
+ * @code: The message code describing the response. (see IPTS_RSP_*)
+ * @status: The status code returned by the command.
+ * @payload: Payload returned by the command.
+ */
+struct ipts_response {
+ u32 code;
+ u32 status;
+ enum ipts_status status;
+ u8 payload[80];
+} __packed;
+
+#endif /* _IPTS_PROTOCOL_H_ */
+
diff --git a/drivers/misc/ipts/receiver.c b/drivers/misc/ipts/receiver.c
new file mode 100644
index 000000000000..3660a1dcfff9
index 000000000000..916ba3ec211b
--- /dev/null
+++ b/drivers/misc/ipts/receiver.c
@@ -0,0 +1,183 @@
@@ -0,0 +1,188 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2016 Intel Corporation
@ -809,18 +736,18 @@ index 000000000000..3660a1dcfff9
+#include "resources.h"
+
+static int ipts_receiver_handle_get_device_info(struct ipts_context *ipts,
+ struct ipts_response *rsp)
+ struct ipts_response *rsp)
+{
+ struct ipts_set_mode_cmd cmd;
+
+ memcpy(&ipts->device_info, rsp->payload,
+ sizeof(struct ipts_get_device_info_rsp));
+ sizeof(struct ipts_get_device_info_rsp));
+
+ memset(&cmd, 0, sizeof(struct ipts_set_mode_cmd));
+ cmd.mode = IPTS_MODE_MULTITOUCH;
+
+ return ipts_control_send(ipts, IPTS_CMD_SET_MODE,
+ &cmd, sizeof(struct ipts_set_mode_cmd));
+ return ipts_control_send(ipts, IPTS_CMD_SET_MODE, &cmd,
+ sizeof(struct ipts_set_mode_cmd));
+}
+
+static int ipts_receiver_handle_set_mode(struct ipts_context *ipts)
@ -862,15 +789,14 @@ index 000000000000..3660a1dcfff9
+ cmd.workqueue_size = IPTS_WORKQUEUE_SIZE;
+ cmd.workqueue_item_size = IPTS_WORKQUEUE_ITEM_SIZE;
+
+ return ipts_control_send(ipts, IPTS_CMD_SET_MEM_WINDOW,
+ &cmd, sizeof(struct ipts_set_mem_window_cmd));
+ return ipts_control_send(ipts, IPTS_CMD_SET_MEM_WINDOW, &cmd,
+ sizeof(struct ipts_set_mem_window_cmd));
+}
+
+static int ipts_receiver_handle_set_mem_window(struct ipts_context *ipts)
+{
+ 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;
+
+ return ipts_control_send(ipts, IPTS_CMD_READY_FOR_DATA, NULL, 0);
@ -878,15 +804,22 @@ index 000000000000..3660a1dcfff9
+
+static int ipts_receiver_handle_clear_mem_window(struct ipts_context *ipts)
+{
+ ipts->status = IPTS_HOST_STATUS_STOPPED;
+
+ if (ipts->restart)
+ return ipts_control_start(ipts);
+
+ ipts->status = IPTS_HOST_STATUS_STOPPED;
+ return 0;
+}
+
+static bool ipts_receiver_sensor_was_reset(u32 status)
+{
+ return status == IPTS_STATUS_SENSOR_EXPECTED_RESET ||
+ status == IPTS_STATUS_SENSOR_UNEXPECTED_RESET;
+}
+
+static bool ipts_receiver_handle_error(struct ipts_context *ipts,
+ struct ipts_response *rsp)
+ struct ipts_response *rsp)
+{
+ bool error;
+
@ -909,10 +842,10 @@ index 000000000000..3660a1dcfff9
+ if (!error)
+ return false;
+
+ dev_err(ipts->dev, "Command 0x%08x failed: %d\n",
+ rsp->code, rsp->status);
+ dev_err(ipts->dev, "Command 0x%08x failed: %d\n", rsp->code,
+ rsp->status);
+
+ if (rsp->code == IPTS_STATUS_SENSOR_UNEXPECTED_RESET) {
+ if (ipts_receiver_sensor_was_reset(rsp->status)) {
+ dev_err(ipts->dev, "Sensor was reset\n");
+
+ if (ipts_control_restart(ipts))
@ -923,7 +856,7 @@ index 000000000000..3660a1dcfff9
+}
+
+static void ipts_receiver_handle_response(struct ipts_context *ipts,
+ struct ipts_response *rsp)
+ struct ipts_response *rsp)
+{
+ int ret;
+
@ -952,7 +885,7 @@ index 000000000000..3660a1dcfff9
+ return;
+
+ dev_err(ipts->dev, "Error while handling response 0x%08x: %d\n",
+ rsp->code, ret);
+ rsp->code, ret);
+
+ if (ipts_control_stop(ipts))
+ dev_err(ipts->dev, "Failed to stop IPTS\n");
@ -974,13 +907,12 @@ index 000000000000..3660a1dcfff9
+
+ ipts_receiver_handle_response(ipts, &rsp);
+}
+
diff --git a/drivers/misc/ipts/receiver.h b/drivers/misc/ipts/receiver.h
new file mode 100644
index 000000000000..c061d57a9320
index 000000000000..7f075afa7ef8
--- /dev/null
+++ b/drivers/misc/ipts/receiver.h
@@ -0,0 +1,17 @@
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (c) 2016 Intel Corporation
@ -997,13 +929,12 @@ index 000000000000..c061d57a9320
+void ipts_receiver_callback(struct mei_cl_device *cldev);
+
+#endif /* _IPTS_RECEIVER_H_ */
+
diff --git a/drivers/misc/ipts/resources.c b/drivers/misc/ipts/resources.c
new file mode 100644
index 000000000000..bcf4dd8d7e95
index 000000000000..8e3a2409e438
--- /dev/null
+++ b/drivers/misc/ipts/resources.c
@@ -0,0 +1,134 @@
@@ -0,0 +1,128 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2016 Intel Corporation
@ -1030,7 +961,7 @@ index 000000000000..bcf4dd8d7e95
+ continue;
+
+ dma_free_coherent(ipts->dev, data_buffer_size,
+ buffers[i].address, buffers[i].dma_address);
+ buffers[i].address, buffers[i].dma_address);
+
+ buffers[i].address = NULL;
+ buffers[i].dma_address = 0;
@ -1042,7 +973,7 @@ index 000000000000..bcf4dd8d7e95
+ continue;
+
+ dma_free_coherent(ipts->dev, feedback_buffer_size,
+ buffers[i].address, buffers[i].dma_address);
+ buffers[i].address, buffers[i].dma_address);
+
+ buffers[i].address = NULL;
+ buffers[i].dma_address = 0;
@ -1050,8 +981,8 @@ index 000000000000..bcf4dd8d7e95
+
+ if (ipts->doorbell.address) {
+ dma_free_coherent(ipts->dev, sizeof(u32),
+ ipts->doorbell.address,
+ ipts->doorbell.dma_address);
+ ipts->doorbell.address,
+ ipts->doorbell.dma_address);
+
+ ipts->doorbell.address = NULL;
+ ipts->doorbell.dma_address = 0;
@ -1059,8 +990,8 @@ index 000000000000..bcf4dd8d7e95
+
+ if (ipts->workqueue.address) {
+ dma_free_coherent(ipts->dev, sizeof(u32),
+ ipts->workqueue.address,
+ ipts->workqueue.dma_address);
+ ipts->workqueue.address,
+ ipts->workqueue.dma_address);
+
+ ipts->workqueue.address = NULL;
+ ipts->workqueue.dma_address = 0;
@ -1068,8 +999,8 @@ index 000000000000..bcf4dd8d7e95
+
+ if (ipts->host2me.address) {
+ dma_free_coherent(ipts->dev, feedback_buffer_size,
+ ipts->host2me.address,
+ ipts->host2me.dma_address);
+ ipts->host2me.address,
+ ipts->host2me.dma_address);
+
+ ipts->host2me.address = NULL;
+ ipts->host2me.dma_address = 0;
@ -1086,10 +1017,9 @@ index 000000000000..bcf4dd8d7e95
+
+ buffers = ipts->data;
+ for (i = 0; i < IPTS_BUFFERS; i++) {
+ buffers[i].address = dma_alloc_coherent(ipts->dev,
+ data_buffer_size,
+ &buffers[i].dma_address,
+ GFP_KERNEL);
+ buffers[i].address =
+ dma_alloc_coherent(ipts->dev, data_buffer_size,
+ &buffers[i].dma_address, GFP_KERNEL);
+
+ if (!buffers[i].address)
+ goto release_resources;
@ -1097,35 +1027,31 @@ index 000000000000..bcf4dd8d7e95
+
+ buffers = ipts->feedback;
+ for (i = 0; i < IPTS_BUFFERS; i++) {
+ buffers[i].address = dma_alloc_coherent(ipts->dev,
+ feedback_buffer_size,
+ &buffers[i].dma_address,
+ GFP_KERNEL);
+ buffers[i].address =
+ dma_alloc_coherent(ipts->dev, feedback_buffer_size,
+ &buffers[i].dma_address, GFP_KERNEL);
+
+ if (!buffers[i].address)
+ goto release_resources;
+ }
+
+ ipts->doorbell.address = dma_alloc_coherent(ipts->dev,
+ sizeof(u32),
+ &ipts->doorbell.dma_address,
+ GFP_KERNEL);
+ ipts->doorbell.address =
+ dma_alloc_coherent(ipts->dev, sizeof(u32),
+ &ipts->doorbell.dma_address, GFP_KERNEL);
+
+ if (!ipts->doorbell.address)
+ goto release_resources;
+
+ ipts->workqueue.address = dma_alloc_coherent(ipts->dev,
+ sizeof(u32),
+ &ipts->workqueue.dma_address,
+ GFP_KERNEL);
+ ipts->workqueue.address =
+ dma_alloc_coherent(ipts->dev, sizeof(u32),
+ &ipts->workqueue.dma_address, GFP_KERNEL);
+
+ if (!ipts->workqueue.address)
+ goto release_resources;
+
+ ipts->host2me.address = dma_alloc_coherent(ipts->dev,
+ feedback_buffer_size,
+ &ipts->host2me.dma_address,
+ GFP_KERNEL);
+ ipts->host2me.address =
+ dma_alloc_coherent(ipts->dev, feedback_buffer_size,
+ &ipts->host2me.dma_address, GFP_KERNEL);
+
+ if (!ipts->workqueue.address)
+ goto release_resources;
@ -1137,13 +1063,12 @@ index 000000000000..bcf4dd8d7e95
+ ipts_resources_free(ipts);
+ return -ENOMEM;
+}
+
diff --git a/drivers/misc/ipts/resources.h b/drivers/misc/ipts/resources.h
new file mode 100644
index 000000000000..8f55af7aae0f
index 000000000000..fdac0eee9156
--- /dev/null
+++ b/drivers/misc/ipts/resources.h
@@ -0,0 +1,18 @@
@@ -0,0 +1,17 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (c) 2016 Intel Corporation
@ -1161,13 +1086,12 @@ index 000000000000..8f55af7aae0f
+void ipts_resources_free(struct ipts_context *ipts);
+
+#endif /* _IPTS_RESOURCES_H_ */
+
diff --git a/drivers/misc/ipts/uapi.c b/drivers/misc/ipts/uapi.c
new file mode 100644
index 000000000000..1b59dbc9a1ad
index 000000000000..8107a027223f
--- /dev/null
+++ b/drivers/misc/ipts/uapi.c
@@ -0,0 +1,190 @@
@@ -0,0 +1,211 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Copyright (c) 2016 Intel Corporation
@ -1190,8 +1114,8 @@ index 000000000000..1b59dbc9a1ad
+
+struct ipts_uapi uapi;
+
+static ssize_t ipts_uapi_read(struct file *file, char __user *buf,
+ size_t count, loff_t *offset)
+static ssize_t ipts_uapi_read(struct file *file, char __user *buf, size_t count,
+ loff_t *offset)
+{
+ int buffer;
+ int maxbytes;
@ -1213,10 +1137,13 @@ index 000000000000..1b59dbc9a1ad
+}
+
+static long ipts_uapi_ioctl_get_device_ready(struct ipts_context *ipts,
+ unsigned long arg)
+ unsigned long arg)
+{
+ void __user *buffer = (void __user *)arg;
+ u8 ready = ipts->status == IPTS_HOST_STATUS_STARTED;
+ u8 ready = 0;
+
+ if (ipts)
+ ready = ipts->status == IPTS_HOST_STATUS_STARTED;
+
+ if (copy_to_user(buffer, &ready, sizeof(u8)))
+ return -EFAULT;
@ -1225,12 +1152,12 @@ index 000000000000..1b59dbc9a1ad
+}
+
+static long ipts_uapi_ioctl_get_device_info(struct ipts_context *ipts,
+ unsigned long arg)
+ unsigned long arg)
+{
+ struct ipts_device_info info;
+ void __user *buffer = (void __user *)arg;
+
+ if (ipts->status != IPTS_HOST_STATUS_STARTED)
+ if (!ipts || ipts->status != IPTS_HOST_STATUS_STARTED)
+ return -ENODEV;
+
+ info.vendor = ipts->device_info.vendor_id;
@ -1246,11 +1173,11 @@ index 000000000000..1b59dbc9a1ad
+}
+
+static long ipts_uapi_ioctl_get_doorbell(struct ipts_context *ipts,
+ unsigned long arg)
+ unsigned long arg)
+{
+ void __user *buffer = (void __user *)arg;
+
+ if (ipts->status != IPTS_HOST_STATUS_STARTED)
+ if (!ipts || ipts->status != IPTS_HOST_STATUS_STARTED)
+ return -ENODEV;
+
+ if (copy_to_user(buffer, ipts->doorbell.address, sizeof(u32)))
@ -1260,19 +1187,39 @@ index 000000000000..1b59dbc9a1ad
+}
+
+static long ipts_uapi_ioctl_send_feedback(struct ipts_context *ipts,
+ struct file *file)
+ struct file *file)
+{
+ int ret;
+ struct ipts_feedback_cmd cmd;
+
+ if (ipts->status != IPTS_HOST_STATUS_STARTED)
+ if (!ipts || ipts->status != IPTS_HOST_STATUS_STARTED)
+ 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));
+ ret = ipts_control_send(ipts, IPTS_CMD_FEEDBACK, &cmd,
+ sizeof(struct ipts_feedback_cmd));
+
+ if (ret)
+ return -EFAULT;
+
+ return 0;
+}
+
+static long ipts_uapi_ioctl_send_reset(struct ipts_context *ipts)
+{
+ int ret;
+ struct ipts_reset_sensor_cmd cmd;
+
+ if (!ipts || ipts->status != IPTS_HOST_STATUS_STARTED)
+ return -ENODEV;
+
+ memset(&cmd, 0, sizeof(struct ipts_reset_sensor_cmd));
+ cmd.type = IPTS_RESET_TYPE_SOFT;
+
+ ret = ipts_control_send(ipts, IPTS_CMD_RESET_SENSOR, &cmd,
+ sizeof(struct ipts_reset_sensor_cmd));
+
+ if (ret)
+ return -EFAULT;
@ -1281,13 +1228,10 @@ index 000000000000..1b59dbc9a1ad
+}
+
+static long ipts_uapi_ioctl(struct file *file, unsigned int cmd,
+ unsigned long arg)
+ unsigned long arg)
+{
+ struct ipts_context *ipts = uapi.ipts;
+
+ if (!ipts)
+ return -ENODEV;
+
+ switch (cmd) {
+ case IPTS_IOCTL_GET_DEVICE_READY:
+ return ipts_uapi_ioctl_get_device_ready(ipts, arg);
@ -1297,6 +1241,8 @@ index 000000000000..1b59dbc9a1ad
+ return ipts_uapi_ioctl_get_doorbell(ipts, arg);
+ case IPTS_IOCTL_SEND_FEEDBACK:
+ return ipts_uapi_ioctl_send_feedback(ipts, file);
+ case IPTS_IOCTL_SEND_RESET:
+ return ipts_uapi_ioctl_send_reset(ipts);
+ default:
+ return -ENOTTY;
+ }
@ -1335,8 +1281,8 @@ index 000000000000..1b59dbc9a1ad
+ cdev_add(&uapi.cdev, MKDEV(major, 0), IPTS_BUFFERS);
+
+ for (i = 0; i < IPTS_BUFFERS; i++) {
+ device_create(uapi.class, NULL,
+ MKDEV(major, i), NULL, "ipts/%d", i);
+ device_create(uapi.class, NULL, MKDEV(major, i), NULL,
+ "ipts/%d", i);
+ }
+
+ return 0;
@ -1357,10 +1303,9 @@ index 000000000000..1b59dbc9a1ad
+ unregister_chrdev_region(MKDEV(major, 0), MINORMASK);
+ class_destroy(uapi.class);
+}
+
diff --git a/drivers/misc/ipts/uapi.h b/drivers/misc/ipts/uapi.h
new file mode 100644
index 000000000000..4c667bb6a7f2
index 000000000000..53fb86a88f97
--- /dev/null
+++ b/drivers/misc/ipts/uapi.h
@@ -0,0 +1,47 @@
@ -1400,8 +1345,9 @@ index 000000000000..4c667bb6a7f2
+
+#define IPTS_IOCTL_GET_DEVICE_READY _IOR(0x86, 0x01, __u8)
+#define IPTS_IOCTL_GET_DEVICE_INFO _IOR(0x86, 0x02, struct ipts_device_info)
+#define IPTS_IOCTL_GET_DOORBELL _IOR(0x86, 0x03, __u32)
+#define IPTS_IOCTL_GET_DOORBELL _IOR(0x86, 0x03, __u32)
+#define IPTS_IOCTL_SEND_FEEDBACK _IO(0x86, 0x04)
+#define IPTS_IOCTL_SEND_RESET _IO(0x86, 0x05)
+
+void ipts_uapi_link(struct ipts_context *ipts);
+void ipts_uapi_unlink(void);
@ -1410,7 +1356,6 @@ index 000000000000..4c667bb6a7f2
+void ipts_uapi_free(void);
+
+#endif /* _IPTS_UAPI_H_ */
+
--
2.30.0
2.30.1

View file

@ -1,4 +1,4 @@
From c15d0471a2ab876031795b0002666e2d774a27bb Mon Sep 17 00:00:00 2001
From ae725f58a769c0b98d72e612af0657fd21801ef4 Mon Sep 17 00:00:00 2001
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: Sun, 16 Aug 2020 23:39:56 +0200
Subject: [PATCH] platform/x86: Add Driver to set up lid GPEs on MS Surface
@ -397,5 +397,5 @@ index 000000000000..86f6991b1215
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("dmi:*:svnMicrosoftCorporation:pnSurface*:*");
--
2.30.0
2.30.1

View file

@ -1,4 +1,4 @@
From d46cbd24104243e4e7c4c01d28ed503fab46c8ea Mon Sep 17 00:00:00 2001
From 7fcb1bb56b0aeef64bb650f5cd7e40d56c1b8a06 Mon Sep 17 00:00:00 2001
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: Sat, 25 Jul 2020 17:19:53 +0200
Subject: [PATCH] i2c: acpi: Implement RawBytes read access
@ -108,9 +108,9 @@ index 37c510d9347a..aed579942436 100644
dev_warn(&adapter->dev, "protocol 0x%02x not supported for client 0x%02x\n",
accessor_type, client->addr);
--
2.30.0
2.30.1
From ebd07cf190014ef57f7bc9f179cb92c2bcd54d90 Mon Sep 17 00:00:00 2001
From 636027109cba56a411620d37a35fb9b56d6ec302 Mon Sep 17 00:00:00 2001
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: Sun, 6 Sep 2020 04:01:19 +0200
Subject: [PATCH] platform/x86: Add driver for Surface Book 1 dGPU switch
@ -331,5 +331,5 @@ index 000000000000..8c66ed5110fd
+MODULE_DESCRIPTION("Discrete GPU Power-Switch for Surface Book 1");
+MODULE_LICENSE("GPL");
--
2.30.0
2.30.1

File diff suppressed because it is too large Load diff

View file

@ -1,4 +1,4 @@
From 57ef85688b82ee9f409b65c6fb065b6a529aef12 Mon Sep 17 00:00:00 2001
From 97b4cb5fe354ae2aa11a51bf0add7434f65da636 Mon Sep 17 00:00:00 2001
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: Mon, 9 Nov 2020 14:23:00 +0100
Subject: [PATCH] PCI: Run platform power transition on initial D0 entry
@ -56,9 +56,9 @@ index 6427cbd0a5be..3200afed2604 100644
return err;
--
2.30.0
2.30.1
From 249b96f567db1adb80007428177141f6aec5c61f Mon Sep 17 00:00:00 2001
From e99a49e3321f5f210825bd1cd35b04f9aff73a92 Mon Sep 17 00:00:00 2001
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: Sat, 31 Oct 2020 20:46:33 +0100
Subject: [PATCH] PCI: Add sysfs attribute for PCI device power state
@ -129,9 +129,9 @@ index d15c881e2e7e..b15f754e6346 100644
&dev_attr_vendor.attr,
&dev_attr_device.attr,
--
2.30.0
2.30.1
From de32407f6bf024ae5550c26f8a21546ab46c97ec Mon Sep 17 00:00:00 2001
From 0702027c25539792b81325e843377c54010d8d56 Mon Sep 17 00:00:00 2001
From: Maximilian Luz <luzmaximilian@gmail.com>
Date: Mon, 14 Dec 2020 20:50:59 +0100
Subject: [PATCH] platform/x86: Add Surface Hotplug driver
@ -144,17 +144,17 @@ appropriate signal to the PCIe hot-plug driver core.
Signed-off-by: Maximilian Luz <luzmaximilian@gmail.com>
Patchset: surface-hotplug
---
drivers/platform/x86/Kconfig | 12 ++
drivers/platform/x86/Kconfig | 20 ++
drivers/platform/x86/Makefile | 1 +
drivers/platform/x86/surface_hotplug.c | 267 +++++++++++++++++++++++++
3 files changed, 280 insertions(+)
drivers/platform/x86/surface_hotplug.c | 282 +++++++++++++++++++++++++
3 files changed, 303 insertions(+)
create mode 100644 drivers/platform/x86/surface_hotplug.c
diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
index a9b12f4dcbd1..3e882b1e1f74 100644
index dbb07644c312..0c513c8bbd2b 100644
--- a/drivers/platform/x86/Kconfig
+++ b/drivers/platform/x86/Kconfig
@@ -910,6 +910,18 @@ config SURFACE_GPE
@@ -1012,6 +1012,26 @@ config SURFACE_GPE
accordingly. It is required on those devices to allow wake-ups from
suspend by opening the lid.
@ -163,21 +163,29 @@ index a9b12f4dcbd1..3e882b1e1f74 100644
+ depends on ACPI
+ default m
+ help
+ Driver for the Surface discrete GPU (dGPU) hot-plug system.
+ Driver for out-of-band hot-plug event signaling on Microsoft Surface
+ devices with hot-pluggable PCIe cards.
+
+ This driver provides support for out-of-band hot-plug event signaling
+ on Surface Book 2 and 3 devices. This out-of-band signaling is
+ required to notify the kernel of any hot-plug events when the dGPU is
+ powered off, i.e. in D3cold.
+ This driver is used on Surface Book (2 and 3) devices with a
+ hot-pluggable discrete GPU (dGPU). When not in use, the dGPU on those
+ devices can enter D3cold, which prevents in-band (standard) PCIe
+ hot-plug signaling. Thus, without this driver, detaching the base
+ containing the dGPU will not correctly update the state of the
+ corresponding PCIe device if it is in D3cold. This driver adds support
+ for out-of-band hot-plug notifications, ensuring that the device state
+ is properly updated even when the device in question is in D3cold.
+
+ Select M or Y here, if you want to (fully) support hot-plugging of
+ dGPU devices on the Surface Book 2 and/or 3 during D3cold.
+
config SURFACE_BOOK1_DGPU_SWITCH
tristate "Surface Book 1 dGPU Switch Driver"
depends on ACPI && SYSFS
diff --git a/drivers/platform/x86/Makefile b/drivers/platform/x86/Makefile
index 562d83940e7b..2009224dcaae 100644
index 2e0a2896c78d..f552cbfb7914 100644
--- a/drivers/platform/x86/Makefile
+++ b/drivers/platform/x86/Makefile
@@ -87,6 +87,7 @@ obj-$(CONFIG_SURFACE_3_BUTTON) += surface3_button.o
@@ -94,6 +94,7 @@ obj-$(CONFIG_SURFACE_3_BUTTON) += surface3_button.o
obj-$(CONFIG_SURFACE_3_POWER_OPREGION) += surface3_power.o
obj-$(CONFIG_SURFACE_PRO3_BUTTON) += surfacepro3_button.o
obj-$(CONFIG_SURFACE_GPE) += surface_gpe.o
@ -187,13 +195,13 @@ index 562d83940e7b..2009224dcaae 100644
# MSI
diff --git a/drivers/platform/x86/surface_hotplug.c b/drivers/platform/x86/surface_hotplug.c
new file mode 100644
index 000000000000..572fba30cd77
index 000000000000..cfcc15cfbacb
--- /dev/null
+++ b/drivers/platform/x86/surface_hotplug.c
@@ -0,0 +1,267 @@
@@ -0,0 +1,282 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Surface Book (gen. 2 and later) hot-plug driver.
+ * Surface Book (2 and later) hot-plug driver.
+ *
+ * Surface Book devices (can) have a hot-pluggable discrete GPU (dGPU). This
+ * driver is responsible for out-of-band hot-plug event signaling on these
@ -203,7 +211,7 @@ index 000000000000..572fba30cd77
+ * Event signaling is handled via ACPI, which will generate the appropriate
+ * device-check notifications to be picked up by the PCIe hot-plug driver.
+ *
+ * Copyright (C) 2019-2020 Maximilian Luz <luzmaximilian@gmail.com>
+ * Copyright (C) 2019-2021 Maximilian Luz <luzmaximilian@gmail.com>
+ */
+
+#include <linux/acpi.h>
@ -233,8 +241,7 @@ index 000000000000..572fba30cd77
+
+/* 5515a847-ed55-4b27-8352-cd320e10360a */
+static const guid_t shps_dsm_guid =
+ GUID_INIT(0x5515a847, 0xed55, 0x4b27, 0x83, 0x52, 0xcd,
+ 0x32, 0x0e, 0x10, 0x36, 0x0a);
+ GUID_INIT(0x5515a847, 0xed55, 0x4b27, 0x83, 0x52, 0xcd, 0x32, 0x0e, 0x10, 0x36, 0x0a);
+
+#define SHPS_DSM_REVISION 1
+
@ -247,11 +254,10 @@ index 000000000000..572fba30cd77
+};
+
+enum shps_irq_type {
+ /* NOTE: Must be in order of DSM function */
+ /* NOTE: Must be in order of enum shps_dsm_fn above. */
+ SHPS_IRQ_TYPE_BASE_PRESENCE = 0,
+ SHPS_IRQ_TYPE_DEVICE_POWER = 1,
+ SHPS_IRQ_TYPE_DEVICE_PRESENCE = 2,
+
+ SHPS_NUM_IRQS,
+};
+
@ -262,15 +268,19 @@ index 000000000000..572fba30cd77
+};
+
+struct shps_device {
+ struct mutex lock[SHPS_NUM_IRQS];
+ struct mutex lock[SHPS_NUM_IRQS]; /* Protects update in shps_dsm_notify_irq() */
+ struct gpio_desc *gpio[SHPS_NUM_IRQS];
+ unsigned int irq[SHPS_NUM_IRQS];
+};
+
+#define SHPS_IRQ_NOT_PRESENT ((unsigned int)-1)
+
+static void shps_dsm_notify_irq(struct platform_device *pdev,
+ enum shps_irq_type type)
+static enum shps_dsm_fn shps_dsm_fn_for_irq(enum shps_irq_type type)
+{
+ return SHPS_DSM_FN_IRQ_BASE_PRESENCE + type;
+}
+
+static void shps_dsm_notify_irq(struct platform_device *pdev, enum shps_irq_type type)
+{
+ struct shps_device *sdev = platform_get_drvdata(pdev);
+ acpi_handle handle = ACPI_HANDLE(&pdev->dev);
@ -283,42 +293,37 @@ index 000000000000..572fba30cd77
+ value = gpiod_get_value_cansleep(sdev->gpio[type]);
+ if (value < 0) {
+ mutex_unlock(&sdev->lock[type]);
+ dev_err(&pdev->dev, "failed to get gpio: %d (irq=%d)\n",
+ type, value);
+ dev_err(&pdev->dev, "failed to get gpio: %d (irq=%d)\n", type, value);
+ return;
+ }
+
+ dev_dbg(&pdev->dev, "IRQ notification via DSM (irq=%d, value=%d)\n",
+ type, value);
+ dev_dbg(&pdev->dev, "IRQ notification via DSM (irq=%d, value=%d)\n", type, value);
+
+ param.type = ACPI_TYPE_INTEGER;
+ param.integer.value = value;
+
+ result = acpi_evaluate_dsm(handle, &shps_dsm_guid, SHPS_DSM_REVISION,
+ SHPS_DSM_FN_IRQ_BASE_PRESENCE + type, &param);
+ shps_dsm_fn_for_irq(type), &param);
+
+ if (!result) {
+ mutex_unlock(&sdev->lock[type]);
+ dev_err(&pdev->dev,
+ "IRQ notification via DSM failed (irq=%d, gpio=%d)\n",
+ dev_err(&pdev->dev, "IRQ notification via DSM failed (irq=%d, gpio=%d)\n",
+ type, value);
+ return;
+ }
+
+ if (result->type != ACPI_TYPE_BUFFER) {
+ } else if (result->type != ACPI_TYPE_BUFFER) {
+ dev_err(&pdev->dev,
+ "IRQ notification via DSM failed: unexpected result type (irq=%d, gpio=%d)\n",
+ type, value);
+ }
+
+ if (result->buffer.length != 1 || result->buffer.pointer[0] != 0) {
+ } else if (result->buffer.length != 1 || result->buffer.pointer[0] != 0) {
+ dev_err(&pdev->dev,
+ "IRQ notification via DSM failed: unexpected result value (irq=%d, gpio=%d)\n",
+ type, value);
+ }
+
+ mutex_unlock(&sdev->lock[type]);
+ ACPI_FREE(result);
+
+ if (result)
+ ACPI_FREE(result);
+}
+
+static irqreturn_t shps_handle_irq(int irq, void *data)
@ -348,17 +353,16 @@ index 000000000000..572fba30cd77
+ struct gpio_desc *gpiod;
+ acpi_handle handle = ACPI_HANDLE(&pdev->dev);
+ const char *irq_name;
+ const int dsm = SHPS_DSM_FN_IRQ_BASE_PRESENCE + type;
+ const int dsm = shps_dsm_fn_for_irq(type);
+ int status, irq;
+
+ /* Initialize as "not present". */
+ sdev->gpio[type] = NULL;
+ sdev->irq[type] = SHPS_IRQ_NOT_PRESENT;
+
+ /* Only set up interrupts that we actually need. */
+ /*
+ * Only set up interrupts that we actually need: The Surface Book 3
+ * does not have a DSM for base presence, so don't set up an interrupt
+ * for that.
+ */
+ if (!acpi_check_dsm(handle, &shps_dsm_guid, SHPS_DSM_REVISION, BIT(dsm))) {
+ dev_dbg(&pdev->dev, "IRQ notification via DSM not present (irq=%d)\n",
+ type);
+ dev_dbg(&pdev->dev, "IRQ notification via DSM not present (irq=%d)\n", type);
+ return 0;
+ }
+
@ -387,11 +391,33 @@ index 000000000000..572fba30cd77
+ return 0;
+}
+
+static int surface_hotplug_remove(struct platform_device *pdev)
+{
+ struct shps_device *sdev = platform_get_drvdata(pdev);
+ int i;
+
+ /* Ensure that IRQs have been fully handled and won't trigger any more. */
+ for (i = 0; i < SHPS_NUM_IRQS; i++) {
+ if (sdev->irq[i] != SHPS_IRQ_NOT_PRESENT)
+ disable_irq(sdev->irq[i]);
+
+ mutex_destroy(&sdev->lock[i]);
+ }
+
+ return 0;
+}
+
+static int surface_hotplug_probe(struct platform_device *pdev)
+{
+ struct shps_device *sdev;
+ int status, i;
+
+ /*
+ * The MSHW0153 device is also present on the Surface Laptop 3,
+ * however that doesn't have a hot-pluggable PCIe device. It also
+ * doesn't have any GPIO interrupts/pins under the MSHW0153, so filter
+ * it out here.
+ */
+ if (gpiod_count(&pdev->dev, NULL) < 0)
+ return -ENODEV;
+
@ -405,15 +431,21 @@ index 000000000000..572fba30cd77
+
+ platform_set_drvdata(pdev, sdev);
+
+ /*
+ * Initialize IRQs so that we can safely call surface_hotplug_remove()
+ * on errors.
+ */
+ for (i = 0; i < SHPS_NUM_IRQS; i++)
+ sdev->irq[i] = SHPS_IRQ_NOT_PRESENT;
+
+ /* Set up IRQs. */
+ for (i = 0; i < SHPS_NUM_IRQS; i++) {
+ mutex_init(&sdev->lock[i]);
+
+ status = shps_setup_irq(pdev, i);
+ if (status) {
+ dev_err(&pdev->dev, "failed to set up IRQ %d: %d\n",
+ i, status);
+ return status;
+ dev_err(&pdev->dev, "failed to set up IRQ %d: %d\n", i, status);
+ goto err;
+ }
+ }
+
@ -423,19 +455,10 @@ index 000000000000..572fba30cd77
+ shps_dsm_notify_irq(pdev, i);
+
+ return 0;
+}
+
+static int surface_hotplug_remove(struct platform_device *pdev)
+{
+ struct shps_device *sdev = platform_get_drvdata(pdev);
+ int i;
+
+ /* Ensure that IRQs have been fully handled and won't trigger any more. */
+ for (i = 0; i < SHPS_NUM_IRQS; i++)
+ if (sdev->irq[i] != SHPS_IRQ_NOT_PRESENT)
+ disable_irq(sdev->irq[i]);
+
+ return 0;
+err:
+ surface_hotplug_remove(pdev);
+ return status;
+}
+
+static const struct acpi_device_id surface_hotplug_acpi_match[] = {
@ -459,5 +482,5 @@ index 000000000000..572fba30cd77
+MODULE_DESCRIPTION("Surface Hot-Plug Signaling Driver for Surface Book Devices");
+MODULE_LICENSE("GPL");
--
2.30.0
2.30.1

View file

@ -1,4 +1,4 @@
From 9312f4e776a9360673602ce5675a6f637c92bc9e Mon Sep 17 00:00:00 2001
From e1b4a113984cf38f01c2a0e2bbf4e8192664ce0d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= <verdre@v0yd.nl>
Date: Thu, 5 Nov 2020 13:09:45 +0100
Subject: [PATCH] hid/multitouch: Turn off Type Cover keyboard backlight when
@ -229,5 +229,5 @@ index 8429ebe7097e..44d48e8bbe1a 100644
{ .driver_data = MT_CLS_GOOGLE,
HID_DEVICE(HID_BUS_ANY, HID_GROUP_ANY, USB_VENDOR_ID_GOOGLE,
--
2.30.0
2.30.1

View file

@ -1,4 +1,4 @@
From d0827ea95a7772ae5116adf1633c97ff34c9d4e8 Mon Sep 17 00:00:00 2001
From 46132805b14e21b99d61fb2f35b459c638c87dca Mon Sep 17 00:00:00 2001
From: Max Leiter <maxwell.leiter@gmail.com>
Date: Sat, 19 Dec 2020 17:50:55 -0800
Subject: [PATCH] iio:light:apds9960 add detection for MSHW0184 ACPI device in
@ -49,5 +49,5 @@ index 9afb3fcc74e6..20719141c03a 100644
.probe = apds9960_probe,
.remove = apds9960_remove,
--
2.30.0
2.30.1

View file

@ -1,4 +1,4 @@
From ed24364fb437a6054fbc366d8fc698d2fc79af7f Mon Sep 17 00:00:00 2001
From 3b09d327318b99c630c758d32d28aff5ca65c072 Mon Sep 17 00:00:00 2001
From: Sakari Ailus <sakari.ailus@linux.intel.com>
Date: Mon, 12 Oct 2020 21:04:11 +0300
Subject: [PATCH] ipu3-cio2: Use unsigned values where appropriate
@ -314,9 +314,9 @@ index 146492383aa5..7650d7998a3f 100644
struct cio2_csi2_timing {
--
2.30.0
2.30.1
From 8aed30a215d2c096e1940429fff3624a67637737 Mon Sep 17 00:00:00 2001
From c6fc4d5d0b225173cfbe1df908c8950c3f40f0bc Mon Sep 17 00:00:00 2001
From: Sakari Ailus <sakari.ailus@linux.intel.com>
Date: Mon, 12 Oct 2020 21:04:12 +0300
Subject: [PATCH] ipu3-cio2: Remove explicit type from frame size checks
@ -348,9 +348,9 @@ index 1fcd131482e0..b2679ff185fc 100644
mutex_lock(&q->subdev_lock);
--
2.30.0
2.30.1
From 97685366515d61f30839738c7b479d0ba5f4f5a0 Mon Sep 17 00:00:00 2001
From 74f14515d35868f08cb32111ae06c33d0a7eda81 Mon Sep 17 00:00:00 2001
From: Sakari Ailus <sakari.ailus@linux.intel.com>
Date: Mon, 12 Oct 2020 21:04:13 +0300
Subject: [PATCH] ipu3-cio2: Rename CIO2_IMAGE_MAX_LENGTH as
@ -407,9 +407,9 @@ index 7650d7998a3f..ccf0b85ae36f 100644
/* 32MB = 8xFBPT_entry */
#define CIO2_MAX_LOPS 8
--
2.30.0
2.30.1
From 6fc30f110028daed2167569c6dce718cb20dc31d Mon Sep 17 00:00:00 2001
From 656111f0523d4ab97cac8437c1617a241bece72e Mon Sep 17 00:00:00 2001
From: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>
Date: Tue, 13 Oct 2020 17:25:35 +0300
Subject: [PATCH] ipu3-cio2: Check receved the size against payload size, not
@ -461,9 +461,9 @@ index 51c4dd6a8f9a..c557d189200b 100644
}
atomic_inc(&q->frame_sequence);
--
2.30.0
2.30.1
From 58617cfcef69ce39c279cb2f4ca9b33c48d0fca6 Mon Sep 17 00:00:00 2001
From 02ff48a15f0e0da02d088fc4c7ec959b97d6016d 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
@ -509,9 +509,9 @@ index 010828fc785b..615a0c93e116 100644
static struct fwnode_handle *
--
2.30.0
2.30.1
From cd8c81083dcefac62552fbe2e0232c0c24531556 Mon Sep 17 00:00:00 2001
From 012323f01e585cb17073d859cba7392a9119c613 Mon Sep 17 00:00:00 2001
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date: Wed, 30 Dec 2020 22:44:05 +0200
Subject: [PATCH] media: ipu3-cio2: Add headers that ipu3-cio2.h is direct user
@ -561,9 +561,9 @@ index ccf0b85ae36f..62187ab5ae43 100644
#define CIO2_DEVICE_NAME "Intel IPU3 CIO2"
#define CIO2_ENTITY_NAME "ipu3-csi2"
--
2.30.0
2.30.1
From 95ab872413990945f24729a3f0517b5ce1cdb2c7 Mon Sep 17 00:00:00 2001
From 02efb9f2e40c323cf51d9b3807e2dbea40f08d26 Mon Sep 17 00:00:00 2001
From: Daniel Scally <djrscally@gmail.com>
Date: Sat, 24 Oct 2020 22:42:28 +0100
Subject: [PATCH] device property: Return true in fwnode_device_is_available
@ -606,9 +606,9 @@ index 4c43d30145c6..bc9c634df6df 100644
}
EXPORT_SYMBOL_GPL(fwnode_device_is_available);
--
2.30.0
2.30.1
From 8008601acd83d358cfe0308224bb7e886a134419 Mon Sep 17 00:00:00 2001
From 41d95371ec70fb792fdf404e09c7bc422116741d Mon Sep 17 00:00:00 2001
From: Daniel Scally <djrscally@gmail.com>
Date: Sat, 21 Nov 2020 22:06:38 +0000
Subject: [PATCH] device property: Call fwnode_graph_get_endpoint_by_id() for
@ -650,9 +650,9 @@ index bc9c634df6df..ddba75d90af2 100644
EXPORT_SYMBOL_GPL(fwnode_graph_get_endpoint_by_id);
--
2.30.0
2.30.1
From 3e0e09a48830c0cb4c15dec7c5c3760d238ad884 Mon Sep 17 00:00:00 2001
From 077ca29de10ed13810d77e4b5283b2b71141b685 Mon Sep 17 00:00:00 2001
From: Daniel Scally <djrscally@gmail.com>
Date: Sun, 25 Oct 2020 22:49:08 +0000
Subject: [PATCH] software_node: Enforce parent before child ordering of nodes
@ -753,9 +753,9 @@ index 615a0c93e116..ade49173ff8d 100644
}
EXPORT_SYMBOL_GPL(software_node_unregister_nodes);
--
2.30.0
2.30.1
From 772283d34ad71fc6dd4ebc74fb62bd680c7bcd0f Mon Sep 17 00:00:00 2001
From 9cfcb92a9d56040c58453f7ff517112103f96a96 Mon Sep 17 00:00:00 2001
From: Daniel Scally <djrscally@gmail.com>
Date: Wed, 21 Oct 2020 22:25:03 +0100
Subject: [PATCH] software_node: unregister software_nodes in reverse order
@ -808,9 +808,9 @@ index ade49173ff8d..1f43c51b431e 100644
}
EXPORT_SYMBOL_GPL(software_node_unregister_node_group);
--
2.30.0
2.30.1
From 0bf93927e968bd0ac2a0b137f8416e5ea2cd4fe4 Mon Sep 17 00:00:00 2001
From b07d850a68e50eaa31b6d51d3a235c6a3d027f7c Mon Sep 17 00:00:00 2001
From: Daniel Scally <djrscally@gmail.com>
Date: Tue, 22 Dec 2020 13:09:05 +0000
Subject: [PATCH] device property: Define format macros for ports and endpoints
@ -849,9 +849,9 @@ index 9506f8ec0974..72d36d46287d 100644
/**
--
2.30.0
2.30.1
From 1524841c902cef0d456370e9ec40773a8fe6b74b Mon Sep 17 00:00:00 2001
From 048747fc7cf291e76bc88d36ce7e174dbe67c86d Mon Sep 17 00:00:00 2001
From: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Date: Tue, 15 Sep 2020 15:47:46 +0100
Subject: [PATCH] software_node: Add support for fwnode_graph*() family of
@ -1017,9 +1017,9 @@ index 1f43c51b431e..2ff504aca0be 100644
/* -------------------------------------------------------------------------- */
--
2.30.0
2.30.1
From de435b7905156d7a5ce8c3eeeffd14b73526b949 Mon Sep 17 00:00:00 2001
From e5a525987762827d42408d301651ddd7dee58a13 Mon Sep 17 00:00:00 2001
From: Daniel Scally <djrscally@gmail.com>
Date: Sat, 10 Oct 2020 23:07:22 +0100
Subject: [PATCH] lib/test_printf.c: Use helper function to unwind array of
@ -1055,9 +1055,9 @@ index 7ac87f18a10f..7d60f24240a4 100644
static void __init
--
2.30.0
2.30.1
From 441936189d0bb02ecc81b9c199e6b7c11db462df Mon Sep 17 00:00:00 2001
From 7db14aecb682f2821c02420dc3356f311591ff12 Mon Sep 17 00:00:00 2001
From: Daniel Scally <djrscally@gmail.com>
Date: Sat, 10 Oct 2020 23:11:36 +0100
Subject: [PATCH] ipu3-cio2: Add T: entry to MAINTAINERS
@ -1086,9 +1086,9 @@ index 281de213ef47..5a1c6e959aa8 100644
F: drivers/media/pci/intel/ipu3/
--
2.30.0
2.30.1
From e1228c81e5c347a906bfb35909d0a933e9f3b0f5 Mon Sep 17 00:00:00 2001
From 5cd26f650205295b0162859db1855119daa50b30 Mon Sep 17 00:00:00 2001
From: Daniel Scally <djrscally@gmail.com>
Date: Sat, 10 Oct 2020 22:47:21 +0100
Subject: [PATCH] ipu3-cio2: Rename ipu3-cio2.c
@ -1121,9 +1121,9 @@ similarity index 100%
rename from drivers/media/pci/intel/ipu3/ipu3-cio2.c
rename to drivers/media/pci/intel/ipu3/ipu3-cio2-main.c
--
2.30.0
2.30.1
From d3156ac8e9ec15e8d8b048566208fc79fd4d8310 Mon Sep 17 00:00:00 2001
From 173774fc8274db26b11e9518948d7dc2fbd2a286 Mon Sep 17 00:00:00 2001
From: Daniel Scally <djrscally@gmail.com>
Date: Wed, 21 Oct 2020 21:53:05 +0100
Subject: [PATCH] media: v4l2-core: v4l2-async: Check sd->fwnode->secondary in
@ -1162,9 +1162,9 @@ index e3ab003a6c85..9dd896d085ec 100644
* Otherwise, check if the sd fwnode and the asd fwnode refer to an
* endpoint or a device. If they're of the same type, there's no match.
--
2.30.0
2.30.1
From 8f6d6ea7131a9410c50d62c8bd90b8cd0a6f7c28 Mon Sep 17 00:00:00 2001
From 54866c066f7eb157f72611427af44096d6ed388e Mon Sep 17 00:00:00 2001
From: Daniel Scally <djrscally@gmail.com>
Date: Sun, 15 Nov 2020 08:15:34 +0000
Subject: [PATCH] ACPI / bus: Add acpi_dev_get_next_match_dev() and helper
@ -1271,9 +1271,9 @@ index 6d1879bf9440..02a716a0af5d 100644
{
put_device(&adev->dev);
--
2.30.0
2.30.1
From 0da8a119fe89d3af5619454979cd674e5b432649 Mon Sep 17 00:00:00 2001
From 3a8c20986a3b297f30269464f628439b23b0ed7e Mon Sep 17 00:00:00 2001
From: Daniel Scally <djrscally@gmail.com>
Date: Sat, 19 Dec 2020 23:55:04 +0000
Subject: [PATCH] media: v4l2-fwnode: Include v4l2_fwnode_bus_type
@ -1348,9 +1348,9 @@ index ed0840f3d5df..6ca337c28b3c 100644
* v4l2_fwnode_endpoint_parse() - parse all fwnode node properties
* @fwnode: pointer to the endpoint's fwnode handle
--
2.30.0
2.30.1
From 41237a915cef967de91160c85d7493a6b5be7ade Mon Sep 17 00:00:00 2001
From d3d67a61296add16ecd644971ec0ac25a6ba1022 Mon Sep 17 00:00:00 2001
From: Daniel Scally <djrscally@gmail.com>
Date: Wed, 21 Oct 2020 21:53:44 +0100
Subject: [PATCH] ipu3-cio2: Add cio2-bridge to ipu3-cio2 driver
@ -1946,9 +1946,9 @@ index 62187ab5ae43..dc3e343a37fb 100644
+
#endif
--
2.30.0
2.30.1
From 688186f7c659840fd6c340a892f0a8a21efb18b9 Mon Sep 17 00:00:00 2001
From 66c0bc2e1a548ce3d1f6e7b3356c29c702c137ac Mon Sep 17 00:00:00 2001
From: Daniel Scally <djrscally@gmail.com>
Date: Wed, 2 Dec 2020 12:38:10 +0000
Subject: [PATCH] acpi: utils: move acpi_lpss_dep() to utils
@ -2048,9 +2048,9 @@ index ddca1550cce6..78b38775f18b 100644
* acpi_dev_present - Detect that a given ACPI device is present
* @hid: Hardware ID of the device.
--
2.30.0
2.30.1
From a146f0d32f0171eb9ae965cd61f68912e600cba1 Mon Sep 17 00:00:00 2001
From 19bdf96ef080ad643ced9c7810156857d30d21ee Mon Sep 17 00:00:00 2001
From: Daniel Scally <djrscally@gmail.com>
Date: Thu, 26 Nov 2020 21:12:41 +0000
Subject: [PATCH] acpi: utils: Add function to fetch dependent acpi_devices
@ -2134,9 +2134,9 @@ index 02a716a0af5d..33deb22294f2 100644
acpi_dev_get_next_match_dev(struct acpi_device *adev, const char *hid, const char *uid, s64 hrv);
struct acpi_device *
--
2.30.0
2.30.1
From 197141d81abfb7f5b1ad712ffffb4bcc69311a68 Mon Sep 17 00:00:00 2001
From ec31436438fd065f39e144fbd8652d292bf07f05 Mon Sep 17 00:00:00 2001
From: Daniel Scally <djrscally@gmail.com>
Date: Mon, 16 Nov 2020 21:38:49 +0000
Subject: [PATCH] i2c: i2c-core-base: Use format macro in i2c_dev_set_name()
@ -2202,9 +2202,9 @@ index 56622658b215..65acae61dc5c 100644
{
return NULL;
--
2.30.0
2.30.1
From 4d0822207995850a85f0404045605c2088eaf90f Mon Sep 17 00:00:00 2001
From 8b7807ff6bca711e87af1b6e5b11f0495f36c6ef Mon Sep 17 00:00:00 2001
From: Daniel Scally <djrscally@gmail.com>
Date: Wed, 2 Dec 2020 16:41:42 +0000
Subject: [PATCH] i2c: i2c-core-acpi: Add i2c_acpi_dev_name()
@ -2260,9 +2260,9 @@ index 65acae61dc5c..b82aac05b17f 100644
#else
static inline bool i2c_acpi_get_i2c_resource(struct acpi_resource *ares,
--
2.30.0
2.30.1
From 7770ea608e64e8be3394cb2a9ec3d533f0a6b972 Mon Sep 17 00:00:00 2001
From df44db561d8855d0255503e20268c08c01c3c5ee Mon Sep 17 00:00:00 2001
From: Daniel Scally <djrscally@gmail.com>
Date: Mon, 16 Nov 2020 00:16:56 +0000
Subject: [PATCH] gpio: gpiolib-acpi: Export acpi_get_gpiod()
@ -2324,9 +2324,9 @@ index 5b1dc1ad4fb3..47ae139e8781 100644
/* Device properties */
--
2.30.0
2.30.1
From 31aff03814589c16f1d18c56086a577d6aad37dd Mon Sep 17 00:00:00 2001
From 89313343dd227867456401fe62cf944058e47534 Mon Sep 17 00:00:00 2001
From: Daniel Scally <djrscally@gmail.com>
Date: Sat, 12 Dec 2020 23:56:59 +0000
Subject: [PATCH] mfd: Remove tps68470 MFD driver
@ -2515,9 +2515,9 @@ index 4a4df4ffd18c..000000000000
-};
-builtin_i2c_driver(tps68470_driver);
--
2.30.0
2.30.1
From bd908144bb8a2bea3e2dc7505231c55bd1adf193 Mon Sep 17 00:00:00 2001
From c8f82a485887fff61743f6612812d7b66e9ebe6d Mon Sep 17 00:00:00 2001
From: Daniel Scally <djrscally@gmail.com>
Date: Fri, 15 Jan 2021 12:37:31 +0000
Subject: [PATCH] platform: x86: Add intel_skl_int3472 driver
@ -2575,7 +2575,7 @@ index a6924e3401e8..3ed02216251b 100644
M: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
L: platform-driver-x86@vger.kernel.org
diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
index 3e882b1e1f74..277353eaeb36 100644
index 0c513c8bbd2b..c50e8596b440 100644
--- a/drivers/platform/x86/Kconfig
+++ b/drivers/platform/x86/Kconfig
@@ -807,6 +807,31 @@ config INTEL_CHT_INT33FE
@ -2611,7 +2611,7 @@ index 3e882b1e1f74..277353eaeb36 100644
tristate "INTEL HID Event"
depends on ACPI
diff --git a/drivers/platform/x86/Makefile b/drivers/platform/x86/Makefile
index 2009224dcaae..e92538799514 100644
index f552cbfb7914..dd8fc06b224c 100644
--- a/drivers/platform/x86/Makefile
+++ b/drivers/platform/x86/Makefile
@@ -79,6 +79,11 @@ obj-$(CONFIG_INTEL_HID_EVENT) += intel-hid.o
@ -3484,9 +3484,9 @@ index 000000000000..3fe27ec0caff
+ return ret;
+}
--
2.30.0
2.30.1
From 48a351bcbdc02836cc22bc4cc3ef0747e40d32e9 Mon Sep 17 00:00:00 2001
From 0564d5c307f712e18fffa6816cb0853c1e6a1224 Mon Sep 17 00:00:00 2001
From: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
Date: Fri, 11 Dec 2020 21:17:35 +0100
Subject: [PATCH] PCI: ACPI: Fix up ACPI companion lookup for device 0 on the
@ -3554,9 +3554,9 @@ index 745a4e0c4994..87e45a800919 100644
/**
--
2.30.0
2.30.1
From 439048a506f3de2b24bfb91db533c1c0ea285c7a Mon Sep 17 00:00:00 2001
From 8fea36502f89e914226e1159c094b83d9ec3d226 Mon Sep 17 00:00:00 2001
From: Jake Day <jake@ninebysix.com>
Date: Fri, 25 Sep 2020 10:24:53 -0400
Subject: [PATCH] media: i2c: Add support for the OV5693 image sensor
@ -6911,9 +6911,9 @@ index 000000000000..9a508e1f3624
+static unsigned long N_RES = N_RES_VIDEO;
+#endif
--
2.30.0
2.30.1
From 843d1cc14679a508d76685d653ffb9797f5e9e1f Mon Sep 17 00:00:00 2001
From 73624b0f335955c8cc097bdbdffe954bc5466c75 Mon Sep 17 00:00:00 2001
From: Daniel Scally <djrscally@gmail.com>
Date: Sun, 17 Jan 2021 19:08:18 +0000
Subject: [PATCH] media: i2c: Add reset pin toggling to ov5693
@ -6952,9 +6952,9 @@ index 32485e4ed42b..f9ced52ad37a 100644
if (dev->indicator_led)
--
2.30.0
2.30.1
From 21af55c2dce8dc03a49944ae311aaf9ce9a794a0 Mon Sep 17 00:00:00 2001
From f3982cd7cf3ec7bca291cfc821c4d5dedd94d7ac Mon Sep 17 00:00:00 2001
From: Daniel Scally <djrscally@gmail.com>
Date: Sun, 17 Jan 2021 21:39:15 +0000
Subject: [PATCH] media: i2c: Fix misnamed variable in power_down() for ov5693
@ -6981,5 +6981,5 @@ index f9ced52ad37a..9fd44a3d1d85 100644
clk_disable_unprepare(dev->clk);
--
2.30.0
2.30.1

View file

@ -45,18 +45,18 @@ validpgpkeys=(
)
sha256sums=('8d2c3d8fc7b382c3db6b8bacbc7785e164150b952e706350f2a5a88d42939cb4'
'47a5c0cbe4f75e77fe64953b516a6a9f277c1dfb812e31edf5cb25feb1b3819a'
'1ad719eb0d2eea4e364894b71199ee694c23b44269d1e5e9f4fc341fdf09b991'
'3fbd134c61de6f4fa86567bb0faf02c4eb2c54111b6dc45367b8f6e9ef06556e'
'8cd2b019aac6d3807a5cdcbbbe0aad81e63193ff3e8dffd7a79d4a1421b858f6'
'4ce28ed4c0387a44c7f0cf8a28d8b17cbc9a9be037d5d1b2a4cba07bc2a76712'
'ba6d197064c41b1e547fa8c86ff11380a7c9177cfbdfd1efe8501e358979ee81'
'8982c023f5a5d85052eaa3e78988dcd4b492cbea8a8a61c409e944e55f4e720f'
'bc77b1ec74301dec34c9d3b2cdc2df21f458f9e338f6107f4b0c1c91e4e8163a'
'daba63b194d4106d8ad5deb15053960ceb87d0f21ecc740c2cb5ed010b7f342a'
'66481ae447822b88a1186fb9f47711a90d9a1786133ad1755adb524fb6c6e3e4'
'fb6712bef9c309af8cd137a8bdce2dc886521e0a6d3217cdaea7ac7e3d63aa44'
'd6df043772f2e1dc21dce74ff805a64ad19de9154d0d8d8c12f4fe982c883554'
'0e595489ed968d6db9ac37c1c6dd141328d1317fe52425a25434ee783d51994c'
'f78ca3696110fe4256ccb8e1795a26f58f0776ce6ca0a5b69a13c711bc03bca6')
'eca6f81db4efc8d71a4f5dbaf1d6ca5b46202cb9a8ef5a7eff6b0bbe26a34a82'
'a10905d215739fa148870e0a8fff03f3d101f48d1f7b8028e5460adfd1b8ac25'
'84438dad91d0375bf1c80859081e6b10d5fe9ce3127fed654d64a56aad820b13'
'34aab05229d9fb782ac8dad4ac411cfd7a4f24509ba385461997e1d40000153c'
'e04a672f6bec169d37ee6584c5f1aa252277af1cd38b322eb70602e5bcaeae4d'
'8510597e396b72f898e58abcb77b6d356627720741a76d2551aeb0df4af5919f'
'a6653fdaa655ee61dbc8118458a844fc9261ef2f2733b8ad83adda02cfbd65b2'
'a9f815bc52a2610b3f0b8f878f564acab1d437ac20b7d83790cc7f67d644522f'
'16a0d17039426b4c5fb27fb13de0a4dc0b5fb42cacc5100c99b610b0571b8a86'
'3645b929503176a4ea671d47ac2b3a5bf6f2bd517b54d848d93934b049a9d0aa')
export KBUILD_BUILD_HOST=archlinux