]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
Bluetooth: hci_qca: wait for Pre shutdown complete event before sending the Power...
authorHarish Bandi <c-hbandi@codeaurora.org>
Fri, 30 Aug 2019 12:28:36 +0000 (17:58 +0530)
committerMarcel Holtmann <marcel@holtmann.org>
Thu, 5 Sep 2019 15:27:22 +0000 (17:27 +0200)
When SoC receives pre shut down command, it share the same
with other COEX shared clients. So SoC needs a short time
after sending VS pre shutdown command before turning off
the regulators and sending the power off pulse. Along with
short delay, needs to wait for command complete event for
Pre shutdown VS command

Signed-off-by: Harish Bandi <c-hbandi@codeaurora.org>
Reviewed-by: Balakrishna Godavarthi <bgodavar@codeaurora.org>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
drivers/bluetooth/btqca.c
drivers/bluetooth/hci_qca.c

index 0875470a7806f8658c45b2b4a15f6e2b029bf0c2..8cc21ad7cf29d88b35979af0abaf79956d375f53 100644 (file)
@@ -106,8 +106,9 @@ int qca_send_pre_shutdown_cmd(struct hci_dev *hdev)
 
        bt_dev_dbg(hdev, "QCA pre shutdown cmd");
 
-       skb = __hci_cmd_sync(hdev, QCA_PRE_SHUTDOWN_CMD, 0,
-                               NULL, HCI_INIT_TIMEOUT);
+       skb = __hci_cmd_sync_ev(hdev, QCA_PRE_SHUTDOWN_CMD, 0,
+                               NULL, HCI_EV_CMD_COMPLETE, HCI_INIT_TIMEOUT);
+
        if (IS_ERR(skb)) {
                err = PTR_ERR(skb);
                bt_dev_err(hdev, "QCA preshutdown_cmd failed (%d)", err);
index 15753f6bce80bf719f88ae9345562a9067da3287..d33828fef89f42ed60a1a9f2d52ce4f9bbd58f58 100644 (file)
@@ -1375,6 +1375,8 @@ static int qca_power_off(struct hci_dev *hdev)
        /* Perform pre shutdown command */
        qca_send_pre_shutdown_cmd(hdev);
 
+       usleep_range(8000, 10000);
+
        qca_power_shutdown(hu);
        return 0;
 }