2006-03-26 01:01:53 +08:00
|
|
|
#ifndef __LINUX_USB_PCI_QUIRKS_H
|
|
|
|
#define __LINUX_USB_PCI_QUIRKS_H
|
|
|
|
|
2017-02-25 19:20:55 +08:00
|
|
|
#ifdef CONFIG_USB_PCI
|
2006-03-26 01:01:53 +08:00
|
|
|
void uhci_reset_hc(struct pci_dev *pdev, unsigned long base);
|
|
|
|
int uhci_check_and_reset_hc(struct pci_dev *pdev, unsigned long base);
|
2011-03-01 14:57:05 +08:00
|
|
|
int usb_amd_find_chipset_info(void);
|
2014-05-28 05:09:14 +08:00
|
|
|
int usb_hcd_amd_remote_wakeup_quirk(struct pci_dev *pdev);
|
2013-10-03 23:37:12 +08:00
|
|
|
bool usb_amd_hang_symptom_quirk(void);
|
2013-10-03 23:37:13 +08:00
|
|
|
bool usb_amd_prefetch_quirk(void);
|
2011-03-01 14:57:05 +08:00
|
|
|
void usb_amd_dev_put(void);
|
|
|
|
void usb_amd_quirk_pll_disable(void);
|
|
|
|
void usb_amd_quirk_pll_enable(void);
|
2017-07-20 19:48:27 +08:00
|
|
|
void usb_asmedia_modifyflowcontrol(struct pci_dev *pdev);
|
2013-07-23 16:35:47 +08:00
|
|
|
void usb_enable_intel_xhci_ports(struct pci_dev *xhci_pdev);
|
xhci: Switch PPT ports to EHCI on shutdown.
The Intel desktop boards DH77EB and DH77DF have a hardware issue that
can be worked around by BIOS. If the USB ports are switched to xHCI on
shutdown, the xHCI host will send a spurious interrupt, which will wake
the system. Some BIOS will work around this, but not all.
The bug can be avoided if the USB ports are switched back to EHCI on
shutdown. The Intel Windows driver switches the ports back to EHCI, so
change the Linux xHCI driver to do the same.
Unfortunately, we can't tell the two effected boards apart from other
working motherboards, because the vendors will change the DMI strings
for the DH77EB and DH77DF boards to their own custom names. One example
is Compulab's mini-desktop, the Intense-PC. Instead, key off the
Panther Point xHCI host PCI vendor and device ID, and switch the ports
over for all PPT xHCI hosts.
The only impact this will have on non-effected boards is to add a couple
hundred milliseconds delay on boot when the BIOS has to switch the ports
over from EHCI to xHCI.
This patch should be backported to kernels as old as 3.0, that contain
the commit 69e848c2090aebba5698a1620604c7dccb448684 "Intel xhci: Support
EHCI/xHCI port switching."
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Reported-by: Denis Turischev <denis@compulab.co.il>
Tested-by: Denis Turischev <denis@compulab.co.il>
Cc: stable@vger.kernel.org
2012-07-23 23:59:30 +08:00
|
|
|
void usb_disable_xhci_ports(struct pci_dev *xhci_pdev);
|
2013-05-28 21:04:50 +08:00
|
|
|
void sb800_prefetch(struct device *dev, int on);
|
2017-08-02 09:11:08 +08:00
|
|
|
bool usb_xhci_needs_pci_reset(struct pci_dev *pdev);
|
2011-03-01 14:57:05 +08:00
|
|
|
#else
|
2013-07-24 06:22:59 +08:00
|
|
|
struct pci_dev;
|
2011-03-01 14:57:05 +08:00
|
|
|
static inline void usb_amd_quirk_pll_disable(void) {}
|
|
|
|
static inline void usb_amd_quirk_pll_enable(void) {}
|
2017-07-20 19:48:27 +08:00
|
|
|
static inline void usb_asmedia_modifyflowcontrol(struct pci_dev *pdev) {}
|
2011-03-01 14:57:05 +08:00
|
|
|
static inline void usb_amd_dev_put(void) {}
|
2012-09-05 13:34:26 +08:00
|
|
|
static inline void usb_disable_xhci_ports(struct pci_dev *xhci_pdev) {}
|
2013-05-28 21:04:50 +08:00
|
|
|
static inline void sb800_prefetch(struct device *dev, int on) {}
|
2017-02-25 19:20:55 +08:00
|
|
|
#endif /* CONFIG_USB_PCI */
|
2006-03-26 01:01:53 +08:00
|
|
|
|
|
|
|
#endif /* __LINUX_USB_PCI_QUIRKS_H */
|