• Alan Stern's avatar
    USB: fix up suspend and resume for PCI host controllers · a0d4922d
    Alan Stern authored
    This patch (as1192) rearranges the USB PCI host controller suspend and
    resume and resume routines:
    
    	Use pci_wake_from_d3() for enabling and disabling wakeup,
    	instead of pci_enable_wake().
    
    	Carry out the actual state change while interrupts are
    	disabled.
    
    	Change the order of the preparations to agree with the
    	general recommendation for PCI devices, instead of
    	messing around with the wakeup settings while the device
    	is in D3.
    
    		In .suspend:
    			Call the underlying driver to disable IRQ
    				generation;
    			pci_wake_from_d3(device_may_wakeup());
    			pci_disable_device();
    
    		In .suspend_late:
    			pci_save_state();
    			pci_set_power_state(D3hot);
    			(for PPC_PMAC) Disable ASIC clocks
    
    		In .resume_early:
    			(for PPC_PMAC) Enable ASIC clocks
    			pci_set_power_state(D0);
    			pci_restore_state();
    
    		In .resume:
    			pci_enable_device();
    			pci_set_master();
    			pci_wake_from_d3(0);
    			Call the underlying driver to reenable IRQ
    				generation
    
    	Add the necessary .suspend_late and .resume_early method
    	pointers to the PCI host controller drivers.
    Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
    CC: Rafael J. Wysocki <rjw@sisk.pl>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    a0d4922d
hcd-pci.c 11.5 KB