When the controller BD address is invalid (zero or default),
set the NVMEM quirks to allow retrieving the address from a
'local-bd-address' NVMEM cell. The BD address is often stored
alongside the WiFi MAC address in big-endian format, so also
set the big-endian quirk.

Signed-off-by: Loic Poulain <[email protected]>
---
 drivers/bluetooth/btqca.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/bluetooth/btqca.c b/drivers/bluetooth/btqca.c
index 
dda76365726f0bfe0e80e05fe04859fa4f0592e1..df33eacfd29fa680f393f90215150743e6001d5b
 100644
--- a/drivers/bluetooth/btqca.c
+++ b/drivers/bluetooth/btqca.c
@@ -721,8 +721,11 @@ static int qca_check_bdaddr(struct hci_dev *hdev, const 
struct qca_fw_config *co
        }
 
        bda = (struct hci_rp_read_bd_addr *)skb->data;
-       if (!bacmp(&bda->bdaddr, &config->bdaddr))
+       if (!bacmp(&bda->bdaddr, &config->bdaddr)) {
                hci_set_quirk(hdev, HCI_QUIRK_USE_BDADDR_PROPERTY);
+               hci_set_quirk(hdev, HCI_QUIRK_USE_BDADDR_NVMEM);
+               hci_set_quirk(hdev, HCI_QUIRK_BDADDR_NVMEM_BE);
+       }
 
        kfree_skb(skb);
 

-- 
2.34.1


Reply via email to