[PATCH 272/379][SRU][OEM-5.6] Bluetooth: hci_qca: Remove duplicate power off in proto close
You-Sheng Yang
vicamo.yang at canonical.com
Wed Dec 23 08:50:05 UTC 2020
From: Venkata Lakshmi Narayana Gubba <gubbaven at codeaurora.org>
BugLink: https://bugs.launchpad.net/bugs/1879633
During serdev unregister, hdev->shutdown is called before
proto close. Removing duplicates power OFF call.
Signed-off-by: Venkata Lakshmi Narayana Gubba <gubbaven at codeaurora.org>
Signed-off-by: Marcel Holtmann <marcel at holtmann.org>
(cherry picked from commit 054ec5e94a46b0941c1a79356bc4497c738129a2)
Signed-off-by: You-Sheng Yang <vicamo.yang at canonical.com>
---
drivers/bluetooth/hci_qca.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c
index 4afc73c2a1c0..825c6bc2ef63 100644
--- a/drivers/bluetooth/hci_qca.c
+++ b/drivers/bluetooth/hci_qca.c
@@ -697,8 +697,6 @@ static int qca_close(struct hci_uart *hu)
destroy_workqueue(qca->workqueue);
qca->hu = NULL;
- qca_power_shutdown(hu);
-
kfree_skb(qca->rx_skb);
hu->priv = NULL;
@@ -2037,8 +2035,9 @@ static int qca_serdev_probe(struct serdev_device *serdev)
static void qca_serdev_remove(struct serdev_device *serdev)
{
struct qca_serdev *qcadev = serdev_device_get_drvdata(serdev);
+ struct qca_power *power = qcadev->bt_power;
- if (qca_is_wcn399x(qcadev->btsoc_type))
+ if (qca_is_wcn399x(qcadev->btsoc_type) && power->vregs_on)
qca_power_shutdown(&qcadev->serdev_hu);
else if (qcadev->susclk)
clk_disable_unprepare(qcadev->susclk);
--
2.29.2
More information about the kernel-team
mailing list