APPLIED[A]: [SRU] [Artful/linux-oem] [PATCH 1/1] Bluetooth: btusb: driver to enable the usb-wakeup feature

Khaled Elmously khalid.elmously at canonical.com
Thu Feb 1 20:41:51 UTC 2018


Applied to artful

On 2017-12-13 16:05:55 , Kai-Heng Feng wrote:
> From: Sukumar Ghorai <sukumar.ghorai at intel.com>
> 
> BugLink: https://bugs.launchpad.net/bugs/1737890
> 
> BT-Controller connected as platform non-root-hub device and
> usb-driver initialize such device with wakeup disabled,
> Ref. usb_new_device().
> 
> At present wakeup-capability get enabled by hid-input device from usb
> function driver(e.g. BT HID device) at runtime. Again some functional
> driver does not set usb-wakeup capability(e.g LE HID device implement
> as HID-over-GATT), and can't wakeup the host on USB.
> 
> Most of the device operation (such as mass storage) initiated from host
> (except HID) and USB wakeup aligned with host resume procedure. For BT
> device, usb-wakeup capability need to enable form btusc driver as a
> generic solution for multiple profile use case and required for USB remote
> wakeup (in-bus wakeup) while host is suspended. Also usb-wakeup feature
> need to enable/disable with HCI interface up and down.
> 
> Signed-off-by: Sukumar Ghorai <sukumar.ghorai at intel.com>
> Signed-off-by: Amit K Bag <amit.k.bag at intel.com>
> Acked-by: Oliver Neukum <oneukum at suse.com>
> Signed-off-by: Marcel Holtmann <marcel at holtmann.org>
> (cherry picked from commit a0085f2510e8976614ad8f766b209448b385492f)
> Signed-off-by: Kai-Heng Feng <kai.heng.feng at canonical.com>
> ---
>  drivers/bluetooth/btusb.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
> index 99c97f65149e..d563ec8c008b 100644
> --- a/drivers/bluetooth/btusb.c
> +++ b/drivers/bluetooth/btusb.c
> @@ -1077,6 +1077,10 @@ static int btusb_open(struct hci_dev *hdev)
>  	}
>  
>  	data->intf->needs_remote_wakeup = 1;
> +	/* device specific wakeup source enabled and required for USB
> +	 * remote wakeup while host is suspended
> +	 */
> +	device_wakeup_enable(&data->udev->dev);
>  
>  	if (test_and_set_bit(BTUSB_INTR_RUNNING, &data->flags))
>  		goto done;
> @@ -1140,6 +1144,7 @@ static int btusb_close(struct hci_dev *hdev)
>  		goto failed;
>  
>  	data->intf->needs_remote_wakeup = 0;
> +	device_wakeup_disable(&data->udev->dev);
>  	usb_autopm_put_interface(data->intf);
>  
>  failed:
> -- 
> 2.14.1
> 
> 
> -- 
> kernel-team mailing list
> kernel-team at lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team




More information about the kernel-team mailing list