.../devicetree/bindings/net/bluetooth/brcm,bluetooth.yaml | 1 + drivers/bluetooth/btbcm.c | 6 +++++- drivers/bluetooth/hci_bcm.c | 1 + 3 files changed, 7 insertions(+), 1 deletion(-)
The first patch adds the BCM4384 Device Tree compatible string. The second patch adds the controller support to the Broadcom Bluetooth driver Changes in v2: - Patch 1: Added an explanation for why a fallback compatible is not suitable. Andy Chang (2): Bluetooth: dt-bindings: net: bluetooth: add BCM4384 Bluetooth: btbcm: Add Synaptics 4384 chip support .../devicetree/bindings/net/bluetooth/brcm,bluetooth.yaml | 1 + drivers/bluetooth/btbcm.c | 6 +++++- drivers/bluetooth/hci_bcm.c | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) -- 2.25.1
The first patch adds the BCM4384 Device Tree compatible string. The second patch adds the controller support to the Broadcom Bluetooth driver Changes in v4: - Patch 1: Rephrase commit message to be OS-agnostic regarding firmware selection as suggested by Linus Walleij. - Patch 2: Add test log into commit message. Andy Chang (2): Bluetooth: dt-bindings: net: bluetooth: add BCM4384 Bluetooth: btbcm: Add Synaptics 4384 chip support .../devicetree/bindings/net/bluetooth/brcm,bluetooth.yaml | 1 + drivers/bluetooth/btbcm.c | 6 +++++- drivers/bluetooth/hci_bcm.c | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) -- 2.25.1
Add the brcm,bcm4384-bt compatible string to support the
Synaptics BCM4384 Bluetooth controller.
A fallback compatible is not suitable here because any operating system
must discern the proper firmware to drive this specific hardware
revision, and the compatible string fulfills that purpose.
Signed-off-by: Andy Chang <Andy.Chang@synaptics.com>
Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>
Reviewed-by: Linus Walleij <linusw@linaro.org>
---
.../devicetree/bindings/net/bluetooth/brcm,bluetooth.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/net/bluetooth/brcm,bluetooth.yaml b/Documentation/devicetree/bindings/net/bluetooth/brcm,bluetooth.yaml
index 95501e858e6f..612d21123aaa 100644
--- a/Documentation/devicetree/bindings/net/bluetooth/brcm,bluetooth.yaml
+++ b/Documentation/devicetree/bindings/net/bluetooth/brcm,bluetooth.yaml
@@ -31,6 +31,7 @@ properties:
- brcm,bcm43540-bt
- brcm,bcm4335a0
- brcm,bcm4349-bt
+ - brcm,bcm4384-bt
- cypress,cyw4373a0-bt
- infineon,cyw55572-bt
--
2.25.1
Add support for the Synaptics 4384 Bluetooth controller
by adding the corresponding chip IDs.
Tested on the VIM3 platform. Verified that the controller initializes
successfully and that firmware loading and basic Bluetooth operation
work as expected.
The VIM3 is a Khadas single-board computer that I used as the host
platform for testing the BCM4384 Bluetooth controller.
Test log:
Bluetooth: hci0: BCM: chip id 206
Bluetooth: hci0: BCM: features 0x0f
Bluetooth: hci0: BCM4384B0
Bluetooth: hci0: BCM4384B0 (002.001.025) build 0000
Bluetooth: hci0: BCM4384B0 'brcm/BCM4384B0.hcd' Patch
Bluetooth: hci0: BCM: features 0x0f
Bluetooth: hci0: BCM4384B0 AP6684P CN iPA [Version: 1030.1021]
Bluetooth: hci0: BCM4384B0 (002.001.025) build 1021
Bluetooth: hci0: BCM: Using default device address (43:84:b0:00:76:93)
Signed-off-by: Andy Chang <Andy.Chang@synaptics.com>
Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>
Reviewed-by: Linus Walleij <linusw@kernel.org>
---
drivers/bluetooth/btbcm.c | 6 +++++-
drivers/bluetooth/hci_bcm.c | 1 +
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/bluetooth/btbcm.c b/drivers/bluetooth/btbcm.c
index 463d59890bef..63c4c788d9c4 100644
--- a/drivers/bluetooth/btbcm.c
+++ b/drivers/bluetooth/btbcm.c
@@ -31,6 +31,7 @@
#define BDADDR_BCM4334B0 (&(bdaddr_t) {{0x00, 0x00, 0x00, 0xb0, 0x34, 0x43}})
#define BDADDR_BCM4345C5 (&(bdaddr_t) {{0xac, 0x1f, 0x00, 0xc5, 0x45, 0x43}})
#define BDADDR_BCM43341B (&(bdaddr_t) {{0xac, 0x1f, 0x00, 0x1b, 0x34, 0x43}})
+#define BDADDR_BCM4384B0 (&(bdaddr_t) {{0x93, 0x76, 0x00, 0xb0, 0x84, 0x43}})
#define BCM_FW_NAME_LEN 64
#define BCM_FW_NAME_COUNT_MAX 4
@@ -130,7 +131,8 @@ int btbcm_check_bdaddr(struct hci_dev *hdev)
!bacmp(&bda->bdaddr, BDADDR_BCM4345C5) ||
!bacmp(&bda->bdaddr, BDADDR_BCM43430A0) ||
!bacmp(&bda->bdaddr, BDADDR_BCM43430A1) ||
- !bacmp(&bda->bdaddr, BDADDR_BCM43341B)) {
+ !bacmp(&bda->bdaddr, BDADDR_BCM43341B) ||
+ !bacmp(&bda->bdaddr, BDADDR_BCM4384B0)) {
/* Try falling back to BDADDR EFI variable */
if (btbcm_set_bdaddr_from_efi(hdev) != 0) {
bt_dev_info(hdev, "BCM: Using default device address (%pMR)",
@@ -514,6 +516,8 @@ static const struct bcm_subver_table bcm_uart_subver_table[] = {
{ 0x4106, "BCM4335A0" }, /* 002.001.006 */
{ 0x410c, "BCM43430B0" }, /* 002.001.012 */
{ 0x2119, "BCM4373A0" }, /* 001.001.025 */
+ { 0x2128, "BCM4384A0" }, /* 001.001.040 */
+ { 0x4119, "BCM4384B0" }, /* 002.001.025 */
{ }
};
diff --git a/drivers/bluetooth/hci_bcm.c b/drivers/bluetooth/hci_bcm.c
index 9a103db7e355..e70b9f3fd968 100644
--- a/drivers/bluetooth/hci_bcm.c
+++ b/drivers/bluetooth/hci_bcm.c
@@ -1593,6 +1593,7 @@ static const struct of_device_id bcm_bluetooth_of_match[] = {
{ .compatible = "brcm,bcm4349-bt", .data = &bcm43438_device_data },
{ .compatible = "brcm,bcm43540-bt", .data = &bcm4354_device_data },
{ .compatible = "brcm,bcm4335a0" },
+ { .compatible = "brcm,bcm4384-bt" },
{ .compatible = "cypress,cyw4373a0-bt", .data = &cyw4373a0_device_data },
{ .compatible = "infineon,cyw55572-bt", .data = &cyw55572_device_data },
{ },
--
2.25.1
© 2016 - 2026 Red Hat, Inc.