linux/drivers/bluetooth
Tedd Ho-Jeong An d2bee8fb6e Bluetooth: Enable autosuspend for Intel Bluetooth device
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: Tedd Ho-Jeong An <tedd.an@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
2013-12-04 11:09:05 -02:00
..
ath3k.c Bluetooth: ath3k: Add support for a new AR3012 device 2013-12-04 11:09:04 -02:00
bcm203x.c Bluetooth: Use devm_kzalloc in bcm203x.c file. 2012-08-06 15:03:00 -03:00
bfusb.c Bluetooth: Declare bfusb_table[] as const 2013-10-11 17:05:20 +02:00
bluecard_cs.c Bluetooth: Remove pointless parameter check in bluecard_hci_send_frame() 2013-10-11 16:57:15 +02:00
bpa10x.c Bluetooth: Declare bpa10x_table[] as const 2013-10-11 17:05:22 +02:00
bt3c_cs.c Bluetooth: Remove pointless parameter check in bt3c_hci_send_frame() 2013-10-11 16:57:27 +02:00
btmrvl_debugfs.c Bluetooth: replace strict_strtol() with kstrtol() 2013-07-25 14:15:25 +01:00
btmrvl_drv.h Bluetooth: btmrvl: remove cal-data byte swapping and redundant mem copy 2013-12-04 11:09:03 -02:00
btmrvl_main.c Bluetooth: btmrvl: remove cal-data byte swapping and redundant mem copy 2013-12-04 11:09:03 -02:00
btmrvl_sdio.c Bluetooth: btmrvl: use cal-data from device-tree instead of conf file 2013-12-04 11:09:03 -02:00
btmrvl_sdio.h Bluetooth: btmrvl: use cal-data from device-tree instead of conf file 2013-12-04 11:09:03 -02:00
btsdio.c Bluetooth: Add hdev parameter to hdev->send driver callback 2013-10-11 15:28:03 +02:00
btuart_cs.c Bluetooth: Remove pointless parameter check in btuart_hci_send_frame() 2013-10-11 17:00:02 +02:00
btusb.c Bluetooth: Enable autosuspend for Intel Bluetooth device 2013-12-04 11:09:05 -02:00
btwilink.c Bluetooth: Add hdev parameter to hdev->send driver callback 2013-10-11 15:28:03 +02:00
dtl1_cs.c Bluetooth: Remove pointless parameter check in dtl1_hci_send_frame() 2013-10-11 17:00:08 +02:00
hci_ath.c tty: move the termios object into the tty 2012-07-16 13:00:41 -07:00
hci_bcsp.c Bluetooth: Provide hdev parameter to hci_recv_frame() driver callback 2013-10-11 09:45:34 +02:00
hci_h4.c Bluetooth: Remove unused h4_check_data_len() function 2013-10-11 07:51:09 +02:00
hci_h5.c Bluetooth: Provide hdev parameter to hci_recv_frame() driver callback 2013-10-11 09:45:34 +02:00
hci_ldisc.c Bluetooth: Remove pointless parameter check in hci_uart_send_frame() 2013-10-11 17:00:24 +02:00
hci_ll.c Bluetooth: Add hdev parameter to hdev->send driver callback 2013-10-11 15:28:03 +02:00
hci_uart.h Bluetooth: Add delayed init sequence support for UART controllers 2012-07-17 14:48:29 -03:00
hci_vhci.c Bluetooth: Remove pointless parameter check in vhci_send_frame() 2013-10-11 17:00:38 +02:00
Kconfig Bluetooth: btmrvl: support Marvell Bluetooth device SD8897 2013-06-12 10:20:54 -04:00
Makefile Bluetooth: Enable -D__CHECK_ENDIAN__ for sparse by default 2013-10-02 09:10:05 +03:00