• Tedd Ho-Jeong An's avatar
    Bluetooth: Enable autosuspend for Intel Bluetooth device · d2bee8fb
    Tedd Ho-Jeong An authored
    This patch enables autosuspend for Intel Bluetooth device.
    
    After btusb is loaded for Intel Bluetooth device, the power/control
    attribute contains "on" value by default which disables the autosuspend.
    Based on the USB PM document(Documentation/usb/power-management.txt),
    kernel disabled the autosuspend for all devices other than hub by default.
    
    "The USB specification states that all USB devices must support power
    management.  Nevertheless, the sad fact is that many devices do not
    support it very well.  You can suspend them all right, but when you
    try to resume them they disconnect themselves from the USB bus or
    they stop working entirely.  This seems to be especially prevalent
    among printers and scanners, but plenty of other types of device have
    the same deficiency.
    
    For this reason, by default the kernel disables autosuspend (the
    power/control attribute is initialized to "on") for all devices other
    than hubs.  Hubs, at least, appear to be reasonably well-behaved in
    this regard."
    
    This document also described how the driver can enables the autosuspend
    by using an USB api.
    
    "Drivers can enable autosuspend for their devices by calling
    
    	usb_enable_autosuspend(struct usb_device *udev);
    
    in their probe() routine, if they know that the device is capable of
    suspending and resuming correctly.  This is exactly equivalent to
    writing "auto" to the device's power/control attribute."
    
    For Intel Bluetooth device, the autosuspend needs to be enabled so the
    device can transit to LPM(Low Power Mode) and ULPM(Ultra LPM) states after
    receiving suspend message from the host.
    Signed-off-by: default avatarTedd Ho-Jeong An <tedd.an@intel.com>
    Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
    d2bee8fb
btusb.c 42.2 KB