[SRU OEM-B][PATCH 1/3] UBUNTU: SAUCE: Bluetooth: btrsi: add hci detach for hibernation and poweroff
Shrirang Bagul
shrirang.bagul at canonical.com
Tue May 22 10:49:10 UTC 2018
From: Ganapathi Raju <ganapathi.kondraju at redpinesignals.com>
BugLink: http://bugs.launchpad.net/bugs/1772626
As we missed to detach HCI, while entering power off or hibernation,
an extra hci interface gets created whenever system is woken up, to
avoid this we added hci_detach() in rsi_disconnect(), rsi_freeze(),
and rsi_shutdown() functions which are invoked for these tests.
This patch fixes the issue
Signed-off-by: Ganapathi Raju <ganapathi.kondraju at redpinesignals.com>
Signed-off-by: Shrirang Bagul <shrirang.bagul at canonical.com>
---
drivers/net/wireless/rsi/rsi_91x_sdio.c | 21 +++++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wireless/rsi/rsi_91x_sdio.c b/drivers/net/wireless/rsi/rsi_91x_sdio.c
index 27e2b07ef9c7..a38580ef3c27 100644
--- a/drivers/net/wireless/rsi/rsi_91x_sdio.c
+++ b/drivers/net/wireless/rsi/rsi_91x_sdio.c
@@ -1142,7 +1142,12 @@ static void rsi_disconnect(struct sdio_func *pfunction)
rsi_mac80211_detach(adapter);
mdelay(10);
-
+#ifdef CONFIG_RSI_COEX
+ if (adapter->priv->coex_mode > 1 && adapter->priv->bt_adapter) {
+ rsi_bt_ops.detach(adapter->priv->bt_adapter);
+ adapter->priv->bt_adapter = NULL;
+ }
+#endif
/* Reset Chip */
rsi_reset_chip(adapter);
@@ -1325,6 +1330,13 @@ static int rsi_freeze(struct device *dev)
rsi_dbg(ERR_ZONE,
"##### Device can not wake up through WLAN\n");
+#ifdef CONFIG_RSI_COEX
+ if (common->coex_mode > 1 && common->bt_adapter) {
+ rsi_bt_ops.detach(common->bt_adapter);
+ common->bt_adapter = NULL;
+ }
+#endif
+
ret = rsi_sdio_disable_interrupts(pfunction);
if (sdev->write_fail)
@@ -1371,7 +1383,12 @@ static void rsi_shutdown(struct device *dev)
if (rsi_config_wowlan(adapter, wowlan))
rsi_dbg(ERR_ZONE, "Failed to configure WoWLAN\n");
-
+#ifdef CONFIG_RSI_COEX
+ if (adapter->priv->coex_mode > 1 && adapter->priv->bt_adapter) {
+ rsi_bt_ops.detach(adapter->priv->bt_adapter);
+ adapter->priv->bt_adapter = NULL;
+ }
+#endif
rsi_sdio_disable_interrupts(sdev->pfunction);
if (sdev->write_fail)
--
2.17.0
More information about the kernel-team
mailing list