xhci: Add update_hub_device override for PCI xHCI hosts
commit 23a3b8d5a2365653fd9bc5a9454d1e7f4facbf85 upstream. Allow PCI hosts to check and tune roothub and port settings before the hub is up and running. This override is needed to turn off U1 and U2 LPM for some ports based on per port ACPI _DSM, _UPC, or possibly vendor specific mmio values for Intel xHC hosts. Usb core calls the host update_hub_device once it creates a hub. Entering U1 or U2 link power save state on ports with this limitation will cause link to fail, turning the usb device unusable in that setup. Cc: stable@vger.kernel.org Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com> Link: https://lore.kernel.org/r/20230116142216.1141605-5-mathias.nyman@linux.intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:

committato da
Greg Kroah-Hartman

parent
081105213f
commit
83e3a5be74
@@ -1933,6 +1933,8 @@ struct xhci_driver_overrides {
|
||||
int (*start)(struct usb_hcd *hcd);
|
||||
int (*check_bandwidth)(struct usb_hcd *, struct usb_device *);
|
||||
void (*reset_bandwidth)(struct usb_hcd *, struct usb_device *);
|
||||
int (*update_hub_device)(struct usb_hcd *hcd, struct usb_device *hdev,
|
||||
struct usb_tt *tt, gfp_t mem_flags);
|
||||
};
|
||||
|
||||
#define XHCI_CFC_DELAY 10
|
||||
@@ -2089,6 +2091,8 @@ void xhci_init_driver(struct hc_driver *drv,
|
||||
const struct xhci_driver_overrides *over);
|
||||
int xhci_check_bandwidth(struct usb_hcd *hcd, struct usb_device *udev);
|
||||
void xhci_reset_bandwidth(struct usb_hcd *hcd, struct usb_device *udev);
|
||||
int xhci_update_hub_device(struct usb_hcd *hcd, struct usb_device *hdev,
|
||||
struct usb_tt *tt, gfp_t mem_flags);
|
||||
int xhci_disable_slot(struct xhci_hcd *xhci, u32 slot_id);
|
||||
int xhci_ext_cap_init(struct xhci_hcd *xhci);
|
||||
|
||||
|
Fai riferimento in un nuovo problema
Block a user