Browse Source

Merge pull request #237 from linux-surface/surface3-touch-dma-fix/update-patches

Surface 3: touchscreen: drop/update patches for fixing DMA
Hayataka 5 năm trước cách đây
mục cha
commit
b8faea49fa

+ 4 - 4
patches/4.19/0001-surface3-power.patch

@@ -1,4 +1,4 @@
-From 492f99c7fb30442ab630d3a7082af977d55ee57a Mon Sep 17 00:00:00 2001
+From 90c1db6ff4e08814d17ab4fd616c00fd98682ec2 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Sat, 28 Sep 2019 18:00:43 +0200
 Subject: [PATCH 1/8] surface3-power
@@ -11,7 +11,7 @@ Subject: [PATCH 1/8] surface3-power
  create mode 100644 drivers/platform/x86/surface3_power.c
 
 diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
-index 1e2524de6a63c..2ad19dc64a4af 100644
+index 1e2524de6a63..2ad19dc64a4a 100644
 --- a/drivers/platform/x86/Kconfig
 +++ b/drivers/platform/x86/Kconfig
 @@ -1160,6 +1160,13 @@ config SURFACE_3_BUTTON
@@ -29,7 +29,7 @@ index 1e2524de6a63c..2ad19dc64a4af 100644
  	tristate "Intel P-Unit IPC Driver"
  	---help---
 diff --git a/drivers/platform/x86/Makefile b/drivers/platform/x86/Makefile
-index dc29af4d8e2fa..2ea90039a3e49 100644
+index dc29af4d8e2f..2ea90039a3e4 100644
 --- a/drivers/platform/x86/Makefile
 +++ b/drivers/platform/x86/Makefile
 @@ -81,6 +81,7 @@ obj-$(CONFIG_INTEL_PMC_IPC)	+= intel_pmc_ipc.o
@@ -42,7 +42,7 @@ index dc29af4d8e2fa..2ea90039a3e49 100644
  obj-$(CONFIG_INTEL_TELEMETRY)	+= intel_telemetry_core.o \
 diff --git a/drivers/platform/x86/surface3_power.c b/drivers/platform/x86/surface3_power.c
 new file mode 100644
-index 0000000000000..e0af01a603025
+index 000000000000..e0af01a60302
 --- /dev/null
 +++ b/drivers/platform/x86/surface3_power.c
 @@ -0,0 +1,604 @@

+ 0 - 63
patches/4.19/0002-surface3-spi.patch

@@ -1,63 +0,0 @@
-From aa239debfe27eeb05210cfab3c440f1ae0d3737f Mon Sep 17 00:00:00 2001
-From: kitakar5525 <34676735+kitakar5525@users.noreply.github.com>
-Date: Fri, 6 Dec 2019 23:10:30 +0900
-Subject: [PATCH 2/8] surface3-spi
-
----
- drivers/input/touchscreen/surface3_spi.c | 26 ++++++++++++++++++++++++
- 1 file changed, 26 insertions(+)
-
-diff --git a/drivers/input/touchscreen/surface3_spi.c b/drivers/input/touchscreen/surface3_spi.c
-index 5db0f1c4ef384..8935ddbc23574 100644
---- a/drivers/input/touchscreen/surface3_spi.c
-+++ b/drivers/input/touchscreen/surface3_spi.c
-@@ -29,6 +29,12 @@
- #define SURFACE3_REPORT_TOUCH	0xd2
- #define SURFACE3_REPORT_PEN	0x16
- 
-+bool use_dma = false;
-+module_param(use_dma, bool, 0644);
-+MODULE_PARM_DESC(use_dma,
-+				"Disable DMA mode if you encounter touch input crash. "
-+				"(default: false, disabled to avoid crash)");
-+
- struct surface3_ts_data {
- 	struct spi_device *spi;
- 	struct gpio_desc *gpiod_rst[2];
-@@ -330,6 +336,13 @@ static int surface3_spi_create_pen_input(struct surface3_ts_data *data)
- 	return 0;
- }
- 
-+static bool surface3_spi_can_dma(struct spi_controller *ctlr,
-+				struct spi_device *spi,
-+				struct spi_transfer *tfr)
-+{
-+	return use_dma;
-+}
-+
- static int surface3_spi_probe(struct spi_device *spi)
- {
- 	struct surface3_ts_data *data;
-@@ -372,6 +385,19 @@ static int surface3_spi_probe(struct spi_device *spi)
- 	if (error)
- 		return error;
- 
-+	/*
-+	 * Set up DMA
-+	 *
-+	 * TODO: Currently, touch input with DMA seems to be broken.
-+	 * On 4.19 LTS, touch input will crash after suspend.
-+	 * On recent stable kernel (at least after 5.1), touch input will crash after
-+	 * the first touch. No problem with PIO on those kernels.
-+	 * Maybe we need to configure DMA here.
-+	 *
-+	 * Link to issue: https://github.com/jakeday/linux-surface/issues/596
-+	 */
-+	spi->controller->can_dma = surface3_spi_can_dma;
-+
- 	return 0;
- }
- 
--- 
-2.27.0
-

+ 63 - 0
patches/4.19/0002-surface3-touchscreen-dma-fix.patch

@@ -0,0 +1,63 @@
+From 4522b91327647286e77ed42decfd787682b59d26 Mon Sep 17 00:00:00 2001
+From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Date: Sun, 5 Jul 2020 14:56:20 +0300
+Subject: [PATCH 2/8] surface3-touchscreen-dma-fix
+
+---
+ drivers/dma/dw/core.c | 12 ------------
+ 1 file changed, 12 deletions(-)
+
+diff --git a/drivers/dma/dw/core.c b/drivers/dma/dw/core.c
+index 055d83b6cb68..acf64302a2b2 100644
+--- a/drivers/dma/dw/core.c
++++ b/drivers/dma/dw/core.c
+@@ -180,9 +180,6 @@ static void dwc_initialize(struct dw_dma_chan *dwc)
+ {
+ 	struct dw_dma *dw = to_dw_dma(dwc->chan.device);
+ 
+-	if (test_bit(DW_DMA_IS_INITIALIZED, &dwc->flags))
+-		return;
+-
+ 	if (dw->pdata->is_idma32)
+ 		dwc_initialize_chan_idma32(dwc);
+ 	else
+@@ -191,8 +188,6 @@ static void dwc_initialize(struct dw_dma_chan *dwc)
+ 	/* Enable interrupts */
+ 	channel_set_bit(dw, MASK.XFER, dwc->mask);
+ 	channel_set_bit(dw, MASK.ERROR, dwc->mask);
+-
+-	set_bit(DW_DMA_IS_INITIALIZED, &dwc->flags);
+ }
+ 
+ /*----------------------------------------------------------------------*/
+@@ -1091,8 +1086,6 @@ static void idma32_fifo_partition(struct dw_dma *dw)
+ 
+ static void dw_dma_off(struct dw_dma *dw)
+ {
+-	unsigned int i;
+-
+ 	dma_writel(dw, CFG, 0);
+ 
+ 	channel_clear_bit(dw, MASK.XFER, dw->all_chan_mask);
+@@ -1103,9 +1096,6 @@ static void dw_dma_off(struct dw_dma *dw)
+ 
+ 	while (dma_readl(dw, CFG) & DW_CFG_DMA_EN)
+ 		cpu_relax();
+-
+-	for (i = 0; i < dw->dma.chancnt; i++)
+-		clear_bit(DW_DMA_IS_INITIALIZED, &dw->chan[i].flags);
+ }
+ 
+ static void dw_dma_on(struct dw_dma *dw)
+@@ -1170,8 +1160,6 @@ static void dwc_free_chan_resources(struct dma_chan *chan)
+ 	/* Clear custom channel configuration */
+ 	memset(&dwc->dws, 0, sizeof(struct dw_dma_slave));
+ 
+-	clear_bit(DW_DMA_IS_INITIALIZED, &dwc->flags);
+-
+ 	/* Disable interrupts */
+ 	channel_clear_bit(dw, MASK.XFER, dwc->mask);
+ 	channel_clear_bit(dw, MASK.BLOCK, dwc->mask);
+-- 
+2.27.0
+

+ 4 - 4
patches/4.19/0003-surface3-oemb.patch

@@ -1,4 +1,4 @@
-From f8158d5cb4dc136c77bf5bb0bc6f4fbd97d9fa61 Mon Sep 17 00:00:00 2001
+From 97823c65c288af66da7dc9eccbfcce7e762dc8a6 Mon Sep 17 00:00:00 2001
 From: Chih-Wei Huang <cwhuang@linux.org.tw>
 Date: Tue, 18 Sep 2018 11:01:37 +0800
 Subject: [PATCH 3/8] surface3-oemb
@@ -10,7 +10,7 @@ Subject: [PATCH 3/8] surface3-oemb
  3 files changed, 24 insertions(+)
 
 diff --git a/drivers/platform/x86/surface3-wmi.c b/drivers/platform/x86/surface3-wmi.c
-index 25b176996cb79..58d11877677f2 100644
+index 25b176996cb7..58d11877677f 100644
 --- a/drivers/platform/x86/surface3-wmi.c
 +++ b/drivers/platform/x86/surface3-wmi.c
 @@ -41,6 +41,13 @@ static const struct dmi_system_id surface3_dmi_table[] = {
@@ -28,7 +28,7 @@ index 25b176996cb79..58d11877677f2 100644
  	{ }
  };
 diff --git a/sound/soc/codecs/rt5645.c b/sound/soc/codecs/rt5645.c
