From: Greg Kroah-Hartman Date: Sat, 7 Jun 2025 09:48:04 +0000 (+0200) Subject: 6.6-stable patches X-Git-Tag: v6.12.33~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=23de41723d46b51782e4694cdc51a85529db643d;p=thirdparty%2Fkernel%2Fstable-queue.git 6.6-stable patches added patches: bluetooth-hci_qca-move-the-soc-type-check-to-the-right-place.patch dt-bindings-phy-imx8mq-usb-fix-fsl-phy-tx-vboost-level-microvolt-property.patch dt-bindings-usb-cypress-hx3-add-support-for-all-variants.patch revert-drm-amd-display-more-liberal-vmin-vmax-update-for-freesync.patch serial-jsm-fix-npe-during-jsm_uart_port_init.patch thunderbolt-do-not-double-dequeue-a-configuration-request.patch usb-quirks-add-no_lpm-quirk-for-sandisk-extreme-55ae.patch usb-serial-pl2303-add-new-chip-pl2303gc-q20-and-pl2303gt-2ab.patch usb-storage-ignore-uas-driver-for-sandisk-3.2-gen2-storage-device.patch usb-typec-ucsi-fix-clang-wsign-conversion-warning.patch usb-usbtmc-fix-timeout-value-in-get_stb.patch --- diff --git a/queue-6.6/bluetooth-hci_qca-move-the-soc-type-check-to-the-right-place.patch b/queue-6.6/bluetooth-hci_qca-move-the-soc-type-check-to-the-right-place.patch new file mode 100644 index 0000000000..276d9751d1 --- /dev/null +++ b/queue-6.6/bluetooth-hci_qca-move-the-soc-type-check-to-the-right-place.patch @@ -0,0 +1,54 @@ +From 0fb410c914eb03c7e9d821e26d03bac0a239e5db Mon Sep 17 00:00:00 2001 +From: Bartosz Golaszewski +Date: Tue, 27 May 2025 09:47:37 +0200 +Subject: Bluetooth: hci_qca: move the SoC type check to the right place + +From: Bartosz Golaszewski + +commit 0fb410c914eb03c7e9d821e26d03bac0a239e5db upstream. + +Commit 3d05fc82237a ("Bluetooth: qca: set power_ctrl_enabled on NULL +returned by gpiod_get_optional()") accidentally changed the prevous +behavior where power control would be disabled without the BT_EN GPIO +only on QCA_WCN6750 and QCA_WCN6855 while also getting the error check +wrong. We should treat every IS_ERR() return value from +devm_gpiod_get_optional() as a reason to bail-out while we should only +set power_ctrl_enabled to false on the two models mentioned above. While +at it: use dev_err_probe() to save a LOC. + +Cc: stable@vger.kernel.org +Fixes: 3d05fc82237a ("Bluetooth: qca: set power_ctrl_enabled on NULL returned by gpiod_get_optional()") +Signed-off-by: Bartosz Golaszewski +Reviewed-by: Krzysztof Kozlowski +Tested-by: Hsin-chen Chuang +Reviewed-by: Hsin-chen Chuang +Signed-off-by: Luiz Augusto von Dentz +Signed-off-by: Greg Kroah-Hartman +--- + drivers/bluetooth/hci_qca.c | 14 +++++++------- + 1 file changed, 7 insertions(+), 7 deletions(-) + +--- a/drivers/bluetooth/hci_qca.c ++++ b/drivers/bluetooth/hci_qca.c +@@ -2307,14 +2307,14 @@ static int qca_serdev_probe(struct serde + + qcadev->bt_en = devm_gpiod_get_optional(&serdev->dev, "enable", + GPIOD_OUT_LOW); +- if (IS_ERR(qcadev->bt_en) && +- (data->soc_type == QCA_WCN6750 || +- data->soc_type == QCA_WCN6855)) { +- dev_err(&serdev->dev, "failed to acquire BT_EN gpio\n"); +- return PTR_ERR(qcadev->bt_en); +- } ++ if (IS_ERR(qcadev->bt_en)) ++ return dev_err_probe(&serdev->dev, ++ PTR_ERR(qcadev->bt_en), ++ "failed to acquire BT_EN gpio\n"); + +- if (!qcadev->bt_en) ++ if (!qcadev->bt_en && ++ (data->soc_type == QCA_WCN6750 || ++ data->soc_type == QCA_WCN6855)) + power_ctrl_enabled = false; + + qcadev->sw_ctrl = devm_gpiod_get_optional(&serdev->dev, "swctrl", diff --git a/queue-6.6/dt-bindings-phy-imx8mq-usb-fix-fsl-phy-tx-vboost-level-microvolt-property.patch b/queue-6.6/dt-bindings-phy-imx8mq-usb-fix-fsl-phy-tx-vboost-level-microvolt-property.patch new file mode 100644 index 0000000000..78eca6bbda --- /dev/null +++ b/queue-6.6/dt-bindings-phy-imx8mq-usb-fix-fsl-phy-tx-vboost-level-microvolt-property.patch @@ -0,0 +1,48 @@ +From 5b3a91b207c00a8d27f75ce8aaa9860844da72c8 Mon Sep 17 00:00:00 2001 +From: Xu Yang +Date: Wed, 30 Apr 2025 17:44:59 +0800 +Subject: dt-bindings: phy: imx8mq-usb: fix fsl,phy-tx-vboost-level-microvolt property + +From: Xu Yang + +commit 5b3a91b207c00a8d27f75ce8aaa9860844da72c8 upstream. + +The ticket TKT0676370 shows the description of TX_VBOOST_LVL is wrong in +register PHY_CTRL3 bit[31:29]. + + 011: Corresponds to a launch amplitude of 1.12 V. + 010: Corresponds to a launch amplitude of 1.04 V. + 000: Corresponds to a launch amplitude of 0.88 V. + +After updated: + + 011: Corresponds to a launch amplitude of 0.844 V. + 100: Corresponds to a launch amplitude of 1.008 V. + 101: Corresponds to a launch amplitude of 1.156 V. + +This will correct it accordingly. + +Fixes: b2e75563dc39 ("dt-bindings: phy: imx8mq-usb: add phy tuning properties") +Cc: stable@vger.kernel.org +Reviewed-by: Jun Li +Signed-off-by: Xu Yang +Reviewed-by: Krzysztof Kozlowski +Link: https://lore.kernel.org/r/20250430094502.2723983-1-xu.yang_2@nxp.com +Signed-off-by: Vinod Koul +Signed-off-by: Greg Kroah-Hartman +--- + Documentation/devicetree/bindings/phy/fsl,imx8mq-usb-phy.yaml | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/Documentation/devicetree/bindings/phy/fsl,imx8mq-usb-phy.yaml ++++ b/Documentation/devicetree/bindings/phy/fsl,imx8mq-usb-phy.yaml +@@ -58,8 +58,7 @@ properties: + fsl,phy-tx-vboost-level-microvolt: + description: + Adjust the boosted transmit launch pk-pk differential amplitude +- minimum: 880 +- maximum: 1120 ++ enum: [844, 1008, 1156] + + fsl,phy-comp-dis-tune-percent: + description: diff --git a/queue-6.6/dt-bindings-usb-cypress-hx3-add-support-for-all-variants.patch b/queue-6.6/dt-bindings-usb-cypress-hx3-add-support-for-all-variants.patch new file mode 100644 index 0000000000..8ad59c4baf --- /dev/null +++ b/queue-6.6/dt-bindings-usb-cypress-hx3-add-support-for-all-variants.patch @@ -0,0 +1,62 @@ +From 1ad4b5a7de16806afc1aeaf012337e62af04e001 Mon Sep 17 00:00:00 2001 +From: Lukasz Czechowski +Date: Fri, 25 Apr 2025 17:18:07 +0200 +Subject: dt-bindings: usb: cypress,hx3: Add support for all variants + +From: Lukasz Czechowski + +commit 1ad4b5a7de16806afc1aeaf012337e62af04e001 upstream. + +The Cypress HX3 hubs use different default PID value depending +on the variant. Update compatibles list. +Becasuse all hub variants use the same driver data, allow the +dt node to have two compatibles: leftmost which matches the HW +exactly, and the second one as fallback. + +Fixes: 1eca51f58a10 ("dt-bindings: usb: Add binding for Cypress HX3 USB 3.0 family") +Cc: stable@vger.kernel.org # 6.6 +Cc: stable@vger.kernel.org # Backport of the patch ("dt-bindings: usb: usb-device: relax compatible pattern to a contains") from list: https://lore.kernel.org/linux-usb/20250418-dt-binding-usb-device-compatibles-v2-1-b3029f14e800@cherry.de/ +Cc: stable@vger.kernel.org # Backport of the patch in this series fixing product ID in onboard_dev_id_table in drivers/usb/misc/onboard_usb_dev.c driver +Signed-off-by: Lukasz Czechowski +Reviewed-by: "Rob Herring (Arm)" +Link: https://lore.kernel.org/r/20250425-onboard_usb_dev-v2-2-4a76a474a010@thaumatec.com +[taken with Greg's blessing] +Signed-off-by: Heiko Stuebner +Signed-off-by: Greg Kroah-Hartman +--- + .../devicetree/bindings/usb/cypress,hx3.yaml | 19 ++++++++++++++++--- + 1 file changed, 16 insertions(+), 3 deletions(-) + +diff --git a/Documentation/devicetree/bindings/usb/cypress,hx3.yaml b/Documentation/devicetree/bindings/usb/cypress,hx3.yaml +index 1033b7a4b8f9..d6eac1213228 100644 +--- a/Documentation/devicetree/bindings/usb/cypress,hx3.yaml ++++ b/Documentation/devicetree/bindings/usb/cypress,hx3.yaml +@@ -14,9 +14,22 @@ allOf: + + properties: + compatible: +- enum: +- - usb4b4,6504 +- - usb4b4,6506 ++ oneOf: ++ - enum: ++ - usb4b4,6504 ++ - usb4b4,6506 ++ - items: ++ - enum: ++ - usb4b4,6500 ++ - usb4b4,6508 ++ - const: usb4b4,6504 ++ - items: ++ - enum: ++ - usb4b4,6502 ++ - usb4b4,6503 ++ - usb4b4,6507 ++ - usb4b4,650a ++ - const: usb4b4,6506 + + reg: true + +-- +2.49.0 + diff --git a/queue-6.6/revert-drm-amd-display-more-liberal-vmin-vmax-update-for-freesync.patch b/queue-6.6/revert-drm-amd-display-more-liberal-vmin-vmax-update-for-freesync.patch new file mode 100644 index 0000000000..6248b978ce --- /dev/null +++ b/queue-6.6/revert-drm-amd-display-more-liberal-vmin-vmax-update-for-freesync.patch @@ -0,0 +1,52 @@ +From 1b824eef269db44d068bbc0de74c94a8e8f9ce02 Mon Sep 17 00:00:00 2001 +From: Aurabindo Pillai +Date: Wed, 21 May 2025 16:05:39 -0400 +Subject: Revert "drm/amd/display: more liberal vmin/vmax update for freesync" + +From: Aurabindo Pillai + +commit 1b824eef269db44d068bbc0de74c94a8e8f9ce02 upstream. + +This reverts commit cfb2d41831ee5647a4ae0ea7c24971a92d5dfa0d since it +causes regressions on certain configs. Revert until the issue can be +isolated and debugged. + +Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4238 +Signed-off-by: Aurabindo Pillai +Acked-by: Alex Deucher +Signed-off-by: Alex Deucher +Cc: stable@vger.kernel.org +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 16 +++++----------- + 1 file changed, 5 insertions(+), 11 deletions(-) + +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +@@ -610,21 +610,15 @@ static void dm_crtc_high_irq(void *inter + spin_lock_irqsave(&adev_to_drm(adev)->event_lock, flags); + + if (acrtc->dm_irq_params.stream && +- acrtc->dm_irq_params.vrr_params.supported) { +- bool replay_en = acrtc->dm_irq_params.stream->link->replay_settings.replay_feature_enabled; +- bool psr_en = acrtc->dm_irq_params.stream->link->psr_settings.psr_feature_enabled; +- bool fs_active_var_en = acrtc->dm_irq_params.freesync_config.state == VRR_STATE_ACTIVE_VARIABLE; +- ++ acrtc->dm_irq_params.vrr_params.supported && ++ acrtc->dm_irq_params.freesync_config.state == ++ VRR_STATE_ACTIVE_VARIABLE) { + mod_freesync_handle_v_update(adev->dm.freesync_module, + acrtc->dm_irq_params.stream, + &acrtc->dm_irq_params.vrr_params); + +- /* update vmin_vmax only if freesync is enabled, or only if PSR and REPLAY are disabled */ +- if (fs_active_var_en || (!fs_active_var_en && !replay_en && !psr_en)) { +- dc_stream_adjust_vmin_vmax(adev->dm.dc, +- acrtc->dm_irq_params.stream, +- &acrtc->dm_irq_params.vrr_params.adjust); +- } ++ dc_stream_adjust_vmin_vmax(adev->dm.dc, acrtc->dm_irq_params.stream, ++ &acrtc->dm_irq_params.vrr_params.adjust); + } + + /* diff --git a/queue-6.6/serial-jsm-fix-npe-during-jsm_uart_port_init.patch b/queue-6.6/serial-jsm-fix-npe-during-jsm_uart_port_init.patch new file mode 100644 index 0000000000..207b2c3856 --- /dev/null +++ b/queue-6.6/serial-jsm-fix-npe-during-jsm_uart_port_init.patch @@ -0,0 +1,59 @@ +From e3975aa899c0a3bbc10d035e699b142cd1373a71 Mon Sep 17 00:00:00 2001 +From: Dustin Lundquist +Date: Tue, 6 May 2025 11:18:45 -0700 +Subject: serial: jsm: fix NPE during jsm_uart_port_init + +From: Dustin Lundquist + +commit e3975aa899c0a3bbc10d035e699b142cd1373a71 upstream. + +No device was set which caused serial_base_ctrl_add to crash. + + BUG: kernel NULL pointer dereference, address: 0000000000000050 + Oops: Oops: 0000 [#1] PREEMPT SMP NOPTI + CPU: 16 UID: 0 PID: 368 Comm: (udev-worker) Not tainted 6.12.25-amd64 #1 Debian 6.12.25-1 + RIP: 0010:serial_base_ctrl_add+0x96/0x120 + Call Trace: + + serial_core_register_port+0x1a0/0x580 + ? __setup_irq+0x39c/0x660 + ? __kmalloc_cache_noprof+0x111/0x310 + jsm_uart_port_init+0xe8/0x180 [jsm] + jsm_probe_one+0x1f4/0x410 [jsm] + local_pci_probe+0x42/0x90 + pci_device_probe+0x22f/0x270 + really_probe+0xdb/0x340 + ? pm_runtime_barrier+0x54/0x90 + ? __pfx___driver_attach+0x10/0x10 + __driver_probe_device+0x78/0x110 + driver_probe_device+0x1f/0xa0 + __driver_attach+0xba/0x1c0 + bus_for_each_dev+0x8c/0xe0 + bus_add_driver+0x112/0x1f0 + driver_register+0x72/0xd0 + jsm_init_module+0x36/0xff0 [jsm] + ? __pfx_jsm_init_module+0x10/0x10 [jsm] + do_one_initcall+0x58/0x310 + do_init_module+0x60/0x230 + +Tested with Digi Neo PCIe 8 port card. + +Fixes: 84a9582fd203 ("serial: core: Start managing serial controllers to enable runtime PM") +Cc: stable +Signed-off-by: Dustin Lundquist +Link: https://lore.kernel.org/r/3f31d4f75863614655c4673027a208be78d022ec.camel@null-ptr.net +Signed-off-by: Greg Kroah-Hartman +--- + drivers/tty/serial/jsm/jsm_tty.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/tty/serial/jsm/jsm_tty.c ++++ b/drivers/tty/serial/jsm/jsm_tty.c +@@ -451,6 +451,7 @@ int jsm_uart_port_init(struct jsm_board + if (!brd->channels[i]) + continue; + ++ brd->channels[i]->uart_port.dev = &brd->pci_dev->dev; + brd->channels[i]->uart_port.irq = brd->irq; + brd->channels[i]->uart_port.uartclk = 14745600; + brd->channels[i]->uart_port.type = PORT_JSM; diff --git a/queue-6.6/series b/queue-6.6/series index c733d0e5e4..6c454a76cc 100644 --- a/queue-6.6/series +++ b/queue-6.6/series @@ -4,3 +4,14 @@ pinctrl-armada-37xx-set-gpio-output-value-before-setting-direction.patch acpi-cpufreq-fix-nominal_freq-units-to-khz-in-get_max_boost_ratio.patch rtc-make-rtc_time64_to_tm-support-dates-before-1970.patch rtc-fix-offset-calculation-for-.start_secs-0.patch +usb-quirks-add-no_lpm-quirk-for-sandisk-extreme-55ae.patch +usb-storage-ignore-uas-driver-for-sandisk-3.2-gen2-storage-device.patch +usb-serial-pl2303-add-new-chip-pl2303gc-q20-and-pl2303gt-2ab.patch +usb-typec-ucsi-fix-clang-wsign-conversion-warning.patch +bluetooth-hci_qca-move-the-soc-type-check-to-the-right-place.patch +serial-jsm-fix-npe-during-jsm_uart_port_init.patch +usb-usbtmc-fix-timeout-value-in-get_stb.patch +thunderbolt-do-not-double-dequeue-a-configuration-request.patch +dt-bindings-usb-cypress-hx3-add-support-for-all-variants.patch +dt-bindings-phy-imx8mq-usb-fix-fsl-phy-tx-vboost-level-microvolt-property.patch +revert-drm-amd-display-more-liberal-vmin-vmax-update-for-freesync.patch diff --git a/queue-6.6/thunderbolt-do-not-double-dequeue-a-configuration-request.patch b/queue-6.6/thunderbolt-do-not-double-dequeue-a-configuration-request.patch new file mode 100644 index 0000000000..a25e3a76c6 --- /dev/null +++ b/queue-6.6/thunderbolt-do-not-double-dequeue-a-configuration-request.patch @@ -0,0 +1,57 @@ +From 0f73628e9da1ee39daf5f188190cdbaee5e0c98c Mon Sep 17 00:00:00 2001 +From: Sergey Senozhatsky +Date: Fri, 28 Mar 2025 00:03:50 +0900 +Subject: thunderbolt: Do not double dequeue a configuration request + +From: Sergey Senozhatsky + +commit 0f73628e9da1ee39daf5f188190cdbaee5e0c98c upstream. + +Some of our devices crash in tb_cfg_request_dequeue(): + + general protection fault, probably for non-canonical address 0xdead000000000122 + + CPU: 6 PID: 91007 Comm: kworker/6:2 Tainted: G U W 6.6.65 + RIP: 0010:tb_cfg_request_dequeue+0x2d/0xa0 + Call Trace: + + ? tb_cfg_request_dequeue+0x2d/0xa0 + tb_cfg_request_work+0x33/0x80 + worker_thread+0x386/0x8f0 + kthread+0xed/0x110 + ret_from_fork+0x38/0x50 + ret_from_fork_asm+0x1b/0x30 + +The circumstances are unclear, however, the theory is that +tb_cfg_request_work() can be scheduled twice for a request: +first time via frame.callback from ring_work() and second +time from tb_cfg_request(). Both times kworkers will execute +tb_cfg_request_dequeue(), which results in double list_del() +from the ctl->request_queue (the list poison deference hints +at it: 0xdead000000000122). + +Do not dequeue requests that don't have TB_CFG_REQUEST_ACTIVE +bit set. + +Signed-off-by: Sergey Senozhatsky +Cc: stable@vger.kernel.org +Signed-off-by: Mika Westerberg +Signed-off-by: Greg Kroah-Hartman +--- + drivers/thunderbolt/ctl.c | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/drivers/thunderbolt/ctl.c ++++ b/drivers/thunderbolt/ctl.c +@@ -143,6 +143,11 @@ static void tb_cfg_request_dequeue(struc + struct tb_ctl *ctl = req->ctl; + + mutex_lock(&ctl->request_queue_lock); ++ if (!test_bit(TB_CFG_REQUEST_ACTIVE, &req->flags)) { ++ mutex_unlock(&ctl->request_queue_lock); ++ return; ++ } ++ + list_del(&req->list); + clear_bit(TB_CFG_REQUEST_ACTIVE, &req->flags); + if (test_bit(TB_CFG_REQUEST_CANCELED, &req->flags)) diff --git a/queue-6.6/usb-quirks-add-no_lpm-quirk-for-sandisk-extreme-55ae.patch b/queue-6.6/usb-quirks-add-no_lpm-quirk-for-sandisk-extreme-55ae.patch new file mode 100644 index 0000000000..0eada6ed6b --- /dev/null +++ b/queue-6.6/usb-quirks-add-no_lpm-quirk-for-sandisk-extreme-55ae.patch @@ -0,0 +1,44 @@ +From 19f795591947596b5b9efa86fd4b9058e45786e9 Mon Sep 17 00:00:00 2001 +From: Jiayi Li +Date: Thu, 8 May 2025 13:59:47 +0800 +Subject: usb: quirks: Add NO_LPM quirk for SanDisk Extreme 55AE + +From: Jiayi Li + +commit 19f795591947596b5b9efa86fd4b9058e45786e9 upstream. + +This device exhibits I/O errors during file transfers due to unstable +link power management (LPM) behavior. The kernel logs show repeated +warm resets and eventual disconnection when LPM is enabled: + +[ 3467.810740] hub 2-0:1.0: state 7 ports 6 chg 0000 evt 0020 +[ 3467.810740] usb usb2-port5: do warm reset +[ 3467.866444] usb usb2-port5: not warm reset yet, waiting 50ms +[ 3467.907407] sd 0:0:0:0: [sda] tag#12 sense submit err -19 +[ 3467.994423] usb usb2-port5: status 02c0, change 0001, 10.0 Gb/s +[ 3467.994453] usb 2-5: USB disconnect, device number 4 + +The error -19 (ENODEV) occurs when the device disappears during write +operations. Adding USB_QUIRK_NO_LPM disables link power management +for this specific device, resolving the stability issues. + +Signed-off-by: Jiayi Li +Cc: stable +Link: https://lore.kernel.org/r/20250508055947.764538-1-lijiayi@kylinos.cn +Signed-off-by: Greg Kroah-Hartman +--- + drivers/usb/core/quirks.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/drivers/usb/core/quirks.c ++++ b/drivers/usb/core/quirks.c +@@ -372,6 +372,9 @@ static const struct usb_device_id usb_qu + /* SanDisk Corp. SanDisk 3.2Gen1 */ + { USB_DEVICE(0x0781, 0x55a3), .driver_info = USB_QUIRK_DELAY_INIT }, + ++ /* SanDisk Extreme 55AE */ ++ { USB_DEVICE(0x0781, 0x55ae), .driver_info = USB_QUIRK_NO_LPM }, ++ + /* Realforce 87U Keyboard */ + { USB_DEVICE(0x0853, 0x011b), .driver_info = USB_QUIRK_NO_LPM }, + diff --git a/queue-6.6/usb-serial-pl2303-add-new-chip-pl2303gc-q20-and-pl2303gt-2ab.patch b/queue-6.6/usb-serial-pl2303-add-new-chip-pl2303gc-q20-and-pl2303gt-2ab.patch new file mode 100644 index 0000000000..edb5a7ed21 --- /dev/null +++ b/queue-6.6/usb-serial-pl2303-add-new-chip-pl2303gc-q20-and-pl2303gt-2ab.patch @@ -0,0 +1,31 @@ +From d3a889482bd5abf2bbdc1ec3d2d49575aa160c9c Mon Sep 17 00:00:00 2001 +From: Charles Yeh +Date: Wed, 21 May 2025 21:23:54 +0800 +Subject: USB: serial: pl2303: add new chip PL2303GC-Q20 and PL2303GT-2AB + +From: Charles Yeh + +commit d3a889482bd5abf2bbdc1ec3d2d49575aa160c9c upstream. + +Add new bcd (0x905) to support PL2303GT-2AB (TYPE_HXN). +Add new bcd (0x1005) to support PL2303GC-Q20 (TYPE_HXN). + +Signed-off-by: Charles Yeh +Cc: stable@vger.kernel.org +Signed-off-by: Johan Hovold +Signed-off-by: Greg Kroah-Hartman +--- + drivers/usb/serial/pl2303.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/usb/serial/pl2303.c ++++ b/drivers/usb/serial/pl2303.c +@@ -457,6 +457,8 @@ static int pl2303_detect_type(struct usb + case 0x605: + case 0x700: /* GR */ + case 0x705: ++ case 0x905: /* GT-2AB */ ++ case 0x1005: /* GC-Q20 */ + return TYPE_HXN; + } + break; diff --git a/queue-6.6/usb-storage-ignore-uas-driver-for-sandisk-3.2-gen2-storage-device.patch b/queue-6.6/usb-storage-ignore-uas-driver-for-sandisk-3.2-gen2-storage-device.patch new file mode 100644 index 0000000000..651bc43a4e --- /dev/null +++ b/queue-6.6/usb-storage-ignore-uas-driver-for-sandisk-3.2-gen2-storage-device.patch @@ -0,0 +1,238 @@ +From a541acceedf4f639f928f41fbb676b75946dc295 Mon Sep 17 00:00:00 2001 +From: Hongyu Xie +Date: Mon, 19 May 2025 10:33:28 +0800 +Subject: usb: storage: Ignore UAS driver for SanDisk 3.2 Gen2 storage device + +From: Hongyu Xie + +commit a541acceedf4f639f928f41fbb676b75946dc295 upstream. + +SanDisk 3.2 Gen2 storage device(0781:55e8) doesn't work well with UAS. +Log says, +[ 6.507865][ 3] [ T159] usb 2-1.4: new SuperSpeed Gen 1 USB device number 4 using xhci_hcd +[ 6.540314][ 3] [ T159] usb 2-1.4: New USB device found, idVendor=0781, idProduct=55e8, bcdDevice= 0.01 +[ 6.576304][ 3] [ T159] usb 2-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3 +[ 6.584727][ 3] [ T159] usb 2-1.4: Product: SanDisk 3.2 Gen2 +[ 6.590459][ 3] [ T159] usb 2-1.4: Manufacturer: SanDisk +[ 6.595845][ 3] [ T159] usb 2-1.4: SerialNumber: 03021707022525140940 +[ 7.230852][ 0] [ T265] usbcore: registered new interface driver usb-storage +[ 7.251247][ 0] [ T265] scsi host3: uas +[ 7.255280][ 0] [ T265] usbcore: registered new interface driver uas +[ 7.270498][ 1] [ T192] scsi 3:0:0:0: Direct-Access SanDisk Extreme Pro DDE1 0110 PQ: 0 ANSI: 6 +[ 7.299588][ 3] [ T192] scsi 3:0:0:1: Enclosure SanDisk SES Device 0110 PQ: 0 ANSI: 6 +[ 7.321681][ 3] [ T192] sd 3:0:0:0: Attached scsi generic sg1 type 0 +[ 7.328185][ 3] [ T192] scsi 3:0:0:1: Attached scsi generic sg2 type 13 +[ 7.328804][ 0] [ T191] sd 3:0:0:0: [sda] 976773168 512-byte logical blocks: (500 GB/466 GiB) +[ 7.343486][ 0] [ T191] sd 3:0:0:0: [sda] 4096-byte physical blocks +[ 7.364611][ 0] [ T191] sd 3:0:0:0: [sda] Write Protect is off +[ 7.370524][ 0] [ T191] sd 3:0:0:0: [sda] Mode Sense: 3d 00 10 00 +[ 7.390655][ 0] [ T191] sd 3:0:0:0: [sda] Write cache: enabled, read cache: enabled, supports DPO and FUA +[ 7.401363][ 0] [ T191] sd 3:0:0:0: [sda] Optimal transfer size 1048576 bytes +[ 7.436010][ 0] [ T191] sda: sda1 +[ 7.450850][ 0] [ T191] sd 3:0:0:0: [sda] Attached SCSI disk +[ 7.470218][ 4] [ T262] scsi 3:0:0:1: Failed to get diagnostic page 0x1 +[ 7.474869][ 0] [ C0] sd 3:0:0:0: [sda] tag#0 data cmplt err -75 uas-tag 2 inflight: CMD +[ 7.476911][ 4] [ T262] scsi 3:0:0:1: Failed to bind enclosure -19 +[ 7.485330][ 0] [ C0] sd 3:0:0:0: [sda] tag#0 CDB: Read(10) 28 00 00 00 00 28 00 00 10 00 +[ 7.491593][ 4] [ T262] ses 3:0:0:1: Attached Enclosure device +[ 38.066980][ 4] [ T192] sd 3:0:0:0: [sda] tag#4 uas_eh_abort_handler 0 uas-tag 5 inflight: CMD IN +[ 38.076012][ 4] [ T192] sd 3:0:0:0: [sda] tag#4 CDB: Read(10) 28 00 00 00 01 08 00 00 f8 00 +[ 38.086485][ 4] [ T192] sd 3:0:0:0: [sda] tag#3 uas_eh_abort_handler 0 uas-tag 1 inflight: CMD IN +[ 38.095515][ 4] [ T192] sd 3:0:0:0: [sda] tag#3 CDB: Read(10) 28 00 00 00 00 10 00 00 08 00 +[ 38.104122][ 4] [ T192] sd 3:0:0:0: [sda] tag#2 uas_eh_abort_handler 0 uas-tag 4 inflight: CMD IN +[ 38.113152][ 4] [ T192] sd 3:0:0:0: [sda] tag#2 CDB: Read(10) 28 00 00 00 00 88 00 00 78 00 +[ 38.121761][ 4] [ T192] sd 3:0:0:0: [sda] tag#1 uas_eh_abort_handler 0 uas-tag 3 inflight: CMD IN +[ 38.130791][ 4] [ T192] sd 3:0:0:0: [sda] tag#1 CDB: Read(10) 28 00 00 00 00 48 00 00 30 00 +[ 38.139401][ 4] [ T192] sd 3:0:0:0: [sda] tag#0 uas_eh_abort_handler 0 uas-tag 2 inflight: CMD +[ 38.148170][ 4] [ T192] sd 3:0:0:0: [sda] tag#0 CDB: Read(10) 28 00 00 00 00 28 00 00 10 00 +[ 38.178980][ 2] [ T304] scsi host3: uas_eh_device_reset_handler start +[ 38.901540][ 2] [ T304] usb 2-1.4: reset SuperSpeed Gen 1 USB device number 4 using xhci_hcd +[ 38.936791][ 2] [ T304] scsi host3: uas_eh_device_reset_handler success + +Device decriptor is below, +Bus 002 Device 006: ID 0781:55e8 SanDisk Corp. SanDisk 3.2 Gen2 +Device Descriptor: + bLength 18 + bDescriptorType 1 + bcdUSB 3.20 + bDeviceClass 0 + bDeviceSubClass 0 + bDeviceProtocol 0 + bMaxPacketSize0 9 + idVendor 0x0781 SanDisk Corp. + idProduct 0x55e8 + bcdDevice 0.01 + iManufacturer 1 SanDisk + iProduct 2 SanDisk 3.2 Gen2 + iSerial 3 03021707022525140940 + bNumConfigurations 1 + Configuration Descriptor: + bLength 9 + bDescriptorType 2 + wTotalLength 0x0079 + bNumInterfaces 1 + bConfigurationValue 1 + iConfiguration 0 + bmAttributes 0x80 + (Bus Powered) + MaxPower 896mA + Interface Descriptor: + bLength 9 + bDescriptorType 4 + bInterfaceNumber 0 + bAlternateSetting 0 + bNumEndpoints 2 + bInterfaceClass 8 Mass Storage + bInterfaceSubClass 6 SCSI + bInterfaceProtocol 80 Bulk-Only + iInterface 0 + Endpoint Descriptor: + bLength 7 + bDescriptorType 5 + bEndpointAddress 0x82 EP 2 IN + bmAttributes 2 + Transfer Type Bulk + Synch Type None + Usage Type Data + wMaxPacketSize 0x0400 1x 1024 bytes + bInterval 0 + bMaxBurst 15 + Endpoint Descriptor: + bLength 7 + bDescriptorType 5 + bEndpointAddress 0x01 EP 1 OUT + bmAttributes 2 + Transfer Type Bulk + Synch Type None + Usage Type Data + wMaxPacketSize 0x0400 1x 1024 bytes + bInterval 0 + bMaxBurst 15 + Interface Descriptor: + bLength 9 + bDescriptorType 4 + bInterfaceNumber 0 + bAlternateSetting 1 + bNumEndpoints 4 + bInterfaceClass 8 Mass Storage + bInterfaceSubClass 6 SCSI + bInterfaceProtocol 98 + iInterface 0 + Endpoint Descriptor: + bLength 7 + bDescriptorType 5 + bEndpointAddress 0x01 EP 1 OUT + bmAttributes 2 + Transfer Type Bulk + Synch Type None + Usage Type Data + wMaxPacketSize 0x0400 1x 1024 bytes + bInterval 0 + bMaxBurst 0 + Command pipe (0x01) + Endpoint Descriptor: + bLength 7 + bDescriptorType 5 + bEndpointAddress 0x84 EP 4 IN + bmAttributes 2 + Transfer Type Bulk + Synch Type None + Usage Type Data + wMaxPacketSize 0x0400 1x 1024 bytes + bInterval 0 + bMaxBurst 15 + MaxStreams 32 + Status pipe (0x02) + Endpoint Descriptor: + bLength 7 + bDescriptorType 5 + bEndpointAddress 0x82 EP 2 IN + bmAttributes 2 + Transfer Type Bulk + Synch Type None + Usage Type Data + wMaxPacketSize 0x0400 1x 1024 bytes + bInterval 0 + bMaxBurst 15 + MaxStreams 32 + Data-in pipe (0x03) + Endpoint Descriptor: + bLength 7 + bDescriptorType 5 + bEndpointAddress 0x03 EP 3 OUT + bmAttributes 2 + Transfer Type Bulk + Synch Type None + Usage Type Data + wMaxPacketSize 0x0400 1x 1024 bytes + bInterval 0 + bMaxBurst 15 + MaxStreams 32 + Data-out pipe (0x04) +Binary Object Store Descriptor: + bLength 5 + bDescriptorType 15 + wTotalLength 0x002a + bNumDeviceCaps 3 + USB 2.0 Extension Device Capability: + bLength 7 + bDescriptorType 16 + bDevCapabilityType 2 + bmAttributes 0x0000f41e + BESL Link Power Management (LPM) Supported + BESL value 1024 us + Deep BESL value 61440 us + SuperSpeed USB Device Capability: + bLength 10 + bDescriptorType 16 + bDevCapabilityType 3 + bmAttributes 0x00 + wSpeedsSupported 0x000e + Device can operate at Full Speed (12Mbps) + Device can operate at High Speed (480Mbps) + Device can operate at SuperSpeed (5Gbps) + bFunctionalitySupport 1 + Lowest fully-functional device speed is Full Speed (12Mbps) + bU1DevExitLat 10 micro seconds + bU2DevExitLat 2047 micro seconds + SuperSpeedPlus USB Device Capability: + bLength 20 + bDescriptorType 16 + bDevCapabilityType 10 + bmAttributes 0x00000001 + Sublink Speed Attribute count 1 + Sublink Speed ID count 0 + wFunctionalitySupport 0x1100 + bmSublinkSpeedAttr[0] 0x000a4030 + Speed Attribute ID: 0 10Gb/s Symmetric RX SuperSpeedPlus + bmSublinkSpeedAttr[1] 0x000a40b0 + Speed Attribute ID: 0 10Gb/s Symmetric TX SuperSpeedPlus +Device Status: 0x0000 + (Bus Powered) + +So ignore UAS driver for this device. + +Signed-off-by: Hongyu Xie +Cc: stable +Link: https://lore.kernel.org/r/20250519023328.1498856-1-xiehongyu1@kylinos.cn +Signed-off-by: Greg Kroah-Hartman +--- + drivers/usb/storage/unusual_uas.h | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/drivers/usb/storage/unusual_uas.h ++++ b/drivers/usb/storage/unusual_uas.h +@@ -52,6 +52,13 @@ UNUSUAL_DEV(0x059f, 0x1061, 0x0000, 0x99 + USB_SC_DEVICE, USB_PR_DEVICE, NULL, + US_FL_NO_REPORT_OPCODES | US_FL_NO_SAME), + ++/* Reported-by: Zhihong Zhou */ ++UNUSUAL_DEV(0x0781, 0x55e8, 0x0000, 0x9999, ++ "SanDisk", ++ "", ++ USB_SC_DEVICE, USB_PR_DEVICE, NULL, ++ US_FL_IGNORE_UAS), ++ + /* Reported-by: Hongling Zeng */ + UNUSUAL_DEV(0x090c, 0x2000, 0x0000, 0x9999, + "Hiksemi", diff --git a/queue-6.6/usb-typec-ucsi-fix-clang-wsign-conversion-warning.patch b/queue-6.6/usb-typec-ucsi-fix-clang-wsign-conversion-warning.patch new file mode 100644 index 0000000000..f96575c0f2 --- /dev/null +++ b/queue-6.6/usb-typec-ucsi-fix-clang-wsign-conversion-warning.patch @@ -0,0 +1,50 @@ +From f4239ace2dd8606f6824757f192965a95746da05 Mon Sep 17 00:00:00 2001 +From: Qasim Ijaz +Date: Tue, 22 Apr 2025 14:47:17 +0100 +Subject: usb: typec: ucsi: fix Clang -Wsign-conversion warning + +From: Qasim Ijaz + +commit f4239ace2dd8606f6824757f192965a95746da05 upstream. + +debugfs.c emits the following warnings when compiling with the -Wsign-conversion flag with clang 15: + +drivers/usb/typec/ucsi/debugfs.c:58:27: warning: implicit conversion changes signedness: 'int' to 'u32' (aka 'unsigned int') [-Wsign-conversion] + ucsi->debugfs->status = ret; + ~ ^~~ +drivers/usb/typec/ucsi/debugfs.c:71:25: warning: implicit conversion changes signedness: 'u32' (aka 'unsigned int') to 'int' [-Wsign-conversion] + return ucsi->debugfs->status; + ~~~~~~ ~~~~~~~~~~~~~~~^~~~~~ + +During ucsi_cmd() we see: + + if (ret < 0) { + ucsi->debugfs->status = ret; + return ret; + } + +But "status" is u32 meaning unsigned wrap-around occurs when assigning a value which is < 0 to it, this obscures the real status. + +To fix this make the "status" of type int since ret is also of type int. + +Fixes: df0383ffad64 ("usb: typec: ucsi: Add debugfs for ucsi commands") +Cc: stable@vger.kernel.org +Signed-off-by: Qasim Ijaz +Reviewed-by: Heikki Krogerus +Link: https://lore.kernel.org/r/20250422134717.66218-1-qasdev00@gmail.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/usb/typec/ucsi/ucsi.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/usb/typec/ucsi/ucsi.h ++++ b/drivers/usb/typec/ucsi/ucsi.h +@@ -302,7 +302,7 @@ struct ucsi_debugfs_entry { + u64 low; + u64 high; + } response; +- u32 status; ++ int status; + struct dentry *dentry; + }; + diff --git a/queue-6.6/usb-usbtmc-fix-timeout-value-in-get_stb.patch b/queue-6.6/usb-usbtmc-fix-timeout-value-in-get_stb.patch new file mode 100644 index 0000000000..a19b5f667e --- /dev/null +++ b/queue-6.6/usb-usbtmc-fix-timeout-value-in-get_stb.patch @@ -0,0 +1,47 @@ +From 342e4955a1f1ce28c70a589999b76365082dbf10 Mon Sep 17 00:00:00 2001 +From: Dave Penkler +Date: Wed, 21 May 2025 14:16:56 +0200 +Subject: usb: usbtmc: Fix timeout value in get_stb + +From: Dave Penkler + +commit 342e4955a1f1ce28c70a589999b76365082dbf10 upstream. + +wait_event_interruptible_timeout requires a timeout argument +in units of jiffies. It was being called in usbtmc_get_stb +with the usb timeout value which is in units of milliseconds. + +Pass the timeout argument converted to jiffies. + +Fixes: 048c6d88a021 ("usb: usbtmc: Add ioctls to set/get usb timeout") +Cc: stable@vger.kernel.org +Signed-off-by: Dave Penkler +Link: https://lore.kernel.org/r/20250521121656.18174-4-dpenkler@gmail.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/usb/class/usbtmc.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/drivers/usb/class/usbtmc.c ++++ b/drivers/usb/class/usbtmc.c +@@ -483,6 +483,7 @@ static int usbtmc_get_stb(struct usbtmc_ + u8 tag; + int rv; + long wait_rv; ++ unsigned long expire; + + dev_dbg(dev, "Enter ioctl_read_stb iin_ep_present: %d\n", + data->iin_ep_present); +@@ -512,10 +513,11 @@ static int usbtmc_get_stb(struct usbtmc_ + } + + if (data->iin_ep_present) { ++ expire = msecs_to_jiffies(file_data->timeout); + wait_rv = wait_event_interruptible_timeout( + data->waitq, + atomic_read(&data->iin_data_valid) != 0, +- file_data->timeout); ++ expire); + if (wait_rv < 0) { + dev_dbg(dev, "wait interrupted %ld\n", wait_rv); + rv = wait_rv;