• Alan Stern's avatar
    usbcore: add autosuspend/autoresume infrastructure · 645daaab
    Alan Stern authored
    This patch (as739) adds the basic infrastructure for USB autosuspend
    and autoresume.  The main features are:
    
    	PM usage counters added to struct usb_device and struct
    	usb_interface, indicating whether it's okay to autosuspend
    	them or they are currently in use.
    
    	Flag added to usb_device indicating whether the current
    	suspend/resume operation originated from outside or as an
    	autosuspend/autoresume.
    
    	Flag added to usb_driver indicating whether the driver
    	supports autosuspend.  If not, no device bound to the driver
    	will be autosuspended.
    
    	Mutex added to usb_device for protecting PM operations.
    	Unlike the device semaphore, the locking rule for the pm_mutex
    	is that you must acquire the locks going _up_ the device tree.
    
    	New routines handling autosuspend/autoresume requests for
    	interfaces and devices.
    
    	Suspend and resume requests are propagated up the device tree
    	(but not outside the USB subsystem).
    
    	work_struct added to usb_device, for carrying out delayed
    	autosuspend requests.
    
    	Autoresume added (and autosuspend prevented) during probe and
    	disconnect.
    Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    645daaab
usb.c 30.9 KB