-index 9185bd7c5a6dc..a514d03ae58fc 100644
+index 9185bd7c5a6d..a514d03ae58f 100644
 --- a/sound/soc/codecs/rt5645.c
 +++ b/sound/soc/codecs/rt5645.c
 @@ -3712,6 +3712,15 @@ static const struct dmi_system_id dmi_platform_data[] = {
@@ -48,7 +48,7 @@ index 9185bd7c5a6dc..a514d03ae58fc 100644
  		/*
  		 * Match for the GPDwin which unfortunately uses somewhat
 diff --git a/sound/soc/intel/common/soc-acpi-intel-cht-match.c b/sound/soc/intel/common/soc-acpi-intel-cht-match.c
-index 91bb99b69601d..8418938b32ad5 100644
+index 91bb99b69601..8418938b32ad 100644
 --- a/sound/soc/intel/common/soc-acpi-intel-cht-match.c
 +++ b/sound/soc/intel/common/soc-acpi-intel-cht-match.c
 @@ -36,6 +36,14 @@ static const struct dmi_system_id cht_table[] = {

+ 4 - 4
patches/4.19/0004-surface-buttons.patch

@@ -1,4 +1,4 @@
-From 04a2f127dfc6ef8720b59d926e5bc908f8f50b31 Mon Sep 17 00:00:00 2001
+From 226fbc81a2599e262ed75043d9f800f9ee3813b4 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Sat, 27 Jul 2019 17:51:37 +0200
 Subject: [PATCH 4/8] surface-buttons
@@ -10,7 +10,7 @@ Subject: [PATCH 4/8] surface-buttons
  3 files changed, 151 insertions(+), 16 deletions(-)
 
 diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig
-index ca59a2be9bc53..ea69610370e84 100644
+index ca59a2be9bc5..ea69610370e8 100644
 --- a/drivers/input/misc/Kconfig
 +++ b/drivers/input/misc/Kconfig
 @@ -781,10 +781,10 @@ config INPUT_IDEAPAD_SLIDEBAR
@@ -28,7 +28,7 @@ index ca59a2be9bc53..ea69610370e84 100644
  	  To compile this driver as a module, choose M here: the
  	  module will be called soc_button_array.
 diff --git a/drivers/input/misc/soc_button_array.c b/drivers/input/misc/soc_button_array.c
-index 55cd6e0b409c3..c564ea99f47db 100644
+index 55cd6e0b409c..c564ea99f47d 100644
 --- a/drivers/input/misc/soc_button_array.c
 +++ b/drivers/input/misc/soc_button_array.c
 @@ -29,6 +29,11 @@ struct soc_button_info {
@@ -200,7 +200,7 @@ index 55cd6e0b409c3..c564ea99f47db 100644
  };
  
 diff --git a/drivers/platform/x86/surfacepro3_button.c b/drivers/platform/x86/surfacepro3_button.c
-index 1b491690ce070..96627627060e9 100644
+index 1b491690ce07..96627627060e 100644
 --- a/drivers/platform/x86/surfacepro3_button.c
 +++ b/drivers/platform/x86/surfacepro3_button.c
 @@ -24,6 +24,12 @@

+ 23 - 23
patches/4.19/0005-surface-sam.patch

@@ -1,4 +1,4 @@
-From 94e62231d05dc74e0e2cc76d8fbc752a84ff91b1 Mon Sep 17 00:00:00 2001
+From 197efc24dbbab9e2c1c5d1579b18a277215f6b99 Mon Sep 17 00:00:00 2001
 From: qzed <qzed@users.noreply.github.com>
 Date: Mon, 26 Aug 2019 01:15:40 +0200
 Subject: [PATCH 5/8] surface-sam
@@ -46,7 +46,7 @@ Subject: [PATCH 5/8] surface-sam
  create mode 100644 drivers/platform/x86/surface_sam/surface_sam_vhf.c
 
 diff --git a/drivers/acpi/acpica/dsopcode.c b/drivers/acpi/acpica/dsopcode.c
-index 2f4641e5ecde8..beb22d7e245e3 100644
+index 2f4641e5ecde..beb22d7e245e 100644
 --- a/drivers/acpi/acpica/dsopcode.c
 +++ b/drivers/acpi/acpica/dsopcode.c
 @@ -123,7 +123,7 @@ acpi_ds_init_buffer_field(u16 aml_opcode,
@@ -59,7 +59,7 @@ index 2f4641e5ecde8..beb22d7e245e3 100644
  		bit_count = (u32) length_desc->integer.value;
  
 diff --git a/drivers/acpi/acpica/exfield.c b/drivers/acpi/acpica/exfield.c
-index b272c329d45db..cf547883a9937 100644
+index b272c329d45d..cf547883a993 100644
 --- a/drivers/acpi/acpica/exfield.c
 +++ b/drivers/acpi/acpica/exfield.c
 @@ -102,6 +102,7 @@ acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
@@ -112,7 +112,7 @@ index b272c329d45db..cf547883a9937 100644
  		} else {	/* IPMI */
  
 diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
-index 2ad19dc64a4af..7cee1015981d5 100644
+index 2ad19dc64a4a..7cee1015981d 100644
 --- a/drivers/platform/x86/Kconfig
 +++ b/drivers/platform/x86/Kconfig
 @@ -1250,6 +1250,8 @@ config INTEL_ATOMISP2_PM
@@ -125,7 +125,7 @@ index 2ad19dc64a4af..7cee1015981d5 100644
  
  config PMC_ATOM
 diff --git a/drivers/platform/x86/Makefile b/drivers/platform/x86/Makefile
-index 2ea90039a3e49..cbea9579c1d2f 100644
+index 2ea90039a3e4..cbea9579c1d2 100644
 --- a/drivers/platform/x86/Makefile
 +++ b/drivers/platform/x86/Makefile
 @@ -94,3 +94,4 @@ obj-$(CONFIG_INTEL_TURBO_MAX_3) += intel_turbo_max_3.o
@@ -135,7 +135,7 @@ index 2ea90039a3e49..cbea9579c1d2f 100644
 +obj-$(CONFIG_SURFACE_SAM)	+= surface_sam/
 diff --git a/drivers/platform/x86/surface_sam/Kconfig b/drivers/platform/x86/surface_sam/Kconfig
 new file mode 100644
-index 0000000000000..51278a80569aa
+index 000000000000..51278a80569a
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/Kconfig
 @@ -0,0 +1,164 @@
@@ -305,7 +305,7 @@ index 0000000000000..51278a80569aa
 +	  If you are not sure, say M here.
 diff --git a/drivers/platform/x86/surface_sam/Makefile b/drivers/platform/x86/surface_sam/Makefile
 new file mode 100644
-index 0000000000000..1a5c1260639dc
+index 000000000000..1a5c1260639d
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/Makefile
 @@ -0,0 +1,15 @@
@@ -326,7 +326,7 @@ index 0000000000000..1a5c1260639dc
 +obj-$(CONFIG_SURFACE_SAM_SID_VHF)	+= surface_sam_sid_vhf.o
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_dtx.c b/drivers/platform/x86/surface_sam/surface_sam_dtx.c
 new file mode 100644
-index 0000000000000..88dba7bced3a4
+index 000000000000..88dba7bced3a
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_dtx.c
 @@ -0,0 +1,590 @@
@@ -922,7 +922,7 @@ index 0000000000000..88dba7bced3a4
 +MODULE_LICENSE("GPL");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_hps.c b/drivers/platform/x86/surface_sam/surface_sam_hps.c
 new file mode 100644
-index 0000000000000..40f39f29113c5
+index 000000000000..40f39f29113c
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_hps.c
 @@ -0,0 +1,1297 @@
@@ -2225,7 +2225,7 @@ index 0000000000000..40f39f29113c5
 +MODULE_LICENSE("GPL");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_san.c b/drivers/platform/x86/surface_sam/surface_sam_san.c
 new file mode 100644
-index 0000000000000..11dd6daedc3dd
+index 000000000000..11dd6daedc3d
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_san.c
 @@ -0,0 +1,913 @@
@@ -3144,7 +3144,7 @@ index 0000000000000..11dd6daedc3dd
 +MODULE_LICENSE("GPL");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_san.h b/drivers/platform/x86/surface_sam/surface_sam_san.h
 new file mode 100644
-index 0000000000000..2b9dee159bbbc
+index 000000000000..2b9dee159bbb
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_san.h
 @@ -0,0 +1,30 @@
@@ -3180,7 +3180,7 @@ index 0000000000000..2b9dee159bbbc
 +#endif /* _SURFACE_SAM_SAN_H */
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_sid.c b/drivers/platform/x86/surface_sam/surface_sam_sid.c
 new file mode 100644
-index 0000000000000..caa2e6446b5f4
+index 000000000000..caa2e6446b5f
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_sid.c
 @@ -0,0 +1,281 @@
@@ -3467,7 +3467,7 @@ index 0000000000000..caa2e6446b5f4
 +MODULE_LICENSE("GPL");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_sid_gpelid.c b/drivers/platform/x86/surface_sam/surface_sam_sid_gpelid.c
 new file mode 100644
-index 0000000000000..f0cee43c859b4
+index 000000000000..f0cee43c859b
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_sid_gpelid.c
 @@ -0,0 +1,232 @@
@@ -3705,7 +3705,7 @@ index 0000000000000..f0cee43c859b4
 +MODULE_ALIAS("platform:surface_sam_sid_gpelid");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_sid_perfmode.c b/drivers/platform/x86/surface_sam/surface_sam_sid_perfmode.c
 new file mode 100644
-index 0000000000000..2e11efb166f2b
+index 000000000000..2e11efb166f2
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_sid_perfmode.c
 @@ -0,0 +1,216 @@
@@ -3927,7 +3927,7 @@ index 0000000000000..2e11efb166f2b
 +MODULE_ALIAS("platform:surface_sam_sid_perfmode");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_sid_power.c b/drivers/platform/x86/surface_sam/surface_sam_sid_power.c
 new file mode 100644
-index 0000000000000..1d945c0a911a4
+index 000000000000..1d945c0a911a
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_sid_power.c
 @@ -0,0 +1,1154 @@
@@ -5087,7 +5087,7 @@ index 0000000000000..1d945c0a911a4
 +MODULE_ALIAS("platform:surface_sam_sid_battery");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_sid_power.h b/drivers/platform/x86/surface_sam/surface_sam_sid_power.h
 new file mode 100644
-index 0000000000000..2e8f212086e12
+index 000000000000..2e8f212086e1
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_sid_power.h
 @@ -0,0 +1,15 @@
@@ -5108,7 +5108,7 @@ index 0000000000000..2e8f212086e12
 +#endif /* _SURFACE_SAM_SID_POWER_H */
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_sid_vhf.c b/drivers/platform/x86/surface_sam/surface_sam_sid_vhf.c
 new file mode 100644
-index 0000000000000..474221097eaf1
+index 000000000000..474221097eaf
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_sid_vhf.c
 @@ -0,0 +1,432 @@
@@ -5546,7 +5546,7 @@ index 0000000000000..474221097eaf1
 +MODULE_ALIAS("platform:surface_sam_sid_vhf");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_sid_vhf.h b/drivers/platform/x86/surface_sam/surface_sam_sid_vhf.h
 new file mode 100644
-index 0000000000000..eb55485ccb119
+index 000000000000..eb55485ccb11
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_sid_vhf.h
 @@ -0,0 +1,13 @@
@@ -5565,7 +5565,7 @@ index 0000000000000..eb55485ccb119
 +#endif /* _SURFACE_SAM_SID_VHF_H */
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_ssh.c b/drivers/platform/x86/surface_sam/surface_sam_ssh.c
 new file mode 100644
-index 0000000000000..ef1ce8cd7d7f2
+index 000000000000..ef1ce8cd7d7f
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_ssh.c
 @@ -0,0 +1,5112 @@
@@ -10683,7 +10683,7 @@ index 0000000000000..ef1ce8cd7d7f2
 +MODULE_LICENSE("GPL");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_ssh.h b/drivers/platform/x86/surface_sam/surface_sam_ssh.h
 new file mode 100644
-index 0000000000000..e4f0e343496c4
+index 000000000000..e4f0e343496c
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_ssh.h
 @@ -0,0 +1,482 @@
@@ -11171,7 +11171,7 @@ index 0000000000000..e4f0e343496c4
 +#endif /* _SURFACE_SAM_SSH_H */
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_ssh_trace.h b/drivers/platform/x86/surface_sam/surface_sam_ssh_trace.h
 new file mode 100644
-index 0000000000000..801c60205128c
+index 000000000000..801c60205128
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_ssh_trace.h
 @@ -0,0 +1,536 @@
@@ -11713,7 +11713,7 @@ index 0000000000000..801c60205128c
 +#include <trace/define_trace.h>
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_vhf.c b/drivers/platform/x86/surface_sam/surface_sam_vhf.c
 new file mode 100644
-index 0000000000000..984035c55d63a
+index 000000000000..984035c55d63
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_vhf.c
 @@ -0,0 +1,261 @@
@@ -11979,7 +11979,7 @@ index 0000000000000..984035c55d63a
 +MODULE_DESCRIPTION("Virtual HID Framework Driver for 5th Generation Surface Devices");
 +MODULE_LICENSE("GPL");
 diff --git a/drivers/tty/serdev/core.c b/drivers/tty/serdev/core.c
-index c66a04d24f1d3..6b48fdfb20059 100644
+index c66a04d24f1d..6b48fdfb2005 100644
 --- a/drivers/tty/serdev/core.c
 +++ b/drivers/tty/serdev/core.c
 @@ -496,16 +496,97 @@ static int of_serdev_register_devices(struct serdev_controller *ctrl)

+ 6 - 6
patches/4.19/0006-suspend.patch

@@ -1,4 +1,4 @@
-From 045d078505d3bbd4b8632251c718aa4dac59e085 Mon Sep 17 00:00:00 2001
+From 9b7d66bfcb604f583b5a5407beb976fc6aade19d Mon Sep 17 00:00:00 2001
 From: kitakar5525 <34676735+kitakar5525@users.noreply.github.com>
 Date: Sat, 28 Sep 2019 17:48:21 +0200
 Subject: [PATCH 6/8] suspend
@@ -12,7 +12,7 @@ Subject: [PATCH 6/8] suspend
  5 files changed, 162 insertions(+), 6 deletions(-)
 
 diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
-index 0d60f2f8f3eec..6dcd37c10153f 100644
+index 0d60f2f8f3ee..6dcd37c10153 100644
 --- a/drivers/nvme/host/core.c
 +++ b/drivers/nvme/host/core.c
 @@ -1068,15 +1068,15 @@ static struct nvme_id_ns *nvme_identify_ns(struct nvme_ctrl *ctrl,
@@ -79,7 +79,7 @@ index 0d60f2f8f3eec..6dcd37c10153f 100644
   * Initialize a NVMe controller structures.  This needs to be called during
   * earliest initialization so that we have the initialized structured around
 diff --git a/drivers/nvme/host/nvme.h b/drivers/nvme/host/nvme.h
-index cc4273f119894..40192b6617983 100644
+index cc4273f11989..40192b661798 100644
 --- a/drivers/nvme/host/nvme.h
 +++ b/drivers/nvme/host/nvme.h
 @@ -436,6 +436,7 @@ void nvme_complete_async_event(struct nvme_ctrl *ctrl, __le16 status,
@@ -104,7 +104,7 @@ index cc4273f119894..40192b6617983 100644
  void nvme_stop_keep_alive(struct nvme_ctrl *ctrl);
  int nvme_reset_ctrl(struct nvme_ctrl *ctrl);
 diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
-index 3c68a5b35ec1b..0cc7bea4eb707 100644
+index 3c68a5b35ec1..0cc7bea4eb70 100644
 --- a/drivers/nvme/host/pci.c
 +++ b/drivers/nvme/host/pci.c
 @@ -26,6 +26,7 @@
@@ -266,7 +266,7 @@ index 3c68a5b35ec1b..0cc7bea4eb707 100644
  	.err_handler	= &nvme_err_handler,
  };
 diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c
-index 6e50f84733b75..b03884b6bc6f8 100644
+index 6e50f84733b7..b03884b6bc6f 100644
 --- a/drivers/pci/pcie/aspm.c
 +++ b/drivers/pci/pcie/aspm.c
 @@ -1170,6 +1170,26 @@ static int pcie_aspm_get_policy(char *buffer, const struct kernel_param *kp)
@@ -297,7 +297,7 @@ index 6e50f84733b75..b03884b6bc6f8 100644
  static ssize_t link_state_show(struct device *dev,
  		struct device_attribute *attr,
 diff --git a/include/linux/pci.h b/include/linux/pci.h
-index b1f297f4b7b0b..94ab2fc800d30 100644
+index b1f297f4b7b0..94ab2fc800d3 100644
 --- a/include/linux/pci.h
 +++ b/include/linux/pci.h
 @@ -1486,8 +1486,10 @@ extern bool pcie_ports_native;

+ 51 - 51
patches/4.19/0007-ipts.patch

@@ -1,4 +1,4 @@
-From 5ab23410ddbe3088444af99d1296a4164365fc70 Mon Sep 17 00:00:00 2001
+From 20794de213eeb51ec12cccdf6705ff73ec79a804 Mon Sep 17 00:00:00 2001
 From: Maximilian Luz <luzmaximilian@gmail.com>
 Date: Sat, 28 Sep 2019 17:58:17 +0200
 Subject: [PATCH 7/8] ipts
@@ -89,7 +89,7 @@ Subject: [PATCH 7/8] ipts
  create mode 100644 include/linux/ipts.h
 
 diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
-index 5794f102f9b8f..6ae0e91a213af 100644
+index 5794f102f9b8..6ae0e91a213a 100644
 --- a/drivers/gpu/drm/i915/Makefile
 +++ b/drivers/gpu/drm/i915/Makefile
 @@ -155,6 +155,9 @@ i915-y += dvo_ch7017.o \
@@ -103,7 +103,7 @@ index 5794f102f9b8f..6ae0e91a213af 100644
  i915-$(CONFIG_DRM_I915_CAPTURE_ERROR) += i915_gpu_error.o
  i915-$(CONFIG_DRM_I915_SELFTEST) += \
 diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
-index e063e98d1e82e..99becb6aed688 100644
+index e063e98d1e82..99becb6aed68 100644
 --- a/drivers/gpu/drm/i915/i915_debugfs.c
 +++ b/drivers/gpu/drm/i915/i915_debugfs.c
 @@ -31,6 +31,7 @@
@@ -191,7 +191,7 @@ index e063e98d1e82e..99becb6aed688 100644
  
  int i915_debugfs_register(struct drm_i915_private *dev_priv)
 diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
-index b0d76a7a0946f..81fba8e5ab050 100644
+index b0d76a7a0946..81fba8e5ab05 100644
 --- a/drivers/gpu/drm/i915/i915_drv.c
 +++ b/drivers/gpu/drm/i915/i915_drv.c
 @@ -47,11 +47,12 @@
@@ -229,7 +229,7 @@ index b0d76a7a0946f..81fba8e5ab050 100644
  
  	if (i915_gem_suspend(dev_priv))
 diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
-index db2e9af49ae6f..99bc0c92c4111 100644
+index db2e9af49ae6..99bc0c92c411 100644
 --- a/drivers/gpu/drm/i915/i915_drv.h
 +++ b/drivers/gpu/drm/i915/i915_drv.h
 @@ -3232,6 +3232,9 @@ void i915_gem_object_do_bit_17_swizzle(struct drm_i915_gem_object *obj,
@@ -243,7 +243,7 @@ index db2e9af49ae6f..99bc0c92c4111 100644
  __i915_gem_context_lookup_rcu(struct drm_i915_file_private *file_priv, u32 id)
  {
 diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c
-index ef383fd429885..89da4ff094312 100644
+index ef383fd42988..89da4ff09431 100644
 --- a/drivers/gpu/drm/i915/i915_gem_context.c
 +++ b/drivers/gpu/drm/i915/i915_gem_context.c
 @@ -472,6 +472,18 @@ static bool needs_preempt_context(struct drm_i915_private *i915)
@@ -266,7 +266,7 @@ index ef383fd429885..89da4ff094312 100644
  {
  	struct i915_gem_context *ctx;
 diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
-index b7c3982321369..adf168aed2fe3 100644
+index b7c398232136..adf168aed2fe 100644
 --- a/drivers/gpu/drm/i915/i915_irq.c
 +++ b/drivers/gpu/drm/i915/i915_irq.c
 @@ -36,6 +36,7 @@
@@ -298,7 +298,7 @@ index b7c3982321369..adf168aed2fe3 100644
  			GT_RENDER_USER_INTERRUPT << GEN8_BCS_IRQ_SHIFT |
  			GT_CONTEXT_SWITCH_INTERRUPT << GEN8_BCS_IRQ_SHIFT,
 diff --git a/drivers/gpu/drm/i915/i915_params.c b/drivers/gpu/drm/i915/i915_params.c
-index 295e981e4a398..84415814c0070 100644
+index 295e981e4a39..84415814c007 100644
 --- a/drivers/gpu/drm/i915/i915_params.c
 +++ b/drivers/gpu/drm/i915/i915_params.c
 @@ -145,7 +145,10 @@ i915_param_named_unsafe(edp_vswing, int, 0400,
@@ -314,7 +314,7 @@ index 295e981e4a398..84415814c0070 100644
  i915_param_named(guc_log_level, int, 0400,
  	"GuC firmware logging level. Requires GuC to be loaded. "
 diff --git a/drivers/gpu/drm/i915/i915_params.h b/drivers/gpu/drm/i915/i915_params.h
-index 6c4d4a21474b5..4ab800c3de6d0 100644
+index 6c4d4a21474b..4ab800c3de6d 100644
 --- a/drivers/gpu/drm/i915/i915_params.h
 +++ b/drivers/gpu/drm/i915/i915_params.h
 @@ -46,7 +46,7 @@ struct drm_printer;
@@ -337,7 +337,7 @@ index 6c4d4a21474b5..4ab800c3de6d0 100644
  #define MEMBER(T, member, ...) T member;
  struct i915_params {
 diff --git a/drivers/gpu/drm/i915/intel_guc.h b/drivers/gpu/drm/i915/intel_guc.h
-index 4121928a495e0..8967376accf30 100644
+index 4121928a495e..8967376accf3 100644
 --- a/drivers/gpu/drm/i915/intel_guc.h
 +++ b/drivers/gpu/drm/i915/intel_guc.h
 @@ -69,6 +69,7 @@ struct intel_guc {
@@ -349,7 +349,7 @@ index 4121928a495e0..8967376accf30 100644
  	struct guc_preempt_work preempt_work[I915_NUM_ENGINES];
  	struct workqueue_struct *preempt_wq;
 diff --git a/drivers/gpu/drm/i915/intel_guc_submission.c b/drivers/gpu/drm/i915/intel_guc_submission.c
-index 4aa5e6463e7b7..da80c5f17feea 100644
+index 4aa5e6463e7b..da80c5f17fee 100644
 --- a/drivers/gpu/drm/i915/intel_guc_submission.c
 +++ b/drivers/gpu/drm/i915/intel_guc_submission.c
 @@ -88,12 +88,17 @@ static inline struct i915_priolist *to_priolist(struct rb_node *rb)
@@ -481,7 +481,7 @@ index 4aa5e6463e7b7..da80c5f17feea 100644
  #include "selftests/intel_guc.c"
  #endif
 diff --git a/drivers/gpu/drm/i915/intel_guc_submission.h b/drivers/gpu/drm/i915/intel_guc_submission.h
-index fb081cefef935..71fc7986585ab 100644
+index fb081cefef93..71fc7986585a 100644
 --- a/drivers/gpu/drm/i915/intel_guc_submission.h
 +++ b/drivers/gpu/drm/i915/intel_guc_submission.h
 @@ -79,5 +79,9 @@ void intel_guc_submission_disable(struct intel_guc *guc);
@@ -496,7 +496,7 @@ index fb081cefef935..71fc7986585ab 100644
  #endif
 diff --git a/drivers/gpu/drm/i915/intel_ipts.c b/drivers/gpu/drm/i915/intel_ipts.c
 new file mode 100644
-index 0000000000000..c1199074924a0
+index 000000000000..c1199074924a
 --- /dev/null
 +++ b/drivers/gpu/drm/i915/intel_ipts.c
 @@ -0,0 +1,650 @@
@@ -1152,7 +1152,7 @@ index 0000000000000..c1199074924a0
 +}
 diff --git a/drivers/gpu/drm/i915/intel_ipts.h b/drivers/gpu/drm/i915/intel_ipts.h
 new file mode 100644
-index 0000000000000..67f90b72f2378
+index 000000000000..67f90b72f237
 --- /dev/null
 +++ b/drivers/gpu/drm/i915/intel_ipts.h
 @@ -0,0 +1,34 @@
@@ -1191,7 +1191,7 @@ index 0000000000000..67f90b72f2378
 +
 +#endif //_INTEL_IPTS_H_
 diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
-index 13e97faabaa74..a4af67d3d6ffd 100644
+index 13e97faabaa7..a4af67d3d6ff 100644
 --- a/drivers/gpu/drm/i915/intel_lrc.c
 +++ b/drivers/gpu/drm/i915/intel_lrc.c
 @@ -164,9 +164,6 @@
@@ -1242,7 +1242,7 @@ index 13e97faabaa74..a4af67d3d6ffd 100644
  					    struct intel_context *ce)
  {
 diff --git a/drivers/gpu/drm/i915/intel_lrc.h b/drivers/gpu/drm/i915/intel_lrc.h
-index 4dfb78e3ec7e4..32159231a16e7 100644
+index 4dfb78e3ec7e..32159231a16e 100644
 --- a/drivers/gpu/drm/i915/intel_lrc.h
 +++ b/drivers/gpu/drm/i915/intel_lrc.h
 @@ -106,4 +106,12 @@ void intel_lr_context_resume(struct drm_i915_private *dev_priv);
@@ -1259,7 +1259,7 @@ index 4dfb78e3ec7e4..32159231a16e7 100644
 +
  #endif /* _INTEL_LRC_H_ */
 diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
-index 4a9f139e7b738..c137a57f67026 100644
+index 4a9f139e7b73..c137a57f6702 100644
 --- a/drivers/gpu/drm/i915/intel_panel.c
 +++ b/drivers/gpu/drm/i915/intel_panel.c
 @@ -34,6 +34,7 @@
@@ -1291,7 +1291,7 @@ index 4a9f139e7b738..c137a57f67026 100644
  
  static void pch_enable_backlight(const struct intel_crtc_state *crtc_state,
 diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
-index 3726eacdf65de..77263b5f5915a 100644
+index 3726eacdf65d..77263b5f5915 100644
 --- a/drivers/misc/Kconfig
 +++ b/drivers/misc/Kconfig
 @@ -520,6 +520,7 @@ source "drivers/misc/ti-st/Kconfig"
@@ -1303,7 +1303,7 @@ index 3726eacdf65de..77263b5f5915a 100644
  source "drivers/misc/mic/Kconfig"
  source "drivers/misc/genwqe/Kconfig"
 diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
-index af22bbc3d00cb..eb1eb0d58c327 100644
+index af22bbc3d00c..eb1eb0d58c32 100644
 --- a/drivers/misc/Makefile
 +++ b/drivers/misc/Makefile
 @@ -44,6 +44,7 @@ obj-y				+= lis3lv02d/
@@ -1316,7 +1316,7 @@ index af22bbc3d00cb..eb1eb0d58c327 100644
  obj-$(CONFIG_SRAM)		+= sram.o
 diff --git a/drivers/misc/ipts/Kconfig b/drivers/misc/ipts/Kconfig
 new file mode 100644
-index 0000000000000..900d2c58ca74c
+index 000000000000..900d2c58ca74
 --- /dev/null
 +++ b/drivers/misc/ipts/Kconfig
 @@ -0,0 +1,12 @@
@@ -1334,7 +1334,7 @@ index 0000000000000..900d2c58ca74c
 +source "drivers/misc/ipts/companion/Kconfig"
 diff --git a/drivers/misc/ipts/Makefile b/drivers/misc/ipts/Makefile
 new file mode 100644
-index 0000000000000..bb3982f48afcb
+index 000000000000..bb3982f48afc
 --- /dev/null
 +++ b/drivers/misc/ipts/Makefile
 @@ -0,0 +1,19 @@
@@ -1359,7 +1359,7 @@ index 0000000000000..bb3982f48afcb
 +obj-y += companion/
 diff --git a/drivers/misc/ipts/companion.c b/drivers/misc/ipts/companion.c
 new file mode 100644
-index 0000000000000..8f66b852f1371
+index 000000000000..8f66b852f137
 --- /dev/null
 +++ b/drivers/misc/ipts/companion.c
 @@ -0,0 +1,211 @@
@@ -1576,7 +1576,7 @@ index 0000000000000..8f66b852f1371
 +}
 diff --git a/drivers/misc/ipts/companion.h b/drivers/misc/ipts/companion.h
 new file mode 100644
-index 0000000000000..7a1e4b388c40a
+index 000000000000..7a1e4b388c40
 --- /dev/null
 +++ b/drivers/misc/ipts/companion.h
 @@ -0,0 +1,25 @@
@@ -1607,7 +1607,7 @@ index 0000000000000..7a1e4b388c40a
 +#endif // _IPTS_COMPANION_H_
 diff --git a/drivers/misc/ipts/companion/Kconfig b/drivers/misc/ipts/companion/Kconfig
 new file mode 100644
-index 0000000000000..ef17d9bb5242f
+index 000000000000..ef17d9bb5242
 --- /dev/null
 +++ b/drivers/misc/ipts/companion/Kconfig
 @@ -0,0 +1,8 @@
@@ -1621,7 +1621,7 @@ index 0000000000000..ef17d9bb5242f
 +	  If you have a Microsoft Surface using IPTS, select y or m here.
 diff --git a/drivers/misc/ipts/companion/Makefile b/drivers/misc/ipts/companion/Makefile
 new file mode 100644
-index 0000000000000..b37f2f59937a8
+index 000000000000..b37f2f59937a
 --- /dev/null
 +++ b/drivers/misc/ipts/companion/Makefile
 @@ -0,0 +1,2 @@
@@ -1629,7 +1629,7 @@ index 0000000000000..b37f2f59937a8
 +obj-$(CONFIG_INTEL_IPTS_SURFACE)+= ipts-surface.o
 diff --git a/drivers/misc/ipts/companion/ipts-surface.c b/drivers/misc/ipts/companion/ipts-surface.c
 new file mode 100644
-index 0000000000000..a717dfcdfeba7
+index 000000000000..a717dfcdfeba
 --- /dev/null
 +++ b/drivers/misc/ipts/companion/ipts-surface.c
 @@ -0,0 +1,157 @@
@@ -1792,7 +1792,7 @@ index 0000000000000..a717dfcdfeba7
 +IPTS_SURFACE_FIRMWARE("MSHW0137");
 diff --git a/drivers/misc/ipts/dbgfs.c b/drivers/misc/ipts/dbgfs.c
 new file mode 100644
-index 0000000000000..fd9388de17e78
+index 000000000000..fd9388de17e7
 --- /dev/null
 +++ b/drivers/misc/ipts/dbgfs.c
 @@ -0,0 +1,277 @@
@@ -2075,7 +2075,7 @@ index 0000000000000..fd9388de17e78
 +}
 diff --git a/drivers/misc/ipts/gfx.c b/drivers/misc/ipts/gfx.c
 new file mode 100644
-index 0000000000000..b8900f514c756
+index 000000000000..b8900f514c75
 --- /dev/null
 +++ b/drivers/misc/ipts/gfx.c
 @@ -0,0 +1,180 @@
@@ -2261,7 +2261,7 @@ index 0000000000000..b8900f514c756
 +}
 diff --git a/drivers/misc/ipts/gfx.h b/drivers/misc/ipts/gfx.h
 new file mode 100644
-index 0000000000000..2880e122e9f96
+index 000000000000..2880e122e9f9
 --- /dev/null
 +++ b/drivers/misc/ipts/gfx.h
 @@ -0,0 +1,25 @@
@@ -2292,7 +2292,7 @@ index 0000000000000..2880e122e9f96
 +#endif // _IPTS_GFX_H_
 diff --git a/drivers/misc/ipts/hid.c b/drivers/misc/ipts/hid.c
 new file mode 100644
-index 0000000000000..1b7ad2a774a86
+index 000000000000..1b7ad2a774a8
 --- /dev/null
 +++ b/drivers/misc/ipts/hid.c
 @@ -0,0 +1,469 @@
@@ -2767,7 +2767,7 @@ index 0000000000000..1b7ad2a774a86
 +}
 diff --git a/drivers/misc/ipts/hid.h b/drivers/misc/ipts/hid.h
 new file mode 100644
-index 0000000000000..c943979e01983
+index 000000000000..c943979e0198
 --- /dev/null
 +++ b/drivers/misc/ipts/hid.h
 @@ -0,0 +1,21 @@
@@ -2794,7 +2794,7 @@ index 0000000000000..c943979e01983
 +#endif // _IPTS_HID_H_
 diff --git a/drivers/misc/ipts/ipts.c b/drivers/misc/ipts/ipts.c
 new file mode 100644
-index 0000000000000..dfafabf8dd949
+index 000000000000..dfafabf8dd94
 --- /dev/null
 +++ b/drivers/misc/ipts/ipts.c
 @@ -0,0 +1,62 @@
@@ -2862,7 +2862,7 @@ index 0000000000000..dfafabf8dd949
 +}
 diff --git a/drivers/misc/ipts/ipts.h b/drivers/misc/ipts/ipts.h
 new file mode 100644
-index 0000000000000..32eb3ffd68a3b
+index 000000000000..32eb3ffd68a3
 --- /dev/null
 +++ b/drivers/misc/ipts/ipts.h
 @@ -0,0 +1,172 @@
@@ -3040,7 +3040,7 @@ index 0000000000000..32eb3ffd68a3b
 +#endif // _IPTS_H_
 diff --git a/drivers/misc/ipts/kernel.c b/drivers/misc/ipts/kernel.c
 new file mode 100644
-index 0000000000000..a2c43228e2c7d
+index 000000000000..a2c43228e2c7
 --- /dev/null
 +++ b/drivers/misc/ipts/kernel.c
 @@ -0,0 +1,1047 @@
@@ -4093,7 +4093,7 @@ index 0000000000000..a2c43228e2c7d
 +}
 diff --git a/drivers/misc/ipts/kernel.h b/drivers/misc/ipts/kernel.h
 new file mode 100644
-index 0000000000000..7be45da01cfc0
+index 000000000000..7be45da01cfc
 --- /dev/null
 +++ b/drivers/misc/ipts/kernel.h
 @@ -0,0 +1,17 @@
@@ -4116,7 +4116,7 @@ index 0000000000000..7be45da01cfc0
 +#endif // _IPTS_KERNEL_H_
 diff --git a/drivers/misc/ipts/mei-msgs.h b/drivers/misc/ipts/mei-msgs.h
 new file mode 100644
-index 0000000000000..036b74f7234ef
+index 000000000000..036b74f7234e
 --- /dev/null
 +++ b/drivers/misc/ipts/mei-msgs.h
 @@ -0,0 +1,901 @@
@@ -5023,7 +5023,7 @@ index 0000000000000..036b74f7234ef
 +#endif // _IPTS_MEI_MSGS_H_
 diff --git a/drivers/misc/ipts/mei.c b/drivers/misc/ipts/mei.c
 new file mode 100644
-index 0000000000000..03b5d747a728f
+index 000000000000..03b5d747a728
 --- /dev/null
 +++ b/drivers/misc/ipts/mei.c
 @@ -0,0 +1,238 @@
@@ -5267,7 +5267,7 @@ index 0000000000000..03b5d747a728f
 +MODULE_LICENSE("GPL");
 diff --git a/drivers/misc/ipts/msg-handler.c b/drivers/misc/ipts/msg-handler.c
 new file mode 100644
-index 0000000000000..9431b1dfc6e06
+index 000000000000..9431b1dfc6e0
 --- /dev/null
 +++ b/drivers/misc/ipts/msg-handler.c
 @@ -0,0 +1,405 @@
@@ -5678,7 +5678,7 @@ index 0000000000000..9431b1dfc6e06
 +}
 diff --git a/drivers/misc/ipts/msg-handler.h b/drivers/misc/ipts/msg-handler.h
 new file mode 100644
-index 0000000000000..eca4238adf4b1
+index 000000000000..eca4238adf4b
 --- /dev/null
 +++ b/drivers/misc/ipts/msg-handler.h
 @@ -0,0 +1,28 @@
@@ -5712,7 +5712,7 @@ index 0000000000000..eca4238adf4b1
 +#endif /* _IPTS_MSG_HANDLER_H */
 diff --git a/drivers/misc/ipts/params.c b/drivers/misc/ipts/params.c
 new file mode 100644
-index 0000000000000..3ea76ca8342a9
+index 000000000000..3ea76ca8342a
 --- /dev/null
 +++ b/drivers/misc/ipts/params.c
 @@ -0,0 +1,42 @@
@@ -5760,7 +5760,7 @@ index 0000000000000..3ea76ca8342a9
 +
 diff --git a/drivers/misc/ipts/params.h b/drivers/misc/ipts/params.h
 new file mode 100644
-index 0000000000000..c20546bacb086
+index 000000000000..c20546bacb08
 --- /dev/null
 +++ b/drivers/misc/ipts/params.h
 @@ -0,0 +1,25 @@
@@ -5791,7 +5791,7 @@ index 0000000000000..c20546bacb086
 +#endif // _IPTS_PARAMS_H_
 diff --git a/drivers/misc/ipts/resource.c b/drivers/misc/ipts/resource.c
 new file mode 100644
-index 0000000000000..cfd212f2cac09
+index 000000000000..cfd212f2cac0
 --- /dev/null
 +++ b/drivers/misc/ipts/resource.c
 @@ -0,0 +1,291 @@
@@ -6088,7 +6088,7 @@ index 0000000000000..cfd212f2cac09
 +}
 diff --git a/drivers/misc/ipts/resource.h b/drivers/misc/ipts/resource.h
 new file mode 100644
-index 0000000000000..27b9c17fcb89a
+index 000000000000..27b9c17fcb89
 --- /dev/null
 +++ b/drivers/misc/ipts/resource.h
 @@ -0,0 +1,26 @@
@@ -6120,7 +6120,7 @@ index 0000000000000..27b9c17fcb89a
 +#endif // _IPTS_RESOURCE_H_
 diff --git a/drivers/misc/ipts/sensor-regs.h b/drivers/misc/ipts/sensor-regs.h
 new file mode 100644
-index 0000000000000..c1afab48249b7
+index 000000000000..c1afab48249b
 --- /dev/null
 +++ b/drivers/misc/ipts/sensor-regs.h
 @@ -0,0 +1,834 @@
@@ -6960,7 +6960,7 @@ index 0000000000000..c1afab48249b7
 +#endif // _IPTS_SENSOR_REGS_H_
 diff --git a/drivers/misc/ipts/state.h b/drivers/misc/ipts/state.h
 new file mode 100644
-index 0000000000000..ef73d28db47cc
+index 000000000000..ef73d28db47c
 --- /dev/null
 +++ b/drivers/misc/ipts/state.h
 @@ -0,0 +1,22 @@
@@ -6987,7 +6987,7 @@ index 0000000000000..ef73d28db47cc
 +
 +#endif // _IPTS_STATE_H_
 diff --git a/drivers/misc/mei/hw-me-regs.h b/drivers/misc/mei/hw-me-regs.h
-index 2ac1dc5104b7a..5daa857a49389 100644
+index 2ac1dc5104b7..5daa857a4938 100644
 --- a/drivers/misc/mei/hw-me-regs.h
 +++ b/drivers/misc/mei/hw-me-regs.h
 @@ -119,6 +119,7 @@
@@ -6999,7 +6999,7 @@ index 2ac1dc5104b7a..5daa857a49389 100644
  #define MEI_DEV_ID_SPT_H_2    0xA13B  /* Sunrise Point H 2 */
  
 diff --git a/drivers/misc/mei/pci-me.c b/drivers/misc/mei/pci-me.c
-index b4bf12f27caf5..34f4338fa6417 100644
+index b4bf12f27caf..34f4338fa641 100644
 --- a/drivers/misc/mei/pci-me.c
 +++ b/drivers/misc/mei/pci-me.c
 @@ -86,6 +86,7 @@ static const struct pci_device_id mei_me_pci_tbl[] = {
@@ -7012,7 +7012,7 @@ index b4bf12f27caf5..34f4338fa6417 100644
  	{MEI_PCI_DEVICE(MEI_DEV_ID_LBG, MEI_ME_PCH12_CFG)},
 diff --git a/include/linux/ipts-binary.h b/include/linux/ipts-binary.h
 new file mode 100644
-index 0000000000000..98b54d74ff888
+index 000000000000..98b54d74ff88
 --- /dev/null
 +++ b/include/linux/ipts-binary.h
 @@ -0,0 +1,140 @@
@@ -7158,7 +7158,7 @@ index 0000000000000..98b54d74ff888
 +#endif // IPTS_BINARY_H
 diff --git a/include/linux/ipts-companion.h b/include/linux/ipts-companion.h
 new file mode 100644
-index 0000000000000..de31f5e0b186b
+index 000000000000..de31f5e0b186
 --- /dev/null
 +++ b/include/linux/ipts-companion.h
 @@ -0,0 +1,29 @@
@@ -7193,7 +7193,7 @@ index 0000000000000..de31f5e0b186b
 +#endif // IPTS_COMPANION_H
 diff --git a/include/linux/ipts-gfx.h b/include/linux/ipts-gfx.h
 new file mode 100644
-index 0000000000000..cb9d98fe96e4b
+index 000000000000..cb9d98fe96e4
 --- /dev/null
 +++ b/include/linux/ipts-gfx.h
 @@ -0,0 +1,86 @@
@@ -7285,7 +7285,7 @@ index 0000000000000..cb9d98fe96e4b
 +#endif // IPTS_GFX_H
 diff --git a/include/linux/ipts.h b/include/linux/ipts.h
 new file mode 100644
-index 0000000000000..f229a34368516
+index 000000000000..f229a3436851
 --- /dev/null
 +++ b/include/linux/ipts.h
 @@ -0,0 +1,19 @@

+ 4 - 4
patches/4.19/0008-wifi.patch

@@ -1,4 +1,4 @@
-From 1177844a912a96fad44a13c59c36839f8aaa05e1 Mon Sep 17 00:00:00 2001
+From a3b7c2bb5b8337176501abb3a94941716340d3fc Mon Sep 17 00:00:00 2001
 From: kitakar5525 <34676735+kitakar5525@users.noreply.github.com>
 Date: Thu, 20 Feb 2020 16:51:11 +0900
 Subject: [PATCH 8/8] wifi
@@ -10,7 +10,7 @@ Subject: [PATCH 8/8] wifi
  3 files changed, 83 insertions(+), 60 deletions(-)
 
 diff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
-index 650191db25cbe..dd487fc9c1a1e 100644
+index 650191db25cb..dd487fc9c1a1 100644
 --- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c
 +++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
 @@ -25,6 +25,11 @@
@@ -54,7 +54,7 @@ index 650191db25cbe..dd487fc9c1a1e 100644
  }
  
 diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c
-index 991b9cc180006..2464f536192cb 100644
+index 991b9cc18000..2464f536192c 100644
 --- a/drivers/net/wireless/marvell/mwifiex/pcie.c
 +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c
 @@ -146,40 +146,45 @@ static bool mwifiex_pcie_ok_to_access_hw(struct mwifiex_adapter *adapter)
@@ -191,7 +191,7 @@ index 991b9cc180006..2464f536192cb 100644
  		 pdev->vendor, pdev->device, pdev->revision);
  
 diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c
-index 4ed10cf82f9a4..410bef3d6a6eb 100644
+index 4ed10cf82f9a..410bef3d6a6e 100644
 --- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c
 +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c
 @@ -2254,7 +2254,6 @@ int mwifiex_sta_prepare_cmd(struct mwifiex_private *priv, uint16_t cmd_no,

+ 5 - 5
patches/5.4/0001-surface3-power.patch

@@ -1,7 +1,7 @@
-From 9d4db1c11d731093c64074c79811b0cb38212f15 Mon Sep 17 00:00:00 2001
+From b7d0622c7e15d3caeede840e33efed1c7dbbfaa4 Mon Sep 17 00:00:00 2001
 From: qzed <qzed@users.noreply.github.com>
 Date: Tue, 17 Sep 2019 17:17:56 +0200
-Subject: [PATCH 1/6] surface3-power
+Subject: [PATCH 1/5] surface3-power
 
 ---
  drivers/platform/x86/Kconfig          |   7 +
@@ -11,7 +11,7 @@ Subject: [PATCH 1/6] surface3-power
  create mode 100644 drivers/platform/x86/surface3_power.c
 
 diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
-index 1cab993205142..348c795019fa4 100644
+index 1cab99320514..348c795019fa 100644
 --- a/drivers/platform/x86/Kconfig
 +++ b/drivers/platform/x86/Kconfig
 @@ -1209,6 +1209,13 @@ config SURFACE_3_BUTTON
@@ -29,7 +29,7 @@ index 1cab993205142..348c795019fa4 100644
  	tristate "Intel P-Unit IPC Driver"
  	---help---
 diff --git a/drivers/platform/x86/Makefile b/drivers/platform/x86/Makefile
-index 4151040330601..6dd955ad9bf18 100644
+index 415104033060..6dd955ad9bf1 100644
 --- a/drivers/platform/x86/Makefile
 +++ b/drivers/platform/x86/Makefile
 @@ -85,6 +85,7 @@ obj-$(CONFIG_INTEL_PMC_IPC)	+= intel_pmc_ipc.o
@@ -42,7 +42,7 @@ index 4151040330601..6dd955ad9bf18 100644
  obj-$(CONFIG_INTEL_TELEMETRY)	+= intel_telemetry_core.o \
 diff --git a/drivers/platform/x86/surface3_power.c b/drivers/platform/x86/surface3_power.c
 new file mode 100644
-index 0000000000000..e0af01a603025
+index 000000000000..e0af01a60302
 --- /dev/null
 +++ b/drivers/platform/x86/surface3_power.c
 @@ -0,0 +1,604 @@

+ 5 - 5
patches/5.7/0002-surface3-oemb.patch → patches/5.4/0002-surface3-oemb.patch

@@ -1,4 +1,4 @@
-From ded59a144531e1a039d7cb6a356ffc893883f0d8 Mon Sep 17 00:00:00 2001
+From f31a2997266f71cfe81a3cc9b1f27042ff0e76d8 Mon Sep 17 00:00:00 2001
 From: Chih-Wei Huang <cwhuang@linux.org.tw>
 Date: Tue, 18 Sep 2018 11:01:37 +0800
 Subject: [PATCH 2/5] surface3-oemb
@@ -10,7 +10,7 @@ Subject: [PATCH 2/5] surface3-oemb
  3 files changed, 24 insertions(+)
 
 diff --git a/drivers/platform/x86/surface3-wmi.c b/drivers/platform/x86/surface3-wmi.c
-index 130b6f52a6001..801083aa56d6d 100644
+index 130b6f52a600..801083aa56d6 100644
 --- a/drivers/platform/x86/surface3-wmi.c
 +++ b/drivers/platform/x86/surface3-wmi.c
 @@ -37,6 +37,13 @@ static const struct dmi_system_id surface3_dmi_table[] = {
@@ -28,10 +28,10 @@ index 130b6f52a6001..801083aa56d6d 100644
  	{ }
  };
 diff --git a/sound/soc/codecs/rt5645.c b/sound/soc/codecs/rt5645.c
-index e2e1d5b03b381..5ff38592ba6db 100644
+index c83f7f5da96b..e6bfe684d6be 100644
 --- a/sound/soc/codecs/rt5645.c
 +++ b/sound/soc/codecs/rt5645.c
-@@ -3687,6 +3687,15 @@ static const struct dmi_system_id dmi_platform_data[] = {
+@@ -3681,6 +3681,15 @@ static const struct dmi_system_id dmi_platform_data[] = {
  		},
  		.driver_data = (void *)&intel_braswell_platform_data,
  	},
@@ -48,7 +48,7 @@ index e2e1d5b03b381..5ff38592ba6db 100644
  		/*
  		 * Match for the GPDwin which unfortunately uses somewhat
 diff --git a/sound/soc/intel/common/soc-acpi-intel-cht-match.c b/sound/soc/intel/common/soc-acpi-intel-cht-match.c
-index 2752dc9557334..ef36a316e2ed6 100644
+index d0fb43c2b9f6..0e938713cb13 100644
 --- a/sound/soc/intel/common/soc-acpi-intel-cht-match.c
 +++ b/sound/soc/intel/common/soc-acpi-intel-cht-match.c
 @@ -27,6 +27,14 @@ static const struct dmi_system_id cht_table[] = {

+ 0 - 63
patches/5.4/0002-surface3-spi.patch

@@ -1,63 +0,0 @@
-From 899999f08d963bfac665cbad34434ec52c15b6aa Mon Sep 17 00:00:00 2001
-From: kitakar5525 <34676735+kitakar5525@users.noreply.github.com>
-Date: Fri, 6 Dec 2019 23:10:30 +0900
-Subject: [PATCH 2/6] surface3-spi
-
----
- drivers/input/touchscreen/surface3_spi.c | 26 ++++++++++++++++++++++++
- 1 file changed, 26 insertions(+)
-
-diff --git a/drivers/input/touchscreen/surface3_spi.c b/drivers/input/touchscreen/surface3_spi.c
-index ce4828b1415a8..63b0b8ddf0903 100644
---- a/drivers/input/touchscreen/surface3_spi.c
-+++ b/drivers/input/touchscreen/surface3_spi.c
-@@ -25,6 +25,12 @@
- #define SURFACE3_REPORT_TOUCH	0xd2
- #define SURFACE3_REPORT_PEN	0x16
- 
-+bool use_dma = false;
-+module_param(use_dma, bool, 0644);
-+MODULE_PARM_DESC(use_dma,
-+				"Disable DMA mode if you encounter touch input crash. "
-+				"(default: false, disabled to avoid crash)");
-+
- struct surface3_ts_data {
- 	struct spi_device *spi;
- 	struct gpio_desc *gpiod_rst[2];
-@@ -326,6 +332,13 @@ static int surface3_spi_create_pen_input(struct surface3_ts_data *data)
- 	return 0;
- }
- 
-+static bool surface3_spi_can_dma(struct spi_controller *ctlr,
-+				struct spi_device *spi,
-+				struct spi_transfer *tfr)
-+{
-+	return use_dma;
-+}
-+
- static int surface3_spi_probe(struct spi_device *spi)
- {
- 	struct surface3_ts_data *data;
-@@ -368,6 +381,19 @@ static int surface3_spi_probe(struct spi_device *spi)
- 	if (error)
- 		return error;
- 
-+	/*
-+	 * Set up DMA
-+	 *
-+	 * TODO: Currently, touch input with DMA seems to be broken.
-+	 * On 4.19 LTS, touch input will crash after suspend.
-+	 * On recent stable kernel (at least after 5.1), touch input will crash after
-+	 * the first touch. No problem with PIO on those kernels.
-+	 * Maybe we need to configure DMA here.
-+	 *
-+	 * Link to issue: https://github.com/jakeday/linux-surface/issues/596
-+	 */
-+	spi->controller->can_dma = surface3_spi_can_dma;
-+
- 	return 0;
- }
- 
--- 
-2.27.0
-

+ 237 - 35
patches/5.7/0003-surface-sam.patch → patches/5.4/0003-surface-sam.patch

@@ -1,10 +1,12 @@
-From d69ea97670ad5bdd1e4bc82e88d2ecc3ad817252 Mon Sep 17 00:00:00 2001
-From: Maximilian Luz <luzmaximilian@gmail.com>
-Date: Fri, 6 Dec 2019 11:56:12 +0100
+From 0d17ea2d04af09c1689b6c892fc67b635b588423 Mon Sep 17 00:00:00 2001
+From: qzed <qzed@users.noreply.github.com>
+Date: Mon, 26 Aug 2019 01:11:08 +0200
 Subject: [PATCH 3/5] surface-sam
 
 ---
- drivers/platform/x86/Kconfig                  |    2 +
+ drivers/acpi/acpica/dsopcode.c                |    2 +-
+ drivers/acpi/acpica/exfield.c                 |   12 +-
+ drivers/platform/x86/Kconfig                  |    1 +
  drivers/platform/x86/Makefile                 |    1 +
  drivers/platform/x86/surface_sam/Kconfig      |  176 +
  drivers/platform/x86/surface_sam/Makefile     |   15 +
@@ -23,7 +25,8 @@ Subject: [PATCH 3/5] surface-sam
  .../x86/surface_sam/surface_sam_ssh.h         |  488 ++
  .../x86/surface_sam/surface_sam_ssh_trace.h   |  536 ++
  .../x86/surface_sam/surface_sam_vhf.c         |  261 +
- 19 files changed, 11763 insertions(+)
+ drivers/tty/serdev/core.c                     |  111 +-
+ 22 files changed, 11871 insertions(+), 16 deletions(-)
  create mode 100644 drivers/platform/x86/surface_sam/Kconfig
  create mode 100644 drivers/platform/x86/surface_sam/Makefile
  create mode 100644 drivers/platform/x86/surface_sam/surface_sam_dtx.c
@@ -42,31 +45,75 @@ Subject: [PATCH 3/5] surface-sam
  create mode 100644 drivers/platform/x86/surface_sam/surface_sam_ssh_trace.h
  create mode 100644 drivers/platform/x86/surface_sam/surface_sam_vhf.c
 
+diff --git a/drivers/acpi/acpica/dsopcode.c b/drivers/acpi/acpica/dsopcode.c
+index 10f32b62608e..7b2a4987f050 100644
+--- a/drivers/acpi/acpica/dsopcode.c
++++ b/drivers/acpi/acpica/dsopcode.c
+@@ -123,7 +123,7 @@ acpi_ds_init_buffer_field(u16 aml_opcode,
+ 
+ 		/* Offset is in bits, count is in bits */
+ 
+-		field_flags = AML_FIELD_ACCESS_BYTE;
++		field_flags = AML_FIELD_ACCESS_BUFFER;
+ 		bit_offset = offset;
+ 		bit_count = (u32) length_desc->integer.value;
+ 
+diff --git a/drivers/acpi/acpica/exfield.c b/drivers/acpi/acpica/exfield.c
+index d3d2dbfba680..0b7f617a6e9b 100644
+--- a/drivers/acpi/acpica/exfield.c
++++ b/drivers/acpi/acpica/exfield.c
+@@ -109,6 +109,7 @@ acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
+ 	union acpi_operand_object *buffer_desc;
+ 	void *buffer;
+ 	u32 buffer_length;
++	u8 field_flags;
+ 
+ 	ACPI_FUNCTION_TRACE_PTR(ex_read_data_from_field, obj_desc);
+ 
+@@ -157,11 +158,16 @@ acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
+ 	 * Note: Field.length is in bits.
+ 	 */
+ 	buffer_length =
+-	    (acpi_size)ACPI_ROUND_BITS_UP_TO_BYTES(obj_desc->field.bit_length);
++	    (acpi_size)ACPI_ROUND_BITS_UP_TO_BYTES(obj_desc->common_field.bit_length);
++	field_flags = obj_desc->common_field.field_flags;
+ 
+-	if (buffer_length > acpi_gbl_integer_byte_width) {
++	if (buffer_length > acpi_gbl_integer_byte_width ||
++	    (field_flags & AML_FIELD_ACCESS_TYPE_MASK) == AML_FIELD_ACCESS_BUFFER) {
+ 
+-		/* Field is too large for an Integer, create a Buffer instead */
++		/*
++		 * Field is either too large for an Integer, or a actually of type
++		 * buffer, so create a Buffer.
++		 */
+ 
+ 		buffer_desc = acpi_ut_create_buffer_object(buffer_length);
+ 		if (!buffer_desc) {
 diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
-index 0ad7ad8cf8e17..5d1766294eca9 100644
+index 348c795019fa..d25067a838a3 100644
 --- a/drivers/platform/x86/Kconfig
 +++ b/drivers/platform/x86/Kconfig
-@@ -1350,6 +1350,8 @@ config INTEL_SCU_IPC
- 	  some embedded Intel x86 platforms. This is not needed for PC-type
- 	  machines.
+@@ -1342,6 +1342,7 @@ config PCENGINES_APU2
+ 	  will be called pcengines-apuv2.
  
+ source "drivers/platform/x86/intel_speed_select_if/Kconfig"
 +source "drivers/platform/x86/surface_sam/Kconfig"
-+
- config INTEL_SCU_IPC_UTIL
- 	tristate "Intel SCU IPC utility driver"
- 	depends on INTEL_SCU_IPC
+ 
+ endif # X86_PLATFORM_DEVICES
+ 
 diff --git a/drivers/platform/x86/Makefile b/drivers/platform/x86/Makefile
-index 53408d9658740..b3f4305f73c56 100644
+index 6dd955ad9bf1..19b56f2181eb 100644
 --- a/drivers/platform/x86/Makefile
 +++ b/drivers/platform/x86/Makefile
-@@ -146,3 +146,4 @@ obj-$(CONFIG_INTEL_TELEMETRY)		+= intel_telemetry_core.o \
- 					   intel_telemetry_pltdrv.o \
- 					   intel_telemetry_debugfs.o
- obj-$(CONFIG_PMC_ATOM)			+= pmc_atom.o
+@@ -101,3 +101,4 @@ obj-$(CONFIG_I2C_MULTI_INSTANTIATE)	+= i2c-multi-instantiate.o
+ obj-$(CONFIG_INTEL_ATOMISP2_PM)	+= intel_atomisp2_pm.o
+ obj-$(CONFIG_PCENGINES_APU2)	+= pcengines-apuv2.o
+ obj-$(CONFIG_INTEL_SPEED_SELECT_INTERFACE) += intel_speed_select_if/
 +obj-$(CONFIG_SURFACE_SAM)	+= surface_sam/
 diff --git a/drivers/platform/x86/surface_sam/Kconfig b/drivers/platform/x86/surface_sam/Kconfig
 new file mode 100644
-index 0000000000000..7781c5cd932c0
+index 000000000000..7781c5cd932c
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/Kconfig
 @@ -0,0 +1,176 @@
@@ -248,7 +295,7 @@ index 0000000000000..7781c5cd932c0
 +	  If you are not sure, say M here.
 diff --git a/drivers/platform/x86/surface_sam/Makefile b/drivers/platform/x86/surface_sam/Makefile
 new file mode 100644
-index 0000000000000..1a5c1260639dc
+index 000000000000..1a5c1260639d
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/Makefile
 @@ -0,0 +1,15 @@
@@ -269,7 +316,7 @@ index 0000000000000..1a5c1260639dc
 +obj-$(CONFIG_SURFACE_SAM_SID_VHF)	+= surface_sam_sid_vhf.o
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_dtx.c b/drivers/platform/x86/surface_sam/surface_sam_dtx.c
 new file mode 100644
-index 0000000000000..88dba7bced3a4
+index 000000000000..88dba7bced3a
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_dtx.c
 @@ -0,0 +1,590 @@
@@ -865,7 +912,7 @@ index 0000000000000..88dba7bced3a4
 +MODULE_LICENSE("GPL");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_hps.c b/drivers/platform/x86/surface_sam/surface_sam_hps.c
 new file mode 100644
-index 0000000000000..40f39f29113c5
+index 000000000000..40f39f29113c
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_hps.c
 @@ -0,0 +1,1297 @@
@@ -2168,7 +2215,7 @@ index 0000000000000..40f39f29113c5
 +MODULE_LICENSE("GPL");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_san.c b/drivers/platform/x86/surface_sam/surface_sam_san.c
 new file mode 100644
-index 0000000000000..11dd6daedc3dd
+index 000000000000..11dd6daedc3d
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_san.c
 @@ -0,0 +1,913 @@
@@ -3087,7 +3134,7 @@ index 0000000000000..11dd6daedc3dd
 +MODULE_LICENSE("GPL");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_san.h b/drivers/platform/x86/surface_sam/surface_sam_san.h
 new file mode 100644
-index 0000000000000..2b9dee159bbbc
+index 000000000000..2b9dee159bbb
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_san.h
 @@ -0,0 +1,30 @@
@@ -3123,7 +3170,7 @@ index 0000000000000..2b9dee159bbbc
 +#endif /* _SURFACE_SAM_SAN_H */
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_sid.c b/drivers/platform/x86/surface_sam/surface_sam_sid.c
 new file mode 100644
-index 0000000000000..caa2e6446b5f4
+index 000000000000..caa2e6446b5f
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_sid.c
 @@ -0,0 +1,281 @@
@@ -3410,7 +3457,7 @@ index 0000000000000..caa2e6446b5f4
 +MODULE_LICENSE("GPL");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_sid_gpelid.c b/drivers/platform/x86/surface_sam/surface_sam_sid_gpelid.c
 new file mode 100644
-index 0000000000000..f0cee43c859b4
+index 000000000000..f0cee43c859b
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_sid_gpelid.c
 @@ -0,0 +1,232 @@
@@ -3648,7 +3695,7 @@ index 0000000000000..f0cee43c859b4
 +MODULE_ALIAS("platform:surface_sam_sid_gpelid");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_sid_perfmode.c b/drivers/platform/x86/surface_sam/surface_sam_sid_perfmode.c
 new file mode 100644
-index 0000000000000..2e11efb166f2b
+index 000000000000..2e11efb166f2
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_sid_perfmode.c
 @@ -0,0 +1,216 @@
@@ -3870,7 +3917,7 @@ index 0000000000000..2e11efb166f2b
 +MODULE_ALIAS("platform:surface_sam_sid_perfmode");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_sid_power.c b/drivers/platform/x86/surface_sam/surface_sam_sid_power.c
 new file mode 100644
-index 0000000000000..1d945c0a911a4
+index 000000000000..1d945c0a911a
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_sid_power.c
 @@ -0,0 +1,1154 @@
@@ -5030,7 +5077,7 @@ index 0000000000000..1d945c0a911a4
 +MODULE_ALIAS("platform:surface_sam_sid_battery");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_sid_power.h b/drivers/platform/x86/surface_sam/surface_sam_sid_power.h
 new file mode 100644
-index 0000000000000..2e8f212086e12
+index 000000000000..2e8f212086e1
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_sid_power.h
 @@ -0,0 +1,15 @@
@@ -5051,7 +5098,7 @@ index 0000000000000..2e8f212086e12
 +#endif /* _SURFACE_SAM_SID_POWER_H */
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_sid_vhf.c b/drivers/platform/x86/surface_sam/surface_sam_sid_vhf.c
 new file mode 100644
-index 0000000000000..474221097eaf1
+index 000000000000..474221097eaf
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_sid_vhf.c
 @@ -0,0 +1,432 @@
@@ -5489,7 +5536,7 @@ index 0000000000000..474221097eaf1
 +MODULE_ALIAS("platform:surface_sam_sid_vhf");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_sid_vhf.h b/drivers/platform/x86/surface_sam/surface_sam_sid_vhf.h
 new file mode 100644
-index 0000000000000..eb55485ccb119
+index 000000000000..eb55485ccb11
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_sid_vhf.h
 @@ -0,0 +1,13 @@
@@ -5508,7 +5555,7 @@ index 0000000000000..eb55485ccb119
 +#endif /* _SURFACE_SAM_SID_VHF_H */
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_ssh.c b/drivers/platform/x86/surface_sam/surface_sam_ssh.c
 new file mode 100644
-index 0000000000000..9f44bdfbc4fd7
+index 000000000000..9f44bdfbc4fd
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_ssh.c
 @@ -0,0 +1,5111 @@
@@ -10625,7 +10672,7 @@ index 0000000000000..9f44bdfbc4fd7
 +MODULE_LICENSE("GPL");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_ssh.h b/drivers/platform/x86/surface_sam/surface_sam_ssh.h
 new file mode 100644
-index 0000000000000..25a3ae85fee7f
+index 000000000000..25a3ae85fee7
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_ssh.h
 @@ -0,0 +1,488 @@
@@ -11119,7 +11166,7 @@ index 0000000000000..25a3ae85fee7f
 +#endif /* _SURFACE_SAM_SSH_H */
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_ssh_trace.h b/drivers/platform/x86/surface_sam/surface_sam_ssh_trace.h
 new file mode 100644
-index 0000000000000..801c60205128c
+index 000000000000..801c60205128
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_ssh_trace.h
 @@ -0,0 +1,536 @@
@@ -11661,7 +11708,7 @@ index 0000000000000..801c60205128c
 +#include <trace/define_trace.h>
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_vhf.c b/drivers/platform/x86/surface_sam/surface_sam_vhf.c
 new file mode 100644
-index 0000000000000..984035c55d63a
+index 000000000000..984035c55d63
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_vhf.c
 @@ -0,0 +1,261 @@
@@ -11926,6 +11973,161 @@ index 0000000000000..984035c55d63a
 +MODULE_AUTHOR("Maximilian Luz <luzmaximilian@gmail.com>");
 +MODULE_DESCRIPTION("Virtual HID Framework Driver for 5th Generation Surface Devices");
 +MODULE_LICENSE("GPL");
+diff --git a/drivers/tty/serdev/core.c b/drivers/tty/serdev/core.c
+index a9719858c950..ce5309d00280 100644
+--- a/drivers/tty/serdev/core.c
++++ b/drivers/tty/serdev/core.c
+@@ -552,16 +552,97 @@ static int of_serdev_register_devices(struct serdev_controller *ctrl)
+ }
+ 
+ #ifdef CONFIG_ACPI
++
++#define SERDEV_ACPI_MAX_SCAN_DEPTH 32
++
++struct acpi_serdev_lookup {
++	acpi_handle device_handle;
++	acpi_handle controller_handle;
++	int n;
++	int index;
++};
++
++static int acpi_serdev_parse_resource(struct acpi_resource *ares, void *data)
++{
++	struct acpi_serdev_lookup *lookup = data;
++	struct acpi_resource_uart_serialbus *sb;
++	acpi_status status;
++
++	if (ares->type != ACPI_RESOURCE_TYPE_SERIAL_BUS)
++		return 1;
++
++	if (ares->data.common_serial_bus.type != ACPI_RESOURCE_SERIAL_TYPE_UART)
++		return 1;
++
++	if (lookup->index != -1 && lookup->n++ != lookup->index)
++		return 1;
++
++	sb = &ares->data.uart_serial_bus;
++
++	status = acpi_get_handle(lookup->device_handle,
++				 sb->resource_source.string_ptr,
++				 &lookup->controller_handle);
++	if (ACPI_FAILURE(status))
++		return 1;
++
++	/*
++	 * NOTE: Ideally, we would also want to retreive other properties here,
++	 * once setting them before opening the device is supported by serdev.
++	 */
++
++	return 1;
++}
++
++static int acpi_serdev_do_lookup(struct acpi_device *adev,
++                                 struct acpi_serdev_lookup *lookup)
++{
++	struct list_head resource_list;
++	int ret;
++
++	lookup->device_handle = acpi_device_handle(adev);
++	lookup->controller_handle = NULL;
++	lookup->n = 0;
++
++	INIT_LIST_HEAD(&resource_list);
++	ret = acpi_dev_get_resources(adev, &resource_list,
++				     acpi_serdev_parse_resource, lookup);
++	acpi_dev_free_resource_list(&resource_list);
++
++	if (ret < 0)
++		return -EINVAL;
++
++	return 0;
++}
++
++static int acpi_serdev_check_resources(struct serdev_controller *ctrl,
++				       struct acpi_device *adev)
++{
++	struct acpi_serdev_lookup lookup;
++	int ret;
++
++	if (acpi_bus_get_status(adev) || !adev->status.present)
++		return -EINVAL;
++
++	/* Look for UARTSerialBusV2 resource */
++	lookup.index = -1;	// we only care for the last device
++
++	ret = acpi_serdev_do_lookup(adev, &lookup);
++	if (ret)
++		return ret;
++
++	/* Make sure controller and ResourceSource handle match */
++	if (ACPI_HANDLE(ctrl->dev.parent) != lookup.controller_handle)
++		return -ENODEV;
++
++	return 0;
++}
++
+ static acpi_status acpi_serdev_register_device(struct serdev_controller *ctrl,
+-					    struct acpi_device *adev)
++					       struct acpi_device *adev)
+ {
+-	struct serdev_device *serdev = NULL;
++	struct serdev_device *serdev;
+ 	int err;
+ 
+-	if (acpi_bus_get_status(adev) || !adev->status.present ||
+-	    acpi_device_enumerated(adev))
+-		return AE_OK;
+-
+ 	serdev = serdev_device_alloc(ctrl);
+ 	if (!serdev) {
+ 		dev_err(&ctrl->dev, "failed to allocate serdev device for %s\n",
+@@ -589,7 +670,7 @@ static const struct acpi_device_id serdev_acpi_devices_blacklist[] = {
+ };
+ 
+ static acpi_status acpi_serdev_add_device(acpi_handle handle, u32 level,
+-				       void *data, void **return_value)
++					  void *data, void **return_value)
+ {
+ 	struct serdev_controller *ctrl = data;
+ 	struct acpi_device *adev;
+@@ -597,26 +678,32 @@ static acpi_status acpi_serdev_add_device(acpi_handle handle, u32 level,
+ 	if (acpi_bus_get_device(handle, &adev))
+ 		return AE_OK;
+ 
++	if (acpi_device_enumerated(adev))
++		return AE_OK;
++
+ 	/* Skip if black listed */
+ 	if (!acpi_match_device_ids(adev, serdev_acpi_devices_blacklist))
+ 		return AE_OK;
+ 
++	if (acpi_serdev_check_resources(ctrl, adev))
++		return AE_OK;
++
+ 	return acpi_serdev_register_device(ctrl, adev);
+ }
+ 
++
+ static int acpi_serdev_register_devices(struct serdev_controller *ctrl)
+ {
+ 	acpi_status status;
+-	acpi_handle handle;
+ 
+-	handle = ACPI_HANDLE(ctrl->dev.parent);
+-	if (!handle)
++	if (!has_acpi_companion(ctrl->dev.parent))
+ 		return -ENODEV;
+ 
+-	status = acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, 1,
++	status = acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
++				     SERDEV_ACPI_MAX_SCAN_DEPTH,
+ 				     acpi_serdev_add_device, NULL, ctrl, NULL);
+ 	if (ACPI_FAILURE(status))
+-		dev_dbg(&ctrl->dev, "failed to enumerate serdev slaves\n");
++		dev_warn(&ctrl->dev, "failed to enumerate serdev slaves\n");
+ 
+ 	if (!ctrl->serdev)
+ 		return -ENODEV;
 -- 
 2.27.0
 

+ 4 - 4
patches/5.7/0004-wifi.patch → patches/5.4/0004-wifi.patch

@@ -1,4 +1,4 @@
-From d82ffe8a01324c5265859ab354d680e05ca89c34 Mon Sep 17 00:00:00 2001
+From 81f59a0eb1eb61ad4fca8352c414985c1f334115 Mon Sep 17 00:00:00 2001
 From: kitakar5525 <34676735+kitakar5525@users.noreply.github.com>
 Date: Thu, 20 Feb 2020 16:51:11 +0900
 Subject: [PATCH 4/5] wifi
@@ -10,7 +10,7 @@ Subject: [PATCH 4/5] wifi
  3 files changed, 84 insertions(+), 57 deletions(-)
 
 diff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
-index 12bfd653a4052..68404a1767945 100644
+index 9e6dc289ec3e..00b4bc446989 100644
 --- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c
 +++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
 @@ -25,6 +25,11 @@
@@ -54,7 +54,7 @@ index 12bfd653a4052..68404a1767945 100644
  }
  
 diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c
-index 87b4ccca4b9a2..3bdad5e80ecbb 100644
+index fc1706d0647d..b51c5e357142 100644
 --- a/drivers/net/wireless/marvell/mwifiex/pcie.c
 +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c
 @@ -146,38 +146,45 @@ static bool mwifiex_pcie_ok_to_access_hw(struct mwifiex_adapter *adapter)
@@ -188,7 +188,7 @@ index 87b4ccca4b9a2..3bdad5e80ecbb 100644
  		 pdev->vendor, pdev->device, pdev->revision);
  
 diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c
-index 0bd93f26bd7f8..91b03423c09d0 100644
+index 4ed10cf82f9a..410bef3d6a6e 100644
 --- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c
 +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c
 @@ -2254,7 +2254,6 @@ int mwifiex_sta_prepare_cmd(struct mwifiex_private *priv, uint16_t cmd_no,

+ 47 - 47
patches/5.7/0005-ipts.patch → patches/5.4/0005-ipts.patch

@@ -1,4 +1,4 @@
-From dbf74ff638f8afc58685779a010c8db4cedb9e4d Mon Sep 17 00:00:00 2001
+From e7b66a10da721768f9472502bedd9583685e2e5e Mon Sep 17 00:00:00 2001
 From: Dorian Stoll <dorian.stoll@tmsp.io>
 Date: Mon, 27 Jan 2020 21:16:20 +0100
 Subject: [PATCH 5/5] ipts
@@ -76,10 +76,10 @@ Subject: [PATCH 5/5] ipts
  create mode 100644 drivers/input/touchscreen/ipts/stylus.h
 
 diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
-index c071f7c407b61..028ff55d779d0 100644
+index 46ad9090493b..c476a153b2f8 100644
 --- a/drivers/input/touchscreen/Kconfig
 +++ b/drivers/input/touchscreen/Kconfig
-@@ -1310,4 +1310,6 @@ config TOUCHSCREEN_IQS5XX
+@@ -1314,4 +1314,6 @@ config TOUCHSCREEN_IQS5XX
  	  To compile this driver as a module, choose M here: the
  	  module will be called iqs5xx.
  
@@ -87,7 +87,7 @@ index c071f7c407b61..028ff55d779d0 100644
 +
  endif
 diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile
-index 94c6162409b37..864f0e092ab67 100644
+index 94c6162409b3..864f0e092ab6 100644
 --- a/drivers/input/touchscreen/Makefile
 +++ b/drivers/input/touchscreen/Makefile
 @@ -45,6 +45,7 @@ obj-$(CONFIG_TOUCHSCREEN_EXC3000)	+= exc3000.o
@@ -100,7 +100,7 @@ index 94c6162409b37..864f0e092ab67 100644
  obj-$(CONFIG_TOUCHSCREEN_INEXIO)	+= inexio.o
 diff --git a/drivers/input/touchscreen/ipts/Kconfig b/drivers/input/touchscreen/ipts/Kconfig
 new file mode 100644
-index 0000000000000..d3c530dafa948
+index 000000000000..d3c530dafa94
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/Kconfig
 @@ -0,0 +1,16 @@
@@ -122,7 +122,7 @@ index 0000000000000..d3c530dafa948
 +	  module will be called ipts.
 diff --git a/drivers/input/touchscreen/ipts/Makefile b/drivers/input/touchscreen/ipts/Makefile
 new file mode 100644
-index 0000000000000..0f7c904e73171
+index 000000000000..0f7c904e7317
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/Makefile
 @@ -0,0 +1,17 @@
@@ -145,7 +145,7 @@ index 0000000000000..0f7c904e73171
 +ipts-objs += stylus.o
 diff --git a/drivers/input/touchscreen/ipts/context.h b/drivers/input/touchscreen/ipts/context.h
 new file mode 100644
-index 0000000000000..ab26552579a5c
+index 000000000000..ab26552579a5
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/context.h
 @@ -0,0 +1,60 @@
@@ -211,7 +211,7 @@ index 0000000000000..ab26552579a5c
 +#endif /* _IPTS_CONTEXT_H_ */
 diff --git a/drivers/input/touchscreen/ipts/control.c b/drivers/input/touchscreen/ipts/control.c
 new file mode 100644
-index 0000000000000..9179eca665585
+index 000000000000..9179eca66558
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/control.c
 @@ -0,0 +1,94 @@
@@ -311,7 +311,7 @@ index 0000000000000..9179eca665585
 +}
 diff --git a/drivers/input/touchscreen/ipts/control.h b/drivers/input/touchscreen/ipts/control.h
 new file mode 100644
-index 0000000000000..e57609c85d62a
+index 000000000000..e57609c85d62
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/control.h
 @@ -0,0 +1,18 @@
@@ -335,7 +335,7 @@ index 0000000000000..e57609c85d62a
 +#endif /* _IPTS_CONTROL_H_ */
 diff --git a/drivers/input/touchscreen/ipts/data.c b/drivers/input/touchscreen/ipts/data.c
 new file mode 100644
-index 0000000000000..568bf04f7ea6e
+index 000000000000..568bf04f7ea6
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/data.c
 @@ -0,0 +1,107 @@
@@ -448,7 +448,7 @@ index 0000000000000..568bf04f7ea6e
 +}
 diff --git a/drivers/input/touchscreen/ipts/data.h b/drivers/input/touchscreen/ipts/data.h
 new file mode 100644
-index 0000000000000..fa72c1be09451
+index 000000000000..fa72c1be0945
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/data.h
 @@ -0,0 +1,12 @@
@@ -466,7 +466,7 @@ index 0000000000000..fa72c1be09451
 +#endif /* _IPTS_DATA_H_ */
 diff --git a/drivers/input/touchscreen/ipts/hid.c b/drivers/input/touchscreen/ipts/hid.c
 new file mode 100644
-index 0000000000000..2642990b8c420
+index 000000000000..2642990b8c42
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/hid.c
 @@ -0,0 +1,38 @@
@@ -510,7 +510,7 @@ index 0000000000000..2642990b8c420
 +}
 diff --git a/drivers/input/touchscreen/ipts/hid.h b/drivers/input/touchscreen/ipts/hid.h
 new file mode 100644
-index 0000000000000..e6cf38fce4541
+index 000000000000..e6cf38fce454
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/hid.h
 @@ -0,0 +1,13 @@
@@ -529,7 +529,7 @@ index 0000000000000..e6cf38fce4541
 +#endif /* _IPTS_HID_H_ */
 diff --git a/drivers/input/touchscreen/ipts/init.c b/drivers/input/touchscreen/ipts/init.c
 new file mode 100644
-index 0000000000000..fb70d55542af7
+index 000000000000..fb70d55542af
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/init.c
 @@ -0,0 +1,93 @@
@@ -628,7 +628,7 @@ index 0000000000000..fb70d55542af7
 +MODULE_LICENSE("GPL");
 diff --git a/drivers/input/touchscreen/ipts/math.c b/drivers/input/touchscreen/ipts/math.c
 new file mode 100644
-index 0000000000000..df956e5447e03
+index 000000000000..df956e5447e0
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/math.c
 @@ -0,0 +1,103 @@
@@ -737,7 +737,7 @@ index 0000000000000..df956e5447e03
 +}
 diff --git a/drivers/input/touchscreen/ipts/math.h b/drivers/input/touchscreen/ipts/math.h
 new file mode 100644
-index 0000000000000..8e831074ab60b
+index 000000000000..8e831074ab60
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/math.h
 @@ -0,0 +1,21 @@
@@ -764,7 +764,7 @@ index 0000000000000..8e831074ab60b
 +#endif /* _IPTS_MATH_H_ */
 diff --git a/drivers/input/touchscreen/ipts/params.c b/drivers/input/touchscreen/ipts/params.c
 new file mode 100644
-index 0000000000000..6aa3f5cf1d762
+index 000000000000..6aa3f5cf1d76
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/params.c
 @@ -0,0 +1,27 @@
@@ -797,7 +797,7 @@ index 0000000000000..6aa3f5cf1d762
 +);
 diff --git a/drivers/input/touchscreen/ipts/params.h b/drivers/input/touchscreen/ipts/params.h
 new file mode 100644
