You've already forked linux-t2-patches
mirror of
https://github.com/t2linux/linux-t2-patches.git
synced 2026-04-30 13:52:11 -07:00
6.17
This commit is contained in:
@@ -1,69 +0,0 @@
|
|||||||
From 0b4c05ff73f1f61ecdae7ea99217fc4371573c4c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kerem Karabay <kekrby@gmail.com>
|
|
||||||
Date: Tue, 27 May 2025 22:13:13 +0530
|
|
||||||
Subject: [PATCH 1/5] HID: multitouch: Get the contact ID from
|
|
||||||
HID_DG_TRANSDUCER_INDEX fields in case of Apple Touch Bar
|
|
||||||
|
|
||||||
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>
|
|
||||||
---
|
|
||||||
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 7ac8e16e6..2788a081f 100644
|
|
||||||
--- a/drivers/hid/hid-multitouch.c
|
|
||||||
+++ b/drivers/hid/hid-multitouch.c
|
|
||||||
@@ -73,6 +73,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
|
|
||||||
@@ -625,6 +626,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;
|
|
||||||
@@ -649,7 +651,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;
|
|
||||||
}
|
|
||||||
@@ -827,6 +833,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.49.0
|
|
||||||
|
|
||||||
@@ -1,55 +0,0 @@
|
|||||||
From 82c4b9ce599e240935c9c410a9c4527d0a62bff7 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kerem Karabay <kekrby@gmail.com>
|
|
||||||
Date: Tue, 27 May 2025 22:13:14 +0530
|
|
||||||
Subject: [PATCH 2/5] HID: multitouch: support getting the tip state from
|
|
||||||
HID_DG_TOUCH fields in Apple Touch Bar
|
|
||||||
|
|
||||||
In Apple Touch Bar, the tip state is contained in fields with the
|
|
||||||
HID_DG_TOUCH usage. This feature is gated by a quirk in order to
|
|
||||||
prevent breaking other devices, see commit c2ef8f21ea8f
|
|
||||||
("HID: multitouch: add support for trackpads").
|
|
||||||
|
|
||||||
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>
|
|
||||||
---
|
|
||||||
drivers/hid/hid-multitouch.c | 15 +++++++++++----
|
|
||||||
1 file changed, 11 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
|
|
||||||
index 2788a081f..99ecf6c8e 100644
|
|
||||||
--- a/drivers/hid/hid-multitouch.c
|
|
||||||
+++ b/drivers/hid/hid-multitouch.c
|
|
||||||
@@ -827,6 +827,17 @@ static int mt_touch_input_mapping(struct hid_device *hdev, struct hid_input *hi,
|
|
||||||
|
|
||||||
MT_STORE_FIELD(confidence_state);
|
|
||||||
return 1;
|
|
||||||
+ case HID_DG_TOUCH:
|
|
||||||
+ /*
|
|
||||||
+ * Legacy devices use TIPSWITCH and not TOUCH.
|
|
||||||
+ * One special case here is of the Apple Touch Bars.
|
|
||||||
+ * In these devices, the tip state is contained in
|
|
||||||
+ * fields with the HID_DG_TOUCH usage.
|
|
||||||
+ * Let's just ignore this field for other devices.
|
|
||||||
+ */
|
|
||||||
+ if (!(cls->quirks & MT_QUIRK_APPLE_TOUCHBAR))
|
|
||||||
+ return -1;
|
|
||||||
+ fallthrough;
|
|
||||||
case HID_DG_TIPSWITCH:
|
|
||||||
if (field->application != HID_GD_SYSTEM_MULTIAXIS)
|
|
||||||
input_set_capability(hi->input,
|
|
||||||
@@ -897,10 +908,6 @@ static int mt_touch_input_mapping(struct hid_device *hdev, struct hid_input *hi,
|
|
||||||
case HID_DG_CONTACTMAX:
|
|
||||||
/* contact max are global to the report */
|
|
||||||
return -1;
|
|
||||||
- case HID_DG_TOUCH:
|
|
||||||
- /* Legacy devices use TIPSWITCH and not TOUCH.
|
|
||||||
- * Let's just ignore this field. */
|
|
||||||
- return -1;
|
|
||||||
}
|
|
||||||
/* let hid-input decide for the others */
|
|
||||||
return 0;
|
|
||||||
--
|
|
||||||
2.49.0
|
|
||||||
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
From 075eeea99fd4fe17ff5ce506fe429493fd5f8a7f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kerem Karabay <kekrby@gmail.com>
|
|
||||||
Date: Tue, 27 May 2025 22:13:15 +0530
|
|
||||||
Subject: [PATCH 3/5] HID: multitouch: take cls->maxcontacts into account for
|
|
||||||
Apple Touch Bar even without a HID_DG_CONTACTMAX field
|
|
||||||
|
|
||||||
In Apple Touch Bar, the HID_DG_CONTACTMAX is not present, but the maximum
|
|
||||||
contact count is still greater than the default. Add quirks 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>
|
|
||||||
---
|
|
||||||
drivers/hid/hid-multitouch.c | 7 +++++++
|
|
||||||
1 file changed, 7 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
|
|
||||||
index 99ecf6c8e..f71500d1f 100644
|
|
||||||
--- a/drivers/hid/hid-multitouch.c
|
|
||||||
+++ b/drivers/hid/hid-multitouch.c
|
|
||||||
@@ -1335,6 +1335,13 @@ static int mt_touch_input_configured(struct hid_device *hdev,
|
|
||||||
struct input_dev *input = hi->input;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
+ * HID_DG_CONTACTMAX field is not present on Apple Touch Bars,
|
|
||||||
+ * but the maximum contact count is greater than the default.
|
|
||||||
+ */
|
|
||||||
+ if (cls->quirks & MT_QUIRK_APPLE_TOUCHBAR && cls->maxcontacts)
|
|
||||||
+ td->maxcontacts = cls->maxcontacts;
|
|
||||||
+
|
|
||||||
if (!td->maxcontacts)
|
|
||||||
td->maxcontacts = MT_DEFAULT_MAXCONTACT;
|
|
||||||
|
|
||||||
--
|
|
||||||
2.49.0
|
|
||||||
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
From a6c0007592c20a54d4cd68abe26ded40e0023518 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kerem Karabay <kekrby@gmail.com>
|
|
||||||
Date: Tue, 27 May 2025 22:13:16 +0530
|
|
||||||
Subject: [PATCH 4/5] HID: multitouch: specify that Apple Touch Bar is direct
|
|
||||||
|
|
||||||
Currently the driver determines the device type based on the
|
|
||||||
application, but this value is not reliable on Apple Touch Bar, where
|
|
||||||
the application is HID_DG_TOUCHPAD even though this device is direct,
|
|
||||||
so 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>
|
|
||||||
---
|
|
||||||
drivers/hid/hid-multitouch.c | 7 +++++++
|
|
||||||
1 file changed, 7 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
|
|
||||||
index f71500d1f..81c02138f 100644
|
|
||||||
--- a/drivers/hid/hid-multitouch.c
|
|
||||||
+++ b/drivers/hid/hid-multitouch.c
|
|
||||||
@@ -1349,6 +1349,13 @@ static int mt_touch_input_configured(struct hid_device *hdev,
|
|
||||||
if (td->serial_maybe)
|
|
||||||
mt_post_parse_default_settings(td, app);
|
|
||||||
|
|
||||||
+ /*
|
|
||||||
+ * The application for Apple Touch Bars is HID_DG_TOUCHPAD,
|
|
||||||
+ * but these devices are direct.
|
|
||||||
+ */
|
|
||||||
+ if (cls->quirks & MT_QUIRK_APPLE_TOUCHBAR)
|
|
||||||
+ app->mt_flags |= INPUT_MT_DIRECT;
|
|
||||||
+
|
|
||||||
if (cls->is_indirect)
|
|
||||||
app->mt_flags |= INPUT_MT_POINTER;
|
|
||||||
|
|
||||||
--
|
|
||||||
2.49.0
|
|
||||||
|
|
||||||
@@ -1,83 +0,0 @@
|
|||||||
From 23d901ab6ad4751cb05cb8724da1f6199a97ac5d Mon Sep 17 00:00:00 2001
|
|
||||||
From: Kerem Karabay <kekrby@gmail.com>
|
|
||||||
Date: Tue, 27 May 2025 22:13:17 +0530
|
|
||||||
Subject: [PATCH 5/5] HID: multitouch: add device ID for Apple Touch Bar
|
|
||||||
|
|
||||||
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>
|
|
||||||
---
|
|
||||||
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 a50325270..403f4517f 100644
|
|
||||||
--- a/drivers/hid/Kconfig
|
|
||||||
+++ b/drivers/hid/Kconfig
|
|
||||||
@@ -769,6 +769,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 81c02138f..a1b251ea6 100644
|
|
||||||
--- a/drivers/hid/hid-multitouch.c
|
|
||||||
+++ b/drivers/hid/hid-multitouch.c
|
|
||||||
@@ -221,6 +221,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
|
|
||||||
@@ -406,6 +407,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 |
|
|
||||||
@@ -1858,6 +1865,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);
|
|
||||||
|
|
||||||
@@ -2339,6 +2351,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.49.0
|
|
||||||
|
|
||||||
@@ -38,7 +38,7 @@ index 365e6ddbe90f..cf357cd3389d 100644
|
|||||||
@@ -438,12 +438,7 @@ find_active_client(struct list_head *head)
|
@@ -438,12 +438,7 @@ find_active_client(struct list_head *head)
|
||||||
bool vga_switcheroo_client_probe_defer(struct pci_dev *pdev)
|
bool vga_switcheroo_client_probe_defer(struct pci_dev *pdev)
|
||||||
{
|
{
|
||||||
if ((pdev->class >> 16) == PCI_BASE_CLASS_DISPLAY) {
|
if (pci_is_display(pdev)) {
|
||||||
- /*
|
- /*
|
||||||
- * apple-gmux is needed on pre-retina MacBook Pro
|
- * apple-gmux is needed on pre-retina MacBook Pro
|
||||||
- * to probe the panel if pdev is the inactive GPU.
|
- * to probe the panel if pdev is the inactive GPU.
|
||||||
|
|||||||
+1132
-1511
File diff suppressed because it is too large
Load Diff
@@ -1,35 +0,0 @@
|
|||||||
From 165066841c211201b3f228f03e18e28423e98e94 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Aditya Garg <gargaditya08@live.com>
|
|
||||||
Date: Mon, 10 Mar 2025 22:53:28 +0530
|
|
||||||
Subject: [PATCH 1/5] HID: quirks: remove T2 devices from hid_mouse_ignore_list
|
|
||||||
|
|
||||||
In order to use hid-magicmouse for T2 trackpads, we need to
|
|
||||||
remove them from hid_mouse_ignore_list
|
|
||||||
|
|
||||||
Signed-off-by: Aditya Garg <gargaditya08@live.com>
|
|
||||||
---
|
|
||||||
drivers/hid/hid-quirks.c | 8 --------
|
|
||||||
1 file changed, 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
|
|
||||||
index e0bbf0c63..2eb15a7ae 100644
|
|
||||||
--- a/drivers/hid/hid-quirks.c
|
|
||||||
+++ b/drivers/hid/hid-quirks.c
|
|
||||||
@@ -956,14 +956,6 @@ static const struct hid_device_id hid_mouse_ignore_list[] = {
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_ANSI) },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_ISO) },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_JIS) },
|
|
||||||
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J140K) },
|
|
||||||
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132) },
|
|
||||||
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680) },
|
|
||||||
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213) },
|
|
||||||
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K) },
|
|
||||||
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J223) },
|
|
||||||
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J230K) },
|
|
||||||
- { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J152F) },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) },
|
|
||||||
{ }
|
|
||||||
--
|
|
||||||
2.43.0
|
|
||||||
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
From cc2712238a3179b046f7cd36a24a9a606b99aa81 Mon Sep 17 00:00:00 2001
|
From 2a61d561add01926e19b2ae370c99b93a836bca9 Mon Sep 17 00:00:00 2001
|
||||||
From: Aditya Garg <gargaditya08@live.com>
|
From: Aditya Garg <gargaditya08@live.com>
|
||||||
Date: Mon, 10 Mar 2025 23:03:29 +0530
|
Date: Fri, 12 Sep 2025 12:09:01 +0000
|
||||||
Subject: [PATCH 2/5] HID: apple: ignore the trackpad on T2 Macs
|
Subject: [PATCH 2/5] HID: apple: ignore the trackpad on T2 Macs
|
||||||
|
|
||||||
In order to manage the trackpad on T2 Macs by hid-magicmouse driver
|
In order to manage the trackpad on T2 Macs by hid-magicmouse driver
|
||||||
@@ -9,14 +9,23 @@ the existing APPLE_IGNORE_MOUSE quirk for the same.
|
|||||||
|
|
||||||
Signed-off-by: Aditya Garg <gargaditya08@live.com>
|
Signed-off-by: Aditya Garg <gargaditya08@live.com>
|
||||||
---
|
---
|
||||||
drivers/hid/hid-apple.c | 23 +++++++++++++++--------
|
drivers/hid/hid-apple.c | 27 +++++++++++++++++----------
|
||||||
1 file changed, 15 insertions(+), 8 deletions(-)
|
1 file changed, 17 insertions(+), 10 deletions(-)
|
||||||
|
|
||||||
diff --git a/drivers/hid/hid-apple.c b/drivers/hid/hid-apple.c
|
diff --git a/drivers/hid/hid-apple.c b/drivers/hid/hid-apple.c
|
||||||
index a33260293..fdfbfe6ab 100644
|
index 4505e5839..cdc008c66 100644
|
||||||
--- a/drivers/hid/hid-apple.c
|
--- a/drivers/hid/hid-apple.c
|
||||||
+++ b/drivers/hid/hid-apple.c
|
+++ b/drivers/hid/hid-apple.c
|
||||||
@@ -963,6 +963,9 @@ static int apple_probe(struct hid_device *hdev,
|
@@ -30,7 +30,7 @@
|
||||||
|
#include "hid-ids.h"
|
||||||
|
|
||||||
|
#define APPLE_RDESC_JIS BIT(0)
|
||||||
|
-/* BIT(1) reserved, was: APPLE_IGNORE_MOUSE */
|
||||||
|
+#define APPLE_IGNORE_MOUSE BIT(1)
|
||||||
|
#define APPLE_HAS_FN BIT(2)
|
||||||
|
/* BIT(3) reserved, was: APPLE_HIDDEV */
|
||||||
|
#define APPLE_ISO_TILDE_QUIRK BIT(4)
|
||||||
|
@@ -951,6 +951,9 @@ static int apple_probe(struct hid_device *hdev,
|
||||||
hdev->type != HID_TYPE_SPI_KEYBOARD)
|
hdev->type != HID_TYPE_SPI_KEYBOARD)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
@@ -26,7 +35,7 @@ index a33260293..fdfbfe6ab 100644
|
|||||||
asc = devm_kzalloc(&hdev->dev, sizeof(*asc), GFP_KERNEL);
|
asc = devm_kzalloc(&hdev->dev, sizeof(*asc), GFP_KERNEL);
|
||||||
if (asc == NULL) {
|
if (asc == NULL) {
|
||||||
hid_err(hdev, "can't alloc apple descriptor\n");
|
hid_err(hdev, "can't alloc apple descriptor\n");
|
||||||
@@ -1180,21 +1183,25 @@ static const struct hid_device_id apple_devices[] = {
|
@@ -1173,27 +1176,31 @@ static const struct hid_device_id apple_devices[] = {
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_JIS),
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING9_JIS),
|
||||||
.driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
|
.driver_data = APPLE_HAS_FN | APPLE_RDESC_JIS },
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J140K),
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J140K),
|
||||||
@@ -34,32 +43,39 @@ index a33260293..fdfbfe6ab 100644
|
|||||||
+ .driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL | APPLE_ISO_TILDE_QUIRK |
|
+ .driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL | APPLE_ISO_TILDE_QUIRK |
|
||||||
+ APPLE_IGNORE_MOUSE },
|
+ APPLE_IGNORE_MOUSE },
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132),
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132),
|
||||||
- .driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL | APPLE_ISO_TILDE_QUIRK },
|
.driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL | APPLE_ISO_TILDE_QUIRK |
|
||||||
+ .driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL | APPLE_ISO_TILDE_QUIRK |
|
- APPLE_DISABLE_FKEYS },
|
||||||
+ APPLE_IGNORE_MOUSE },
|
+ APPLE_DISABLE_FKEYS | APPLE_IGNORE_MOUSE },
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680),
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680),
|
||||||
- .driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL | APPLE_ISO_TILDE_QUIRK },
|
.driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL | APPLE_ISO_TILDE_QUIRK |
|
||||||
+ .driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL | APPLE_ISO_TILDE_QUIRK |
|
- APPLE_DISABLE_FKEYS },
|
||||||
+ APPLE_IGNORE_MOUSE },
|
+ APPLE_DISABLE_FKEYS | APPLE_IGNORE_MOUSE },
|
||||||
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680_ALT),
|
||||||
|
.driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL | APPLE_ISO_TILDE_QUIRK |
|
||||||
|
- APPLE_DISABLE_FKEYS },
|
||||||
|
+ APPLE_DISABLE_FKEYS | APPLE_IGNORE_MOUSE },
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213),
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213),
|
||||||
- .driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL | APPLE_ISO_TILDE_QUIRK },
|
.driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL | APPLE_ISO_TILDE_QUIRK |
|
||||||
+ .driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL | APPLE_ISO_TILDE_QUIRK |
|
- APPLE_DISABLE_FKEYS },
|
||||||
+ APPLE_IGNORE_MOUSE },
|
+ APPLE_DISABLE_FKEYS | APPLE_IGNORE_MOUSE },
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K),
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K),
|
||||||
- .driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK },
|
- .driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_DISABLE_FKEYS },
|
||||||
+ .driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_IGNORE_MOUSE },
|
+ .driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_DISABLE_FKEYS |
|
||||||
|
+ APPLE_IGNORE_MOUSE },
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J223),
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J223),
|
||||||
- .driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK },
|
- .driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_DISABLE_FKEYS },
|
||||||
+ .driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_IGNORE_MOUSE },
|
+ .driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_DISABLE_FKEYS |
|
||||||
|
+ APPLE_IGNORE_MOUSE },
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J230K),
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J230K),
|
||||||
- .driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK },
|
- .driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK },
|
||||||
+ .driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_IGNORE_MOUSE },
|
+ .driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_IGNORE_MOUSE },
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J152F),
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J152F),
|
||||||
- .driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK },
|
- .driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_DISABLE_FKEYS },
|
||||||
+ .driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_IGNORE_MOUSE },
|
+ .driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_DISABLE_FKEYS |
|
||||||
|
+ APPLE_IGNORE_MOUSE },
|
||||||
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI),
|
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ANSI),
|
||||||
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
|
.driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN },
|
||||||
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO),
|
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_2009_ISO),
|
||||||
--
|
--
|
||||||
2.43.0
|
2.50.1
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
From 333c1742167b64aea0802996601b9bdc5aaa0a6e Mon Sep 17 00:00:00 2001
|
From 4cc9316f58027ec2617e82fd228b7d2714644907 Mon Sep 17 00:00:00 2001
|
||||||
From: Aditya Garg <gargaditya08@live.com>
|
From: Aditya Garg <gargaditya08@live.com>
|
||||||
Date: Tue, 11 Mar 2025 18:44:06 +0530
|
Date: Tue, 11 Mar 2025 18:44:06 +0530
|
||||||
Subject: [PATCH 3/5] HID: magicmouse: Add support for trackpads found on T2
|
Subject: [PATCH 3/5] HID: magicmouse: Add support for trackpads found on T2
|
||||||
@@ -10,14 +10,14 @@ It is the same format as type 4 in bcm5974.c
|
|||||||
|
|
||||||
Signed-off-by: Aditya Garg <gargaditya08@live.com>
|
Signed-off-by: Aditya Garg <gargaditya08@live.com>
|
||||||
---
|
---
|
||||||
drivers/hid/hid-magicmouse.c | 371 +++++++++++++++++++++++++++++------
|
drivers/hid/hid-magicmouse.c | 296 ++++++++++++++++++++++++++++++++---
|
||||||
1 file changed, 313 insertions(+), 58 deletions(-)
|
1 file changed, 275 insertions(+), 21 deletions(-)
|
||||||
|
|
||||||
diff --git a/drivers/hid/hid-magicmouse.c b/drivers/hid/hid-magicmouse.c
|
diff --git a/drivers/hid/hid-magicmouse.c b/drivers/hid/hid-magicmouse.c
|
||||||
index d5ab547b1..eb62752d7 100644
|
index 3c062f80c..b40f41168 100644
|
||||||
--- a/drivers/hid/hid-magicmouse.c
|
--- a/drivers/hid/hid-magicmouse.c
|
||||||
+++ b/drivers/hid/hid-magicmouse.c
|
+++ b/drivers/hid/hid-magicmouse.c
|
||||||
@@ -117,6 +117,94 @@ MODULE_PARM_DESC(report_undeciphered, "Report undeciphered multi-touch state fie
|
@@ -118,6 +118,105 @@ MODULE_PARM_DESC(report_undeciphered, "Report undeciphered multi-touch state fie
|
||||||
#define TRACKPAD2_RES_Y \
|
#define TRACKPAD2_RES_Y \
|
||||||
((TRACKPAD2_MAX_Y - TRACKPAD2_MIN_Y) / (TRACKPAD2_DIMENSION_Y / 100))
|
((TRACKPAD2_MAX_Y - TRACKPAD2_MIN_Y) / (TRACKPAD2_DIMENSION_Y / 100))
|
||||||
|
|
||||||
@@ -54,6 +54,17 @@ index d5ab547b1..eb62752d7 100644
|
|||||||
+#define J680_TP_RES_Y \
|
+#define J680_TP_RES_Y \
|
||||||
+ ((J680_TP_MAX_Y - J680_TP_MIN_Y) / (J680_TP_DIMENSION_Y / 100))
|
+ ((J680_TP_MAX_Y - J680_TP_MIN_Y) / (J680_TP_DIMENSION_Y / 100))
|
||||||
+
|
+
|
||||||
|
+#define J680_ALT_TP_DIMENSION_X (float)16000
|
||||||
|
+#define J680_ALT_TP_MIN_X -7456
|
||||||
|
+#define J680_ALT_TP_MAX_X 7976
|
||||||
|
+#define J680_ALT_TP_RES_X \
|
||||||
|
+ ((J680_ALT_TP_MAX_X - J680_ALT_TP_MIN_X) / (J680_ALT_TP_DIMENSION_X / 100))
|
||||||
|
+#define J680_ALT_TP_DIMENSION_Y (float)10000
|
||||||
|
+#define J680_ALT_TP_MIN_Y -163
|
||||||
|
+#define J680_ALT_TP_MAX_Y 9283
|
||||||
|
+#define J680_ALT_TP_RES_Y \
|
||||||
|
+ ((J680_ALT_TP_MAX_Y - J680_ALT_TP_MIN_Y) / (J680_ALT_TP_DIMENSION_Y / 100))
|
||||||
|
+
|
||||||
+#define J213_TP_DIMENSION_X (float)13500
|
+#define J213_TP_DIMENSION_X (float)13500
|
||||||
+#define J213_TP_MIN_X -6243
|
+#define J213_TP_MIN_X -6243
|
||||||
+#define J213_TP_MAX_X 6749
|
+#define J213_TP_MAX_X 6749
|
||||||
@@ -112,7 +123,7 @@ index d5ab547b1..eb62752d7 100644
|
|||||||
/* These are fallback values, since the real values will be queried from the device. */
|
/* These are fallback values, since the real values will be queried from the device. */
|
||||||
#define J314_TP_DIMENSION_X (float)13000
|
#define J314_TP_DIMENSION_X (float)13000
|
||||||
#define J314_TP_MIN_X -5900
|
#define J314_TP_MIN_X -5900
|
||||||
@@ -129,7 +217,11 @@ MODULE_PARM_DESC(report_undeciphered, "Report undeciphered multi-touch state fie
|
@@ -130,7 +229,11 @@ MODULE_PARM_DESC(report_undeciphered, "Report undeciphered multi-touch state fie
|
||||||
#define J314_TP_RES_Y \
|
#define J314_TP_RES_Y \
|
||||||
((J314_TP_MAX_Y - J314_TP_MIN_Y) / (J314_TP_DIMENSION_Y / 100))
|
((J314_TP_MAX_Y - J314_TP_MIN_Y) / (J314_TP_DIMENSION_Y / 100))
|
||||||
|
|
||||||
@@ -125,69 +136,7 @@ index d5ab547b1..eb62752d7 100644
|
|||||||
|
|
||||||
struct magicmouse_input_ops {
|
struct magicmouse_input_ops {
|
||||||
int (*raw_event)(struct hid_device *hdev,
|
int (*raw_event)(struct hid_device *hdev,
|
||||||
@@ -196,24 +288,46 @@ static int magicmouse_enable_multitouch(struct hid_device *hdev)
|
@@ -733,7 +836,7 @@ static void report_finger_data(struct input_dev *input, int slot,
|
||||||
int ret;
|
|
||||||
int feature_size;
|
|
||||||
|
|
||||||
- if (hdev->product == USB_DEVICE_ID_APPLE_MAGICTRACKPAD2 ||
|
|
||||||
- hdev->product == USB_DEVICE_ID_APPLE_MAGICTRACKPAD2_USBC) {
|
|
||||||
- if (hdev->vendor == BT_VENDOR_ID_APPLE) {
|
|
||||||
- feature_size = sizeof(feature_mt_trackpad2_bt);
|
|
||||||
- feature = feature_mt_trackpad2_bt;
|
|
||||||
- } else { /* USB_VENDOR_ID_APPLE */
|
|
||||||
+ switch (hdev->bus) {
|
|
||||||
+ case BUS_SPI:
|
|
||||||
+ case BUS_HOST:
|
|
||||||
+ feature_size = sizeof(feature_mt_trackpad2_usb);
|
|
||||||
+ feature = feature_mt_trackpad2_usb;
|
|
||||||
+ break;
|
|
||||||
+ default:
|
|
||||||
+ switch (hdev->product) {
|
|
||||||
+ case USB_DEVICE_ID_APPLE_MAGICTRACKPAD2:
|
|
||||||
+ case USB_DEVICE_ID_APPLE_MAGICTRACKPAD2_USBC:
|
|
||||||
+ switch (hdev->vendor) {
|
|
||||||
+ case BT_VENDOR_ID_APPLE:
|
|
||||||
+ feature_size = sizeof(feature_mt_trackpad2_bt);
|
|
||||||
+ feature = feature_mt_trackpad2_bt;
|
|
||||||
+ break;
|
|
||||||
+ default: /* USB_VENDOR_ID_APPLE */
|
|
||||||
+ feature_size = sizeof(feature_mt_trackpad2_usb);
|
|
||||||
+ feature = feature_mt_trackpad2_usb;
|
|
||||||
+ }
|
|
||||||
+ break;
|
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J140K:
|
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132:
|
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680:
|
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213:
|
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K:
|
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J223:
|
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J230K:
|
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J152F:
|
|
||||||
feature_size = sizeof(feature_mt_trackpad2_usb);
|
|
||||||
feature = feature_mt_trackpad2_usb;
|
|
||||||
+ break;
|
|
||||||
+ case USB_DEVICE_ID_APPLE_MAGICMOUSE2:
|
|
||||||
+ case USB_DEVICE_ID_APPLE_MAGICMOUSE2_USBC:
|
|
||||||
+ feature_size = sizeof(feature_mt_mouse2);
|
|
||||||
+ feature = feature_mt_mouse2;
|
|
||||||
+ break;
|
|
||||||
+ default:
|
|
||||||
+ feature_size = sizeof(feature_mt);
|
|
||||||
+ feature = feature_mt;
|
|
||||||
}
|
|
||||||
- } else if (hdev->vendor == SPI_VENDOR_ID_APPLE) {
|
|
||||||
- feature_size = sizeof(feature_mt_trackpad2_usb);
|
|
||||||
- feature = feature_mt_trackpad2_usb;
|
|
||||||
- } else if (hdev->product == USB_DEVICE_ID_APPLE_MAGICMOUSE2 || hdev->product == USB_DEVICE_ID_APPLE_MAGICMOUSE2_USBC) {
|
|
||||||
- feature_size = sizeof(feature_mt_mouse2);
|
|
||||||
- feature = feature_mt_mouse2;
|
|
||||||
- } else {
|
|
||||||
- feature_size = sizeof(feature_mt);
|
|
||||||
- feature = feature_mt;
|
|
||||||
}
|
|
||||||
|
|
||||||
buf = kmemdup(feature, feature_size, GFP_KERNEL);
|
|
||||||
@@ -784,7 +897,7 @@ static void report_finger_data(struct input_dev *input, int slot,
|
|
||||||
input_report_abs(input, ABS_MT_WIDTH_MINOR,
|
input_report_abs(input, ABS_MT_WIDTH_MINOR,
|
||||||
le16_to_int(f->tool_minor) << 1);
|
le16_to_int(f->tool_minor) << 1);
|
||||||
input_report_abs(input, ABS_MT_ORIENTATION,
|
input_report_abs(input, ABS_MT_ORIENTATION,
|
||||||
@@ -196,7 +145,7 @@ index d5ab547b1..eb62752d7 100644
|
|||||||
input_report_abs(input, ABS_MT_PRESSURE, le16_to_int(f->pressure));
|
input_report_abs(input, ABS_MT_PRESSURE, le16_to_int(f->pressure));
|
||||||
input_report_abs(input, ABS_MT_POSITION_X, pos->x);
|
input_report_abs(input, ABS_MT_POSITION_X, pos->x);
|
||||||
input_report_abs(input, ABS_MT_POSITION_Y, pos->y);
|
input_report_abs(input, ABS_MT_POSITION_Y, pos->y);
|
||||||
@@ -872,6 +985,20 @@ static int magicmouse_raw_event_spi(struct hid_device *hdev,
|
@@ -821,6 +924,20 @@ static int magicmouse_raw_event_spi(struct hid_device *hdev,
|
||||||
return magicmouse_raw_event_mtp(hdev, report, data + hdr_sz, size - hdr_sz);
|
return magicmouse_raw_event_mtp(hdev, report, data + hdr_sz, size - hdr_sz);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -217,7 +166,7 @@ index d5ab547b1..eb62752d7 100644
|
|||||||
static int magicmouse_event(struct hid_device *hdev, struct hid_field *field,
|
static int magicmouse_event(struct hid_device *hdev, struct hid_field *field,
|
||||||
struct hid_usage *usage, __s32 value)
|
struct hid_usage *usage, __s32 value)
|
||||||
{
|
{
|
||||||
@@ -1063,8 +1190,31 @@ static int magicmouse_setup_input_usb(struct input_dev *input,
|
@@ -1018,8 +1135,32 @@ static int magicmouse_setup_input_usb(struct input_dev *input,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -237,6 +186,7 @@ index d5ab547b1..eb62752d7 100644
|
|||||||
+ T2_TOUCHPAD_ENTRY(J140K),
|
+ T2_TOUCHPAD_ENTRY(J140K),
|
||||||
+ T2_TOUCHPAD_ENTRY(J132),
|
+ T2_TOUCHPAD_ENTRY(J132),
|
||||||
+ T2_TOUCHPAD_ENTRY(J680),
|
+ T2_TOUCHPAD_ENTRY(J680),
|
||||||
|
+ T2_TOUCHPAD_ENTRY(J680_ALT),
|
||||||
+ T2_TOUCHPAD_ENTRY(J213),
|
+ T2_TOUCHPAD_ENTRY(J213),
|
||||||
+ T2_TOUCHPAD_ENTRY(J214K),
|
+ T2_TOUCHPAD_ENTRY(J214K),
|
||||||
+ T2_TOUCHPAD_ENTRY(J223),
|
+ T2_TOUCHPAD_ENTRY(J223),
|
||||||
@@ -251,7 +201,7 @@ index d5ab547b1..eb62752d7 100644
|
|||||||
{
|
{
|
||||||
int error;
|
int error;
|
||||||
int mt_flags = 0;
|
int mt_flags = 0;
|
||||||
@@ -1105,19 +1255,17 @@ static int magicmouse_setup_input_mtp(struct input_dev *input,
|
@@ -1060,19 +1201,17 @@ static int magicmouse_setup_input_mtp(struct input_dev *input,
|
||||||
input_abs_set_res(input, ABS_MT_PRESSURE, 1);
|
input_abs_set_res(input, ABS_MT_PRESSURE, 1);
|
||||||
|
|
||||||
/* finger orientation */
|
/* finger orientation */
|
||||||
@@ -277,7 +227,7 @@ index d5ab547b1..eb62752d7 100644
|
|||||||
|
|
||||||
input_set_events_per_packet(input, 60);
|
input_set_events_per_packet(input, 60);
|
||||||
|
|
||||||
@@ -1144,7 +1292,20 @@ static int magicmouse_setup_input_mtp(struct input_dev *input,
|
@@ -1099,7 +1238,20 @@ static int magicmouse_setup_input_mtp(struct input_dev *input,
|
||||||
*/
|
*/
|
||||||
input->open = magicmouse_open;
|
input->open = magicmouse_open;
|
||||||
input->close = magicmouse_close;
|
input->close = magicmouse_close;
|
||||||
@@ -299,7 +249,7 @@ index d5ab547b1..eb62752d7 100644
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -1152,7 +1313,34 @@ static int magicmouse_setup_input_mtp(struct input_dev *input,
|
@@ -1107,7 +1259,34 @@ static int magicmouse_setup_input_mtp(struct input_dev *input,
|
||||||
static int magicmouse_setup_input_spi(struct input_dev *input,
|
static int magicmouse_setup_input_spi(struct input_dev *input,
|
||||||
struct hid_device *hdev)
|
struct hid_device *hdev)
|
||||||
{
|
{
|
||||||
@@ -335,7 +285,26 @@ index d5ab547b1..eb62752d7 100644
|
|||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
@@ -1244,8 +1432,22 @@ static int magicmouse_probe(struct hid_device *hdev,
|
@@ -1180,6 +1359,18 @@ static int magicmouse_enable_multitouch(struct hid_device *hdev)
|
||||||
|
feature = feature_mt_trackpad2_usb;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J140K:
|
||||||
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132:
|
||||||
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680:
|
||||||
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680_ALT:
|
||||||
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213:
|
||||||
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K:
|
||||||
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J223:
|
||||||
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J230K:
|
||||||
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J152F:
|
||||||
|
+ feature_size = sizeof(feature_mt_trackpad2_usb);
|
||||||
|
+ feature = feature_mt_trackpad2_usb;
|
||||||
|
+ break;
|
||||||
|
case USB_DEVICE_ID_APPLE_MAGICMOUSE2:
|
||||||
|
case USB_DEVICE_ID_APPLE_MAGICMOUSE2_USBC:
|
||||||
|
feature_size = sizeof(feature_mt_mouse2);
|
||||||
|
@@ -1273,8 +1464,23 @@ static int magicmouse_probe(struct hid_device *hdev,
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if ((id->bus == BUS_SPI || id->bus == BUS_HOST) && id->vendor == SPI_VENDOR_ID_APPLE &&
|
if ((id->bus == BUS_SPI || id->bus == BUS_HOST) && id->vendor == SPI_VENDOR_ID_APPLE &&
|
||||||
@@ -348,6 +317,7 @@ index d5ab547b1..eb62752d7 100644
|
|||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J140K:
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J140K:
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132:
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132:
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680:
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680:
|
||||||
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680_ALT:
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213:
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213:
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K:
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K:
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J223:
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J223:
|
||||||
@@ -360,7 +330,7 @@ index d5ab547b1..eb62752d7 100644
|
|||||||
|
|
||||||
msc = devm_kzalloc(&hdev->dev, sizeof(*msc), GFP_KERNEL);
|
msc = devm_kzalloc(&hdev->dev, sizeof(*msc), GFP_KERNEL);
|
||||||
if (msc == NULL) {
|
if (msc == NULL) {
|
||||||
@@ -1255,16 +1457,32 @@ static int magicmouse_probe(struct hid_device *hdev,
|
@@ -1284,15 +1490,33 @@ static int magicmouse_probe(struct hid_device *hdev,
|
||||||
|
|
||||||
// internal trackpad use a data format use input ops to avoid
|
// internal trackpad use a data format use input ops to avoid
|
||||||
// conflicts with the report ID.
|
// conflicts with the report ID.
|
||||||
@@ -374,7 +344,6 @@ index d5ab547b1..eb62752d7 100644
|
|||||||
+ case BUS_SPI:
|
+ case BUS_SPI:
|
||||||
msc->input_ops.raw_event = magicmouse_raw_event_spi;
|
msc->input_ops.raw_event = magicmouse_raw_event_spi;
|
||||||
msc->input_ops.setup_input = magicmouse_setup_input_spi;
|
msc->input_ops.setup_input = magicmouse_setup_input_spi;
|
||||||
-
|
|
||||||
- } else {
|
- } else {
|
||||||
- msc->input_ops.raw_event = magicmouse_raw_event_usb;
|
- msc->input_ops.raw_event = magicmouse_raw_event_usb;
|
||||||
- msc->input_ops.setup_input = magicmouse_setup_input_usb;
|
- msc->input_ops.setup_input = magicmouse_setup_input_usb;
|
||||||
@@ -384,6 +353,7 @@ index d5ab547b1..eb62752d7 100644
|
|||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J140K:
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J140K:
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132:
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132:
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680:
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680:
|
||||||
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680_ALT:
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213:
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213:
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K:
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K:
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J223:
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J223:
|
||||||
@@ -399,13 +369,14 @@ index d5ab547b1..eb62752d7 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
msc->scroll_accel = SCROLL_ACCEL_DEFAULT;
|
msc->scroll_accel = SCROLL_ACCEL_DEFAULT;
|
||||||
@@ -1336,6 +1336,17 @@ static int magicmouse_probe(struct hid_device *hdev,
|
@@ -1353,6 +1577,18 @@ static int magicmouse_probe(struct hid_device *hdev,
|
||||||
TRACKPAD2_USB_REPORT_ID, 0);
|
TRACKPAD2_USB_REPORT_ID, 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J140K:
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J140K:
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132:
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132:
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680:
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680:
|
||||||
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680_ALT:
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213:
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213:
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K:
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K:
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J223:
|
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J223:
|
||||||
@@ -414,10 +385,10 @@ index d5ab547b1..eb62752d7 100644
|
|||||||
+ report = hid_register_report(hdev, HID_INPUT_REPORT,
|
+ report = hid_register_report(hdev, HID_INPUT_REPORT,
|
||||||
+ TRACKPAD2_USB_REPORT_ID, 0);
|
+ TRACKPAD2_USB_REPORT_ID, 0);
|
||||||
+ break;
|
+ break;
|
||||||
default: /* USB_DEVICE_ID_APPLE_MAGICTRACKPAD */
|
case HID_ANY_ID:
|
||||||
if (id->bus == BUS_SPI) {
|
switch (id->bus) {
|
||||||
report = hid_register_report(hdev, HID_INPUT_REPORT, SPI_REPORT_ID, 0);
|
case BUS_HOST:
|
||||||
@@ -1414,6 +1653,22 @@ static const struct hid_device_id magic_mice[] = {
|
@@ -1464,6 +1700,24 @@ static const struct hid_device_id magic_mice[] = {
|
||||||
USB_DEVICE_ID_APPLE_MAGICTRACKPAD2_USBC), .driver_data = 0 },
|
USB_DEVICE_ID_APPLE_MAGICTRACKPAD2_USBC), .driver_data = 0 },
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE,
|
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE,
|
||||||
USB_DEVICE_ID_APPLE_MAGICTRACKPAD2_USBC), .driver_data = 0 },
|
USB_DEVICE_ID_APPLE_MAGICTRACKPAD2_USBC), .driver_data = 0 },
|
||||||
@@ -428,6 +399,8 @@ index d5ab547b1..eb62752d7 100644
|
|||||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE,
|
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE,
|
||||||
+ USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680), .driver_data = 0 },
|
+ USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680), .driver_data = 0 },
|
||||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE,
|
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE,
|
||||||
|
+ USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680_ALT), .driver_data = 0 },
|
||||||
|
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE,
|
||||||
+ USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213), .driver_data = 0 },
|
+ USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213), .driver_data = 0 },
|
||||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE,
|
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE,
|
||||||
+ USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K), .driver_data = 0 },
|
+ USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K), .driver_data = 0 },
|
||||||
@@ -441,5 +414,5 @@ index d5ab547b1..eb62752d7 100644
|
|||||||
.driver_data = 0 },
|
.driver_data = 0 },
|
||||||
{ HID_DEVICE(BUS_HOST, HID_GROUP_ANY, HOST_VENDOR_ID_APPLE,
|
{ HID_DEVICE(BUS_HOST, HID_GROUP_ANY, HOST_VENDOR_ID_APPLE,
|
||||||
--
|
--
|
||||||
2.43.0
|
2.50.1
|
||||||
|
|
||||||
|
|||||||
@@ -1,82 +0,0 @@
|
|||||||
From 96ae78d70a21e7ba765daf870efc8577092d5ff0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Aditya Garg <gargaditya08@live.com>
|
|
||||||
Date: Tue, 18 Mar 2025 21:25:05 +0530
|
|
||||||
Subject: [PATCH 4/5] HID: apple: Add necessary IDs and support for replacement
|
|
||||||
trackpad on MacBookPro15,1
|
|
||||||
|
|
||||||
Some third party trackpad replacements like that of HAWSON may have a
|
|
||||||
different PID than the stock trackpad. This commit adds one such trackpad
|
|
||||||
to hid-apple.
|
|
||||||
|
|
||||||
Signed-off-by: Aditya Garg <gargaditya08@live.com>
|
|
||||||
---
|
|
||||||
drivers/hid/hid-apple.c | 4 ++++
|
|
||||||
drivers/hid/hid-ids.h | 17 +++++++++--------
|
|
||||||
drivers/hid/hid-quirks.c | 1 +
|
|
||||||
3 files changed, 14 insertions(+), 8 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/drivers/hid/hid-apple.c b/drivers/hid/hid-apple.c
|
|
||||||
index fdfbfe6ab..dd84a387e 100644
|
|
||||||
--- a/drivers/hid/hid-apple.c
|
|
||||||
+++ b/drivers/hid/hid-apple.c
|
|
||||||
@@ -523,6 +523,7 @@ static int hidinput_apple_event(struct hid_device *hid, struct input_dev *input,
|
|
||||||
table = apple2021_fn_keys;
|
|
||||||
else if (hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132 ||
|
|
||||||
hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680 ||
|
|
||||||
+ hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680_ALT ||
|
|
||||||
hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213)
|
|
||||||
table = macbookpro_no_esc_fn_keys;
|
|
||||||
else if (hid->product == USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K ||
|
|
||||||
@@ -1191,6 +1192,9 @@ static const struct hid_device_id apple_devices[] = {
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680),
|
|
||||||
.driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL | APPLE_ISO_TILDE_QUIRK |
|
|
||||||
APPLE_IGNORE_MOUSE },
|
|
||||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680_ALT),
|
|
||||||
+ .driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL | APPLE_ISO_TILDE_QUIRK |
|
|
||||||
+ APPLE_IGNORE_MOUSE },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213),
|
|
||||||
.driver_data = APPLE_HAS_FN | APPLE_BACKLIGHT_CTL | APPLE_ISO_TILDE_QUIRK |
|
|
||||||
APPLE_IGNORE_MOUSE },
|
|
||||||
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
|
|
||||||
index 192c09c27..f4b803c5b 100644
|
|
||||||
--- a/drivers/hid/hid-ids.h
|
|
||||||
+++ b/drivers/hid/hid-ids.h
|
|
||||||
@@ -170,14 +170,15 @@
|
|
||||||
#define USB_DEVICE_ID_APPLE_WELLSPRING9_ANSI 0x0272
|
|
||||||
#define USB_DEVICE_ID_APPLE_WELLSPRING9_ISO 0x0273
|
|
||||||
#define USB_DEVICE_ID_APPLE_WELLSPRING9_JIS 0x0274
|
|
||||||
-#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J140K 0x027a
|
|
||||||
-#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132 0x027b
|
|
||||||
-#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680 0x027c
|
|
||||||
-#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213 0x027d
|
|
||||||
-#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K 0x027e
|
|
||||||
-#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J223 0x027f
|
|
||||||
-#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J230K 0x0280
|
|
||||||
-#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J152F 0x0340
|
|
||||||
+#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J140K 0x027a
|
|
||||||
+#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132 0x027b
|
|
||||||
+#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680 0x027c
|
|
||||||
+#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680_ALT 0x0278
|
|
||||||
+#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213 0x027d
|
|
||||||
+#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K 0x027e
|
|
||||||
+#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J223 0x027f
|
|
||||||
+#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J230K 0x0280
|
|
||||||
+#define USB_DEVICE_ID_APPLE_WELLSPRINGT2_J152F 0x0340
|
|
||||||
#define USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY 0x030a
|
|
||||||
#define USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY 0x030b
|
|
||||||
#define USB_DEVICE_ID_APPLE_IRCONTROL 0x8240
|
|
||||||
diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
|
|
||||||
index 2eb15a7ae..ecfb1c3a8 100644
|
|
||||||
--- a/drivers/hid/hid-quirks.c
|
|
||||||
+++ b/drivers/hid/hid-quirks.c
|
|
||||||
@@ -312,6 +312,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J140K) },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132) },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680) },
|
|
||||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680_ALT) },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213) },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K) },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRINGT2_J223) },
|
|
||||||
--
|
|
||||||
2.43.0
|
|
||||||
|
|
||||||
@@ -1,88 +0,0 @@
|
|||||||
From 9e5a69ced6bf9e879a93215dc498bfb07f0fa518 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Aditya Garg <gargaditya08@live.com>
|
|
||||||
Date: Tue, 18 Mar 2025 21:27:25 +0530
|
|
||||||
Subject: [PATCH] HID: magicmouse: Add MacBookPro15,1 replacement trackpad
|
|
||||||
support
|
|
||||||
|
|
||||||
This commit adds support for third party replacement trackpad for
|
|
||||||
MacBookPro15,1 with a different PID in hid-magicmouse.
|
|
||||||
|
|
||||||
Signed-off-by: Aditya Garg <gargaditya08@live.com>
|
|
||||||
---
|
|
||||||
drivers/hid/hid-magicmouse.c | 18 ++++++++++++++++++
|
|
||||||
1 file changed, 18 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/drivers/hid/hid-magicmouse.c b/drivers/hid/hid-magicmouse.c
|
|
||||||
index 41926b389..328df8118 100644
|
|
||||||
--- a/drivers/hid/hid-magicmouse.c
|
|
||||||
+++ b/drivers/hid/hid-magicmouse.c
|
|
||||||
@@ -151,6 +151,17 @@ MODULE_PARM_DESC(report_undeciphered, "Report undeciphered multi-touch state fie
|
|
||||||
#define J680_TP_RES_Y \
|
|
||||||
((J680_TP_MAX_Y - J680_TP_MIN_Y) / (J680_TP_DIMENSION_Y / 100))
|
|
||||||
|
|
||||||
+#define J680_ALT_TP_DIMENSION_X (float)16000
|
|
||||||
+#define J680_ALT_TP_MIN_X -7456
|
|
||||||
+#define J680_ALT_TP_MAX_X 7976
|
|
||||||
+#define J680_ALT_TP_RES_X \
|
|
||||||
+ ((J680_ALT_TP_MAX_X - J680_ALT_TP_MIN_X) / (J680_ALT_TP_DIMENSION_X / 100))
|
|
||||||
+#define J680_ALT_TP_DIMENSION_Y (float)10000
|
|
||||||
+#define J680_ALT_TP_MIN_Y -163
|
|
||||||
+#define J680_ALT_TP_MAX_Y 9283
|
|
||||||
+#define J680_ALT_TP_RES_Y \
|
|
||||||
+ ((J680_ALT_TP_MAX_Y - J680_ALT_TP_MIN_Y) / (J680_ALT_TP_DIMENSION_Y / 100))
|
|
||||||
+
|
|
||||||
#define J213_TP_DIMENSION_X (float)13500
|
|
||||||
#define J213_TP_MIN_X -6243
|
|
||||||
#define J213_TP_MAX_X 6749
|
|
||||||
@@ -312,6 +323,7 @@ static int magicmouse_enable_multitouch(struct hid_device *hdev)
|
|
||||||
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J140K:
|
|
||||||
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132:
|
|
||||||
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680:
|
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680_ALT:
|
|
||||||
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213:
|
|
||||||
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K:
|
|
||||||
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J223:
|
|
||||||
@@ -1215,6 +1227,7 @@ static const struct magicmouse_t2_properties magicmouse_t2_configs[] = {
|
|
||||||
T2_TOUCHPAD_ENTRY(J140K),
|
|
||||||
T2_TOUCHPAD_ENTRY(J132),
|
|
||||||
T2_TOUCHPAD_ENTRY(J680),
|
|
||||||
+ T2_TOUCHPAD_ENTRY(J680_ALT),
|
|
||||||
T2_TOUCHPAD_ENTRY(J213),
|
|
||||||
T2_TOUCHPAD_ENTRY(J214K),
|
|
||||||
T2_TOUCHPAD_ENTRY(J223),
|
|
||||||
@@ -1451,6 +1464,7 @@ static int magicmouse_probe(struct hid_device *hdev,
|
|
||||||
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J140K:
|
|
||||||
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132:
|
|
||||||
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680:
|
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680_ALT:
|
|
||||||
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213:
|
|
||||||
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K:
|
|
||||||
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J223:
|
|
||||||
@@ -1483,6 +1497,7 @@ static int magicmouse_probe(struct hid_device *hdev,
|
|
||||||
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J140K:
|
|
||||||
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132:
|
|
||||||
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680:
|
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680_ALT:
|
|
||||||
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213:
|
|
||||||
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K:
|
|
||||||
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J223:
|
|
||||||
@@ -1558,6 +1573,7 @@ static int magicmouse_probe(struct hid_device *hdev,
|
|
||||||
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J140K:
|
|
||||||
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132:
|
|
||||||
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680:
|
|
||||||
+ case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680_ALT:
|
|
||||||
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213:
|
|
||||||
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J214K:
|
|
||||||
case USB_DEVICE_ID_APPLE_WELLSPRINGT2_J223:
|
|
||||||
@@ -1687,6 +1703,8 @@ static const struct hid_device_id magic_mice[] = {
|
|
||||||
USB_DEVICE_ID_APPLE_WELLSPRINGT2_J132), .driver_data = 0 },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE,
|
|
||||||
USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680), .driver_data = 0 },
|
|
||||||
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE,
|
|
||||||
+ USB_DEVICE_ID_APPLE_WELLSPRINGT2_J680_ALT), .driver_data = 0 },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE,
|
|
||||||
USB_DEVICE_ID_APPLE_WELLSPRINGT2_J213), .driver_data = 0 },
|
|
||||||
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE,
|
|
||||||
--
|
|
||||||
2.49.0
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user