]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Revert "Bluetooth: hci_qca: Set BDA quirk bit if fwnode exists in DT"
authorJohan Hovold <johan+linaro@kernel.org>
Thu, 14 Mar 2024 08:44:12 +0000 (09:44 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 10 Apr 2024 14:35:48 +0000 (16:35 +0200)
commit 4790a73ace86f3d165bbedba898e0758e6e1b82d upstream.

This reverts commit 7dcd3e014aa7faeeaf4047190b22d8a19a0db696.

Qualcomm Bluetooth controllers like WCN6855 do not have persistent
storage for the Bluetooth address and must therefore start as
unconfigured to allow the user to set a valid address unless one has
been provided by the boot firmware in the devicetree.

A recent change snuck into v6.8-rc7 and incorrectly started marking the
default (non-unique) address as valid. This specifically also breaks the
Bluetooth setup for some user of the Lenovo ThinkPad X13s.

Note that this is the second time Qualcomm breaks the driver this way
and that this was fixed last year by commit 6945795bc81a ("Bluetooth:
fix use-bdaddr-property quirk"), which also has some further details.

Fixes: 7dcd3e014aa7 ("Bluetooth: hci_qca: Set BDA quirk bit if fwnode exists in DT")
Cc: stable@vger.kernel.org # 6.8
Cc: Janaki Ramaiah Thota <quic_janathot@quicinc.com>
Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Reported-by: Clayton Craft <clayton@craftyguy.net>
Tested-by: Clayton Craft <clayton@craftyguy.net>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/bluetooth/hci_qca.c

index f2d4985e036e43b7d1795e9fb99c7281987e521d..eebcc511898b56310123b6252be225352100f079 100644 (file)
@@ -7,7 +7,6 @@
  *
  *  Copyright (C) 2007 Texas Instruments, Inc.
  *  Copyright (c) 2010, 2012, 2018 The Linux Foundation. All rights reserved.
- *  Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
  *
  *  Acknowledgements:
  *  This file is based on hci_ll.c, which was...
@@ -1882,17 +1881,7 @@ retry:
        case QCA_WCN6750:
        case QCA_WCN6855:
        case QCA_WCN7850:
-
-               /* Set BDA quirk bit for reading BDA value from fwnode property
-                * only if that property exist in DT.
-                */
-               if (fwnode_property_present(dev_fwnode(hdev->dev.parent), "local-bd-address")) {
-                       set_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks);
-                       bt_dev_info(hdev, "setting quirk bit to read BDA from fwnode later");
-               } else {
-                       bt_dev_dbg(hdev, "local-bd-address` is not present in the devicetree so not setting quirk bit for BDA");
-               }
-
+               set_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks);
                hci_set_aosp_capable(hdev);
 
                ret = qca_read_soc_version(hdev, &ver, soc_type);