-index 0000000000000..1f992a3bc21b9
+index 000000000000..1f992a3bc21b
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/params.h
 @@ -0,0 +1,15 @@
@@ -818,7 +818,7 @@ index 0000000000000..1f992a3bc21b9
 +#endif /* _IPTS_PARAMS_H_ */
 diff --git a/drivers/input/touchscreen/ipts/payload.c b/drivers/input/touchscreen/ipts/payload.c
 new file mode 100644
-index 0000000000000..3572ddc0f2fb0
+index 000000000000..3572ddc0f2fb
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/payload.c
 @@ -0,0 +1,52 @@
@@ -876,7 +876,7 @@ index 0000000000000..3572ddc0f2fb0
 +}
 diff --git a/drivers/input/touchscreen/ipts/payload.h b/drivers/input/touchscreen/ipts/payload.h
 new file mode 100644
-index 0000000000000..6603714bb6fd0
+index 000000000000..6603714bb6fd
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/payload.h
 @@ -0,0 +1,14 @@
@@ -896,7 +896,7 @@ index 0000000000000..6603714bb6fd0
 +#endif /* _IPTS_PAYLOAD_H_ */
 diff --git a/drivers/input/touchscreen/ipts/protocol/commands.h b/drivers/input/touchscreen/ipts/protocol/commands.h
 new file mode 100644
