On 2022-02-12 00:22, Marcel Holtmann wrote:
Hi Zijun,
Controller will reset after NVM is downloaded for QCA
device, so wait a moment for reset Done then go ahead
to improve stability.
Signed-off-by: Zijun Hu <quic_zijuhu@xxxxxxxxxxx>
---
drivers/bluetooth/btusb.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index e03dfbd92fcc..20e36f53d2e7 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -2994,6 +2994,7 @@ static int btusb_set_bdaddr_wcn6855(struct
hci_dev *hdev,
#define QCA_PATCH_UPDATED 0x80
#define QCA_DFU_TIMEOUT 3000
#define QCA_FLAG_MULTI_NVM 0x80
+#define QCA_BT_RESET_WAIT_MS 100
#define WCN6855_2_0_RAM_VERSION_GF 0x400c1200
#define WCN6855_2_1_RAM_VERSION_GF 0x400c1211
@@ -3320,6 +3321,10 @@ static int btusb_setup_qca(struct hci_dev
*hdev)
err = btusb_setup_qca_load_nvm(hdev, &ver, info);
if (err < 0)
return err;
+ /* Controller will reset after NVM is downloaded, so wait a moment
+ * for reset Done, it will improve stability.
+ */
+ msleep(QCA_BT_RESET_WAIT_MS);
how hard is to just grab the data sheet and figure out the appropriate
time to wait? I will be all documented and then reference the
documentation.
let me explain more for this patch:
a BT enable failure issue is reported for WCN6855 2.1 chip, the root
cause located is that HCI command is sent before controller reset is
Done.
100ms delay is suggested by firmware team and it is a appropriate
interval
based on verification. so these info is not available from data sheet
currently.
I really dislike this "add a sleep here and sleep there". It might
just work for now. The next hardware generation comes around or if
placed on a different board just behaves a little bit different. And
at some point we are at 10 seconds sleep and you start complaining why
the controller initialization takes so long. Stop guessing and
reference the data sheet.
you are right.
i will only restrict that delay to WCN6855 2.1 chip this issue is
reported for.
Regards
Marcel