Some USB hubs may lose power across suspend/resume. Add a reset_resume callback to properly reset those bluetoot devices. Signed-off-by: Laura Abbott <labbott@xxxxxxxxxxxxxxxxx> --- Now the setup function is called again with the HCI_RESET_RESUME flag set. The various functions could then use that RESET_RESUME flag to determine if loading the firmware is appropriate or not. --- drivers/bluetooth/btusb.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c index 3c10d4d..34884cf 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c @@ -3382,6 +3382,21 @@ done: return err; } + +static int btusb_reset_resume(struct usb_interface *intf) +{ + struct btusb_data *data = usb_get_intfdata(intf); + struct hci_dev *hdev = data->hdev; + int ret; + + BT_DBG("intf %p", intf); + + ret = btusb_resume(intf); + if (ret) + return ret; + + return hci_reset_resume_dev(hdev); +} #endif static struct usb_driver btusb_driver = { @@ -3391,6 +3406,7 @@ static struct usb_driver btusb_driver = { #ifdef CONFIG_PM .suspend = btusb_suspend, .resume = btusb_resume, + .reset_resume = btusb_reset_resume, #endif .id_table = btusb_table, .supports_autosuspend = 1, -- 2.4.1 -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html