-index 0000000000000..2533dfb13584a
+index 000000000000..2533dfb13584
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/protocol/commands.h
 @@ -0,0 +1,61 @@
@@ -963,7 +963,7 @@ index 0000000000000..2533dfb13584a
 +#endif /* _IPTS_PROTOCOL_COMMANDS_H_ */
 diff --git a/drivers/input/touchscreen/ipts/protocol/data.h b/drivers/input/touchscreen/ipts/protocol/data.h
 new file mode 100644
-index 0000000000000..148e0545b2e4e
+index 000000000000..148e0545b2e4
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/protocol/data.h
 @@ -0,0 +1,30 @@
@@ -999,7 +999,7 @@ index 0000000000000..148e0545b2e4e
 +#endif /* _IPTS_PROTOCOL_DATA_H_ */
 diff --git a/drivers/input/touchscreen/ipts/protocol/events.h b/drivers/input/touchscreen/ipts/protocol/events.h
 new file mode 100644
-index 0000000000000..f8b771f90bd2b
+index 000000000000..f8b771f90bd2
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/protocol/events.h
 @@ -0,0 +1,29 @@
@@ -1034,7 +1034,7 @@ index 0000000000000..f8b771f90bd2b
 +#endif /* _IPTS_PROTOCOL_EVENTS_H_ */
 diff --git a/drivers/input/touchscreen/ipts/protocol/feedback.h b/drivers/input/touchscreen/ipts/protocol/feedback.h
 new file mode 100644
