]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
xhci: dbc: enable back DbC in resume if it was enabled before suspend
authorMathias Nyman <mathias.nyman@linux.intel.com>
Mon, 13 Oct 2025 22:55:42 +0000 (01:55 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 29 Oct 2025 13:03:12 +0000 (14:03 +0100)
commit 2bbd38fcd29670e46c0fdb9cd0e90507a8a1bf6a upstream.

DbC is currently only enabled back if it's in configured state during
suspend.

If system is suspended after DbC is enabled, but before the device is
properly enumerated by the host, then DbC would not be enabled back in
resume.

Always enable DbC back in resume if it's suspended in enabled,
connected, or configured state

Cc: stable <stable@kernel.org>
Fixes: dfba2174dc42 ("usb: xhci: Add DbC support in xHCI driver")
Tested-by: Ɓukasz Bartosik <ukaszb@chromium.org>
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/xhci-dbgcap.c

index 51a5767d3ece2e185d7bd1d7f900e303ca2b5b6b..79cc0d900437b34b331fec3ed4357021502d66cc 100644 (file)
@@ -1136,8 +1136,15 @@ int xhci_dbc_suspend(struct xhci_hcd *xhci)
        if (!dbc)
                return 0;
 
-       if (dbc->state == DS_CONFIGURED)
+       switch (dbc->state) {
+       case DS_ENABLED:
+       case DS_CONNECTED:
+       case DS_CONFIGURED:
                dbc->resume_required = 1;
+               break;
+       default:
+               break;
+       }
 
        xhci_dbc_stop(dbc);