+++ /dev/null
-From 71928c410a5dc4210af3bb56b5aa8c719f437b8f Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Sat, 10 Sep 2022 20:36:13 -0400
-Subject: hid: topre: Add driver fixing report descriptor
-
-From: Harry Stern <harry@harrystern.net>
-
-[ Upstream commit a109d5c45b3d6728b9430716b915afbe16eef27c ]
-
-The Topre REALFORCE R2 firmware incorrectly reports that interface
-descriptor number 1, input report descriptor 2's events are array events
-rather than variable events. That particular report descriptor is used
-to report keypresses when there are more than 6 keys held at a time.
-This bug prevents events from this interface from being registered
-properly, so only 6 keypresses (from a different interface) can be
-registered at once, rather than full n-key rollover.
-
-This commit fixes the bug by setting the correct value in a report_fixup
-function.
-
-The original bug report can be found here:
-Link: https://gitlab.freedesktop.org/libinput/libinput/-/issues/804
-
-Thanks to Benjamin Tissoires for diagnosing the issue with the report
-descriptor.
-
-Signed-off-by: Harry Stern <harry@harrystern.net>
-Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
-Link: https://lore.kernel.org/r/20220911003614.297613-1-harry@harrystern.net
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/hid/Kconfig | 6 +++++
- drivers/hid/Makefile | 1 +
- drivers/hid/hid-ids.h | 3 +++
- drivers/hid/hid-topre.c | 49 +++++++++++++++++++++++++++++++++++++++++
- 4 files changed, 59 insertions(+)
- create mode 100644 drivers/hid/hid-topre.c
-
-diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
-index a4fb3fccf1b2..3311f0adf30c 100644
---- a/drivers/hid/Kconfig
-+++ b/drivers/hid/Kconfig
-@@ -892,6 +892,12 @@ config HID_TOPSEED
- Say Y if you have a TopSeed Cyberlink or BTC Emprex or Conceptronic
- CLLRCMCE remote control.
-
-+config HID_TOPRE
-+ tristate "Topre REALFORCE keyboards"
-+ depends on HID
-+ help
-+ Say Y for N-key rollover support on Topre REALFORCE R2 108 key keyboards.
-+
- config HID_THINGM
- tristate "ThingM blink(1) USB RGB LED"
- depends on HID
-diff --git a/drivers/hid/Makefile b/drivers/hid/Makefile
-index 235bd2a7b333..a6ee2f5ca3b7 100644
---- a/drivers/hid/Makefile
-+++ b/drivers/hid/Makefile
-@@ -100,6 +100,7 @@ obj-$(CONFIG_HID_GREENASIA) += hid-gaff.o
- obj-$(CONFIG_HID_THRUSTMASTER) += hid-tmff.o
- obj-$(CONFIG_HID_TIVO) += hid-tivo.o
- obj-$(CONFIG_HID_TOPSEED) += hid-topseed.o
-+obj-$(CONFIG_HID_TOPRE) += hid-topre.o
- obj-$(CONFIG_HID_TWINHAN) += hid-twinhan.o
- obj-$(CONFIG_HID_UCLOGIC) += hid-uclogic.o
- obj-$(CONFIG_HID_UDRAW_PS3) += hid-udraw-ps3.o
-diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
-index e5f2958bc18c..05b3ed74c4d2 100644
---- a/drivers/hid/hid-ids.h
-+++ b/drivers/hid/hid-ids.h
-@@ -1048,6 +1048,9 @@
- #define USB_DEVICE_ID_TIVO_SLIDE 0x1201
- #define USB_DEVICE_ID_TIVO_SLIDE_PRO 0x1203
-
-+#define USB_VENDOR_ID_TOPRE 0x0853
-+#define USB_DEVICE_ID_TOPRE_REALFORCE_R2_108 0x0148
-+
- #define USB_VENDOR_ID_TOPSEED 0x0766
- #define USB_DEVICE_ID_TOPSEED_CYBERLINK 0x0204
-
-diff --git a/drivers/hid/hid-topre.c b/drivers/hid/hid-topre.c
-new file mode 100644
-index 000000000000..88a91cdad5f8
---- /dev/null
-+++ b/drivers/hid/hid-topre.c
-@@ -0,0 +1,49 @@
-+// SPDX-License-Identifier: GPL-2.0+
-+/*
-+ * HID driver for Topre REALFORCE Keyboards
-+ *
-+ * Copyright (c) 2022 Harry Stern <harry@harrystern.net>
-+ *
-+ * Based on the hid-macally driver
-+ */
-+
-+#include <linux/hid.h>
-+#include <linux/module.h>
-+
-+#include "hid-ids.h"
-+
-+MODULE_AUTHOR("Harry Stern <harry@harrystern.net>");
-+MODULE_DESCRIPTION("REALFORCE R2 Keyboard driver");
-+MODULE_LICENSE("GPL");
-+
-+/*
-+ * Fix the REALFORCE R2's non-boot interface's report descriptor to match the
-+ * events it's actually sending. It claims to send array events but is instead
-+ * sending variable events.
-+ */
-+static __u8 *topre_report_fixup(struct hid_device *hdev, __u8 *rdesc,
-+ unsigned int *rsize)
-+{
-+ if (*rsize >= 119 && rdesc[69] == 0x29 && rdesc[70] == 0xe7 &&
-+ rdesc[71] == 0x81 && rdesc[72] == 0x00) {
-+ hid_info(hdev,
-+ "fixing up Topre REALFORCE keyboard report descriptor\n");
-+ rdesc[72] = 0x02;
-+ }
-+ return rdesc;
-+}
-+
-+static const struct hid_device_id topre_id_table[] = {
-+ { HID_USB_DEVICE(USB_VENDOR_ID_TOPRE,
-+ USB_DEVICE_ID_TOPRE_REALFORCE_R2_108) },
-+ { }
-+};
-+MODULE_DEVICE_TABLE(hid, topre_id_table);
-+
-+static struct hid_driver topre_driver = {
-+ .name = "topre",
-+ .id_table = topre_id_table,
-+ .report_fixup = topre_report_fixup,
-+};
-+
-+module_hid_driver(topre_driver);
---
-2.35.1
-
media-cx88-fix-a-null-ptr-deref-bug-in-buffer_prepar.patch
scsi-3w-9xxx-avoid-disabling-device-if-failing-to-en.patch
nbd-fix-hung-when-signal-interrupts-nbd_start_device.patch
-hid-topre-add-driver-fixing-report-descriptor.patch
hid-roccat-fix-use-after-free-in-roccat_read.patch
hsi-ssi_protocol-fix-potential-resource-leak-in-ssip.patch
md-raid5-wait-for-md_sb_change_pending-in-raid5d.patch
+++ /dev/null
-From 91acbb5d253312076ca436e9d75cf298675455e5 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Sat, 10 Sep 2022 20:36:13 -0400
-Subject: hid: topre: Add driver fixing report descriptor
-
-From: Harry Stern <harry@harrystern.net>
-
-[ Upstream commit a109d5c45b3d6728b9430716b915afbe16eef27c ]
-
-The Topre REALFORCE R2 firmware incorrectly reports that interface
-descriptor number 1, input report descriptor 2's events are array events
-rather than variable events. That particular report descriptor is used
-to report keypresses when there are more than 6 keys held at a time.
-This bug prevents events from this interface from being registered
-properly, so only 6 keypresses (from a different interface) can be
-registered at once, rather than full n-key rollover.
-
-This commit fixes the bug by setting the correct value in a report_fixup
-function.
-
-The original bug report can be found here:
-Link: https://gitlab.freedesktop.org/libinput/libinput/-/issues/804
-
-Thanks to Benjamin Tissoires for diagnosing the issue with the report
-descriptor.
-
-Signed-off-by: Harry Stern <harry@harrystern.net>
-Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
-Link: https://lore.kernel.org/r/20220911003614.297613-1-harry@harrystern.net
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/hid/Kconfig | 6 +++++
- drivers/hid/Makefile | 1 +
- drivers/hid/hid-ids.h | 3 +++
- drivers/hid/hid-topre.c | 49 +++++++++++++++++++++++++++++++++++++++++
- 4 files changed, 59 insertions(+)
- create mode 100644 drivers/hid/hid-topre.c
-
-diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
-index 88bb59ba58cd..d64a2799331e 100644
---- a/drivers/hid/Kconfig
-+++ b/drivers/hid/Kconfig
-@@ -943,6 +943,12 @@ config HID_TOPSEED
- Say Y if you have a TopSeed Cyberlink or BTC Emprex or Conceptronic
- CLLRCMCE remote control.
-
-+config HID_TOPRE
-+ tristate "Topre REALFORCE keyboards"
-+ depends on HID
-+ help
-+ Say Y for N-key rollover support on Topre REALFORCE R2 108 key keyboards.
-+
- config HID_THINGM
- tristate "ThingM blink(1) USB RGB LED"
- depends on HID
-diff --git a/drivers/hid/Makefile b/drivers/hid/Makefile
-index bd7ac53b75c5..9493ea3a3898 100644
---- a/drivers/hid/Makefile
-+++ b/drivers/hid/Makefile
-@@ -106,6 +106,7 @@ obj-$(CONFIG_HID_GREENASIA) += hid-gaff.o
- obj-$(CONFIG_HID_THRUSTMASTER) += hid-tmff.o
- obj-$(CONFIG_HID_TIVO) += hid-tivo.o
- obj-$(CONFIG_HID_TOPSEED) += hid-topseed.o
-+obj-$(CONFIG_HID_TOPRE) += hid-topre.o
- obj-$(CONFIG_HID_TWINHAN) += hid-twinhan.o
- obj-$(CONFIG_HID_UCLOGIC) += hid-uclogic.o
- obj-$(CONFIG_HID_UDRAW_PS3) += hid-udraw-ps3.o
-diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
-index 70079d29822b..ab95d952bcc2 100644
---- a/drivers/hid/hid-ids.h
-+++ b/drivers/hid/hid-ids.h
-@@ -1123,6 +1123,9 @@
- #define USB_DEVICE_ID_TIVO_SLIDE 0x1201
- #define USB_DEVICE_ID_TIVO_SLIDE_PRO 0x1203
-
-+#define USB_VENDOR_ID_TOPRE 0x0853
-+#define USB_DEVICE_ID_TOPRE_REALFORCE_R2_108 0x0148
-+
- #define USB_VENDOR_ID_TOPSEED 0x0766
- #define USB_DEVICE_ID_TOPSEED_CYBERLINK 0x0204
-
-diff --git a/drivers/hid/hid-topre.c b/drivers/hid/hid-topre.c
-new file mode 100644
-index 000000000000..88a91cdad5f8
---- /dev/null
-+++ b/drivers/hid/hid-topre.c
-@@ -0,0 +1,49 @@
-+// SPDX-License-Identifier: GPL-2.0+
-+/*
-+ * HID driver for Topre REALFORCE Keyboards
-+ *
-+ * Copyright (c) 2022 Harry Stern <harry@harrystern.net>
-+ *
-+ * Based on the hid-macally driver
-+ */
-+
-+#include <linux/hid.h>
-+#include <linux/module.h>
-+
-+#include "hid-ids.h"
-+
-+MODULE_AUTHOR("Harry Stern <harry@harrystern.net>");
-+MODULE_DESCRIPTION("REALFORCE R2 Keyboard driver");
-+MODULE_LICENSE("GPL");
-+
-+/*
-+ * Fix the REALFORCE R2's non-boot interface's report descriptor to match the
-+ * events it's actually sending. It claims to send array events but is instead
-+ * sending variable events.
-+ */
-+static __u8 *topre_report_fixup(struct hid_device *hdev, __u8 *rdesc,
-+ unsigned int *rsize)
-+{
-+ if (*rsize >= 119 && rdesc[69] == 0x29 && rdesc[70] == 0xe7 &&
-+ rdesc[71] == 0x81 && rdesc[72] == 0x00) {
-+ hid_info(hdev,
-+ "fixing up Topre REALFORCE keyboard report descriptor\n");
-+ rdesc[72] = 0x02;
-+ }
-+ return rdesc;
-+}
-+
-+static const struct hid_device_id topre_id_table[] = {
-+ { HID_USB_DEVICE(USB_VENDOR_ID_TOPRE,
-+ USB_DEVICE_ID_TOPRE_REALFORCE_R2_108) },
-+ { }
-+};
-+MODULE_DEVICE_TABLE(hid, topre_id_table);
-+
-+static struct hid_driver topre_driver = {
-+ .name = "topre",
-+ .id_table = topre_id_table,
-+ .report_fixup = topre_report_fixup,
-+};
-+
-+module_hid_driver(topre_driver);
---
-2.35.1
-
power-supply-adp5061-fix-out-of-bounds-read-in-adp50.patch
staging-vt6655-fix-potential-memory-leak.patch
ata-libahci_platform-sanity-check-the-dt-child-nodes.patch
-hid-topre-add-driver-fixing-report-descriptor.patch
hid-roccat-fix-use-after-free-in-roccat_read.patch
hsi-ssi_protocol-fix-potential-resource-leak-in-ssip.patch
md-raid5-wait-for-md_sb_change_pending-in-raid5d.patch
+++ /dev/null
-From 490623c4ec034a3be3ff836c425322ecf4f4c5ab Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Sat, 10 Sep 2022 20:36:13 -0400
-Subject: hid: topre: Add driver fixing report descriptor
-
-From: Harry Stern <harry@harrystern.net>
-
-[ Upstream commit a109d5c45b3d6728b9430716b915afbe16eef27c ]
-
-The Topre REALFORCE R2 firmware incorrectly reports that interface
-descriptor number 1, input report descriptor 2's events are array events
-rather than variable events. That particular report descriptor is used
-to report keypresses when there are more than 6 keys held at a time.
-This bug prevents events from this interface from being registered
-properly, so only 6 keypresses (from a different interface) can be
-registered at once, rather than full n-key rollover.
-
-This commit fixes the bug by setting the correct value in a report_fixup
-function.
-
-The original bug report can be found here:
-Link: https://gitlab.freedesktop.org/libinput/libinput/-/issues/804
-
-Thanks to Benjamin Tissoires for diagnosing the issue with the report
-descriptor.
-
-Signed-off-by: Harry Stern <harry@harrystern.net>
-Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
-Link: https://lore.kernel.org/r/20220911003614.297613-1-harry@harrystern.net
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/hid/Kconfig | 6 +++++
- drivers/hid/Makefile | 1 +
- drivers/hid/hid-ids.h | 3 +++
- drivers/hid/hid-topre.c | 49 +++++++++++++++++++++++++++++++++++++++++
- 4 files changed, 59 insertions(+)
- create mode 100644 drivers/hid/hid-topre.c
-
-diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
-index 2b5ae00f8df2..80c54cd437db 100644
---- a/drivers/hid/Kconfig
-+++ b/drivers/hid/Kconfig
-@@ -837,6 +837,12 @@ config HID_TOPSEED
- Say Y if you have a TopSeed Cyberlink or BTC Emprex or Conceptronic
- CLLRCMCE remote control.
-
-+config HID_TOPRE
-+ tristate "Topre REALFORCE keyboards"
-+ depends on HID
-+ help
-+ Say Y for N-key rollover support on Topre REALFORCE R2 108 key keyboards.
-+
- config HID_THINGM
- tristate "ThingM blink(1) USB RGB LED"
- depends on HID
-diff --git a/drivers/hid/Makefile b/drivers/hid/Makefile
-index 86b2b5785fd2..245878158850 100644
---- a/drivers/hid/Makefile
-+++ b/drivers/hid/Makefile
-@@ -94,6 +94,7 @@ obj-$(CONFIG_HID_GREENASIA) += hid-gaff.o
- obj-$(CONFIG_HID_THRUSTMASTER) += hid-tmff.o
- obj-$(CONFIG_HID_TIVO) += hid-tivo.o
- obj-$(CONFIG_HID_TOPSEED) += hid-topseed.o
-+obj-$(CONFIG_HID_TOPRE) += hid-topre.o
- obj-$(CONFIG_HID_TWINHAN) += hid-twinhan.o
- obj-$(CONFIG_HID_UCLOGIC) += hid-uclogic.o
- obj-$(CONFIG_HID_LED) += hid-led.o
-diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
-index 1f641870d860..3ae9f6489f8f 100644
---- a/drivers/hid/hid-ids.h
-+++ b/drivers/hid/hid-ids.h
-@@ -1001,6 +1001,9 @@
- #define USB_DEVICE_ID_TIVO_SLIDE 0x1201
- #define USB_DEVICE_ID_TIVO_SLIDE_PRO 0x1203
-
-+#define USB_VENDOR_ID_TOPRE 0x0853
-+#define USB_DEVICE_ID_TOPRE_REALFORCE_R2_108 0x0148
-+
- #define USB_VENDOR_ID_TOPSEED 0x0766
- #define USB_DEVICE_ID_TOPSEED_CYBERLINK 0x0204
-
-diff --git a/drivers/hid/hid-topre.c b/drivers/hid/hid-topre.c
-new file mode 100644
-index 000000000000..88a91cdad5f8
---- /dev/null
-+++ b/drivers/hid/hid-topre.c
-@@ -0,0 +1,49 @@
-+// SPDX-License-Identifier: GPL-2.0+
-+/*
-+ * HID driver for Topre REALFORCE Keyboards
-+ *
-+ * Copyright (c) 2022 Harry Stern <harry@harrystern.net>
-+ *
-+ * Based on the hid-macally driver
-+ */
-+
-+#include <linux/hid.h>
-+#include <linux/module.h>
-+
-+#include "hid-ids.h"
-+
-+MODULE_AUTHOR("Harry Stern <harry@harrystern.net>");
-+MODULE_DESCRIPTION("REALFORCE R2 Keyboard driver");
-+MODULE_LICENSE("GPL");
-+
-+/*
-+ * Fix the REALFORCE R2's non-boot interface's report descriptor to match the
-+ * events it's actually sending. It claims to send array events but is instead
-+ * sending variable events.
-+ */
-+static __u8 *topre_report_fixup(struct hid_device *hdev, __u8 *rdesc,
-+ unsigned int *rsize)
-+{
-+ if (*rsize >= 119 && rdesc[69] == 0x29 && rdesc[70] == 0xe7 &&
-+ rdesc[71] == 0x81 && rdesc[72] == 0x00) {
-+ hid_info(hdev,
-+ "fixing up Topre REALFORCE keyboard report descriptor\n");
-+ rdesc[72] = 0x02;
-+ }
-+ return rdesc;
-+}
-+
-+static const struct hid_device_id topre_id_table[] = {
-+ { HID_USB_DEVICE(USB_VENDOR_ID_TOPRE,
-+ USB_DEVICE_ID_TOPRE_REALFORCE_R2_108) },
-+ { }
-+};
-+MODULE_DEVICE_TABLE(hid, topre_id_table);
-+
-+static struct hid_driver topre_driver = {
-+ .name = "topre",
-+ .id_table = topre_id_table,
-+ .report_fixup = topre_report_fixup,
-+};
-+
-+module_hid_driver(topre_driver);
---
-2.35.1
-
arm-dts-imx6sl-add-missing-properties-for-sram.patch
media-cx88-fix-a-null-ptr-deref-bug-in-buffer_prepar.patch
scsi-3w-9xxx-avoid-disabling-device-if-failing-to-en.patch
-hid-topre-add-driver-fixing-report-descriptor.patch
hid-roccat-fix-use-after-free-in-roccat_read.patch
hsi-ssi_protocol-fix-potential-resource-leak-in-ssip.patch
usb-host-xhci-fix-potential-memory-leak-in-xhci_allo.patch
+++ /dev/null
-From c823974b49d5bc6f2b6743bb5a30c272bd178f4a Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Sat, 10 Sep 2022 20:36:13 -0400
-Subject: hid: topre: Add driver fixing report descriptor
-
-From: Harry Stern <harry@harrystern.net>
-
-[ Upstream commit a109d5c45b3d6728b9430716b915afbe16eef27c ]
-
-The Topre REALFORCE R2 firmware incorrectly reports that interface
-descriptor number 1, input report descriptor 2's events are array events
-rather than variable events. That particular report descriptor is used
-to report keypresses when there are more than 6 keys held at a time.
-This bug prevents events from this interface from being registered
-properly, so only 6 keypresses (from a different interface) can be
-registered at once, rather than full n-key rollover.
-
-This commit fixes the bug by setting the correct value in a report_fixup
-function.
-
-The original bug report can be found here:
-Link: https://gitlab.freedesktop.org/libinput/libinput/-/issues/804
-
-Thanks to Benjamin Tissoires for diagnosing the issue with the report
-descriptor.
-
-Signed-off-by: Harry Stern <harry@harrystern.net>
-Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
-Link: https://lore.kernel.org/r/20220911003614.297613-1-harry@harrystern.net
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/hid/Kconfig | 6 +++++
- drivers/hid/Makefile | 1 +
- drivers/hid/hid-ids.h | 3 +++
- drivers/hid/hid-topre.c | 49 +++++++++++++++++++++++++++++++++++++++++
- 4 files changed, 59 insertions(+)
- create mode 100644 drivers/hid/hid-topre.c
-
-diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
-index f8ad3b2be0bf..2dd5c7944019 100644
---- a/drivers/hid/Kconfig
-+++ b/drivers/hid/Kconfig
-@@ -1010,6 +1010,12 @@ config HID_TOPSEED
- Say Y if you have a TopSeed Cyberlink or BTC Emprex or Conceptronic
- CLLRCMCE remote control.
-
-+config HID_TOPRE
-+ tristate "Topre REALFORCE keyboards"
-+ depends on HID
-+ help
-+ Say Y for N-key rollover support on Topre REALFORCE R2 108 key keyboards.
-+
- config HID_THINGM
- tristate "ThingM blink(1) USB RGB LED"
- depends on HID
-diff --git a/drivers/hid/Makefile b/drivers/hid/Makefile
-index 4acb583c92a6..09830511909c 100644
---- a/drivers/hid/Makefile
-+++ b/drivers/hid/Makefile
-@@ -114,6 +114,7 @@ obj-$(CONFIG_HID_GREENASIA) += hid-gaff.o
- obj-$(CONFIG_HID_THRUSTMASTER) += hid-tmff.o
- obj-$(CONFIG_HID_TIVO) += hid-tivo.o
- obj-$(CONFIG_HID_TOPSEED) += hid-topseed.o
-+obj-$(CONFIG_HID_TOPRE) += hid-topre.o
- obj-$(CONFIG_HID_TWINHAN) += hid-twinhan.o
- obj-$(CONFIG_HID_U2FZERO) += hid-u2fzero.o
- hid-uclogic-objs := hid-uclogic-core.o \
-diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
-index bb096dfb7b36..ab439aa4c4cb 100644
---- a/drivers/hid/hid-ids.h
-+++ b/drivers/hid/hid-ids.h
-@@ -1166,6 +1166,9 @@
- #define USB_DEVICE_ID_TIVO_SLIDE 0x1201
- #define USB_DEVICE_ID_TIVO_SLIDE_PRO 0x1203
-
-+#define USB_VENDOR_ID_TOPRE 0x0853
-+#define USB_DEVICE_ID_TOPRE_REALFORCE_R2_108 0x0148
-+
- #define USB_VENDOR_ID_TOPSEED 0x0766
- #define USB_DEVICE_ID_TOPSEED_CYBERLINK 0x0204
-
-diff --git a/drivers/hid/hid-topre.c b/drivers/hid/hid-topre.c
-new file mode 100644
-index 000000000000..88a91cdad5f8
---- /dev/null
-+++ b/drivers/hid/hid-topre.c
-@@ -0,0 +1,49 @@
-+// SPDX-License-Identifier: GPL-2.0+
-+/*
-+ * HID driver for Topre REALFORCE Keyboards
-+ *
-+ * Copyright (c) 2022 Harry Stern <harry@harrystern.net>
-+ *
-+ * Based on the hid-macally driver
-+ */
-+
-+#include <linux/hid.h>
-+#include <linux/module.h>
-+
-+#include "hid-ids.h"
-+
-+MODULE_AUTHOR("Harry Stern <harry@harrystern.net>");
-+MODULE_DESCRIPTION("REALFORCE R2 Keyboard driver");
-+MODULE_LICENSE("GPL");
-+
-+/*
-+ * Fix the REALFORCE R2's non-boot interface's report descriptor to match the
-+ * events it's actually sending. It claims to send array events but is instead
-+ * sending variable events.
-+ */
-+static __u8 *topre_report_fixup(struct hid_device *hdev, __u8 *rdesc,
-+ unsigned int *rsize)
-+{
-+ if (*rsize >= 119 && rdesc[69] == 0x29 && rdesc[70] == 0xe7 &&
-+ rdesc[71] == 0x81 && rdesc[72] == 0x00) {
-+ hid_info(hdev,
-+ "fixing up Topre REALFORCE keyboard report descriptor\n");
-+ rdesc[72] = 0x02;
-+ }
-+ return rdesc;
-+}
-+
-+static const struct hid_device_id topre_id_table[] = {
-+ { HID_USB_DEVICE(USB_VENDOR_ID_TOPRE,
-+ USB_DEVICE_ID_TOPRE_REALFORCE_R2_108) },
-+ { }
-+};
-+MODULE_DEVICE_TABLE(hid, topre_id_table);
-+
-+static struct hid_driver topre_driver = {
-+ .name = "topre",
-+ .id_table = topre_id_table,
-+ .report_fixup = topre_report_fixup,
-+};
-+
-+module_hid_driver(topre_driver);
---
-2.35.1
-
bcache-fix-set_at_max_writeback_rate-for-multiple-at.patch
soundwire-cadence-don-t-overwrite-msg-buf-during-wri.patch
soundwire-intel-fix-error-handling-on-dai-registrati.patch
-hid-topre-add-driver-fixing-report-descriptor.patch
hid-roccat-fix-use-after-free-in-roccat_read.patch
hsi-ssi_protocol-fix-potential-resource-leak-in-ssip.patch
md-raid5-wait-for-md_sb_change_pending-in-raid5d.patch
+++ /dev/null
-From 0f32a4a8c436945c05f7051e889f273267bbc942 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Sat, 10 Sep 2022 20:36:13 -0400
-Subject: hid: topre: Add driver fixing report descriptor
-
-From: Harry Stern <harry@harrystern.net>
-
-[ Upstream commit a109d5c45b3d6728b9430716b915afbe16eef27c ]
-
-The Topre REALFORCE R2 firmware incorrectly reports that interface
-descriptor number 1, input report descriptor 2's events are array events
-rather than variable events. That particular report descriptor is used
-to report keypresses when there are more than 6 keys held at a time.
-This bug prevents events from this interface from being registered
-properly, so only 6 keypresses (from a different interface) can be
-registered at once, rather than full n-key rollover.
-
-This commit fixes the bug by setting the correct value in a report_fixup
-function.
-
-The original bug report can be found here:
-Link: https://gitlab.freedesktop.org/libinput/libinput/-/issues/804
-
-Thanks to Benjamin Tissoires for diagnosing the issue with the report
-descriptor.
-
-Signed-off-by: Harry Stern <harry@harrystern.net>
-Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
-Link: https://lore.kernel.org/r/20220911003614.297613-1-harry@harrystern.net
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/hid/Kconfig | 6 +++++
- drivers/hid/Makefile | 1 +
- drivers/hid/hid-ids.h | 3 +++
- drivers/hid/hid-topre.c | 49 +++++++++++++++++++++++++++++++++++++++++
- 4 files changed, 59 insertions(+)
- create mode 100644 drivers/hid/hid-topre.c
-
-diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
-index 9235ab7161e3..58fcc21bf146 100644
---- a/drivers/hid/Kconfig
-+++ b/drivers/hid/Kconfig
-@@ -1057,6 +1057,12 @@ config HID_TOPSEED
- Say Y if you have a TopSeed Cyberlink or BTC Emprex or Conceptronic
- CLLRCMCE remote control.
-
-+config HID_TOPRE
-+ tristate "Topre REALFORCE keyboards"
-+ depends on HID
-+ help
-+ Say Y for N-key rollover support on Topre REALFORCE R2 108 key keyboards.
-+
- config HID_THINGM
- tristate "ThingM blink(1) USB RGB LED"
- depends on HID
-diff --git a/drivers/hid/Makefile b/drivers/hid/Makefile
-index e29efcb1c040..1026ac9e8206 100644
---- a/drivers/hid/Makefile
-+++ b/drivers/hid/Makefile
-@@ -117,6 +117,7 @@ obj-$(CONFIG_HID_GREENASIA) += hid-gaff.o
- obj-$(CONFIG_HID_THRUSTMASTER) += hid-tmff.o hid-thrustmaster.o
- obj-$(CONFIG_HID_TIVO) += hid-tivo.o
- obj-$(CONFIG_HID_TOPSEED) += hid-topseed.o
-+obj-$(CONFIG_HID_TOPRE) += hid-topre.o
- obj-$(CONFIG_HID_TWINHAN) += hid-twinhan.o
- obj-$(CONFIG_HID_U2FZERO) += hid-u2fzero.o
- hid-uclogic-objs := hid-uclogic-core.o \
-diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
-index cb2b48d6915e..335b13251c0f 100644
---- a/drivers/hid/hid-ids.h
-+++ b/drivers/hid/hid-ids.h
-@@ -1198,6 +1198,9 @@
- #define USB_DEVICE_ID_TIVO_SLIDE 0x1201
- #define USB_DEVICE_ID_TIVO_SLIDE_PRO 0x1203
-
-+#define USB_VENDOR_ID_TOPRE 0x0853
-+#define USB_DEVICE_ID_TOPRE_REALFORCE_R2_108 0x0148
-+
- #define USB_VENDOR_ID_TOPSEED 0x0766
- #define USB_DEVICE_ID_TOPSEED_CYBERLINK 0x0204
-
-diff --git a/drivers/hid/hid-topre.c b/drivers/hid/hid-topre.c
-new file mode 100644
-index 000000000000..88a91cdad5f8
---- /dev/null
-+++ b/drivers/hid/hid-topre.c
-@@ -0,0 +1,49 @@
-+// SPDX-License-Identifier: GPL-2.0+
-+/*
-+ * HID driver for Topre REALFORCE Keyboards
-+ *
-+ * Copyright (c) 2022 Harry Stern <harry@harrystern.net>
-+ *
-+ * Based on the hid-macally driver
-+ */
-+
-+#include <linux/hid.h>
-+#include <linux/module.h>
-+
-+#include "hid-ids.h"
-+
-+MODULE_AUTHOR("Harry Stern <harry@harrystern.net>");
-+MODULE_DESCRIPTION("REALFORCE R2 Keyboard driver");
-+MODULE_LICENSE("GPL");
-+
-+/*
-+ * Fix the REALFORCE R2's non-boot interface's report descriptor to match the
-+ * events it's actually sending. It claims to send array events but is instead
-+ * sending variable events.
-+ */
-+static __u8 *topre_report_fixup(struct hid_device *hdev, __u8 *rdesc,
-+ unsigned int *rsize)
-+{
-+ if (*rsize >= 119 && rdesc[69] == 0x29 && rdesc[70] == 0xe7 &&
-+ rdesc[71] == 0x81 && rdesc[72] == 0x00) {
-+ hid_info(hdev,
-+ "fixing up Topre REALFORCE keyboard report descriptor\n");
-+ rdesc[72] = 0x02;
-+ }
-+ return rdesc;
-+}
-+
-+static const struct hid_device_id topre_id_table[] = {
-+ { HID_USB_DEVICE(USB_VENDOR_ID_TOPRE,
-+ USB_DEVICE_ID_TOPRE_REALFORCE_R2_108) },
-+ { }
-+};
-+MODULE_DEVICE_TABLE(hid, topre_id_table);
-+
-+static struct hid_driver topre_driver = {
-+ .name = "topre",
-+ .id_table = topre_id_table,
-+ .report_fixup = topre_report_fixup,
-+};
-+
-+module_hid_driver(topre_driver);
---
-2.35.1
-
bcache-fix-set_at_max_writeback_rate-for-multiple-at.patch
soundwire-cadence-don-t-overwrite-msg-buf-during-wri.patch
soundwire-intel-fix-error-handling-on-dai-registrati.patch
-hid-topre-add-driver-fixing-report-descriptor.patch
hid-roccat-fix-use-after-free-in-roccat_read.patch
hsi-ssi_protocol-fix-potential-resource-leak-in-ssip.patch
eventfd-guard-wake_up-in-eventfd-fs-calls-as-well.patch
+++ /dev/null
-From 7d19228b866f40098942fd1a466702f2282eb74d Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Sat, 10 Sep 2022 20:36:13 -0400
-Subject: hid: topre: Add driver fixing report descriptor
-
-From: Harry Stern <harry@harrystern.net>
-
-[ Upstream commit a109d5c45b3d6728b9430716b915afbe16eef27c ]
-
-The Topre REALFORCE R2 firmware incorrectly reports that interface
-descriptor number 1, input report descriptor 2's events are array events
-rather than variable events. That particular report descriptor is used
-to report keypresses when there are more than 6 keys held at a time.
-This bug prevents events from this interface from being registered
-properly, so only 6 keypresses (from a different interface) can be
-registered at once, rather than full n-key rollover.
-
-This commit fixes the bug by setting the correct value in a report_fixup
-function.
-
-The original bug report can be found here:
-Link: https://gitlab.freedesktop.org/libinput/libinput/-/issues/804
-
-Thanks to Benjamin Tissoires for diagnosing the issue with the report
-descriptor.
-
-Signed-off-by: Harry Stern <harry@harrystern.net>
-Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
-Link: https://lore.kernel.org/r/20220911003614.297613-1-harry@harrystern.net
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/hid/Kconfig | 6 +++++
- drivers/hid/Makefile | 1 +
- drivers/hid/hid-ids.h | 3 +++
- drivers/hid/hid-topre.c | 49 +++++++++++++++++++++++++++++++++++++++++
- 4 files changed, 59 insertions(+)
- create mode 100644 drivers/hid/hid-topre.c
-
-diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
-index 70da5931082f..37734fce88e4 100644
---- a/drivers/hid/Kconfig
-+++ b/drivers/hid/Kconfig
-@@ -1141,6 +1141,12 @@ config HID_TOPSEED
- Say Y if you have a TopSeed Cyberlink or BTC Emprex or Conceptronic
- CLLRCMCE remote control.
-
-+config HID_TOPRE
-+ tristate "Topre REALFORCE keyboards"
-+ depends on HID
-+ help
-+ Say Y for N-key rollover support on Topre REALFORCE R2 108 key keyboards.
-+
- config HID_THINGM
- tristate "ThingM blink(1) USB RGB LED"
- depends on HID
-diff --git a/drivers/hid/Makefile b/drivers/hid/Makefile
-index cac2cbe26d11..7870a3c9d802 100644
---- a/drivers/hid/Makefile
-+++ b/drivers/hid/Makefile
-@@ -123,6 +123,7 @@ obj-$(CONFIG_HID_GREENASIA) += hid-gaff.o
- obj-$(CONFIG_HID_THRUSTMASTER) += hid-tmff.o hid-thrustmaster.o
- obj-$(CONFIG_HID_TIVO) += hid-tivo.o
- obj-$(CONFIG_HID_TOPSEED) += hid-topseed.o
-+obj-$(CONFIG_HID_TOPRE) += hid-topre.o
- obj-$(CONFIG_HID_TWINHAN) += hid-twinhan.o
- obj-$(CONFIG_HID_U2FZERO) += hid-u2fzero.o
- hid-uclogic-objs := hid-uclogic-core.o \
-diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
-index bc550e884f37..28cf838c8399 100644
---- a/drivers/hid/hid-ids.h
-+++ b/drivers/hid/hid-ids.h
-@@ -1231,6 +1231,9 @@
- #define USB_DEVICE_ID_TIVO_SLIDE 0x1201
- #define USB_DEVICE_ID_TIVO_SLIDE_PRO 0x1203
-
-+#define USB_VENDOR_ID_TOPRE 0x0853
-+#define USB_DEVICE_ID_TOPRE_REALFORCE_R2_108 0x0148
-+
- #define USB_VENDOR_ID_TOPSEED 0x0766
- #define USB_DEVICE_ID_TOPSEED_CYBERLINK 0x0204
-
-diff --git a/drivers/hid/hid-topre.c b/drivers/hid/hid-topre.c
-new file mode 100644
-index 000000000000..88a91cdad5f8
---- /dev/null
-+++ b/drivers/hid/hid-topre.c
-@@ -0,0 +1,49 @@
-+// SPDX-License-Identifier: GPL-2.0+
-+/*
-+ * HID driver for Topre REALFORCE Keyboards
-+ *
-+ * Copyright (c) 2022 Harry Stern <harry@harrystern.net>
-+ *
-+ * Based on the hid-macally driver
-+ */
-+
-+#include <linux/hid.h>
-+#include <linux/module.h>
-+
-+#include "hid-ids.h"
-+
-+MODULE_AUTHOR("Harry Stern <harry@harrystern.net>");
-+MODULE_DESCRIPTION("REALFORCE R2 Keyboard driver");
-+MODULE_LICENSE("GPL");
-+
-+/*
-+ * Fix the REALFORCE R2's non-boot interface's report descriptor to match the
-+ * events it's actually sending. It claims to send array events but is instead
-+ * sending variable events.
-+ */
-+static __u8 *topre_report_fixup(struct hid_device *hdev, __u8 *rdesc,
-+ unsigned int *rsize)
-+{
-+ if (*rsize >= 119 && rdesc[69] == 0x29 && rdesc[70] == 0xe7 &&
-+ rdesc[71] == 0x81 && rdesc[72] == 0x00) {
-+ hid_info(hdev,
-+ "fixing up Topre REALFORCE keyboard report descriptor\n");
-+ rdesc[72] = 0x02;
-+ }
-+ return rdesc;
-+}
-+
-+static const struct hid_device_id topre_id_table[] = {
-+ { HID_USB_DEVICE(USB_VENDOR_ID_TOPRE,
-+ USB_DEVICE_ID_TOPRE_REALFORCE_R2_108) },
-+ { }
-+};
-+MODULE_DEVICE_TABLE(hid, topre_id_table);
-+
-+static struct hid_driver topre_driver = {
-+ .name = "topre",
-+ .id_table = topre_id_table,
-+ .report_fixup = topre_report_fixup,
-+};
-+
-+module_hid_driver(topre_driver);
---
-2.35.1
-
bcache-fix-set_at_max_writeback_rate-for-multiple-at.patch
soundwire-cadence-don-t-overwrite-msg-buf-during-wri.patch
soundwire-intel-fix-error-handling-on-dai-registrati.patch
-hid-topre-add-driver-fixing-report-descriptor.patch
hid-roccat-fix-use-after-free-in-roccat_read.patch
hsi-ssi_protocol-fix-potential-resource-leak-in-ssip.patch
hid-nintendo-check-analog-user-calibration-for-plaus.patch
+++ /dev/null
-From 7e62b8dc1be82283773f4b3acefd2c875019a12f Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Sat, 10 Sep 2022 20:36:13 -0400
-Subject: hid: topre: Add driver fixing report descriptor
-
-From: Harry Stern <harry@harrystern.net>
-
-[ Upstream commit a109d5c45b3d6728b9430716b915afbe16eef27c ]
-
-The Topre REALFORCE R2 firmware incorrectly reports that interface
-descriptor number 1, input report descriptor 2's events are array events
-rather than variable events. That particular report descriptor is used
-to report keypresses when there are more than 6 keys held at a time.
-This bug prevents events from this interface from being registered
-properly, so only 6 keypresses (from a different interface) can be
-registered at once, rather than full n-key rollover.
-
-This commit fixes the bug by setting the correct value in a report_fixup
-function.
-
-The original bug report can be found here:
-Link: https://gitlab.freedesktop.org/libinput/libinput/-/issues/804
-
-Thanks to Benjamin Tissoires for diagnosing the issue with the report
-descriptor.
-
-Signed-off-by: Harry Stern <harry@harrystern.net>
-Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
-Link: https://lore.kernel.org/r/20220911003614.297613-1-harry@harrystern.net
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/hid/Kconfig | 6 +++++
- drivers/hid/Makefile | 1 +
- drivers/hid/hid-ids.h | 3 +++
- drivers/hid/hid-topre.c | 49 +++++++++++++++++++++++++++++++++++++++++
- 4 files changed, 59 insertions(+)
- create mode 100644 drivers/hid/hid-topre.c
-
-diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
-index 5169a38ee47a..56315a0be78a 100644
---- a/drivers/hid/Kconfig
-+++ b/drivers/hid/Kconfig
-@@ -992,6 +992,12 @@ config HID_TOPSEED
- Say Y if you have a TopSeed Cyberlink or BTC Emprex or Conceptronic
- CLLRCMCE remote control.
-
-+config HID_TOPRE
-+ tristate "Topre REALFORCE keyboards"
-+ depends on HID
-+ help
-+ Say Y for N-key rollover support on Topre REALFORCE R2 108 key keyboards.
-+
- config HID_THINGM
- tristate "ThingM blink(1) USB RGB LED"
- depends on HID
-diff --git a/drivers/hid/Makefile b/drivers/hid/Makefile
-index 0c03308cfb08..bb618c74c442 100644
---- a/drivers/hid/Makefile
-+++ b/drivers/hid/Makefile
-@@ -110,6 +110,7 @@ obj-$(CONFIG_HID_GREENASIA) += hid-gaff.o
- obj-$(CONFIG_HID_THRUSTMASTER) += hid-tmff.o
- obj-$(CONFIG_HID_TIVO) += hid-tivo.o
- obj-$(CONFIG_HID_TOPSEED) += hid-topseed.o
-+obj-$(CONFIG_HID_TOPRE) += hid-topre.o
- obj-$(CONFIG_HID_TWINHAN) += hid-twinhan.o
- obj-$(CONFIG_HID_U2FZERO) += hid-u2fzero.o
- hid-uclogic-objs := hid-uclogic-core.o \
-diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
-index c587a77d493c..fbceead99b3c 100644
---- a/drivers/hid/hid-ids.h
-+++ b/drivers/hid/hid-ids.h
-@@ -1156,6 +1156,9 @@
- #define USB_DEVICE_ID_TIVO_SLIDE 0x1201
- #define USB_DEVICE_ID_TIVO_SLIDE_PRO 0x1203
-
-+#define USB_VENDOR_ID_TOPRE 0x0853
-+#define USB_DEVICE_ID_TOPRE_REALFORCE_R2_108 0x0148
-+
- #define USB_VENDOR_ID_TOPSEED 0x0766
- #define USB_DEVICE_ID_TOPSEED_CYBERLINK 0x0204
-
-diff --git a/drivers/hid/hid-topre.c b/drivers/hid/hid-topre.c
-new file mode 100644
-index 000000000000..88a91cdad5f8
---- /dev/null
-+++ b/drivers/hid/hid-topre.c
-@@ -0,0 +1,49 @@
-+// SPDX-License-Identifier: GPL-2.0+
-+/*
-+ * HID driver for Topre REALFORCE Keyboards
-+ *
-+ * Copyright (c) 2022 Harry Stern <harry@harrystern.net>
-+ *
-+ * Based on the hid-macally driver
-+ */
-+
-+#include <linux/hid.h>
-+#include <linux/module.h>
-+
-+#include "hid-ids.h"
-+
-+MODULE_AUTHOR("Harry Stern <harry@harrystern.net>");
-+MODULE_DESCRIPTION("REALFORCE R2 Keyboard driver");
-+MODULE_LICENSE("GPL");
-+
-+/*
-+ * Fix the REALFORCE R2's non-boot interface's report descriptor to match the
-+ * events it's actually sending. It claims to send array events but is instead
-+ * sending variable events.
-+ */
-+static __u8 *topre_report_fixup(struct hid_device *hdev, __u8 *rdesc,
-+ unsigned int *rsize)
-+{
-+ if (*rsize >= 119 && rdesc[69] == 0x29 && rdesc[70] == 0xe7 &&
-+ rdesc[71] == 0x81 && rdesc[72] == 0x00) {
-+ hid_info(hdev,
-+ "fixing up Topre REALFORCE keyboard report descriptor\n");
-+ rdesc[72] = 0x02;
-+ }
-+ return rdesc;
-+}
-+
-+static const struct hid_device_id topre_id_table[] = {
-+ { HID_USB_DEVICE(USB_VENDOR_ID_TOPRE,
-+ USB_DEVICE_ID_TOPRE_REALFORCE_R2_108) },
-+ { }
-+};
-+MODULE_DEVICE_TABLE(hid, topre_id_table);
-+
-+static struct hid_driver topre_driver = {
-+ .name = "topre",
-+ .id_table = topre_id_table,
-+ .report_fixup = topre_report_fixup,
-+};
-+
-+module_hid_driver(topre_driver);
---
-2.35.1
-
staging-vt6655-fix-potential-memory-leak.patch
ata-libahci_platform-sanity-check-the-dt-child-nodes.patch
bcache-fix-set_at_max_writeback_rate-for-multiple-at.patch
-hid-topre-add-driver-fixing-report-descriptor.patch
hid-roccat-fix-use-after-free-in-roccat_read.patch
hsi-ssi_protocol-fix-potential-resource-leak-in-ssip.patch
md-raid5-wait-for-md_sb_change_pending-in-raid5d.patch