-index 0000000000000..8b3d8b689ee83
+index 000000000000..8b3d8b689ee8
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/protocol/feedback.h
 @@ -0,0 +1,30 @@
@@ -1070,7 +1070,7 @@ index 0000000000000..8b3d8b689ee83
 +#endif /* _IPTS_PROTOCOL_FEEDBACK_H_ */
 diff --git a/drivers/input/touchscreen/ipts/protocol/payload.h b/drivers/input/touchscreen/ipts/protocol/payload.h
 new file mode 100644
-index 0000000000000..f46da4ea81f25
+index 000000000000..f46da4ea81f2
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/protocol/payload.h
 @@ -0,0 +1,47 @@
@@ -1123,7 +1123,7 @@ index 0000000000000..f46da4ea81f25
 +#endif /* _IPTS_PROTOCOL_PAYLOAD_H_ */
 diff --git a/drivers/input/touchscreen/ipts/protocol/responses.h b/drivers/input/touchscreen/ipts/protocol/responses.h
 new file mode 100644
-index 0000000000000..27153d82a5d67
+index 000000000000..27153d82a5d6
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/protocol/responses.h
 @@ -0,0 +1,62 @@
@@ -1191,7 +1191,7 @@ index 0000000000000..27153d82a5d67
 +#endif /* _IPTS_PROTOCOL_RESPONSES_H_ */
 diff --git a/drivers/input/touchscreen/ipts/protocol/singletouch.h b/drivers/input/touchscreen/ipts/protocol/singletouch.h
 new file mode 100644
