diff --git a/patches/base/libfprint/532d_support.patch b/patches/base/libfprint/532d_support.patch index 83604d4..bddfbc8 100644 --- a/patches/base/libfprint/532d_support.patch +++ b/patches/base/libfprint/532d_support.patch @@ -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