Bluetooth: hci_bcm: Streamline runtime PM code
authorLukas Wunner <lukas@wunner.de>
Tue, 26 Dec 2017 15:07:34 +0000 (17:07 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Tue, 26 Dec 2017 20:55:25 +0000 (21:55 +0100)
This driver seeks to force the Bluetooth device on for the duration of
5 seconds when the Bluetooth device has woken the host and after a
complete packet has been received.  It does that by calling:

    pm_runtime_get();
    pm_runtime_mark_last_busy();
    pm_runtime_put_autosuspend();

The same can be achieved more succinctly with:

    pm_request_resume();

That's because after runtime resuming the device, rpm_resume() invokes
pm_runtime_mark_last_busy() followed by rpm_idle(), which will cause
the device to be suspended after expiration of the autosuspend_delay.

No functional change intended.

Cc: Frédéric Danis <frederic.danis.oss@gmail.com>
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
drivers/bluetooth/hci_bcm.c

index 47fc58c9eb49dc5fdd90188f5169d3fccad5b6e7..1fc604a0d87005125c81236e554a961f983a3f72 100644 (file)
@@ -191,9 +191,7 @@ static irqreturn_t bcm_host_wake(int irq, void *data)
 
        bt_dev_dbg(bdev, "Host wake IRQ");
 
-       pm_runtime_get(bdev->dev);
-       pm_runtime_mark_last_busy(bdev->dev);
-       pm_runtime_put_autosuspend(bdev->dev);
+       pm_request_resume(bdev->dev);
 
        return IRQ_HANDLED;
 }
@@ -512,11 +510,8 @@ static int bcm_recv(struct hci_uart *hu, const void *data, int count)
        } else if (!bcm->rx_skb) {
                /* Delay auto-suspend when receiving completed packet */
                mutex_lock(&bcm_device_lock);
-               if (bcm->dev && bcm_device_exists(bcm->dev)) {
-                       pm_runtime_get(bcm->dev->dev);
-                       pm_runtime_mark_last_busy(bcm->dev->dev);
-                       pm_runtime_put_autosuspend(bcm->dev->dev);
-               }
+               if (bcm->dev && bcm_device_exists(bcm->dev))
+                       pm_request_resume(bcm->dev->dev);
                mutex_unlock(&bcm_device_lock);
        }