-index 0000000000000..bf9912ee2af4c
+index 000000000000..bf9912ee2af4
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/protocol/singletouch.h
 @@ -0,0 +1,17 @@
@@ -1214,7 +1214,7 @@ index 0000000000000..bf9912ee2af4c
 +#endif /* _IPTS_PROTOCOL_SINGLETOUCH_H_ */
 diff --git a/drivers/input/touchscreen/ipts/protocol/stylus.h b/drivers/input/touchscreen/ipts/protocol/stylus.h
 new file mode 100644
-index 0000000000000..950850b365dfb
+index 000000000000..950850b365df
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/protocol/stylus.h
 @@ -0,0 +1,52 @@
@@ -1272,7 +1272,7 @@ index 0000000000000..950850b365dfb
 +#endif /* _IPTS_PAYLOAD_STYLUS_H_ */
 diff --git a/drivers/input/touchscreen/ipts/receiver.c b/drivers/input/touchscreen/ipts/receiver.c
 new file mode 100644
-index 0000000000000..ab283994c3e5f
+index 000000000000..ab283994c3e5
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/receiver.c
 @@ -0,0 +1,265 @@
@@ -1543,7 +1543,7 @@ index 0000000000000..ab283994c3e5f
 +}
 diff --git a/drivers/input/touchscreen/ipts/receiver.h b/drivers/input/touchscreen/ipts/receiver.h
 new file mode 100644
-index 0000000000000..4d413a0abd4c5
+index 000000000000..4d413a0abd4c
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/receiver.h
 @@ -0,0 +1,8 @@
@@ -1557,7 +1557,7 @@ index 0000000000000..4d413a0abd4c5
 +#endif /* _IPTS_RECEIVER_H_ */
 diff --git a/drivers/input/touchscreen/ipts/resources.c b/drivers/input/touchscreen/ipts/resources.c
 new file mode 100644
-index 0000000000000..704db9fdd3fd4
+index 000000000000..704db9fdd3fd
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/resources.c
 @@ -0,0 +1,131 @@
@@ -1694,7 +1694,7 @@ index 0000000000000..704db9fdd3fd4
 +}
 diff --git a/drivers/input/touchscreen/ipts/resources.h b/drivers/input/touchscreen/ipts/resources.h
 new file mode 100644
-index 0000000000000..cf9807b0dbe62
+index 000000000000..cf9807b0dbe6
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/resources.h
 @@ -0,0 +1,11 @@
@@ -1711,7 +1711,7 @@ index 0000000000000..cf9807b0dbe62
 +#endif /* _IPTS_RESOURCES_H_ */
 diff --git a/drivers/input/touchscreen/ipts/singletouch.c b/drivers/input/touchscreen/ipts/singletouch.c
 new file mode 100644
-index 0000000000000..ed70444f649c4
+index 000000000000..ed70444f649c
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/singletouch.c
 @@ -0,0 +1,64 @@
@@ -1781,7 +1781,7 @@ index 0000000000000..ed70444f649c4
 +}
 diff --git a/drivers/input/touchscreen/ipts/singletouch.h b/drivers/input/touchscreen/ipts/singletouch.h
 new file mode 100644
-index 0000000000000..53207497a4628
+index 000000000000..53207497a462
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/singletouch.h
 @@ -0,0 +1,14 @@
@@ -1801,7 +1801,7 @@ index 0000000000000..53207497a4628
 +#endif /* _IPTS_SINGLETOUCH_H_ */
 diff --git a/drivers/input/touchscreen/ipts/stylus.c b/drivers/input/touchscreen/ipts/stylus.c
 new file mode 100644
-index 0000000000000..987fa756fec33
+index 000000000000..987fa756fec3
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/stylus.c
 @@ -0,0 +1,179 @@
@@ -1986,7 +1986,7 @@ index 0000000000000..987fa756fec33
 +}
 diff --git a/drivers/input/touchscreen/ipts/stylus.h b/drivers/input/touchscreen/ipts/stylus.h
 new file mode 100644
-index 0000000000000..5b93add1eac2d
+index 000000000000..5b93add1eac2
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/stylus.h
 @@ -0,0 +1,14 @@
@@ -2005,7 +2005,7 @@ index 0000000000000..5b93add1eac2d
 +
 +#endif /* _IPTS_STYLUS_H_ */
 diff --git a/drivers/misc/mei/hw-me-regs.h b/drivers/misc/mei/hw-me-regs.h
-index 7becfc768bbcc..3d0f9bfb7c494 100644
+index e56dc4754064..a55c61c89238 100644
 --- a/drivers/misc/mei/hw-me-regs.h
 +++ b/drivers/misc/mei/hw-me-regs.h
 @@ -59,6 +59,7 @@
@@ -2022,30 +2022,30 @@ index 7becfc768bbcc..3d0f9bfb7c494 100644
  #define MEI_DEV_ID_ICP_LP     0x34E0  /* Ice Lake Point LP */
 +#define MEI_DEV_ID_ICP_LP_4   0x34E4  /* Ice Lake Point LP 4 (iTouch) */
  
- #define MEI_DEV_ID_JSP_N      0x4DE0  /* Jasper Lake Point N */
+ #define MEI_DEV_ID_TGP_LP     0xA0E0  /* Tiger Lake Point LP */
  
 diff --git a/drivers/misc/mei/pci-me.c b/drivers/misc/mei/pci-me.c
-index 81e759674c1b5..4f7ba1cdb3c84 100644
+index 75ab2ffbf235..78790904d77c 100644
 --- a/drivers/misc/mei/pci-me.c
 +++ b/drivers/misc/mei/pci-me.c
