]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
usb: xhci: add PORTPMSC variable to xhci_hub_control()
authorNiklas Neronin <niklas.neronin@linux.intel.com>
Thu, 2 Apr 2026 13:13:35 +0000 (16:13 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 2 Apr 2026 13:55:38 +0000 (15:55 +0200)
The code handling U1/U2 timeout updates reads and modifies the PORTPMSC
register using the generic 'temp' variable, which is also used for
PORTSC. This makes the code hard to read and increases the risk of mixing
up register contents.

Introduce a dedicated 'portpmsc' variable for PORTPMSC accesses and use
it in both U1 and U2 timeout handlers. This makes the intent clearer and
keeps register operations logically separated.

Signed-off-by: Niklas Neronin <niklas.neronin@linux.intel.com>
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Link: https://patch.msgid.link/20260402131342.2628648-19-mathias.nyman@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/xhci-hub.c

index 7fb17799cfdce6ea4923767864b282de9d5d410b..4da3b48dfce0432f9499e8617ff70ea539c36e38 100644 (file)
@@ -1202,7 +1202,7 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue,
        struct xhci_hcd *xhci = hcd_to_xhci(hcd);
        int max_ports;
        unsigned long flags;
-       u32 temp, status;
+       u32 temp, portpmsc, status;
        int retval = 0;
        struct xhci_bus_state *bus_state;
        u16 link_state;
@@ -1508,20 +1508,20 @@ int xhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue,
                                goto error;
 
                        timeout = (wIndex & 0xff00) >> 8;
-                       temp = readl(&port->port_reg->portpmsc);
-                       temp &= ~PORT_U1_TIMEOUT_MASK;
-                       temp |= PORT_U1_TIMEOUT(timeout);
-                       writel(temp, &port->port_reg->portpmsc);
+                       portpmsc = readl(&port->port_reg->portpmsc);
+                       portpmsc &= ~PORT_U1_TIMEOUT_MASK;
+                       portpmsc |= PORT_U1_TIMEOUT(timeout);
+                       writel(portpmsc, &port->port_reg->portpmsc);
                        break;
                case USB_PORT_FEAT_U2_TIMEOUT:
                        if (hcd->speed < HCD_USB3)
                                goto error;
 
                        timeout = (wIndex & 0xff00) >> 8;
-                       temp = readl(&port->port_reg->portpmsc);
-                       temp &= ~PORT_U2_TIMEOUT_MASK;
-                       temp |= PORT_U2_TIMEOUT(timeout);
-                       writel(temp, &port->port_reg->portpmsc);
+                       portpmsc = readl(&port->port_reg->portpmsc);
+                       portpmsc &= ~PORT_U2_TIMEOUT_MASK;
+                       portpmsc |= PORT_U2_TIMEOUT(timeout);
+                       writel(portpmsc, &port->port_reg->portpmsc);
                        break;
                case USB_PORT_FEAT_TEST:
                        /* 4.19.6 Port Test Modes (USB2 Test Mode) */