+++ /dev/null
-From 81d3e2ea802894683efb295c26513b0414a35cef Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 27 May 2025 22:13:17 +0530
-Subject: HID: multitouch: add device ID for Apple Touch Bar
-
-From: Kerem Karabay <kekrby@gmail.com>
-
-[ Upstream commit 2c31ec923c323229566d799267000f8123af4449 ]
-
-This patch adds the device ID of Apple Touch Bar found on x86 MacBook Pros
-to the hid-multitouch driver.
-
-Note that this is device ID is for T2 Macs. Testing on T1 Macs would be
-appreciated.
-
-Signed-off-by: Kerem Karabay <kekrby@gmail.com>
-Co-developed-by: Aditya Garg <gargaditya08@live.com>
-Signed-off-by: Aditya Garg <gargaditya08@live.com>
-Signed-off-by: Jiri Kosina <jkosina@suse.com>
-Stable-dep-of: a2e70a89fa58 ("HID: multitouch: new class MT_CLS_EGALAX_P80H84")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/hid/Kconfig | 1 +
- drivers/hid/hid-multitouch.c | 17 +++++++++++++++++
- 2 files changed, 18 insertions(+)
-
-diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig
-index f283f271d87e7..586de50a26267 100644
---- a/drivers/hid/Kconfig
-+++ b/drivers/hid/Kconfig
-@@ -730,6 +730,7 @@ config HID_MULTITOUCH
- Say Y here if you have one of the following devices:
- - 3M PCT touch screens
- - ActionStar dual touch panels
-+ - Apple Touch Bar on x86 MacBook Pros
- - Atmel panels
- - Cando dual touch panels
- - Chunghwa panels
-diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
-index b7c2640a61b4a..5aed9e320d306 100644
---- a/drivers/hid/hid-multitouch.c
-+++ b/drivers/hid/hid-multitouch.c
-@@ -216,6 +216,7 @@ static void mt_post_parse(struct mt_device *td, struct mt_application *app);
- #define MT_CLS_GOOGLE 0x0111
- #define MT_CLS_RAZER_BLADE_STEALTH 0x0112
- #define MT_CLS_SMART_TECH 0x0113
-+#define MT_CLS_APPLE_TOUCHBAR 0x0114
- #define MT_CLS_SIS 0x0457
-
- #define MT_DEFAULT_MAXCONTACT 10
-@@ -402,6 +403,12 @@ static const struct mt_class mt_classes[] = {
- MT_QUIRK_CONTACT_CNT_ACCURATE |
- MT_QUIRK_SEPARATE_APP_REPORT,
- },
-+ { .name = MT_CLS_APPLE_TOUCHBAR,
-+ .quirks = MT_QUIRK_HOVERING |
-+ MT_QUIRK_SLOT_IS_CONTACTID_MINUS_ONE |
-+ MT_QUIRK_APPLE_TOUCHBAR,
-+ .maxcontacts = 11,
-+ },
- { .name = MT_CLS_SIS,
- .quirks = MT_QUIRK_NOT_SEEN_MEANS_UP |
- MT_QUIRK_ALWAYS_VALID |
-@@ -1842,6 +1849,11 @@ static int mt_probe(struct hid_device *hdev, const struct hid_device_id *id)
- if (ret != 0)
- return ret;
-
-+ if (mtclass->name == MT_CLS_APPLE_TOUCHBAR &&
-+ !hid_find_field(hdev, HID_INPUT_REPORT,
-+ HID_DG_TOUCHPAD, HID_DG_TRANSDUCER_INDEX))
-+ return -ENODEV;
-+
- if (mtclass->quirks & MT_QUIRK_FIX_CONST_CONTACT_ID)
- mt_fix_const_fields(hdev, HID_DG_CONTACTID);
-
-@@ -2332,6 +2344,11 @@ static const struct hid_device_id mt_devices[] = {
- MT_USB_DEVICE(USB_VENDOR_ID_XIROKU,
- USB_DEVICE_ID_XIROKU_CSR2) },
-
-+ /* Apple Touch Bar */
-+ { .driver_data = MT_CLS_APPLE_TOUCHBAR,
-+ HID_USB_DEVICE(USB_VENDOR_ID_APPLE,
-+ USB_DEVICE_ID_APPLE_TOUCHBAR_DISPLAY) },
-+
- /* Google MT devices */
- { .driver_data = MT_CLS_GOOGLE,
- HID_DEVICE(HID_BUS_ANY, HID_GROUP_ANY, USB_VENDOR_ID_GOOGLE,
---
-2.51.0
-
Signed-off-by: Jiri Kosina <jkosina@suse.com>
Stable-dep-of: a2e70a89fa58 ("HID: multitouch: new class MT_CLS_EGALAX_P80H84")
Signed-off-by: Sasha Levin <sashal@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
- drivers/hid/hid-ids.h | 1 +
- drivers/hid/hid-multitouch.c | 72 ++++++++++++++++++++++++++++++++++++
+ drivers/hid/hid-ids.h | 1
+ drivers/hid/hid-multitouch.c | 72 +++++++++++++++++++++++++++++++++++++++++++
2 files changed, 73 insertions(+)
-diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
-index dfa39a37405e3..0a65490dfcb43 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -832,6 +832,7 @@
#define USB_DEVICE_ID_LENOVO_OPTICAL_USB_MOUSE_600E 0x600e
#define USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_608D 0x608d
#define USB_DEVICE_ID_LENOVO_PIXART_USB_MOUSE_6019 0x6019
-diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
-index 5aed9e320d306..15a3d1de1becd 100644
--- a/drivers/hid/hid-multitouch.c
+++ b/drivers/hid/hid-multitouch.c
-@@ -73,6 +73,7 @@ MODULE_LICENSE("GPL");
+@@ -72,6 +72,7 @@ MODULE_LICENSE("GPL");
+ #define MT_QUIRK_FORCE_MULTI_INPUT BIT(20)
#define MT_QUIRK_DISABLE_WAKEUP BIT(21)
#define MT_QUIRK_ORIENTATION_INVERT BIT(22)
- #define MT_QUIRK_APPLE_TOUCHBAR BIT(23)
+#define MT_QUIRK_YOGABOOK9I BIT(24)
#define MT_INPUTMODE_TOUCHSCREEN 0x02
#define MT_INPUTMODE_TOUCHPAD 0x03
-@@ -217,6 +218,7 @@ static void mt_post_parse(struct mt_device *td, struct mt_application *app);
+@@ -215,6 +216,7 @@ static void mt_post_parse(struct mt_devi
+ #define MT_CLS_GOOGLE 0x0111
#define MT_CLS_RAZER_BLADE_STEALTH 0x0112
#define MT_CLS_SMART_TECH 0x0113
- #define MT_CLS_APPLE_TOUCHBAR 0x0114
+#define MT_CLS_YOGABOOK9I 0x0115
#define MT_CLS_SIS 0x0457
#define MT_DEFAULT_MAXCONTACT 10
-@@ -413,6 +415,14 @@ static const struct mt_class mt_classes[] = {
- .quirks = MT_QUIRK_NOT_SEEN_MEANS_UP |
+@@ -406,6 +408,14 @@ static const struct mt_class mt_classes[
MT_QUIRK_ALWAYS_VALID |
MT_QUIRK_CONTACT_CNT_ACCURATE,
-+ },
+ },
+ { .name = MT_CLS_YOGABOOK9I,
+ .quirks = MT_QUIRK_ALWAYS_VALID |
+ MT_QUIRK_FORCE_MULTI_INPUT |
+ MT_QUIRK_HOVERING |
+ MT_QUIRK_YOGABOOK9I,
+ .export_all_inputs = true
- },
++ },
{ }
};
-@@ -1514,6 +1524,38 @@ static void mt_report(struct hid_device *hid, struct hid_report *report)
+
+@@ -1493,6 +1503,38 @@ static void mt_report(struct hid_device
if (rdata && rdata->is_mt_collection)
return mt_touch_report(hid, rdata);
if (field && field->hidinput && field->hidinput->input)
input_sync(field->hidinput->input);
}
-@@ -1704,6 +1746,30 @@ static int mt_input_configured(struct hid_device *hdev, struct hid_input *hi)
+@@ -1683,6 +1725,30 @@ static int mt_input_configured(struct hi
break;
}
if (suffix) {
hi->input->name = devm_kasprintf(&hdev->dev, GFP_KERNEL,
"%s %s", hdev->name, suffix);
-@@ -2186,6 +2252,12 @@ static const struct hid_device_id mt_devices[] = {
+@@ -2160,6 +2226,12 @@ static const struct hid_device_id mt_dev
USB_VENDOR_ID_LENOVO,
USB_DEVICE_ID_LENOVO_X12_TAB2) },
/* Logitech devices */
{ .driver_data = MT_CLS_NSMU,
HID_DEVICE(BUS_BLUETOOTH, HID_GROUP_MULTITOUCH_WIN_8,
---
-2.51.0
-
+++ /dev/null
-From 43affba0421fe1a9cc36b256cbec6d6001a276c8 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 27 May 2025 22:13:13 +0530
-Subject: HID: multitouch: Get the contact ID from HID_DG_TRANSDUCER_INDEX
- fields in case of Apple Touch Bar
-
-From: Kerem Karabay <kekrby@gmail.com>
-
-[ Upstream commit f41d736acc039d86512951f4e874b0f5e666babf ]
-
-In Apple Touch Bar, the contact ID is contained in fields with the
-HID_DG_TRANSDUCER_INDEX usage rather than HID_DG_CONTACTID, thus differing
-from the HID spec. Add a quirk for the same.
-
-Acked-by: Benjamin Tissoires <bentiss@kernel.org>
-Signed-off-by: Kerem Karabay <kekrby@gmail.com>
-Co-developed-by: Aditya Garg <gargaditya08@live.com>
-Signed-off-by: Aditya Garg <gargaditya08@live.com>
-Signed-off-by: Jiri Kosina <jkosina@suse.com>
-Stable-dep-of: a2e70a89fa58 ("HID: multitouch: new class MT_CLS_EGALAX_P80H84")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/hid/hid-multitouch.c | 16 +++++++++++++++-
- 1 file changed, 15 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
-index c3a914458358c..b7c2640a61b4a 100644
---- a/drivers/hid/hid-multitouch.c
-+++ b/drivers/hid/hid-multitouch.c
-@@ -72,6 +72,7 @@ MODULE_LICENSE("GPL");
- #define MT_QUIRK_FORCE_MULTI_INPUT BIT(20)
- #define MT_QUIRK_DISABLE_WAKEUP BIT(21)
- #define MT_QUIRK_ORIENTATION_INVERT BIT(22)
-+#define MT_QUIRK_APPLE_TOUCHBAR BIT(23)
-
- #define MT_INPUTMODE_TOUCHSCREEN 0x02
- #define MT_INPUTMODE_TOUCHPAD 0x03
-@@ -621,6 +622,7 @@ static struct mt_application *mt_find_application(struct mt_device *td,
- static struct mt_report_data *mt_allocate_report_data(struct mt_device *td,
- struct hid_report *report)
- {
-+ struct mt_class *cls = &td->mtclass;
- struct mt_report_data *rdata;
- struct hid_field *field;
- int r, n;
-@@ -645,7 +647,11 @@ static struct mt_report_data *mt_allocate_report_data(struct mt_device *td,
-
- if (field->logical == HID_DG_FINGER || td->hdev->group != HID_GROUP_MULTITOUCH_WIN_8) {
- for (n = 0; n < field->report_count; n++) {
-- if (field->usage[n].hid == HID_DG_CONTACTID) {
-+ unsigned int hid = field->usage[n].hid;
-+
-+ if (hid == HID_DG_CONTACTID ||
-+ (cls->quirks & MT_QUIRK_APPLE_TOUCHBAR &&
-+ hid == HID_DG_TRANSDUCER_INDEX)) {
- rdata->is_mt_collection = true;
- break;
- }
-@@ -823,6 +829,14 @@ static int mt_touch_input_mapping(struct hid_device *hdev, struct hid_input *hi,
- EV_KEY, BTN_TOUCH);
- MT_STORE_FIELD(tip_state);
- return 1;
-+ case HID_DG_TRANSDUCER_INDEX:
-+ /*
-+ * Contact ID in case of Apple Touch Bars is contained
-+ * in fields with HID_DG_TRANSDUCER_INDEX usage.
-+ */
-+ if (!(cls->quirks & MT_QUIRK_APPLE_TOUCHBAR))
-+ return 0;
-+ fallthrough;
- case HID_DG_CONTACTID:
- MT_STORE_FIELD(contactid);
- app->touches_by_report++;
---
-2.51.0
-
Signed-off-by: Jiri Kosina <jkosina@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
- drivers/hid/hid-multitouch.c | 11 +++++++++--
+ drivers/hid/hid-multitouch.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
-diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
-index 15a3d1de1becd..acf43847d862d 100644
--- a/drivers/hid/hid-multitouch.c
+++ b/drivers/hid/hid-multitouch.c
-@@ -219,6 +219,7 @@ static void mt_post_parse(struct mt_device *td, struct mt_application *app);
+@@ -217,6 +217,7 @@ static void mt_post_parse(struct mt_devi
+ #define MT_CLS_RAZER_BLADE_STEALTH 0x0112
#define MT_CLS_SMART_TECH 0x0113
- #define MT_CLS_APPLE_TOUCHBAR 0x0114
#define MT_CLS_YOGABOOK9I 0x0115
+#define MT_CLS_EGALAX_P80H84 0x0116
#define MT_CLS_SIS 0x0457
#define MT_DEFAULT_MAXCONTACT 10
-@@ -424,6 +425,11 @@ static const struct mt_class mt_classes[] = {
+@@ -416,6 +417,11 @@ static const struct mt_class mt_classes[
MT_QUIRK_YOGABOOK9I,
.export_all_inputs = true
},
{ }
};
-@@ -2121,8 +2127,9 @@ static const struct hid_device_id mt_devices[] = {
+@@ -2095,8 +2101,9 @@ static const struct hid_device_id mt_dev
{ .driver_data = MT_CLS_EGALAX_SERIAL,
MT_USB_DEVICE(USB_VENDOR_ID_DWAV,
USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_C000) },
USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_C002) },
/* Elan devices */
---
-2.51.0
-
+++ /dev/null
-From e1ad41f222bbf8b385560106f7f3980b03349d18 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 8 Jul 2025 10:25:26 -0700
-Subject: KVM: arm64: Advertise support for FEAT_SCTLR2
-
-From: Oliver Upton <oliver.upton@linux.dev>
-
-[ Upstream commit 075c2dc7367e7e80d83adae8db597e48ceb7ba94 ]
-
-Everything is in place to handle the additional state for SCTLR2_ELx,
-which is all that FEAT_SCTLR2 implies.
-
-Reviewed-by: Marc Zyngier <maz@kernel.org>
-Link: https://lore.kernel.org/r/20250708172532.1699409-22-oliver.upton@linux.dev
-Signed-off-by: Oliver Upton <oliver.upton@linux.dev>
-Stable-dep-of: f66857bafd4f ("KVM: arm64: Hide S1POE from guests when not supported by the host")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- arch/arm64/kvm/sys_regs.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c
-index 5c09c788aaa61..784603a355487 100644
---- a/arch/arm64/kvm/sys_regs.c
-+++ b/arch/arm64/kvm/sys_regs.c
-@@ -1559,8 +1559,10 @@ static u64 __kvm_read_sanitised_id_reg(const struct kvm_vcpu *vcpu,
- val &= ~ID_AA64MMFR2_EL1_CCIDX_MASK;
- break;
- case SYS_ID_AA64MMFR3_EL1:
-- val &= ID_AA64MMFR3_EL1_TCRX | ID_AA64MMFR3_EL1_S1POE |
-- ID_AA64MMFR3_EL1_S1PIE;
-+ val &= ID_AA64MMFR3_EL1_TCRX |
-+ ID_AA64MMFR3_EL1_SCTLRX |
-+ ID_AA64MMFR3_EL1_S1POE |
-+ ID_AA64MMFR3_EL1_S1PIE;
- break;
- case SYS_ID_MMFR4_EL1:
- val &= ~ARM64_FEATURE_MASK(ID_MMFR4_EL1_CCIDX);
-@@ -2521,6 +2523,7 @@ static const struct sys_reg_desc sys_reg_descs[] = {
- ID_AA64MMFR2_EL1_NV |
- ID_AA64MMFR2_EL1_CCIDX)),
- ID_WRITABLE(ID_AA64MMFR3_EL1, (ID_AA64MMFR3_EL1_TCRX |
-+ ID_AA64MMFR3_EL1_SCTLRX |
- ID_AA64MMFR3_EL1_S1PIE |
- ID_AA64MMFR3_EL1_S1POE)),
- ID_SANITISED(ID_AA64MMFR4_EL1),
---
-2.51.0
-
Signed-off-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
- arch/arm64/kvm/sys_regs.c | 3 +++
+ arch/arm64/kvm/sys_regs.c | 3 +++
1 file changed, 3 insertions(+)
-diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c
-index 784603a355487..a76b3182e0917 100644
--- a/arch/arm64/kvm/sys_regs.c
+++ b/arch/arm64/kvm/sys_regs.c
-@@ -1563,6 +1563,9 @@ static u64 __kvm_read_sanitised_id_reg(const struct kvm_vcpu *vcpu,
- ID_AA64MMFR3_EL1_SCTLRX |
- ID_AA64MMFR3_EL1_S1POE |
- ID_AA64MMFR3_EL1_S1PIE;
+@@ -1561,6 +1561,9 @@ static u64 __kvm_read_sanitised_id_reg(c
+ case SYS_ID_AA64MMFR3_EL1:
+ val &= ID_AA64MMFR3_EL1_TCRX | ID_AA64MMFR3_EL1_S1POE |
+ ID_AA64MMFR3_EL1_S1PIE;
+
+ if (!system_supports_poe())
+ val &= ~ID_AA64MMFR3_EL1_S1POE;
break;
case SYS_ID_MMFR4_EL1:
val &= ~ARM64_FEATURE_MASK(ID_MMFR4_EL1_CCIDX);
---
-2.51.0
-
drm-vmwgfx-fix-invalid-kref_put-callback-in-vmw_bo_d.patch
drm-vmwgfx-return-the-correct-value-in-vmw_translate.patch
drm-logicvc-fix-device-node-reference-leak-in-logicv.patch
-kvm-arm64-advertise-support-for-feat_sctlr2.patch
kvm-arm64-hide-s1poe-from-guests-when-not-supported-.patch
irqchip-sifive-plic-fix-frozen-interrupt-due-to-affi.patch
scsi-lpfc-properly-set-wc-for-dpp-mapping.patch
pinctrl-equilibrium-rename-irq_chip-function-callbac.patch
pinctrl-equilibrium-fix-warning-trace-on-load.patch
platform-x86-thinkpad_acpi-fix-errors-reading-batter.patch
-hid-multitouch-get-the-contact-id-from-hid_dg_transd.patch
-hid-multitouch-add-device-id-for-apple-touch-bar.patch
hid-multitouch-add-quirks-for-lenovo-yoga-book-9i.patch
hid-multitouch-new-class-mt_cls_egalax_p80h84.patch
pinctrl-cirrus-cs42l43-fix-double-put-in-cs42l43_pin.patch