-@@ -68,6 +68,7 @@ static const struct pci_device_id mei_me_pci_tbl[] = {
+@@ -77,6 +77,7 @@ static const struct pci_device_id mei_me_pci_tbl[] = {
  
  	{MEI_PCI_DEVICE(MEI_DEV_ID_SPT, MEI_ME_PCH8_CFG)},
  	{MEI_PCI_DEVICE(MEI_DEV_ID_SPT_2, MEI_ME_PCH8_CFG)},
 +	{MEI_PCI_DEVICE(MEI_DEV_ID_SPT_4, MEI_ME_PCH8_CFG)},
- 	{MEI_PCI_DEVICE(MEI_DEV_ID_SPT_H, MEI_ME_PCH8_SPS_4_CFG)},
- 	{MEI_PCI_DEVICE(MEI_DEV_ID_SPT_H_2, MEI_ME_PCH8_SPS_4_CFG)},
- 	{MEI_PCI_DEVICE(MEI_DEV_ID_LBG, MEI_ME_PCH12_SPS_4_CFG)},
-@@ -94,6 +95,7 @@ static const struct pci_device_id mei_me_pci_tbl[] = {
+ 	{MEI_PCI_DEVICE(MEI_DEV_ID_SPT_H, MEI_ME_PCH8_SPS_CFG)},
+ 	{MEI_PCI_DEVICE(MEI_DEV_ID_SPT_H_2, MEI_ME_PCH8_SPS_CFG)},
+ 	{MEI_PCI_DEVICE(MEI_DEV_ID_LBG, MEI_ME_PCH12_CFG)},
+@@ -103,6 +104,7 @@ static const struct pci_device_id mei_me_pci_tbl[] = {
  	{MEI_PCI_DEVICE(MEI_DEV_ID_CMP_H_3, MEI_ME_PCH8_CFG)},
  
  	{MEI_PCI_DEVICE(MEI_DEV_ID_ICP_LP, MEI_ME_PCH12_CFG)},
 +	{MEI_PCI_DEVICE(MEI_DEV_ID_ICP_LP_4, MEI_ME_PCH12_CFG)},
  
- 	{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)},
+ 	{MEI_PCI_DEVICE(MEI_DEV_ID_TGP_LP, MEI_ME_PCH12_CFG)},
+ 
 diff --git a/include/uapi/linux/input.h b/include/uapi/linux/input.h
-index 9a61c28ed3ae4..47fc20975245d 100644
+index 9a61c28ed3ae..47fc20975245 100644
 --- a/include/uapi/linux/input.h
 +++ b/include/uapi/linux/input.h
 @@ -271,6 +271,7 @@ struct input_mask {

+ 6 - 6
patches/5.4/0003-surface3-oemb.patch → patches/5.7/0001-surface3-oemb.patch

@@ -1,7 +1,7 @@
-From c62f29513192efd717ded5141bc0ac8df6abacad Mon Sep 17 00:00:00 2001
+From 6230d1f07f3a1348abe61d624fbda86de6e05a92 Mon Sep 17 00:00:00 2001
 From: Chih-Wei Huang <cwhuang@linux.org.tw>
 Date: Tue, 18 Sep 2018 11:01:37 +0800
-Subject: [PATCH 3/6] surface3-oemb
+Subject: [PATCH 1/4] surface3-oemb
 
 ---
  drivers/platform/x86/surface3-wmi.c               | 7 +++++++
@@ -10,7 +10,7 @@ Subject: [PATCH 3/6] surface3-oemb
  3 files changed, 24 insertions(+)
 
 diff --git a/drivers/platform/x86/surface3-wmi.c b/drivers/platform/x86/surface3-wmi.c
-index 130b6f52a6001..801083aa56d6d 100644
+index 130b6f52a600..801083aa56d6 100644
 --- a/drivers/platform/x86/surface3-wmi.c
 +++ b/drivers/platform/x86/surface3-wmi.c
 @@ -37,6 +37,13 @@ static const struct dmi_system_id surface3_dmi_table[] = {
@@ -28,10 +28,10 @@ index 130b6f52a6001..801083aa56d6d 100644
  	{ }
  };
 diff --git a/sound/soc/codecs/rt5645.c b/sound/soc/codecs/rt5645.c
-index c83f7f5da96b7..e6bfe684d6be8 100644
+index e2e1d5b03b38..5ff38592ba6d 100644
 --- a/sound/soc/codecs/rt5645.c
 +++ b/sound/soc/codecs/rt5645.c
-@@ -3681,6 +3681,15 @@ static const struct dmi_system_id dmi_platform_data[] = {
+@@ -3687,6 +3687,15 @@ static const struct dmi_system_id dmi_platform_data[] = {
  		},
  		.driver_data = (void *)&intel_braswell_platform_data,
  	},
@@ -48,7 +48,7 @@ index c83f7f5da96b7..e6bfe684d6be8 100644
  		/*
  		 * Match for the GPDwin which unfortunately uses somewhat
 diff --git a/sound/soc/intel/common/soc-acpi-intel-cht-match.c b/sound/soc/intel/common/soc-acpi-intel-cht-match.c
-index d0fb43c2b9f68..0e938713cb133 100644
+index 2752dc955733..ef36a316e2ed 100644
 --- a/sound/soc/intel/common/soc-acpi-intel-cht-match.c
 +++ b/sound/soc/intel/common/soc-acpi-intel-cht-match.c
 @@ -27,6 +27,14 @@ static const struct dmi_system_id cht_table[] = {

+ 0 - 63
patches/5.7/0001-surface3-spi.patch

@@ -1,63 +0,0 @@
-From 5b14942d89c65b1b365cffd58e955853da207b1a Mon Sep 17 00:00:00 2001
-From: kitakar5525 <34676735+kitakar5525@users.noreply.github.com>
-Date: Fri, 6 Dec 2019 23:10:30 +0900
-Subject: [PATCH 1/5] surface3-spi
-
----
- drivers/input/touchscreen/surface3_spi.c | 26 ++++++++++++++++++++++++
- 1 file changed, 26 insertions(+)
-
-diff --git a/drivers/input/touchscreen/surface3_spi.c b/drivers/input/touchscreen/surface3_spi.c
-index ce4828b1415a8..63b0b8ddf0903 100644
---- a/drivers/input/touchscreen/surface3_spi.c
-+++ b/drivers/input/touchscreen/surface3_spi.c
-@@ -25,6 +25,12 @@
- #define SURFACE3_REPORT_TOUCH	0xd2
- #define SURFACE3_REPORT_PEN	0x16
- 
-+bool use_dma = false;
-+module_param(use_dma, bool, 0644);
-+MODULE_PARM_DESC(use_dma,
-+				"Disable DMA mode if you encounter touch input crash. "
-+				"(default: false, disabled to avoid crash)");
-+
- struct surface3_ts_data {
- 	struct spi_device *spi;
- 	struct gpio_desc *gpiod_rst[2];
-@@ -326,6 +332,13 @@ static int surface3_spi_create_pen_input(struct surface3_ts_data *data)
- 	return 0;
- }
- 
-+static bool surface3_spi_can_dma(struct spi_controller *ctlr,
-+				struct spi_device *spi,
-+				struct spi_transfer *tfr)
-+{
-+	return use_dma;
-+}
-+
- static int surface3_spi_probe(struct spi_device *spi)
- {
- 	struct surface3_ts_data *data;
-@@ -368,6 +381,19 @@ static int surface3_spi_probe(struct spi_device *spi)
- 	if (error)
- 		return error;
- 
-+	/*
-+	 * Set up DMA
-+	 *
-+	 * TODO: Currently, touch input with DMA seems to be broken.
-+	 * On 4.19 LTS, touch input will crash after suspend.
-+	 * On recent stable kernel (at least after 5.1), touch input will crash after
-+	 * the first touch. No problem with PIO on those kernels.
-+	 * Maybe we need to configure DMA here.
-+	 *
-+	 * Link to issue: https://github.com/jakeday/linux-surface/issues/596
-+	 */
-+	spi->controller->can_dma = surface3_spi_can_dma;
-+
- 	return 0;
- }
- 
--- 
-2.27.0
-

+ 36 - 238
patches/5.4/0004-surface-sam.patch → patches/5.7/0002-surface-sam.patch

@@ -1,12 +1,10 @@
-From 9fe067a9be3ad6e688acd4f4e1452a6c876e4401 Mon Sep 17 00:00:00 2001
-From: qzed <qzed@users.noreply.github.com>
-Date: Mon, 26 Aug 2019 01:11:08 +0200
-Subject: [PATCH 4/6] surface-sam
+From 095746ff0ecad3ef1ff67e444ef10d4ac36cf8f8 Mon Sep 17 00:00:00 2001
+From: Maximilian Luz <luzmaximilian@gmail.com>
+Date: Fri, 6 Dec 2019 11:56:12 +0100
+Subject: [PATCH 2/4] surface-sam
 
 ---
- drivers/acpi/acpica/dsopcode.c                |    2 +-
- drivers/acpi/acpica/exfield.c                 |   12 +-
- drivers/platform/x86/Kconfig                  |    1 +
+ drivers/platform/x86/Kconfig                  |    2 +
  drivers/platform/x86/Makefile                 |    1 +
  drivers/platform/x86/surface_sam/Kconfig      |  176 +
  drivers/platform/x86/surface_sam/Makefile     |   15 +
@@ -25,8 +23,7 @@ Subject: [PATCH 4/6] surface-sam
  .../x86/surface_sam/surface_sam_ssh.h         |  488 ++
  .../x86/surface_sam/surface_sam_ssh_trace.h   |  536 ++
  .../x86/surface_sam/surface_sam_vhf.c         |  261 +
- drivers/tty/serdev/core.c                     |  111 +-
- 22 files changed, 11871 insertions(+), 16 deletions(-)
+ 19 files changed, 11763 insertions(+)
  create mode 100644 drivers/platform/x86/surface_sam/Kconfig
  create mode 100644 drivers/platform/x86/surface_sam/Makefile
  create mode 100644 drivers/platform/x86/surface_sam/surface_sam_dtx.c
@@ -45,75 +42,31 @@ Subject: [PATCH 4/6] surface-sam
  create mode 100644 drivers/platform/x86/surface_sam/surface_sam_ssh_trace.h
  create mode 100644 drivers/platform/x86/surface_sam/surface_sam_vhf.c
 
-diff --git a/drivers/acpi/acpica/dsopcode.c b/drivers/acpi/acpica/dsopcode.c
-index 10f32b62608ee..7b2a4987f0507 100644
---- a/drivers/acpi/acpica/dsopcode.c
-+++ b/drivers/acpi/acpica/dsopcode.c
-@@ -123,7 +123,7 @@ acpi_ds_init_buffer_field(u16 aml_opcode,
- 
- 		/* Offset is in bits, count is in bits */
- 
--		field_flags = AML_FIELD_ACCESS_BYTE;
-+		field_flags = AML_FIELD_ACCESS_BUFFER;
- 		bit_offset = offset;
- 		bit_count = (u32) length_desc->integer.value;
- 
-diff --git a/drivers/acpi/acpica/exfield.c b/drivers/acpi/acpica/exfield.c
-index d3d2dbfba680c..0b7f617a6e9b1 100644
---- a/drivers/acpi/acpica/exfield.c
-+++ b/drivers/acpi/acpica/exfield.c
-@@ -109,6 +109,7 @@ acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
- 	union acpi_operand_object *buffer_desc;
- 	void *buffer;
- 	u32 buffer_length;
-+	u8 field_flags;
- 
- 	ACPI_FUNCTION_TRACE_PTR(ex_read_data_from_field, obj_desc);
- 
-@@ -157,11 +158,16 @@ acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state,
- 	 * Note: Field.length is in bits.
- 	 */
- 	buffer_length =
--	    (acpi_size)ACPI_ROUND_BITS_UP_TO_BYTES(obj_desc->field.bit_length);
-+	    (acpi_size)ACPI_ROUND_BITS_UP_TO_BYTES(obj_desc->common_field.bit_length);
-+	field_flags = obj_desc->common_field.field_flags;
- 
--	if (buffer_length > acpi_gbl_integer_byte_width) {
-+	if (buffer_length > acpi_gbl_integer_byte_width ||
-+	    (field_flags & AML_FIELD_ACCESS_TYPE_MASK) == AML_FIELD_ACCESS_BUFFER) {
- 
--		/* Field is too large for an Integer, create a Buffer instead */
-+		/*
-+		 * Field is either too large for an Integer, or a actually of type
-+		 * buffer, so create a Buffer.
-+		 */
- 
- 		buffer_desc = acpi_ut_create_buffer_object(buffer_length);
- 		if (!buffer_desc) {
 diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
-index 348c795019fa4..d25067a838a33 100644
+index 0ad7ad8cf8e1..5d1766294eca 100644
 --- a/drivers/platform/x86/Kconfig
 +++ b/drivers/platform/x86/Kconfig
-@@ -1342,6 +1342,7 @@ config PCENGINES_APU2
- 	  will be called pcengines-apuv2.
+@@ -1350,6 +1350,8 @@ config INTEL_SCU_IPC
+ 	  some embedded Intel x86 platforms. This is not needed for PC-type
+ 	  machines.
  
- source "drivers/platform/x86/intel_speed_select_if/Kconfig"
 +source "drivers/platform/x86/surface_sam/Kconfig"
- 
- endif # X86_PLATFORM_DEVICES
- 
++
+ config INTEL_SCU_IPC_UTIL
+ 	tristate "Intel SCU IPC utility driver"
+ 	depends on INTEL_SCU_IPC
 diff --git a/drivers/platform/x86/Makefile b/drivers/platform/x86/Makefile
-index 6dd955ad9bf18..19b56f2181eb9 100644
+index 53408d965874..b3f4305f73c5 100644
 --- a/drivers/platform/x86/Makefile
 +++ b/drivers/platform/x86/Makefile
-@@ -101,3 +101,4 @@ obj-$(CONFIG_I2C_MULTI_INSTANTIATE)	+= i2c-multi-instantiate.o
- obj-$(CONFIG_INTEL_ATOMISP2_PM)	+= intel_atomisp2_pm.o
- obj-$(CONFIG_PCENGINES_APU2)	+= pcengines-apuv2.o
- obj-$(CONFIG_INTEL_SPEED_SELECT_INTERFACE) += intel_speed_select_if/
+@@ -146,3 +146,4 @@ obj-$(CONFIG_INTEL_TELEMETRY)		+= intel_telemetry_core.o \
+ 					   intel_telemetry_pltdrv.o \
+ 					   intel_telemetry_debugfs.o
+ obj-$(CONFIG_PMC_ATOM)			+= pmc_atom.o
 +obj-$(CONFIG_SURFACE_SAM)	+= surface_sam/
 diff --git a/drivers/platform/x86/surface_sam/Kconfig b/drivers/platform/x86/surface_sam/Kconfig
 new file mode 100644
-index 0000000000000..7781c5cd932c0
+index 000000000000..7781c5cd932c
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/Kconfig
 @@ -0,0 +1,176 @@
@@ -295,7 +248,7 @@ index 0000000000000..7781c5cd932c0
 +	  If you are not sure, say M here.
 diff --git a/drivers/platform/x86/surface_sam/Makefile b/drivers/platform/x86/surface_sam/Makefile
 new file mode 100644
-index 0000000000000..1a5c1260639dc
+index 000000000000..1a5c1260639d
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/Makefile
 @@ -0,0 +1,15 @@
@@ -316,7 +269,7 @@ index 0000000000000..1a5c1260639dc
 +obj-$(CONFIG_SURFACE_SAM_SID_VHF)	+= surface_sam_sid_vhf.o
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_dtx.c b/drivers/platform/x86/surface_sam/surface_sam_dtx.c
 new file mode 100644
-index 0000000000000..88dba7bced3a4
+index 000000000000..88dba7bced3a
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_dtx.c
 @@ -0,0 +1,590 @@
@@ -912,7 +865,7 @@ index 0000000000000..88dba7bced3a4
 +MODULE_LICENSE("GPL");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_hps.c b/drivers/platform/x86/surface_sam/surface_sam_hps.c
 new file mode 100644
-index 0000000000000..40f39f29113c5
+index 000000000000..40f39f29113c
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_hps.c
 @@ -0,0 +1,1297 @@
@@ -2215,7 +2168,7 @@ index 0000000000000..40f39f29113c5
 +MODULE_LICENSE("GPL");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_san.c b/drivers/platform/x86/surface_sam/surface_sam_san.c
 new file mode 100644
-index 0000000000000..11dd6daedc3dd
+index 000000000000..11dd6daedc3d
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_san.c
 @@ -0,0 +1,913 @@
@@ -3134,7 +3087,7 @@ index 0000000000000..11dd6daedc3dd
 +MODULE_LICENSE("GPL");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_san.h b/drivers/platform/x86/surface_sam/surface_sam_san.h
 new file mode 100644
-index 0000000000000..2b9dee159bbbc
+index 000000000000..2b9dee159bbb
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_san.h
 @@ -0,0 +1,30 @@
@@ -3170,7 +3123,7 @@ index 0000000000000..2b9dee159bbbc
 +#endif /* _SURFACE_SAM_SAN_H */
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_sid.c b/drivers/platform/x86/surface_sam/surface_sam_sid.c
 new file mode 100644
-index 0000000000000..caa2e6446b5f4
+index 000000000000..caa2e6446b5f
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_sid.c
 @@ -0,0 +1,281 @@
@@ -3457,7 +3410,7 @@ index 0000000000000..caa2e6446b5f4
 +MODULE_LICENSE("GPL");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_sid_gpelid.c b/drivers/platform/x86/surface_sam/surface_sam_sid_gpelid.c
 new file mode 100644
-index 0000000000000..f0cee43c859b4
+index 000000000000..f0cee43c859b
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_sid_gpelid.c
 @@ -0,0 +1,232 @@
@@ -3695,7 +3648,7 @@ index 0000000000000..f0cee43c859b4
 +MODULE_ALIAS("platform:surface_sam_sid_gpelid");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_sid_perfmode.c b/drivers/platform/x86/surface_sam/surface_sam_sid_perfmode.c
 new file mode 100644
-index 0000000000000..2e11efb166f2b
+index 000000000000..2e11efb166f2
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_sid_perfmode.c
 @@ -0,0 +1,216 @@
@@ -3917,7 +3870,7 @@ index 0000000000000..2e11efb166f2b
 +MODULE_ALIAS("platform:surface_sam_sid_perfmode");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_sid_power.c b/drivers/platform/x86/surface_sam/surface_sam_sid_power.c
 new file mode 100644
-index 0000000000000..1d945c0a911a4
+index 000000000000..1d945c0a911a
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_sid_power.c
 @@ -0,0 +1,1154 @@
@@ -5077,7 +5030,7 @@ index 0000000000000..1d945c0a911a4
 +MODULE_ALIAS("platform:surface_sam_sid_battery");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_sid_power.h b/drivers/platform/x86/surface_sam/surface_sam_sid_power.h
 new file mode 100644
-index 0000000000000..2e8f212086e12
+index 000000000000..2e8f212086e1
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_sid_power.h
 @@ -0,0 +1,15 @@
@@ -5098,7 +5051,7 @@ index 0000000000000..2e8f212086e12
 +#endif /* _SURFACE_SAM_SID_POWER_H */
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_sid_vhf.c b/drivers/platform/x86/surface_sam/surface_sam_sid_vhf.c
 new file mode 100644
-index 0000000000000..474221097eaf1
+index 000000000000..474221097eaf
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_sid_vhf.c
 @@ -0,0 +1,432 @@
@@ -5536,7 +5489,7 @@ index 0000000000000..474221097eaf1
 +MODULE_ALIAS("platform:surface_sam_sid_vhf");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_sid_vhf.h b/drivers/platform/x86/surface_sam/surface_sam_sid_vhf.h
 new file mode 100644
-index 0000000000000..eb55485ccb119
+index 000000000000..eb55485ccb11
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_sid_vhf.h
 @@ -0,0 +1,13 @@
@@ -5555,7 +5508,7 @@ index 0000000000000..eb55485ccb119
 +#endif /* _SURFACE_SAM_SID_VHF_H */
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_ssh.c b/drivers/platform/x86/surface_sam/surface_sam_ssh.c
 new file mode 100644
-index 0000000000000..9f44bdfbc4fd7
+index 000000000000..9f44bdfbc4fd
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_ssh.c
 @@ -0,0 +1,5111 @@
@@ -10672,7 +10625,7 @@ index 0000000000000..9f44bdfbc4fd7
 +MODULE_LICENSE("GPL");
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_ssh.h b/drivers/platform/x86/surface_sam/surface_sam_ssh.h
 new file mode 100644
-index 0000000000000..25a3ae85fee7f
+index 000000000000..25a3ae85fee7
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_ssh.h
 @@ -0,0 +1,488 @@
@@ -11166,7 +11119,7 @@ index 0000000000000..25a3ae85fee7f
 +#endif /* _SURFACE_SAM_SSH_H */
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_ssh_trace.h b/drivers/platform/x86/surface_sam/surface_sam_ssh_trace.h
 new file mode 100644
-index 0000000000000..801c60205128c
+index 000000000000..801c60205128
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_ssh_trace.h
 @@ -0,0 +1,536 @@
@@ -11708,7 +11661,7 @@ index 0000000000000..801c60205128c
 +#include <trace/define_trace.h>
 diff --git a/drivers/platform/x86/surface_sam/surface_sam_vhf.c b/drivers/platform/x86/surface_sam/surface_sam_vhf.c
 new file mode 100644
-index 0000000000000..984035c55d63a
+index 000000000000..984035c55d63
 --- /dev/null
 +++ b/drivers/platform/x86/surface_sam/surface_sam_vhf.c
 @@ -0,0 +1,261 @@
@@ -11973,161 +11926,6 @@ index 0000000000000..984035c55d63a
 +MODULE_AUTHOR("Maximilian Luz <luzmaximilian@gmail.com>");
 +MODULE_DESCRIPTION("Virtual HID Framework Driver for 5th Generation Surface Devices");
 +MODULE_LICENSE("GPL");
-diff --git a/drivers/tty/serdev/core.c b/drivers/tty/serdev/core.c
-index a9719858c950b..ce5309d002805 100644
---- a/drivers/tty/serdev/core.c
-+++ b/drivers/tty/serdev/core.c
-@@ -552,16 +552,97 @@ static int of_serdev_register_devices(struct serdev_controller *ctrl)
- }
- 
- #ifdef CONFIG_ACPI
-+
-+#define SERDEV_ACPI_MAX_SCAN_DEPTH 32
-+
-+struct acpi_serdev_lookup {
-+	acpi_handle device_handle;
-+	acpi_handle controller_handle;
-+	int n;
-+	int index;
-+};
-+
-+static int acpi_serdev_parse_resource(struct acpi_resource *ares, void *data)
-+{
-+	struct acpi_serdev_lookup *lookup = data;
-+	struct acpi_resource_uart_serialbus *sb;
-+	acpi_status status;
-+
-+	if (ares->type != ACPI_RESOURCE_TYPE_SERIAL_BUS)
-+		return 1;
-+
-+	if (ares->data.common_serial_bus.type != ACPI_RESOURCE_SERIAL_TYPE_UART)
-+		return 1;
-+
-+	if (lookup->index != -1 && lookup->n++ != lookup->index)
-+		return 1;
-+
-+	sb = &ares->data.uart_serial_bus;
-+
-+	status = acpi_get_handle(lookup->device_handle,
-+				 sb->resource_source.string_ptr,
-+				 &lookup->controller_handle);
-+	if (ACPI_FAILURE(status))
-+		return 1;
-+
-+	/*
-+	 * NOTE: Ideally, we would also want to retreive other properties here,
-+	 * once setting them before opening the device is supported by serdev.
-+	 */
-+
-+	return 1;
-+}
-+
-+static int acpi_serdev_do_lookup(struct acpi_device *adev,
-+                                 struct acpi_serdev_lookup *lookup)
-+{
-+	struct list_head resource_list;
-+	int ret;
-+
-+	lookup->device_handle = acpi_device_handle(adev);
-+	lookup->controller_handle = NULL;
-+	lookup->n = 0;
-+
-+	INIT_LIST_HEAD(&resource_list);
-+	ret = acpi_dev_get_resources(adev, &resource_list,
-+				     acpi_serdev_parse_resource, lookup);
-+	acpi_dev_free_resource_list(&resource_list);
-+
-+	if (ret < 0)
-+		return -EINVAL;
-+
-+	return 0;
-+}
-+
-+static int acpi_serdev_check_resources(struct serdev_controller *ctrl,
-+				       struct acpi_device *adev)
-+{
-+	struct acpi_serdev_lookup lookup;
-+	int ret;
-+
-+	if (acpi_bus_get_status(adev) || !adev->status.present)
-+		return -EINVAL;
-+
-+	/* Look for UARTSerialBusV2 resource */
-+	lookup.index = -1;	// we only care for the last device
-+
-+	ret = acpi_serdev_do_lookup(adev, &lookup);
-+	if (ret)
-+		return ret;
-+
-+	/* Make sure controller and ResourceSource handle match */
-+	if (ACPI_HANDLE(ctrl->dev.parent) != lookup.controller_handle)
-+		return -ENODEV;
-+
-+	return 0;
-+}
-+
- static acpi_status acpi_serdev_register_device(struct serdev_controller *ctrl,
--					    struct acpi_device *adev)
-+					       struct acpi_device *adev)
- {
--	struct serdev_device *serdev = NULL;
-+	struct serdev_device *serdev;
- 	int err;
- 
--	if (acpi_bus_get_status(adev) || !adev->status.present ||
--	    acpi_device_enumerated(adev))
--		return AE_OK;
--
- 	serdev = serdev_device_alloc(ctrl);
- 	if (!serdev) {
- 		dev_err(&ctrl->dev, "failed to allocate serdev device for %s\n",
-@@ -589,7 +670,7 @@ static const struct acpi_device_id serdev_acpi_devices_blacklist[] = {
- };
- 
- static acpi_status acpi_serdev_add_device(acpi_handle handle, u32 level,
--				       void *data, void **return_value)
-+					  void *data, void **return_value)
- {
- 	struct serdev_controller *ctrl = data;
- 	struct acpi_device *adev;
-@@ -597,26 +678,32 @@ static acpi_status acpi_serdev_add_device(acpi_handle handle, u32 level,
- 	if (acpi_bus_get_device(handle, &adev))
- 		return AE_OK;
- 
-+	if (acpi_device_enumerated(adev))
-+		return AE_OK;
-+
- 	/* Skip if black listed */
- 	if (!acpi_match_device_ids(adev, serdev_acpi_devices_blacklist))
- 		return AE_OK;
- 
-+	if (acpi_serdev_check_resources(ctrl, adev))
-+		return AE_OK;
-+
- 	return acpi_serdev_register_device(ctrl, adev);
- }
- 
-+
- static int acpi_serdev_register_devices(struct serdev_controller *ctrl)
- {
- 	acpi_status status;
--	acpi_handle handle;
- 
--	handle = ACPI_HANDLE(ctrl->dev.parent);
--	if (!handle)
-+	if (!has_acpi_companion(ctrl->dev.parent))
- 		return -ENODEV;
- 
--	status = acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, 1,
-+	status = acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
-+				     SERDEV_ACPI_MAX_SCAN_DEPTH,
- 				     acpi_serdev_add_device, NULL, ctrl, NULL);
- 	if (ACPI_FAILURE(status))
--		dev_dbg(&ctrl->dev, "failed to enumerate serdev slaves\n");
-+		dev_warn(&ctrl->dev, "failed to enumerate serdev slaves\n");
- 
- 	if (!ctrl->serdev)
- 		return -ENODEV;
 -- 
 2.27.0
 

+ 5 - 5
patches/5.4/0005-wifi.patch → patches/5.7/0003-wifi.patch

@@ -1,7 +1,7 @@
-From 21d75f9e70de41d4471dfe5d979120fb127e3519 Mon Sep 17 00:00:00 2001
+From 2296c53f01b45fb86d2d3e7d1d164feb5422ce34 Mon Sep 17 00:00:00 2001
 From: kitakar5525 <34676735+kitakar5525@users.noreply.github.com>
 Date: Thu, 20 Feb 2020 16:51:11 +0900
-Subject: [PATCH 5/6] wifi
+Subject: [PATCH 3/4] wifi
 
 ---
  .../net/wireless/marvell/mwifiex/cfg80211.c   | 26 ++++++
@@ -10,7 +10,7 @@ Subject: [PATCH 5/6] wifi
  3 files changed, 84 insertions(+), 57 deletions(-)
 
 diff --git a/drivers/net/wireless/marvell/mwifiex/cfg80211.c b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
-index 9e6dc289ec3e8..00b4bc4469892 100644
+index 12bfd653a405..68404a176794 100644
 --- a/drivers/net/wireless/marvell/mwifiex/cfg80211.c
 +++ b/drivers/net/wireless/marvell/mwifiex/cfg80211.c
 @@ -25,6 +25,11 @@
@@ -54,7 +54,7 @@ index 9e6dc289ec3e8..00b4bc4469892 100644
  }
  
 diff --git a/drivers/net/wireless/marvell/mwifiex/pcie.c b/drivers/net/wireless/marvell/mwifiex/pcie.c
-index fc1706d0647d7..b51c5e3571426 100644
+index 87b4ccca4b9a..3bdad5e80ecb 100644
 --- a/drivers/net/wireless/marvell/mwifiex/pcie.c
 +++ b/drivers/net/wireless/marvell/mwifiex/pcie.c
 @@ -146,38 +146,45 @@ static bool mwifiex_pcie_ok_to_access_hw(struct mwifiex_adapter *adapter)
@@ -188,7 +188,7 @@ index fc1706d0647d7..b51c5e3571426 100644
  		 pdev->vendor, pdev->device, pdev->revision);
  
 diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c
-index 4ed10cf82f9a4..410bef3d6a6eb 100644
+index 0bd93f26bd7f..91b03423c09d 100644
 --- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c
 +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c
 @@ -2254,7 +2254,6 @@ int mwifiex_sta_prepare_cmd(struct mwifiex_private *priv, uint16_t cmd_no,

+ 48 - 48
patches/5.4/0006-ipts.patch → patches/5.7/0004-ipts.patch

@@ -1,7 +1,7 @@
-From 2b11f864bf10eb5567ce741dcddfd2460a7cf89d Mon Sep 17 00:00:00 2001
+From b7236eb55b8650b1fec27e8a9558341e33e3b7ff Mon Sep 17 00:00:00 2001
 From: Dorian Stoll <dorian.stoll@tmsp.io>
 Date: Mon, 27 Jan 2020 21:16:20 +0100
-Subject: [PATCH 6/6] ipts
+Subject: [PATCH 4/4] ipts
 
 ---
  drivers/input/touchscreen/Kconfig             |   2 +
@@ -76,10 +76,10 @@ Subject: [PATCH 6/6] ipts
  create mode 100644 drivers/input/touchscreen/ipts/stylus.h
 
 diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
-index 46ad9090493bb..c476a153b2f80 100644
+index c071f7c407b6..028ff55d779d 100644
 --- a/drivers/input/touchscreen/Kconfig
 +++ b/drivers/input/touchscreen/Kconfig
-@@ -1314,4 +1314,6 @@ config TOUCHSCREEN_IQS5XX
+@@ -1310,4 +1310,6 @@ config TOUCHSCREEN_IQS5XX
  	  To compile this driver as a module, choose M here: the
  	  module will be called iqs5xx.
  
@@ -87,7 +87,7 @@ index 46ad9090493bb..c476a153b2f80 100644
 +
  endif
 diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile
-index 94c6162409b37..864f0e092ab67 100644
+index 94c6162409b3..864f0e092ab6 100644
 --- a/drivers/input/touchscreen/Makefile
 +++ b/drivers/input/touchscreen/Makefile
 @@ -45,6 +45,7 @@ obj-$(CONFIG_TOUCHSCREEN_EXC3000)	+= exc3000.o
@@ -100,7 +100,7 @@ index 94c6162409b37..864f0e092ab67 100644
  obj-$(CONFIG_TOUCHSCREEN_INEXIO)	+= inexio.o
 diff --git a/drivers/input/touchscreen/ipts/Kconfig b/drivers/input/touchscreen/ipts/Kconfig
 new file mode 100644
-index 0000000000000..d3c530dafa948
+index 000000000000..d3c530dafa94
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/Kconfig
 @@ -0,0 +1,16 @@
@@ -122,7 +122,7 @@ index 0000000000000..d3c530dafa948
 +	  module will be called ipts.
 diff --git a/drivers/input/touchscreen/ipts/Makefile b/drivers/input/touchscreen/ipts/Makefile
 new file mode 100644
-index 0000000000000..0f7c904e73171
+index 000000000000..0f7c904e7317
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/Makefile
 @@ -0,0 +1,17 @@
@@ -145,7 +145,7 @@ index 0000000000000..0f7c904e73171
 +ipts-objs += stylus.o
 diff --git a/drivers/input/touchscreen/ipts/context.h b/drivers/input/touchscreen/ipts/context.h
 new file mode 100644
-index 0000000000000..ab26552579a5c
+index 000000000000..ab26552579a5
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/context.h
 @@ -0,0 +1,60 @@
@@ -211,7 +211,7 @@ index 0000000000000..ab26552579a5c
 +#endif /* _IPTS_CONTEXT_H_ */
 diff --git a/drivers/input/touchscreen/ipts/control.c b/drivers/input/touchscreen/ipts/control.c
 new file mode 100644
-index 0000000000000..9179eca665585
+index 000000000000..9179eca66558
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/control.c
 @@ -0,0 +1,94 @@
@@ -311,7 +311,7 @@ index 0000000000000..9179eca665585
 +}
 diff --git a/drivers/input/touchscreen/ipts/control.h b/drivers/input/touchscreen/ipts/control.h
 new file mode 100644
-index 0000000000000..e57609c85d62a
+index 000000000000..e57609c85d62
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/control.h
 @@ -0,0 +1,18 @@
@@ -335,7 +335,7 @@ index 0000000000000..e57609c85d62a
 +#endif /* _IPTS_CONTROL_H_ */
 diff --git a/drivers/input/touchscreen/ipts/data.c b/drivers/input/touchscreen/ipts/data.c
 new file mode 100644
-index 0000000000000..568bf04f7ea6e
+index 000000000000..568bf04f7ea6
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/data.c
 @@ -0,0 +1,107 @@
@@ -448,7 +448,7 @@ index 0000000000000..568bf04f7ea6e
 +}
 diff --git a/drivers/input/touchscreen/ipts/data.h b/drivers/input/touchscreen/ipts/data.h
 new file mode 100644
-index 0000000000000..fa72c1be09451
+index 000000000000..fa72c1be0945
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/data.h
 @@ -0,0 +1,12 @@
@@ -466,7 +466,7 @@ index 0000000000000..fa72c1be09451
 +#endif /* _IPTS_DATA_H_ */
 diff --git a/drivers/input/touchscreen/ipts/hid.c b/drivers/input/touchscreen/ipts/hid.c
 new file mode 100644
-index 0000000000000..2642990b8c420
+index 000000000000..2642990b8c42
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/hid.c
 @@ -0,0 +1,38 @@
@@ -510,7 +510,7 @@ index 0000000000000..2642990b8c420
 +}
 diff --git a/drivers/input/touchscreen/ipts/hid.h b/drivers/input/touchscreen/ipts/hid.h
 new file mode 100644
-index 0000000000000..e6cf38fce4541
+index 000000000000..e6cf38fce454
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/hid.h
 @@ -0,0 +1,13 @@
@@ -529,7 +529,7 @@ index 0000000000000..e6cf38fce4541
 +#endif /* _IPTS_HID_H_ */
 diff --git a/drivers/input/touchscreen/ipts/init.c b/drivers/input/touchscreen/ipts/init.c
 new file mode 100644
-index 0000000000000..fb70d55542af7
+index 000000000000..fb70d55542af
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/init.c
 @@ -0,0 +1,93 @@
@@ -628,7 +628,7 @@ index 0000000000000..fb70d55542af7
 +MODULE_LICENSE("GPL");
 diff --git a/drivers/input/touchscreen/ipts/math.c b/drivers/input/touchscreen/ipts/math.c
 new file mode 100644
-index 0000000000000..df956e5447e03
+index 000000000000..df956e5447e0
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/math.c
 @@ -0,0 +1,103 @@
@@ -737,7 +737,7 @@ index 0000000000000..df956e5447e03
 +}
 diff --git a/drivers/input/touchscreen/ipts/math.h b/drivers/input/touchscreen/ipts/math.h
 new file mode 100644
-index 0000000000000..8e831074ab60b
+index 000000000000..8e831074ab60
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/math.h
 @@ -0,0 +1,21 @@
@@ -764,7 +764,7 @@ index 0000000000000..8e831074ab60b
 +#endif /* _IPTS_MATH_H_ */
 diff --git a/drivers/input/touchscreen/ipts/params.c b/drivers/input/touchscreen/ipts/params.c
 new file mode 100644
-index 0000000000000..6aa3f5cf1d762
+index 000000000000..6aa3f5cf1d76
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/params.c
 @@ -0,0 +1,27 @@
@@ -797,7 +797,7 @@ index 0000000000000..6aa3f5cf1d762
 +);
 diff --git a/drivers/input/touchscreen/ipts/params.h b/drivers/input/touchscreen/ipts/params.h
 new file mode 100644
-index 0000000000000..1f992a3bc21b9
+index 000000000000..1f992a3bc21b
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/params.h
 @@ -0,0 +1,15 @@
@@ -818,7 +818,7 @@ index 0000000000000..1f992a3bc21b9
 +#endif /* _IPTS_PARAMS_H_ */
 diff --git a/drivers/input/touchscreen/ipts/payload.c b/drivers/input/touchscreen/ipts/payload.c
 new file mode 100644
-index 0000000000000..3572ddc0f2fb0
+index 000000000000..3572ddc0f2fb
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/payload.c
 @@ -0,0 +1,52 @@
@@ -876,7 +876,7 @@ index 0000000000000..3572ddc0f2fb0
 +}
 diff --git a/drivers/input/touchscreen/ipts/payload.h b/drivers/input/touchscreen/ipts/payload.h
 new file mode 100644
-index 0000000000000..6603714bb6fd0
+index 000000000000..6603714bb6fd
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/payload.h
 @@ -0,0 +1,14 @@
@@ -896,7 +896,7 @@ index 0000000000000..6603714bb6fd0
 +#endif /* _IPTS_PAYLOAD_H_ */
 diff --git a/drivers/input/touchscreen/ipts/protocol/commands.h b/drivers/input/touchscreen/ipts/protocol/commands.h
 new file mode 100644
-index 0000000000000..2533dfb13584a
+index 000000000000..2533dfb13584
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/protocol/commands.h
 @@ -0,0 +1,61 @@
@@ -963,7 +963,7 @@ index 0000000000000..2533dfb13584a
 +#endif /* _IPTS_PROTOCOL_COMMANDS_H_ */
 diff --git a/drivers/input/touchscreen/ipts/protocol/data.h b/drivers/input/touchscreen/ipts/protocol/data.h
 new file mode 100644
-index 0000000000000..148e0545b2e4e
+index 000000000000..148e0545b2e4
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/protocol/data.h
 @@ -0,0 +1,30 @@
@@ -999,7 +999,7 @@ index 0000000000000..148e0545b2e4e
 +#endif /* _IPTS_PROTOCOL_DATA_H_ */
 diff --git a/drivers/input/touchscreen/ipts/protocol/events.h b/drivers/input/touchscreen/ipts/protocol/events.h
 new file mode 100644
-index 0000000000000..f8b771f90bd2b
+index 000000000000..f8b771f90bd2
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/protocol/events.h
 @@ -0,0 +1,29 @@
@@ -1034,7 +1034,7 @@ index 0000000000000..f8b771f90bd2b
 +#endif /* _IPTS_PROTOCOL_EVENTS_H_ */
 diff --git a/drivers/input/touchscreen/ipts/protocol/feedback.h b/drivers/input/touchscreen/ipts/protocol/feedback.h
 new file mode 100644
-index 0000000000000..8b3d8b689ee83
+index 000000000000..8b3d8b689ee8
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/protocol/feedback.h
 @@ -0,0 +1,30 @@
@@ -1070,7 +1070,7 @@ index 0000000000000..8b3d8b689ee83
 +#endif /* _IPTS_PROTOCOL_FEEDBACK_H_ */
 diff --git a/drivers/input/touchscreen/ipts/protocol/payload.h b/drivers/input/touchscreen/ipts/protocol/payload.h
 new file mode 100644
-index 0000000000000..f46da4ea81f25
+index 000000000000..f46da4ea81f2
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/protocol/payload.h
 @@ -0,0 +1,47 @@
@@ -1123,7 +1123,7 @@ index 0000000000000..f46da4ea81f25
 +#endif /* _IPTS_PROTOCOL_PAYLOAD_H_ */
 diff --git a/drivers/input/touchscreen/ipts/protocol/responses.h b/drivers/input/touchscreen/ipts/protocol/responses.h
 new file mode 100644
-index 0000000000000..27153d82a5d67
+index 000000000000..27153d82a5d6
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/protocol/responses.h
 @@ -0,0 +1,62 @@
@@ -1191,7 +1191,7 @@ index 0000000000000..27153d82a5d67
 +#endif /* _IPTS_PROTOCOL_RESPONSES_H_ */
 diff --git a/drivers/input/touchscreen/ipts/protocol/singletouch.h b/drivers/input/touchscreen/ipts/protocol/singletouch.h
 new file mode 100644
-index 0000000000000..bf9912ee2af4c
+index 000000000000..bf9912ee2af4
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/protocol/singletouch.h
 @@ -0,0 +1,17 @@
@@ -1214,7 +1214,7 @@ index 0000000000000..bf9912ee2af4c
 +#endif /* _IPTS_PROTOCOL_SINGLETOUCH_H_ */
 diff --git a/drivers/input/touchscreen/ipts/protocol/stylus.h b/drivers/input/touchscreen/ipts/protocol/stylus.h
 new file mode 100644
-index 0000000000000..950850b365dfb
+index 000000000000..950850b365df
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/protocol/stylus.h
 @@ -0,0 +1,52 @@
@@ -1272,7 +1272,7 @@ index 0000000000000..950850b365dfb
 +#endif /* _IPTS_PAYLOAD_STYLUS_H_ */
 diff --git a/drivers/input/touchscreen/ipts/receiver.c b/drivers/input/touchscreen/ipts/receiver.c
 new file mode 100644
-index 0000000000000..ab283994c3e5f
+index 000000000000..ab283994c3e5
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/receiver.c
 @@ -0,0 +1,265 @@
@@ -1543,7 +1543,7 @@ index 0000000000000..ab283994c3e5f
 +}
 diff --git a/drivers/input/touchscreen/ipts/receiver.h b/drivers/input/touchscreen/ipts/receiver.h
 new file mode 100644
