diff options
Diffstat (limited to 'drivers/usb/core/hcd-pci.c')
| -rw-r--r-- | drivers/usb/core/hcd-pci.c | 9 | 
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/usb/core/hcd-pci.c b/drivers/usb/core/hcd-pci.c index 622b4a48e73..57ed9e400c0 100644 --- a/drivers/usb/core/hcd-pci.c +++ b/drivers/usb/core/hcd-pci.c @@ -493,6 +493,15 @@ static int hcd_pci_suspend_noirq(struct device *dev)  	pci_save_state(pci_dev); +	/* +	 * Some systems crash if an EHCI controller is in D3 during +	 * a sleep transition.  We have to leave such controllers in D0. +	 */ +	if (hcd->broken_pci_sleep) { +		dev_dbg(dev, "Staying in PCI D0\n"); +		return retval; +	} +  	/* If the root hub is dead rather than suspended, disallow remote  	 * wakeup.  usb_hc_died() should ensure that both hosts are marked as  	 * dying, so we only need to check the primary roothub.  |