Reset vendor power state while BT power on.
Use case: SSR or other similar cases when Bluetooth process
is killed abruptly without cleanup.
Steps: SSR or command timeout cases where Bluetooth process
gets killed abruptly.
Failure: Since, vendor cleanup is not done properly, next
BT enable fails.
Root cause: Vendor power state was not reset.
Fix: Added check for previous known vendor state and send
vendor power off while enabling BT if it is not in off state.
Bug:29243594
Change-Id: I5394f1e0ca8a581fc43efc7440a08aa9b520929d
diff --git a/msm8992/libbt-vendor/src/bt_vendor_qcom.c b/msm8992/libbt-vendor/src/bt_vendor_qcom.c
index fffdcb8..6c71f3b 100644
--- a/msm8992/libbt-vendor/src/bt_vendor_qcom.c
+++ b/msm8992/libbt-vendor/src/bt_vendor_qcom.c
@@ -664,7 +664,12 @@
case BT_SOC_ROME:
case BT_SOC_AR3K:
/* BT Chipset Power Control through Device Tree Node */
+ if(nState == BT_VND_PWR_ON && property_get_bool("wc_transport.vnd_power", 0)) {
+ bt_powerup(BT_VND_PWR_OFF);
+ }
retval = bt_powerup(nState);
+ if(retval == 0)
+ property_set("wc_transport.vnd_power", nState == BT_VND_PWR_ON ? "1" : "0");
default:
break;
}