From bacb72183d736257f3b573242be12a30b5248f89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Thu, 13 Oct 2022 13:31:25 +0200 Subject: [PATCH] debian/patches: Add support for more device PIDs supported upstream --- debian/patches/elan-add-PID-0x0c4b.patch | 54 ++++++++++++++++++ debian/patches/elanspi-add-04f3-241f.patch | 22 +++++++ ...or-capture-warnings-to-debug-message.patch | 33 +++++++++++ ...eset-device-if-storage-listing-fails.patch | Bin 0 -> 147030 bytes debian/patches/goodixmoc-add-PID-0x6014.patch | 42 ++++++++++++++ debian/patches/goodixmoc-add-PID-0x631C.patch | 41 +++++++++++++ debian/patches/goodixmoc-add-PID-0x634C.patch | 41 +++++++++++++ debian/patches/goodixmoc-add-PID-0x6384.patch | 42 ++++++++++++++ debian/patches/goodixmoc-add-PID-0x659A.patch | 41 +++++++++++++ debian/patches/goodixmoc-add-PID-6094.patch | 41 +++++++++++++ debian/patches/series | 14 +++++ .../synaptics-Add-new-PID-0x0104.patch | 33 +++++++++++ .../synaptics-Add-new-PID-0x015F.patch | 33 +++++++++++ .../synaptics-Add-new-PID-0x0168.patch | 33 +++++++++++ debian/patches/upek-add-PID-0x2017.patch | 20 +++++++ 15 files changed, 490 insertions(+) create mode 100644 debian/patches/elan-add-PID-0x0c4b.patch create mode 100644 debian/patches/elanspi-add-04f3-241f.patch create mode 100644 debian/patches/goodix-Lower-poor-capture-warnings-to-debug-message.patch create mode 100644 debian/patches/goodix-Reset-device-if-storage-listing-fails.patch create mode 100644 debian/patches/goodixmoc-add-PID-0x6014.patch create mode 100644 debian/patches/goodixmoc-add-PID-0x631C.patch create mode 100644 debian/patches/goodixmoc-add-PID-0x634C.patch create mode 100644 debian/patches/goodixmoc-add-PID-0x6384.patch create mode 100644 debian/patches/goodixmoc-add-PID-0x659A.patch create mode 100644 debian/patches/goodixmoc-add-PID-6094.patch create mode 100644 debian/patches/synaptics-Add-new-PID-0x0104.patch create mode 100644 debian/patches/synaptics-Add-new-PID-0x015F.patch create mode 100644 debian/patches/synaptics-Add-new-PID-0x0168.patch create mode 100644 debian/patches/upek-add-PID-0x2017.patch diff --git a/debian/patches/elan-add-PID-0x0c4b.patch b/debian/patches/elan-add-PID-0x0c4b.patch new file mode 100644 index 00000000..713f9e74 --- /dev/null +++ b/debian/patches/elan-add-PID-0x0c4b.patch @@ -0,0 +1,54 @@ +From: Josh Chen +Date: Wed, 13 Apr 2022 14:48:29 +0800 +Subject: elan: add PID 0x0c4b + +--- + data/autosuspend.hwdb | 2 +- + libfprint/drivers/elan.h | 1 + + libfprint/fprint-list-udev-hwdb.c | 1 - + 3 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/data/autosuspend.hwdb b/data/autosuspend.hwdb +index c305c44..49fcacf 100644 +--- a/data/autosuspend.hwdb ++++ b/data/autosuspend.hwdb +@@ -133,6 +133,7 @@ usb:v04F3p0C32* + usb:v04F3p0C33* + usb:v04F3p0C3D* + usb:v04F3p0C42* ++usb:v04F3p0C4B* + usb:v04F3p0C4D* + usb:v04F3p0C4F* + usb:v04F3p0C63* +@@ -259,7 +260,6 @@ usb:v138Ap0091* + # Known unsupported devices + usb:v04F3p036B* + usb:v04F3p0C00* +-usb:v04F3p0C4B* + usb:v04F3p0C4C* + usb:v04F3p0C57* + usb:v04F3p0C5E* +diff --git a/libfprint/drivers/elan.h b/libfprint/drivers/elan.h +index 33f3aef..7d08994 100644 +--- a/libfprint/drivers/elan.h ++++ b/libfprint/drivers/elan.h +@@ -215,6 +215,7 @@ static const FpIdEntry elan_id_table[] = { + {.vid = ELAN_VEND_ID, .pid = 0x0c33, .driver_data = ELAN_ALL_DEV}, + {.vid = ELAN_VEND_ID, .pid = 0x0c3d, .driver_data = ELAN_ALL_DEV}, + {.vid = ELAN_VEND_ID, .pid = 0x0c42, .driver_data = ELAN_0C42}, ++ {.vid = ELAN_VEND_ID, .pid = 0x0c4b, .driver_data = ELAN_ALL_DEV}, + {.vid = ELAN_VEND_ID, .pid = 0x0c4d, .driver_data = ELAN_ALL_DEV}, + {.vid = ELAN_VEND_ID, .pid = 0x0c4f, .driver_data = ELAN_ALL_DEV}, + {.vid = ELAN_VEND_ID, .pid = 0x0c63, .driver_data = ELAN_ALL_DEV}, +diff --git a/libfprint/fprint-list-udev-hwdb.c b/libfprint/fprint-list-udev-hwdb.c +index ad9cdd0..5244cc6 100644 +--- a/libfprint/fprint-list-udev-hwdb.c ++++ b/libfprint/fprint-list-udev-hwdb.c +@@ -31,7 +31,6 @@ static const FpIdEntry whitelist_id_table[] = { + */ + { .vid = 0x04f3, .pid = 0x036b }, + { .vid = 0x04f3, .pid = 0x0c00 }, +- { .vid = 0x04f3, .pid = 0x0c4b }, + { .vid = 0x04f3, .pid = 0x0c4c }, + { .vid = 0x04f3, .pid = 0x0c57 }, + { .vid = 0x04f3, .pid = 0x0c5e }, diff --git a/debian/patches/elanspi-add-04f3-241f.patch b/debian/patches/elanspi-add-04f3-241f.patch new file mode 100644 index 00000000..901f7102 --- /dev/null +++ b/debian/patches/elanspi-add-04f3-241f.patch @@ -0,0 +1,22 @@ +From: Matthew Mirvish +Date: Sun, 8 May 2022 18:32:29 -0400 +Subject: elanspi: add 04f3:241f + +Reported as working with this config in +https://github.com/mincrmatt12/elan-spi-fingerprint/issues/11. +--- + libfprint/drivers/elanspi.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/libfprint/drivers/elanspi.h b/libfprint/drivers/elanspi.h +index ffe3416..a8d7319 100644 +--- a/libfprint/drivers/elanspi.h ++++ b/libfprint/drivers/elanspi.h +@@ -348,6 +348,7 @@ static const FpIdEntry elanspi_id_table[] = { + {.udev_types = ELANSPI_UDEV_TYPES, .spi_acpi_id = "ELAN7001", .hid_id = {.vid = ELANSPI_TP_VID, .pid = 0x30b2}, .driver_data = ELANSPI_NO_ROTATE}, + {.udev_types = ELANSPI_UDEV_TYPES, .spi_acpi_id = "ELAN70A1", .hid_id = {.vid = ELANSPI_TP_VID, .pid = 0x30b2}, .driver_data = ELANSPI_NO_ROTATE}, + {.udev_types = ELANSPI_UDEV_TYPES, .spi_acpi_id = "ELAN7001", .hid_id = {.vid = ELANSPI_TP_VID, .pid = 0x309f}, .driver_data = ELANSPI_180_ROTATE}, ++ {.udev_types = ELANSPI_UDEV_TYPES, .spi_acpi_id = "ELAN7001", .hid_id = {.vid = ELANSPI_TP_VID, .pid = 0x241f}, .driver_data = ELANSPI_NO_ROTATE}, + {.udev_types = 0} + }; + diff --git a/debian/patches/goodix-Lower-poor-capture-warnings-to-debug-message.patch b/debian/patches/goodix-Lower-poor-capture-warnings-to-debug-message.patch new file mode 100644 index 00000000..0f5172d8 --- /dev/null +++ b/debian/patches/goodix-Lower-poor-capture-warnings-to-debug-message.patch @@ -0,0 +1,33 @@ +From: Benjamin Berg +Date: Tue, 14 Jun 2022 15:32:56 +0200 +Subject: goodix: Lower poor capture warnings to debug message + +It is completely fine for a capture to have a low quality or fail. No +need to warn about this. Main reason to remove it though is so that +recordings that contain such a message do not trigger a failure. +--- + libfprint/drivers/goodixmoc/goodix.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/libfprint/drivers/goodixmoc/goodix.c b/libfprint/drivers/goodixmoc/goodix.c +index 0686856..48dafe1 100644 +--- a/libfprint/drivers/goodixmoc/goodix.c ++++ b/libfprint/drivers/goodixmoc/goodix.c +@@ -661,7 +661,7 @@ fp_enroll_capture_cb (FpiDeviceGoodixMoc *self, + /* */ + if (resp->result >= GX_FAILED) + { +- fp_warn ("Capture sample failed, result: 0x%x", resp->result); ++ fp_info ("Capture sample failed, result: 0x%x", resp->result); + fpi_device_enroll_progress (FP_DEVICE (self), + self->enroll_stage, + NULL, +@@ -675,7 +675,7 @@ fp_enroll_capture_cb (FpiDeviceGoodixMoc *self, + if ((resp->capture_data_resp.img_quality < self->sensorcfg->config[4]) || + (resp->capture_data_resp.img_coverage < self->sensorcfg->config[5])) + { +- fp_warn ("Capture sample poor quality(%d): %d or coverage(%d): %d", ++ fp_info ("Capture sample poor quality(%d): %d or coverage(%d): %d", + self->sensorcfg->config[4], + resp->capture_data_resp.img_quality, + self->sensorcfg->config[5], diff --git a/debian/patches/goodix-Reset-device-if-storage-listing-fails.patch b/debian/patches/goodix-Reset-device-if-storage-listing-fails.patch new file mode 100644 index 0000000000000000000000000000000000000000..e3b621d612a888cf6f2c62dc2c399972f15332d3 GIT binary patch literal 147030 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В3j8qkNzMLa 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 +Date: Sat, 17 Sep 2022 13:59:11 +0800 +Subject: goodixmoc: add PID 0x6014 + +Signed-off-by: Lv Ying +--- + data/autosuspend.hwdb | 1 + + libfprint/drivers/goodixmoc/goodix.c | 2 ++ + 2 files changed, 3 insertions(+) + +diff --git a/data/autosuspend.hwdb b/data/autosuspend.hwdb +index d8127c3..9a63c43 100644 +--- a/data/autosuspend.hwdb ++++ b/data/autosuspend.hwdb +@@ -159,6 +159,7 @@ usb:v1C7Ap0603* + + # Supported by libfprint driver goodixmoc + usb:v27C6p5840* ++usb:v27C6p6014* + usb:v27C6p6094* + usb:v27C6p609C* + usb:v27C6p60A2* +diff --git a/libfprint/drivers/goodixmoc/goodix.c b/libfprint/drivers/goodixmoc/goodix.c +index b894feb..0686856 100644 +--- a/libfprint/drivers/goodixmoc/goodix.c ++++ b/libfprint/drivers/goodixmoc/goodix.c +@@ -1359,6 +1359,7 @@ gx_fp_probe (FpDevice *device) + { + case 0x6496: + case 0x60A2: ++ case 0x6014: + case 0x6094: + case 0x609C: + case 0x631C: +@@ -1600,6 +1601,7 @@ fpi_device_goodixmoc_init (FpiDeviceGoodixMoc *self) + + static const FpIdEntry id_table[] = { + { .vid = 0x27c6, .pid = 0x5840, }, ++ { .vid = 0x27c6, .pid = 0x6014, }, + { .vid = 0x27c6, .pid = 0x6094, }, + { .vid = 0x27c6, .pid = 0x609C, }, + { .vid = 0x27c6, .pid = 0x60A2, }, diff --git a/debian/patches/goodixmoc-add-PID-0x631C.patch b/debian/patches/goodixmoc-add-PID-0x631C.patch new file mode 100644 index 00000000..e3c4089b --- /dev/null +++ b/debian/patches/goodixmoc-add-PID-0x631C.patch @@ -0,0 +1,41 @@ +From: mahaosen +Date: Sat, 13 Aug 2022 17:28:37 +0800 +Subject: goodixmoc: add PID 0x631C + +--- + data/autosuspend.hwdb | 1 + + libfprint/drivers/goodixmoc/goodix.c | 2 ++ + 2 files changed, 3 insertions(+) + +diff --git a/data/autosuspend.hwdb b/data/autosuspend.hwdb +index 5977aa8..1181d52 100644 +--- a/data/autosuspend.hwdb ++++ b/data/autosuspend.hwdb +@@ -161,6 +161,7 @@ usb:v1C7Ap0603* + usb:v27C6p5840* + usb:v27C6p609C* + usb:v27C6p60A2* ++usb:v27C6p631C* + usb:v27C6p6384* + usb:v27C6p639C* + usb:v27C6p63AC* +diff --git a/libfprint/drivers/goodixmoc/goodix.c b/libfprint/drivers/goodixmoc/goodix.c +index a99c564..0fc17e9 100644 +--- a/libfprint/drivers/goodixmoc/goodix.c ++++ b/libfprint/drivers/goodixmoc/goodix.c +@@ -1360,6 +1360,7 @@ gx_fp_probe (FpDevice *device) + case 0x6496: + case 0x60A2: + case 0x609C: ++ case 0x631C: + case 0x6384: + case 0x639C: + case 0x63AC: +@@ -1599,6 +1600,7 @@ static const FpIdEntry id_table[] = { + { .vid = 0x27c6, .pid = 0x5840, }, + { .vid = 0x27c6, .pid = 0x609C, }, + { .vid = 0x27c6, .pid = 0x60A2, }, ++ { .vid = 0x27c6, .pid = 0x631C, }, + { .vid = 0x27c6, .pid = 0x6384, }, + { .vid = 0x27c6, .pid = 0x639C, }, + { .vid = 0x27c6, .pid = 0x63AC, }, diff --git a/debian/patches/goodixmoc-add-PID-0x634C.patch b/debian/patches/goodixmoc-add-PID-0x634C.patch new file mode 100644 index 00000000..1e2f91d0 --- /dev/null +++ b/debian/patches/goodixmoc-add-PID-0x634C.patch @@ -0,0 +1,41 @@ +From: mahaosen +Date: Fri, 26 Aug 2022 16:46:16 +0800 +Subject: goodixmoc: add PID 0x634C + +--- + data/autosuspend.hwdb | 1 + + libfprint/drivers/goodixmoc/goodix.c | 2 ++ + 2 files changed, 3 insertions(+) + +diff --git a/data/autosuspend.hwdb b/data/autosuspend.hwdb +index 7d18ce8..e25b026 100644 +--- a/data/autosuspend.hwdb ++++ b/data/autosuspend.hwdb +@@ -162,6 +162,7 @@ usb:v27C6p5840* + usb:v27C6p609C* + usb:v27C6p60A2* + usb:v27C6p631C* ++usb:v27C6p634C* + usb:v27C6p6384* + usb:v27C6p639C* + usb:v27C6p63AC* +diff --git a/libfprint/drivers/goodixmoc/goodix.c b/libfprint/drivers/goodixmoc/goodix.c +index 0fc17e9..574f19c 100644 +--- a/libfprint/drivers/goodixmoc/goodix.c ++++ b/libfprint/drivers/goodixmoc/goodix.c +@@ -1361,6 +1361,7 @@ gx_fp_probe (FpDevice *device) + case 0x60A2: + case 0x609C: + case 0x631C: ++ case 0x634C: + case 0x6384: + case 0x639C: + case 0x63AC: +@@ -1601,6 +1602,7 @@ static const FpIdEntry id_table[] = { + { .vid = 0x27c6, .pid = 0x609C, }, + { .vid = 0x27c6, .pid = 0x60A2, }, + { .vid = 0x27c6, .pid = 0x631C, }, ++ { .vid = 0x27c6, .pid = 0x634C, }, + { .vid = 0x27c6, .pid = 0x6384, }, + { .vid = 0x27c6, .pid = 0x639C, }, + { .vid = 0x27c6, .pid = 0x63AC, }, diff --git a/debian/patches/goodixmoc-add-PID-0x6384.patch b/debian/patches/goodixmoc-add-PID-0x6384.patch new file mode 100644 index 00000000..a12c0a5c --- /dev/null +++ b/debian/patches/goodixmoc-add-PID-0x6384.patch @@ -0,0 +1,42 @@ +From: Marcus Pfeffer +Date: Wed, 22 Jun 2022 10:05:25 +0200 +Subject: goodixmoc: add PID 0x6384 + +Closes: #489 +--- + data/autosuspend.hwdb | 1 + + libfprint/drivers/goodixmoc/goodix.c | 2 ++ + 2 files changed, 3 insertions(+) + +diff --git a/data/autosuspend.hwdb b/data/autosuspend.hwdb +index e1b9f3c..6e53964 100644 +--- a/data/autosuspend.hwdb ++++ b/data/autosuspend.hwdb +@@ -159,6 +159,7 @@ usb:v1C7Ap0603* + usb:v27C6p5840* + usb:v27C6p609C* + usb:v27C6p60A2* ++usb:v27C6p6384* + usb:v27C6p639C* + usb:v27C6p63AC* + usb:v27C6p63BC* +diff --git a/libfprint/drivers/goodixmoc/goodix.c b/libfprint/drivers/goodixmoc/goodix.c +index 595b19b..a99c564 100644 +--- a/libfprint/drivers/goodixmoc/goodix.c ++++ b/libfprint/drivers/goodixmoc/goodix.c +@@ -1360,6 +1360,7 @@ gx_fp_probe (FpDevice *device) + case 0x6496: + case 0x60A2: + case 0x609C: ++ case 0x6384: + case 0x639C: + case 0x63AC: + case 0x63BC: +@@ -1598,6 +1599,7 @@ static const FpIdEntry id_table[] = { + { .vid = 0x27c6, .pid = 0x5840, }, + { .vid = 0x27c6, .pid = 0x609C, }, + { .vid = 0x27c6, .pid = 0x60A2, }, ++ { .vid = 0x27c6, .pid = 0x6384, }, + { .vid = 0x27c6, .pid = 0x639C, }, + { .vid = 0x27c6, .pid = 0x63AC, }, + { .vid = 0x27c6, .pid = 0x63BC, }, diff --git a/debian/patches/goodixmoc-add-PID-0x659A.patch b/debian/patches/goodixmoc-add-PID-0x659A.patch new file mode 100644 index 00000000..d62511e4 --- /dev/null +++ b/debian/patches/goodixmoc-add-PID-0x659A.patch @@ -0,0 +1,41 @@ +From: yangdi +Date: Tue, 19 Jul 2022 11:37:09 +0800 +Subject: goodixmoc: add PID 0x659A + +--- + data/autosuspend.hwdb | 1 + + libfprint/drivers/goodixmoc/goodix.c | 2 ++ + 2 files changed, 3 insertions(+) + +diff --git a/data/autosuspend.hwdb b/data/autosuspend.hwdb +index 9e462e7..e1b9f3c 100644 +--- a/data/autosuspend.hwdb ++++ b/data/autosuspend.hwdb +@@ -168,6 +168,7 @@ usb:v27C6p6584* + usb:v27C6p658C* + usb:v27C6p6592* + usb:v27C6p6594* ++usb:v27C6p659A* + usb:v27C6p659C* + usb:v27C6p6A94* + ID_AUTOSUSPEND=1 +diff --git a/libfprint/drivers/goodixmoc/goodix.c b/libfprint/drivers/goodixmoc/goodix.c +index ab84130..595b19b 100644 +--- a/libfprint/drivers/goodixmoc/goodix.c ++++ b/libfprint/drivers/goodixmoc/goodix.c +@@ -1365,6 +1365,7 @@ gx_fp_probe (FpDevice *device) + case 0x63BC: + case 0x63CC: + case 0x6A94: ++ case 0x659A: + self->max_enroll_stage = 12; + break; + +@@ -1606,6 +1607,7 @@ static const FpIdEntry id_table[] = { + { .vid = 0x27c6, .pid = 0x658C, }, + { .vid = 0x27c6, .pid = 0x6592, }, + { .vid = 0x27c6, .pid = 0x6594, }, ++ { .vid = 0x27c6, .pid = 0x659A, }, + { .vid = 0x27c6, .pid = 0x659C, }, + { .vid = 0x27c6, .pid = 0x6A94, }, + { .vid = 0, .pid = 0, .driver_data = 0 }, /* terminating entry */ diff --git a/debian/patches/goodixmoc-add-PID-6094.patch b/debian/patches/goodixmoc-add-PID-6094.patch new file mode 100644 index 00000000..7899c051 --- /dev/null +++ b/debian/patches/goodixmoc-add-PID-6094.patch @@ -0,0 +1,41 @@ +From: "Paulo E. Castro" +Date: Mon, 18 Jul 2022 19:32:23 +0100 +Subject: goodixmoc: add PID 6094 + +--- + data/autosuspend.hwdb | 1 + + libfprint/drivers/goodixmoc/goodix.c | 2 ++ + 2 files changed, 3 insertions(+) + +diff --git a/data/autosuspend.hwdb b/data/autosuspend.hwdb +index e25b026..d8127c3 100644 +--- a/data/autosuspend.hwdb ++++ b/data/autosuspend.hwdb +@@ -159,6 +159,7 @@ usb:v1C7Ap0603* + + # Supported by libfprint driver goodixmoc + usb:v27C6p5840* ++usb:v27C6p6094* + usb:v27C6p609C* + usb:v27C6p60A2* + usb:v27C6p631C* +diff --git a/libfprint/drivers/goodixmoc/goodix.c b/libfprint/drivers/goodixmoc/goodix.c +index 574f19c..b894feb 100644 +--- a/libfprint/drivers/goodixmoc/goodix.c ++++ b/libfprint/drivers/goodixmoc/goodix.c +@@ -1359,6 +1359,7 @@ gx_fp_probe (FpDevice *device) + { + case 0x6496: + case 0x60A2: ++ case 0x6094: + case 0x609C: + case 0x631C: + case 0x634C: +@@ -1599,6 +1600,7 @@ fpi_device_goodixmoc_init (FpiDeviceGoodixMoc *self) + + static const FpIdEntry id_table[] = { + { .vid = 0x27c6, .pid = 0x5840, }, ++ { .vid = 0x27c6, .pid = 0x6094, }, + { .vid = 0x27c6, .pid = 0x609C, }, + { .vid = 0x27c6, .pid = 0x60A2, }, + { .vid = 0x27c6, .pid = 0x631C, }, diff --git a/debian/patches/series b/debian/patches/series index dad26c29..ff103437 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -2,5 +2,19 @@ tod-Add-wrapper-for-goodix-tod-not-handling-identificatio.patch fpi-device-Avoid-using-device-action-strings.patch elanmoc-add-PID-0x0c82.patch elanmoc-add-PID-0x0c88.patch +synaptics-Add-new-PID-0x0168.patch +elan-add-PID-0x0c4b.patch +elanspi-add-04f3-241f.patch +synaptics-Add-new-PID-0x015F.patch +goodix-Reset-device-if-storage-listing-fails.patch +goodix-Make-fingerlist-parse-error-non-fatal.patch elanmoc-Make-sure-sensor-in-the-right-mode-at-identity.patch +goodixmoc-add-PID-0x659A.patch +goodixmoc-add-PID-0x6384.patch elanmoc-add-PID-0x0c8c-0x0c8d.patch +goodixmoc-add-PID-0x631C.patch +synaptics-Add-new-PID-0x0104.patch +goodixmoc-add-PID-0x634C.patch +goodixmoc-add-PID-6094.patch +upek-add-PID-0x2017.patch +goodixmoc-add-PID-0x6014.patch diff --git a/debian/patches/synaptics-Add-new-PID-0x0104.patch b/debian/patches/synaptics-Add-new-PID-0x0104.patch new file mode 100644 index 00000000..7a98c27a --- /dev/null +++ b/debian/patches/synaptics-Add-new-PID-0x0104.patch @@ -0,0 +1,33 @@ +From: Aris Lin +Date: Sun, 7 Aug 2022 09:29:51 +0800 +Subject: synaptics: Add new PID 0x0104 + +--- + data/autosuspend.hwdb | 1 + + libfprint/drivers/synaptics/synaptics.c | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/data/autosuspend.hwdb b/data/autosuspend.hwdb +index 1181d52..7d18ce8 100644 +--- a/data/autosuspend.hwdb ++++ b/data/autosuspend.hwdb +@@ -197,6 +197,7 @@ usb:v06CBp0126* + usb:v06CBp0129* + usb:v06CBp0168* + usb:v06CBp015F* ++usb:v06CBp0104* + ID_AUTOSUSPEND=1 + ID_PERSIST=0 + +diff --git a/libfprint/drivers/synaptics/synaptics.c b/libfprint/drivers/synaptics/synaptics.c +index effdaac..18f0377 100644 +--- a/libfprint/drivers/synaptics/synaptics.c ++++ b/libfprint/drivers/synaptics/synaptics.c +@@ -44,6 +44,7 @@ static const FpIdEntry id_table[] = { + { .vid = SYNAPTICS_VENDOR_ID, .pid = 0x0129, }, + { .vid = SYNAPTICS_VENDOR_ID, .pid = 0x0168, }, + { .vid = SYNAPTICS_VENDOR_ID, .pid = 0x015F, }, ++ { .vid = SYNAPTICS_VENDOR_ID, .pid = 0x0104, }, + { .vid = 0, .pid = 0, .driver_data = 0 }, /* terminating entry */ + }; + diff --git a/debian/patches/synaptics-Add-new-PID-0x015F.patch b/debian/patches/synaptics-Add-new-PID-0x015F.patch new file mode 100644 index 00000000..4a235f7b --- /dev/null +++ b/debian/patches/synaptics-Add-new-PID-0x015F.patch @@ -0,0 +1,33 @@ +From: Aris Lin +Date: Mon, 23 May 2022 21:06:23 +0800 +Subject: synaptics: Add new PID 0x015F + +--- + data/autosuspend.hwdb | 1 + + libfprint/drivers/synaptics/synaptics.c | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/data/autosuspend.hwdb b/data/autosuspend.hwdb +index 49fcacf..9e462e7 100644 +--- a/data/autosuspend.hwdb ++++ b/data/autosuspend.hwdb +@@ -191,6 +191,7 @@ usb:v06CBp0123* + usb:v06CBp0126* + usb:v06CBp0129* + usb:v06CBp0168* ++usb:v06CBp015F* + ID_AUTOSUSPEND=1 + ID_PERSIST=0 + +diff --git a/libfprint/drivers/synaptics/synaptics.c b/libfprint/drivers/synaptics/synaptics.c +index b89989b..effdaac 100644 +--- a/libfprint/drivers/synaptics/synaptics.c ++++ b/libfprint/drivers/synaptics/synaptics.c +@@ -43,6 +43,7 @@ static const FpIdEntry id_table[] = { + { .vid = SYNAPTICS_VENDOR_ID, .pid = 0x0126, }, + { .vid = SYNAPTICS_VENDOR_ID, .pid = 0x0129, }, + { .vid = SYNAPTICS_VENDOR_ID, .pid = 0x0168, }, ++ { .vid = SYNAPTICS_VENDOR_ID, .pid = 0x015F, }, + { .vid = 0, .pid = 0, .driver_data = 0 }, /* terminating entry */ + }; + diff --git a/debian/patches/synaptics-Add-new-PID-0x0168.patch b/debian/patches/synaptics-Add-new-PID-0x0168.patch new file mode 100644 index 00000000..e4a8b849 --- /dev/null +++ b/debian/patches/synaptics-Add-new-PID-0x0168.patch @@ -0,0 +1,33 @@ +From: Aris Lin +Date: Wed, 6 Apr 2022 14:17:34 +0800 +Subject: synaptics: Add new PID 0x0168 + +--- + data/autosuspend.hwdb | 1 + + libfprint/drivers/synaptics/synaptics.c | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/data/autosuspend.hwdb b/data/autosuspend.hwdb +index 725c602..c305c44 100644 +--- a/data/autosuspend.hwdb ++++ b/data/autosuspend.hwdb +@@ -189,6 +189,7 @@ usb:v06CBp0103* + usb:v06CBp0123* + usb:v06CBp0126* + usb:v06CBp0129* ++usb:v06CBp0168* + ID_AUTOSUSPEND=1 + ID_PERSIST=0 + +diff --git a/libfprint/drivers/synaptics/synaptics.c b/libfprint/drivers/synaptics/synaptics.c +index 7a2c6eb..b89989b 100644 +--- a/libfprint/drivers/synaptics/synaptics.c ++++ b/libfprint/drivers/synaptics/synaptics.c +@@ -42,6 +42,7 @@ static const FpIdEntry id_table[] = { + { .vid = SYNAPTICS_VENDOR_ID, .pid = 0x0123, }, + { .vid = SYNAPTICS_VENDOR_ID, .pid = 0x0126, }, + { .vid = SYNAPTICS_VENDOR_ID, .pid = 0x0129, }, ++ { .vid = SYNAPTICS_VENDOR_ID, .pid = 0x0168, }, + { .vid = 0, .pid = 0, .driver_data = 0 }, /* terminating entry */ + }; + diff --git a/debian/patches/upek-add-PID-0x2017.patch b/debian/patches/upek-add-PID-0x2017.patch new file mode 100644 index 00000000..2116c610 --- /dev/null +++ b/debian/patches/upek-add-PID-0x2017.patch @@ -0,0 +1,20 @@ +From: mbv06 +Date: Mon, 26 Sep 2022 10:38:17 +0000 +Subject: upek: add PID 0x2017 + +--- + libfprint/drivers/upektc.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/libfprint/drivers/upektc.c b/libfprint/drivers/upektc.c +index 115e6b6..3f7b6a6 100644 +--- a/libfprint/drivers/upektc.c ++++ b/libfprint/drivers/upektc.c +@@ -431,6 +431,7 @@ dev_deinit (FpImageDevice *dev) + + static const FpIdEntry id_table[] = { + { .vid = 0x0483, .pid = 0x2015, .driver_data = UPEKTC_2015 }, ++ { .vid = 0x0483, .pid = 0x2017, .driver_data = UPEKTC_2015 }, + { .vid = 0x147e, .pid = 0x3001, .driver_data = UPEKTC_3001 }, + { .vid = 0, .pid = 0, .driver_data = 0 }, + };