OSDN Git Service

Bluetooth: btmrvl_sdio: Implement prevent_wake
authorAbhishek Pandit-Subedi <abhishekpandit@chromium.org>
Thu, 11 Jun 2020 01:53:54 +0000 (18:53 -0700)
committerMarcel Holtmann <marcel@holtmann.org>
Fri, 12 Jun 2020 06:38:52 +0000 (08:38 +0200)
Use the parent device's power/wakeup to control whether we support
remote wake. If remote wakeup is disabled, Bluetooth will not enable
scanning for incoming connections.

Signed-off-by: Abhishek Pandit-Subedi <abhishekpandit@chromium.org>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
drivers/bluetooth/btmrvl_main.c

index 47e4509..8b9d78c 100644 (file)
@@ -587,6 +587,14 @@ static int btmrvl_set_bdaddr(struct hci_dev *hdev, const bdaddr_t *bdaddr)
        return 0;
 }
 
+static bool btmrvl_prevent_wake(struct hci_dev *hdev)
+{
+       struct btmrvl_private *priv = hci_get_drvdata(hdev);
+       struct btmrvl_sdio_card *card = priv->btmrvl_dev.card;
+
+       return !device_may_wakeup(&card->func->dev);
+}
+
 /*
  * This function handles the event generated by firmware, rx data
  * received from firmware, and tx data sent from kernel.
@@ -688,6 +696,7 @@ int btmrvl_register_hdev(struct btmrvl_private *priv)
        hdev->send  = btmrvl_send_frame;
        hdev->setup = btmrvl_setup;
        hdev->set_bdaddr = btmrvl_set_bdaddr;
+       hdev->prevent_wake = btmrvl_prevent_wake;
        SET_HCIDEV_DEV(hdev, &card->func->dev);
 
        hdev->dev_type = priv->btmrvl_dev.dev_type;