packages/libfprint: simplify 532d patch and support 1.94.5

This commit is contained in:
Max Headroom 2022-12-09 14:24:05 +01:00
parent f9c0e251d4
commit da1eed6b3f

View file

@ -1,174 +1,8 @@
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 00000000..4997f6f1
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1,2 @@
+github: mpi3d
+custom: "btc.com/btc/address/1MPi3D1HxS71k83XnqK3yB8CNmyHQeerZZ"
diff --git a/.gitignore b/.gitignore
index 07d73995..0ab23946 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
*.o
*.swp
_build
+*.pgm
diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json
new file mode 100644
index 00000000..6994aa63
--- /dev/null
+++ b/.vscode/c_cpp_properties.json
@@ -0,0 +1,17 @@
+{
+ "version": 4,
+ "configurations": [
+ {
+ "name": "Linux",
+ "includePath": [
+ "${workspaceFolder}/**"
+ ],
+ "defines": [],
+ "compilerPath": "/usr/bin/gcc",
+ "cStandard": "gnu17",
+ "cppStandard": "gnu++14",
+ "intelliSenseMode": "linux-gcc-x64",
+ "compileCommands": "${workspaceFolder}/_build/compile_commands.json"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 00000000..68646c13
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,33 @@
+{
+ // Use IntelliSense to learn about possible attributes.
+ // Hover to view descriptions of existing attributes.
+ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "name": "Launch Image Capture",
+ "type": "cppdbg",
+ "request": "launch",
+ "program": "${workspaceFolder}/_build/examples/img-capture",
+ "args": [],
+ "stopAtEntry": false,
+ "cwd": "${fileDirname}",
+ "environment": [],
+ "externalConsole": false,
+ "MIMode": "gdb",
+ "setupCommands": [
+ {
+ "description": "Enable pretty-printing for gdb",
+ "text": "-enable-pretty-printing",
+ "ignoreFailures": true
+ },
+ {
+ "description": "Set Disassembly Flavor to Intel",
+ "text": "-gdb-set disassembly-flavor intel",
+ "ignoreFailures": true
+ }
+ ],
+ "preLaunchTask": "${defaultBuildTask}"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 00000000..0e6ce268
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,15 @@
+{
+ "files.associations": {
+ "*.c": "c",
+ "*.h": "c",
+ "limits": "c",
+ "array": "c",
+ "string": "c",
+ "string_view": "c",
+ "ranges": "c",
+ "new": "c",
+ "streambuf": "c",
+ "functional": "c",
+ "typeinfo": "c"
+ }
+}
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
new file mode 100644
index 00000000..6f515c8c
--- /dev/null
+++ b/.vscode/tasks.json
@@ -0,0 +1,36 @@
+{
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "type": "shell",
+ "label": "Configure the project",
+ "command": "/usr/bin/meson",
+ "args": [
+ "${workspaceFolder}/_build"
+ ],
+ "problemMatcher": []
+ },
+ {
+ "type": "shell",
+ "label": "Build the project",
+ "command": "/usr/bin/meson",
+ "args": [
+ "compile"
+ ],
+ "options": {
+ "cwd": "${workspaceFolder}/_build"
+ },
+ "problemMatcher": {
+ "base": "$gcc",
+ "fileLocation": [
+ "relative",
+ "${workspaceFolder}/_build"
+ ]
+ },
+ "group": {
+ "kind": "build",
+ "isDefault": true
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index 7f59b4e8..68f18953 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,8 @@
+This is an experimental libfprint driver implementation for Goodix drivers.
+
+Currently in the works:
+- 27c6x5110 (80x64 resolution)
+
# libfprint
libfprint is part of the fprint project:
diff --git a/data/autosuspend.hwdb b/data/autosuspend.hwdb
index 6e3fd396..9862d188 100644
--- a/data/autosuspend.hwdb
+++ b/data/autosuspend.hwdb
@@ -146,6 +146,7 @@ usb:v04F3p0C58*
usb:v04F3p0C7D*
usb:v04F3p0C7E*
usb:v04F3p0C82*
+usb:v04F3p0C88*
ID_AUTOSUSPEND=1
ID_PERSIST=0
@@ -172,6 +173,17 @@ usb:v27C6p6A94*
@@ -190,6 +190,17 @@ usb:v27C6p6A94*
ID_AUTOSUSPEND=1
ID_PERSIST=0
@ -186,18 +20,20 @@ index 6e3fd396..9862d188 100644
# Supported by libfprint driver nb1010
usb:v298Dp1010*
ID_AUTOSUSPEND=1
@@ -317,19 +329,16 @@ usb:v1C7Ap0300*
@@ -343,7 +354,6 @@ usb:v1C7Ap0300*
usb:v1C7Ap0575*
usb:v1C7Ap0576*
usb:v27C6p5042*
-usb:v27C6p5110*
usb:v27C6p5117*
usb:v27C6p5120*
usb:v27C6p5125*
usb:v27C6p5201*
@@ -351,13 +361,11 @@ usb:v27C6p5201*
usb:v27C6p521D*
usb:v27C6p5301*
usb:v27C6p530C*
-usb:v27C6p532D*
usb:v27C6p5335*
usb:v27C6p533C*
usb:v27C6p5381*
usb:v27C6p5385*
@ -205,150 +41,7 @@ index 6e3fd396..9862d188 100644
-usb:v27C6p538D*
usb:v27C6p5395*
usb:v27C6p5503*
usb:v27C6p5584*
diff --git a/libfprint/drivers/elanmoc/elanmoc.c b/libfprint/drivers/elanmoc/elanmoc.c
index 3185ee7a..ad23e93e 100644
--- a/libfprint/drivers/elanmoc/elanmoc.c
+++ b/libfprint/drivers/elanmoc/elanmoc.c
@@ -28,6 +28,7 @@ static const FpIdEntry id_table[] = {
{ .vid = 0x04f3, .pid = 0x0c7d, },
{ .vid = 0x04f3, .pid = 0x0c7e, },
{ .vid = 0x04f3, .pid = 0x0c82, },
+ { .vid = 0x04f3, .pid = 0x0c88, },
{ .vid = 0, .pid = 0, .driver_data = 0 }, /* terminating entry */
};
diff --git a/libfprint/drivers/goodixmoc/goodix.c b/libfprint/drivers/goodixmoc/goodix.c
index 4eeb7215..cfc69c94 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],
@@ -1041,6 +1041,47 @@ fp_init_config_cb (FpiDeviceGoodixMoc *self,
fpi_ssm_next_state (self->task_ssm);
}
+static void
+fp_init_cb_reset_or_complete (FpiDeviceGoodixMoc *self,
+ gxfp_cmd_response_t *resp,
+ GError *error)
+{
+ if (error)
+ {
+ fp_warn ("Template storage appears to have been corrupted! Error was: %s", error->message);
+ fp_warn ("A known reason for this to happen is a firmware bug triggered by another storage area being initialized.");
+ fpi_ssm_jump_to_state (self->task_ssm, FP_INIT_RESET_DEVICE);
+ }
+ else
+ {
+ fpi_ssm_mark_completed (self->task_ssm);
+ }
+}
+
+static void
+fp_init_reset_device_cb (FpiDeviceGoodixMoc *self,
+ gxfp_cmd_response_t *resp,
+ GError *error)
+{
+ if (error)
+ {
+ fp_warn ("Reset failed: %s", error->message);
+ fpi_ssm_mark_failed (self->task_ssm, error);
+ return;
+ }
+ if ((resp->result >= GX_FAILED) && (resp->result != GX_ERROR_FINGER_ID_NOEXIST))
+ {
+ fp_warn ("Reset failed, device reported: 0x%x", resp->result);
+ fpi_ssm_mark_failed (self->task_ssm,
+ fpi_device_error_new_msg (FP_DEVICE_ERROR_GENERAL,
+ "Failed clear storage, result: 0x%x",
+ resp->result));
+ return;
+ }
+
+ fp_warn ("Reset completed");
+ fpi_ssm_mark_completed (self->task_ssm);
+}
static void
fp_init_sm_run_state (FpiSsm *ssm, FpDevice *device)
@@ -1065,6 +1106,30 @@ fp_init_sm_run_state (FpiSsm *ssm, FpDevice *device)
sizeof (gxfp_sensor_cfg_t),
fp_init_config_cb);
break;
+
+ case FP_INIT_TEMPLATE_LIST:
+ /* List prints to check whether the template DB was corrupted.
+ * As of 2022-06-13 there is a known firmware issue that can cause the
+ * stored templates for Linux to be corrupted when the Windows storage
+ * area is initialized.
+ * In that case, we'll get a protocol failure trying to retrieve the
+ * list of prints.
+ */
+ goodix_sensor_cmd (self, MOC_CMD0_GETFINGERLIST, MOC_CMD1_DEFAULT,
+ FALSE,
+ (const guint8 *) &dummy,
+ 1,
+ fp_init_cb_reset_or_complete);
+ break;
+
+ case FP_INIT_RESET_DEVICE:
+ fp_warn ("Resetting device storage, you will need to enroll all prints again!");
+ goodix_sensor_cmd (self, MOC_CMD0_DELETETEMPLATE, MOC_CMD1_DELETE_ALL,
+ FALSE,
+ NULL,
+ 0,
+ fp_init_reset_device_cb);
+ break;
}
diff --git a/libfprint/drivers/goodixmoc/goodix.h b/libfprint/drivers/goodixmoc/goodix.h
index 23e142ac..56b2d171 100644
--- a/libfprint/drivers/goodixmoc/goodix.h
+++ b/libfprint/drivers/goodixmoc/goodix.h
@@ -35,6 +35,8 @@ typedef enum {
typedef enum {
FP_INIT_VERSION = 0,
FP_INIT_CONFIG,
+ FP_INIT_TEMPLATE_LIST,
+ FP_INIT_RESET_DEVICE,
FP_INIT_NUM_STATES,
} FpInitState;
diff --git a/libfprint/drivers/goodixmoc/goodix_proto.c b/libfprint/drivers/goodixmoc/goodix_proto.c
index b615dbaa..72511a88 100644
--- a/libfprint/drivers/goodixmoc/goodix_proto.c
+++ b/libfprint/drivers/goodixmoc/goodix_proto.c
@@ -393,10 +393,8 @@ gx_proto_parse_body (uint16_t cmd, uint8_t *buffer, uint16_t buffer_len, pgxfp_c
fingerid_length,
&presp->finger_list_resp.finger_list[num]) != 0)
{
- g_error ("parse fingerlist error");
- presp->finger_list_resp.finger_num = 0;
- presp->result = GX_FAILED;
- break;
+ g_warning ("Failed to parse finger list");
+ return -1;
}
offset += fingerid_length;
}
usb:v27C6p550A*
diff --git a/libfprint/drivers/goodixtls/goodix.c b/libfprint/drivers/goodixtls/goodix.c
new file mode 100644
index 00000000..0d2f0b7f
@ -4719,39 +4412,24 @@ index 00000000..66c61f45
+// This is called only once to deinit the TLS server.
+// Return TRUE on success, FALSE otherwise and error should be set.
+gboolean goodix_tls_server_deinit(GoodixTlsServer *self, GError **error);
diff --git a/libfprint/fpi-print.h b/libfprint/fpi-print.h
index fb388097..f3e72b40 100644
--- a/libfprint/fpi-print.h
+++ b/libfprint/fpi-print.h
@@ -42,9 +42,9 @@ gboolean fpi_print_add_from_image (FpPrint *print,
FpImage *image,
GError **error);
-FpiMatchResult fpi_print_bz3_match (FpPrint * template,
- FpPrint * print,
- gint bz3_threshold,
+FpiMatchResult fpi_print_bz3_match (FpPrint *temp,
+ FpPrint *print,
+ gint bz3_threshold,
GError **error);
/* Helpers to encode metadata into user ID strings. */
diff --git a/libfprint/fprint-list-udev-hwdb.c b/libfprint/fprint-list-udev-hwdb.c
index 16b6d18f..b768d610 100644
--- a/libfprint/fprint-list-udev-hwdb.c
+++ b/libfprint/fprint-list-udev-hwdb.c
@@ -88,19 +88,16 @@ static const FpIdEntry whitelist_id_table[] = {
@@ -94,7 +94,6 @@ static const FpIdEntry whitelist_id_table[] = {
{ .vid = 0x1c7a, .pid = 0x0575 },
{ .vid = 0x1c7a, .pid = 0x0576 },
{ .vid = 0x27c6, .pid = 0x5042 },
- { .vid = 0x27c6, .pid = 0x5110 },
{ .vid = 0x27c6, .pid = 0x5117 },
{ .vid = 0x27c6, .pid = 0x5120 },
{ .vid = 0x27c6, .pid = 0x5125 },
{ .vid = 0x27c6, .pid = 0x5201 },
@@ -102,13 +101,11 @@ static const FpIdEntry whitelist_id_table[] = {
{ .vid = 0x27c6, .pid = 0x521d },
{ .vid = 0x27c6, .pid = 0x5301 },
{ .vid = 0x27c6, .pid = 0x530c },
- { .vid = 0x27c6, .pid = 0x532d },
{ .vid = 0x27c6, .pid = 0x5335 },
{ .vid = 0x27c6, .pid = 0x533c },
{ .vid = 0x27c6, .pid = 0x5381 },
{ .vid = 0x27c6, .pid = 0x5385 },
@ -4759,7 +4437,7 @@ index 16b6d18f..b768d610 100644
- { .vid = 0x27c6, .pid = 0x538d },
{ .vid = 0x27c6, .pid = 0x5395 },
{ .vid = 0x27c6, .pid = 0x5503 },
{ .vid = 0x27c6, .pid = 0x5584 },
{ .vid = 0x27c6, .pid = 0x550a },
diff --git a/libfprint/meson.build b/libfprint/meson.build
index 25ed10f3..6ee02900 100644
--- a/libfprint/meson.build
@ -4771,10 +4449,10 @@ index 25ed10f3..6ee02900 100644
+ 'goodixtls511' :
+ [ 'drivers/goodixtls/goodix511.c' ],
+ 'goodixtls53xd' :
+ [ 'drivers/goodixtls/goodix53xd.c' ]
+ [ 'drivers/goodixtls/goodix53xd.c' ],
'fpcmoc' :
[ 'drivers/fpcmoc/fpc.c' ],
}
helper_sources = {
@@ -148,6 +152,8 @@ helper_sources = {
[ 'drivers/aesx660.c' ],
'aes3k' :
@ -4825,204 +4503,3 @@ index 823728c7..ac31a3d8 100644
elif i == 'nss'
nss_dep = dependency('nss', required: false)
if not nss_dep.found()
diff --git a/scripts/uncrustify.cfg b/scripts/uncrustify.cfg
index 1dbd3bad..34b9a358 100644
--- a/scripts/uncrustify.cfg
+++ b/scripts/uncrustify.cfg
@@ -120,7 +120,7 @@ nl_multi_line_cond true
# Not clear what to do about that...
mod_full_brace_for Remove
mod_full_brace_if Remove
-mod_full_brace_if_chain True
+mod_full_brace_if_chain 1
mod_full_brace_while Remove
mod_full_brace_do Remove
mod_full_brace_nl 3
diff --git a/tests/goodixmoc/custom.pcapng b/tests/goodixmoc/custom.pcapng
index eb58d865..b5e2d89c 100644
Binary files a/tests/goodixmoc/custom.pcapng and b/tests/goodixmoc/custom.pcapng differ
diff --git a/tests/goodixmoc/custom.py b/tests/goodixmoc/custom.py
index 1fb513a1..38fdd26c 100755
--- a/tests/goodixmoc/custom.py
+++ b/tests/goodixmoc/custom.py
@@ -25,6 +25,9 @@
d.open_sync()
+# 1. verify clear storage command, 2. make sure later asserts are good
+d.clear_storage_sync()
+
template = FPrint.Print.new(d)
def enroll_progress(*args):
diff --git a/tests/goodixmoc/device b/tests/goodixmoc/device
index 9fb39e59..1e209a1d 100644
--- a/tests/goodixmoc/device
+++ b/tests/goodixmoc/device
@@ -1,14 +1,14 @@
P: /devices/pci0000:00/0000:00:14.0/usb1/1-3
-N: bus/usb/001/053=12010002EF000040C627966400010102030109022000010103A0320904000002FF0000040705830240000007050102400000
-E: DEVNAME=/dev/bus/usb/001/053
+N: bus/usb/001/023=12010002EF000040C627966400010102030109022000010103A0320904000002FF0000040705830240000007050102400000
+E: DEVNAME=/dev/bus/usb/001/023
E: DEVTYPE=usb_device
E: DRIVER=usb
E: PRODUCT=27c6/6496/100
E: TYPE=239/0/0
E: BUSNUM=001
-E: DEVNUM=053
+E: DEVNUM=023
E: MAJOR=189
-E: MINOR=52
+E: MINOR=22
E: SUBSYSTEM=usb
E: ID_VENDOR=Goodix_Technology_Co.__Ltd.
E: ID_VENDOR_ENC=Goodix\x20Technology\x20Co.\x2c\x20Ltd.
@@ -23,6 +23,7 @@ E: ID_BUS=usb
E: ID_USB_INTERFACES=:ff0000:
E: ID_VENDOR_FROM_DATABASE=Shenzhen Goodix Technology Co.,Ltd.
E: ID_AUTOSUSPEND=1
+E: ID_PERSIST=0
E: ID_PATH=pci-0000:00:14.0-usb-0:3
E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_3
A: authorized=1\n
@@ -40,8 +41,8 @@ A: bmAttributes=a0\n
A: busnum=1\n
A: configuration=XXXX_MOC_B0\n
H: descriptors=12010002EF000040C627966400010102030109022000010103A0320904000002FF0000040705830240000007050102400000
-A: dev=189:52\n
-A: devnum=53\n
+A: dev=189:22\n
+A: devnum=23\n
A: devpath=3\n
L: driver=../../../../../bus/usb/drivers/usb
L: firmware_node=../../../../LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:1c/device:1d/device:20
@@ -51,16 +52,16 @@ A: ltm_capable=no\n
A: manufacturer=Goodix Technology Co., Ltd.\n
A: maxchild=0\n
L: port=../1-0:1.0/usb1-port3
-A: power/active_duration=29262\n
+A: power/active_duration=22667\n
A: power/autosuspend=2\n
A: power/autosuspend_delay_ms=2000\n
-A: power/connected_duration=57399\n
+A: power/connected_duration=917616\n
A: power/control=auto\n
A: power/level=auto\n
A: power/persist=1\n
-A: power/runtime_active_time=29308\n
+A: power/runtime_active_time=22809\n
A: power/runtime_status=active\n
-A: power/runtime_suspended_time=27850\n
+A: power/runtime_suspended_time=894564\n
A: power/wakeup=disabled\n
A: power/wakeup_abort_count=\n
A: power/wakeup_active=\n
@@ -77,29 +78,29 @@ A: rx_lanes=1\n
A: serial=XXXX_MOC_B0\n
A: speed=12\n
A: tx_lanes=1\n
-A: urbnum=394\n
+A: urbnum=298\n
A: version= 2.00\n
P: /devices/pci0000:00/0000:00:14.0/usb1
-N: bus/usb/001/001=12010002090001406B1D020013050302010109021900010100E0000904000001090000000705810304000C
+N: bus/usb/001/001=12010002090001406B1D020017050302010109021900010100E0000904000001090000000705810304000C
E: DEVNAME=/dev/bus/usb/001/001
E: DEVTYPE=usb_device
E: DRIVER=usb
-E: PRODUCT=1d6b/2/513
+E: PRODUCT=1d6b/2/517
E: TYPE=9/0/1
E: BUSNUM=001
E: DEVNUM=001
E: MAJOR=189
E: MINOR=0
E: SUBSYSTEM=usb
-E: ID_VENDOR=Linux_5.13.15-200.fc34.x86_64_xhci-hcd
-E: ID_VENDOR_ENC=Linux\x205.13.15-200.fc34.x86_64\x20xhci-hcd
+E: ID_VENDOR=Linux_5.17.12-300.fc36.x86_64_xhci-hcd
+E: ID_VENDOR_ENC=Linux\x205.17.12-300.fc36.x86_64\x20xhci-hcd
E: ID_VENDOR_ID=1d6b
E: ID_MODEL=xHCI_Host_Controller
E: ID_MODEL_ENC=xHCI\x20Host\x20Controller
E: ID_MODEL_ID=0002
-E: ID_REVISION=0513
-E: ID_SERIAL=Linux_5.13.15-200.fc34.x86_64_xhci-hcd_xHCI_Host_Controller_0000:00:14.0
+E: ID_REVISION=0517
+E: ID_SERIAL=Linux_5.17.12-300.fc36.x86_64_xhci-hcd_xHCI_Host_Controller_0000:00:14.0
E: ID_SERIAL_SHORT=0000:00:14.0
E: ID_BUS=usb
E: ID_USB_INTERFACES=:090000:
@@ -122,11 +123,11 @@ A: bMaxPacketSize0=64\n
A: bMaxPower=0mA\n
A: bNumConfigurations=1\n
A: bNumInterfaces= 1\n
-A: bcdDevice=0513\n
+A: bcdDevice=0517\n
A: bmAttributes=e0\n
A: busnum=1\n
A: configuration=\n
-H: descriptors=12010002090001406B1D020013050302010109021900010100E0000904000001090000000705810304000C
+H: descriptors=12010002090001406B1D020017050302010109021900010100E0000904000001090000000705810304000C
A: dev=189:0\n
A: devnum=1\n
A: devpath=0\n
@@ -136,15 +137,15 @@ A: idProduct=0002\n
A: idVendor=1d6b\n
A: interface_authorized_default=1\n
A: ltm_capable=no\n
-A: manufacturer=Linux 5.13.15-200.fc34.x86_64 xhci-hcd\n
+A: manufacturer=Linux 5.17.12-300.fc36.x86_64 xhci-hcd\n
A: maxchild=12\n
-A: power/active_duration=219578717\n
+A: power/active_duration=164289796\n
A: power/autosuspend=0\n
A: power/autosuspend_delay_ms=0\n
-A: power/connected_duration=219649620\n
+A: power/connected_duration=164360220\n
A: power/control=auto\n
A: power/level=auto\n
-A: power/runtime_active_time=219589127\n
+A: power/runtime_active_time=164331876\n
A: power/runtime_status=active\n
A: power/runtime_suspended_time=0\n
A: power/wakeup=disabled\n
@@ -163,14 +164,14 @@ A: rx_lanes=1\n
A: serial=0000:00:14.0\n
A: speed=480\n
A: tx_lanes=1\n
-A: urbnum=4325\n
+A: urbnum=2097\n
A: version= 2.00\n
P: /devices/pci0000:00/0000:00:14.0
E: DRIVER=xhci_hcd
E: PCI_CLASS=C0330
E: PCI_ID=8086:9DED
-E: PCI_SUBSYS_ID=17AA:2292\n
+E: PCI_SUBSYS_ID=17AA:2292
E: PCI_SLOT_NAME=0000:00:14.0
E: MODALIAS=pci:v00008086d00009DEDsv000017AAsd00002292bc0Csc03i30
E: SUBSYSTEM=pci
@@ -183,7 +184,7 @@ E: ID_MODEL_FROM_DATABASE=Cannon Point-LP USB 3.1 xHCI Controller
A: ari_enabled=0\n
A: broken_parity_status=0\n
A: class=0x0c0330\n
-H: config=8680ED9D060490021130030C00008000040022EA000000000000000000000000000000000000000000000000AA179222000000007000000000000000FF010000FD0134808FC6FF8300000000000000007F6DDC0F000000004C084B0100000000316000000000000000000000000000000180C2C1080000000000000000000000059087001803E0FE0000000000000000090014F01000400100000000C10A080000080E00001800008F40020000010000000000000000000008000000040000000000000000000000000000000000000000000000000000000800000004000000000000000000000000000000000000000000000000000000B50F320112000000
+H: config=8680ED9D060490021130030C00008000040022EA000000000000000000000000000000000000000000000000AA179222000000007000000000000000FF010000FD0134808FC6FF8300000000000000007F6DDC0F00000000F507312600000000316000000000000000000000000000000180C2C1080000000000000000000000059087001803E0FE0000000000000000090014F01000400100000000C10A080000080E00001800008F40020000010000000000000000000008000000040000000000000000000000000000000000000000000000000000000800000004000000000000000000000000000000000000000000000000000000B50F320112000000
A: consistent_dma_mask_bits=64\n
A: d3cold_allowed=1\n
A: dbc=disabled\n
@@ -201,8 +202,8 @@ A: msi_bus=1\n
A: msi_irqs/128=msi\n
A: numa_node=-1\n
A: pools=poolinfo - 0.1\nbuffer-2048 0 0 2048 0\nbuffer-512 0 0 512 0\nbuffer-128 0 0 128 0\nbuffer-32 0 0 32 0\nxHCI 1KB stream ctx arrays 0 0 1024 0\nxHCI 256 byte stream ctx arrays 0 0 256 0\nxHCI input/output contexts 11 12 2112 12\nxHCI ring segments 46 50 4096 50\nbuffer-2048 0 0 2048 0\nbuffer-512 0 0 512 0\nbuffer-128 6 32 128 1\nbuffer-32 0 0 32 0\n
-A: power/control=on\n
-A: power/runtime_active_time=219589302\n
+A: power/control=auto\n
+A: power/runtime_active_time=164332777\n
A: power/runtime_status=active\n
A: power/runtime_suspended_time=0\n
A: power/wakeup=enabled\n