-index 0000000000000..4d413a0abd4c5
+index 000000000000..4d413a0abd4c
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/receiver.h
 @@ -0,0 +1,8 @@
@@ -1557,7 +1557,7 @@ index 0000000000000..4d413a0abd4c5
 +#endif /* _IPTS_RECEIVER_H_ */
 diff --git a/drivers/input/touchscreen/ipts/resources.c b/drivers/input/touchscreen/ipts/resources.c
 new file mode 100644
-index 0000000000000..704db9fdd3fd4
+index 000000000000..704db9fdd3fd
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/resources.c
 @@ -0,0 +1,131 @@
@@ -1694,7 +1694,7 @@ index 0000000000000..704db9fdd3fd4
 +}
 diff --git a/drivers/input/touchscreen/ipts/resources.h b/drivers/input/touchscreen/ipts/resources.h
 new file mode 100644
-index 0000000000000..cf9807b0dbe62
+index 000000000000..cf9807b0dbe6
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/resources.h
 @@ -0,0 +1,11 @@
@@ -1711,7 +1711,7 @@ index 0000000000000..cf9807b0dbe62
 +#endif /* _IPTS_RESOURCES_H_ */
 diff --git a/drivers/input/touchscreen/ipts/singletouch.c b/drivers/input/touchscreen/ipts/singletouch.c
 new file mode 100644
-index 0000000000000..ed70444f649c4
+index 000000000000..ed70444f649c
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/singletouch.c
 @@ -0,0 +1,64 @@
@@ -1781,7 +1781,7 @@ index 0000000000000..ed70444f649c4
 +}
 diff --git a/drivers/input/touchscreen/ipts/singletouch.h b/drivers/input/touchscreen/ipts/singletouch.h
 new file mode 100644
-index 0000000000000..53207497a4628
+index 000000000000..53207497a462
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/singletouch.h
 @@ -0,0 +1,14 @@
@@ -1801,7 +1801,7 @@ index 0000000000000..53207497a4628
 +#endif /* _IPTS_SINGLETOUCH_H_ */
 diff --git a/drivers/input/touchscreen/ipts/stylus.c b/drivers/input/touchscreen/ipts/stylus.c
 new file mode 100644
-index 0000000000000..987fa756fec33
+index 000000000000..987fa756fec3
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/stylus.c
 @@ -0,0 +1,179 @@
@@ -1986,7 +1986,7 @@ index 0000000000000..987fa756fec33
 +}
 diff --git a/drivers/input/touchscreen/ipts/stylus.h b/drivers/input/touchscreen/ipts/stylus.h
 new file mode 100644
-index 0000000000000..5b93add1eac2d
+index 000000000000..5b93add1eac2
 --- /dev/null
 +++ b/drivers/input/touchscreen/ipts/stylus.h
 @@ -0,0 +1,14 @@
@@ -2005,7 +2005,7 @@ index 0000000000000..5b93add1eac2d
 +
 +#endif /* _IPTS_STYLUS_H_ */
 diff --git a/drivers/misc/mei/hw-me-regs.h b/drivers/misc/mei/hw-me-regs.h
-index e56dc47540646..a55c61c89238a 100644
+index 7becfc768bbc..3d0f9bfb7c49 100644
 --- a/drivers/misc/mei/hw-me-regs.h
 +++ b/drivers/misc/mei/hw-me-regs.h
 @@ -59,6 +59,7 @@
@@ -2022,30 +2022,30 @@ index e56dc47540646..a55c61c89238a 100644
  #define MEI_DEV_ID_ICP_LP     0x34E0  /* Ice Lake Point LP */
 +#define MEI_DEV_ID_ICP_LP_4   0x34E4  /* Ice Lake Point LP 4 (iTouch) */
  
- #define MEI_DEV_ID_TGP_LP     0xA0E0  /* Tiger Lake Point LP */
+ #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
-index 75ab2ffbf235f..78790904d77cb 100644
+index 81e759674c1b..4f7ba1cdb3c8 100644
 --- a/drivers/misc/mei/pci-me.c
 +++ b/drivers/misc/mei/pci-me.c
-@@ -77,6 +77,7 @@ static const struct pci_device_id mei_me_pci_tbl[] = {
+@@ -68,6 +68,7 @@ static const struct pci_device_id mei_me_pci_tbl[] = {
  
  	{MEI_PCI_DEVICE(MEI_DEV_ID_SPT, MEI_ME_PCH8_CFG)},
  	{MEI_PCI_DEVICE(MEI_DEV_ID_SPT_2, MEI_ME_PCH8_CFG)},
 +	{MEI_PCI_DEVICE(MEI_DEV_ID_SPT_4, MEI_ME_PCH8_CFG)},
- 	{MEI_PCI_DEVICE(MEI_DEV_ID_SPT_H, MEI_ME_PCH8_SPS_CFG)},
- 	{MEI_PCI_DEVICE(MEI_DEV_ID_SPT_H_2, MEI_ME_PCH8_SPS_CFG)},
- 	{MEI_PCI_DEVICE(MEI_DEV_ID_LBG, MEI_ME_PCH12_CFG)},
-@@ -103,6 +104,7 @@ static const struct pci_device_id mei_me_pci_tbl[] = {
+ 	{MEI_PCI_DEVICE(MEI_DEV_ID_SPT_H, MEI_ME_PCH8_SPS_4_CFG)},
+ 	{MEI_PCI_DEVICE(MEI_DEV_ID_SPT_H_2, MEI_ME_PCH8_SPS_4_CFG)},
+ 	{MEI_PCI_DEVICE(MEI_DEV_ID_LBG, MEI_ME_PCH12_SPS_4_CFG)},
+@@ -94,6 +95,7 @@ static const struct pci_device_id mei_me_pci_tbl[] = {
  	{MEI_PCI_DEVICE(MEI_DEV_ID_CMP_H_3, MEI_ME_PCH8_CFG)},
  
  	{MEI_PCI_DEVICE(MEI_DEV_ID_ICP_LP, MEI_ME_PCH12_CFG)},
 +	{MEI_PCI_DEVICE(MEI_DEV_ID_ICP_LP_4, MEI_ME_PCH12_CFG)},
  
- 	{MEI_PCI_DEVICE(MEI_DEV_ID_TGP_LP, MEI_ME_PCH12_CFG)},
- 
+ 	{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)},
 diff --git a/include/uapi/linux/input.h b/include/uapi/linux/input.h
-index 9a61c28ed3ae4..47fc20975245d 100644
+index 9a61c28ed3ae..47fc20975245 100644
 --- a/include/uapi/linux/input.h
 +++ b/include/uapi/linux/input.h
 @@ -271,6 +271,7 @@ struct input_mask {