2019-11-22 10:05:58

by Andre Heider

[permalink] [raw]
Subject: [PATCH v3] bluetooth: bcm: Use the BDADDR_PROPERTY quirk for Orange Pi 3

Some devices ship with the controller default address, like the
Orange Pi 3 (BCM4345C5).

Allow the bootloader to set a valid address through the device tree.

Signed-off-by: Andre Heider <[email protected]>
---
drivers/bluetooth/btbcm.c | 7 +++++++
1 file changed, 7 insertions(+)

diff --git a/drivers/bluetooth/btbcm.c b/drivers/bluetooth/btbcm.c
index 2d2e6d862068..e20e7da45377 100644
--- a/drivers/bluetooth/btbcm.c
+++ b/drivers/bluetooth/btbcm.c
@@ -8,6 +8,7 @@

#include <linux/module.h>
#include <linux/firmware.h>
+#include <linux/of.h>
#include <asm/unaligned.h>

#include <net/bluetooth/bluetooth.h>
@@ -440,6 +441,12 @@ int btbcm_finalize(struct hci_dev *hdev)

set_bit(HCI_QUIRK_STRICT_DUPLICATE_FILTER, &hdev->quirks);

+ /* Some devices ship with the controller default address.
+ * Allow the bootloader to set a valid address through the device tree.
+ */
+ if (of_machine_is_compatible("xunlong,orangepi-3"))
+ set_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks);
+
return 0;
}
EXPORT_SYMBOL_GPL(btbcm_finalize);
--
2.24.0


2019-11-22 12:03:29

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [PATCH v3] bluetooth: bcm: Use the BDADDR_PROPERTY quirk for Orange Pi 3

Hi Andre,

> Some devices ship with the controller default address, like the
> Orange Pi 3 (BCM4345C5).
>
> Allow the bootloader to set a valid address through the device tree.
>
> Signed-off-by: Andre Heider <[email protected]>
> ---
> drivers/bluetooth/btbcm.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/drivers/bluetooth/btbcm.c b/drivers/bluetooth/btbcm.c
> index 2d2e6d862068..e20e7da45377 100644
> --- a/drivers/bluetooth/btbcm.c
> +++ b/drivers/bluetooth/btbcm.c
> @@ -8,6 +8,7 @@
>
> #include <linux/module.h>
> #include <linux/firmware.h>
> +#include <linux/of.h>
> #include <asm/unaligned.h>
>
> #include <net/bluetooth/bluetooth.h>
> @@ -440,6 +441,12 @@ int btbcm_finalize(struct hci_dev *hdev)
>
> set_bit(HCI_QUIRK_STRICT_DUPLICATE_FILTER, &hdev->quirks);
>
> + /* Some devices ship with the controller default address.
> + * Allow the bootloader to set a valid address through the device tree.
> + */
> + if (of_machine_is_compatible("xunlong,orangepi-3"))
> + set_bit(HCI_QUIRK_USE_BDADDR_PROPERTY, &hdev->quirks);
> +

just make it unconditional. I think this will be just fine.

Regards

Marcel