* [PATCH v2 2/2] Bluetooth: btbcm: Add Synaptics 4384 chip support
2026-08-18 1:49 [PATCH v2 0/2] Add support for the Synaptics BCM4384 Bluetooth controller Kaihsin Chung
@ 2026-08-18 1:49 ` Kaihsin Chung
2026-08-18 6:47 ` Linus Walleij
2026-08-18 7:37 ` Paul Menzel
0 siblings, 2 replies; 22+ messages in thread
From: Kaihsin Chung @ 2026-08-18 1:49 UTC (permalink / raw)
To: linux-bluetooth
Cc: marcel, luiz.dentz, robh, krzk+dt, conor+dt, linusw, devicetree,
linux-kernel, Kaihsin Chung
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.
Signed-off-by: Kaihsin Chung <kaihsin.chung@synaptics.com>
---
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.43.0
^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [PATCH v2 2/2] Bluetooth: btbcm: Add Synaptics 4384 chip support
2026-08-18 1:49 ` [PATCH v2 2/2] Bluetooth: btbcm: Add Synaptics 4384 chip support Kaihsin Chung
@ 2026-08-18 6:47 ` Linus Walleij
2026-08-18 7:37 ` Paul Menzel
1 sibling, 0 replies; 22+ messages in thread
From: Linus Walleij @ 2026-08-18 6:47 UTC (permalink / raw)
To: Kaihsin Chung
Cc: linux-bluetooth, marcel, luiz.dentz, robh, krzk+dt, conor+dt,
devicetree, linux-kernel, Kaihsin Chung
On Tue, Aug 18, 2026 at 3:49 AM Kaihsin Chung
<kaihsin.chung@synaptics.corp-partner.google.com> wrote:
> 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.
>
> Signed-off-by: Kaihsin Chung <kaihsin.chung@synaptics.com>
Reviewed-by: Linus Walleij <linusw@kernel.org>
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v2 2/2] Bluetooth: btbcm: Add Synaptics 4384 chip support
2026-08-18 1:49 ` [PATCH v2 2/2] Bluetooth: btbcm: Add Synaptics 4384 chip support Kaihsin Chung
2026-08-18 6:47 ` Linus Walleij
@ 2026-08-18 7:37 ` Paul Menzel
1 sibling, 0 replies; 22+ messages in thread
From: Paul Menzel @ 2026-08-18 7:37 UTC (permalink / raw)
To: Kaihsin Chung
Cc: linux-bluetooth, marcel, luiz.dentz, robh, krzk+dt, conor+dt,
linusw, devicetree, linux-kernel, Kaihsin Chung
Dear Kaihsin,
Thank you for sending v2.
Am 18.08.26 um 03:49 schrieb Kaihsin Chung:
> 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.
Both paragraphs could be merged:
Tested on the Khades single-board computer VIM3. Verified that the
controller initializes successfully and that firmware loading and basic
Bluetooth operation work as expected.
> Signed-off-by: Kaihsin Chung <kaihsin.chung@synaptics.com>
Note, the author field uses a different address. It would be better if
they matched I would suggest to use the synaptics.com address.
> ---
> 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 */
What about A0? It’s not added in the hunks above. Please add a comment
in the commit message.
> + { 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 },
> { },
Kind regards,
Paul
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH v1 0/2] Add support for the Synaptics BCM4384 Bluetooth controller
@ 2026-08-27 11:02 Andy Chang
2026-08-27 11:02 ` [PATCH v1 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384 Andy Chang
2026-08-27 11:02 ` [PATCH v1 " Andy Chang
0 siblings, 2 replies; 22+ messages in thread
From: Andy Chang @ 2026-08-27 11:02 UTC (permalink / raw)
To: linux-bluetooth, Marcel Holtmann, Luiz Augusto von Dentz
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree,
Linus Walleij, linux-kernel, Andy Chang
The first patch adds the BCM4384 Device Tree compatible string.
The second patch adds the controller support to the Broadcom
Bluetooth driver
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
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH v1 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384
2026-08-27 11:02 [PATCH v1 0/2] Add support for the Synaptics BCM4384 Bluetooth controller Andy Chang
@ 2026-08-27 11:02 ` Andy Chang
2026-08-27 16:38 ` Conor Dooley
2026-09-01 2:32 ` [PATCH v2 0/2] Add support for the Synaptics BCM4384 Bluetooth controller Andy Chang
2026-08-27 11:02 ` [PATCH v1 " Andy Chang
1 sibling, 2 replies; 22+ messages in thread
From: Andy Chang @ 2026-08-27 11:02 UTC (permalink / raw)
To: linux-bluetooth, Marcel Holtmann, Luiz Augusto von Dentz
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree,
Linus Walleij, linux-kernel, Andy Chang
Add the brcm,bcm4384-bt compatible string to support the
Synaptics BCM4384 Bluetooth controller.
Signed-off-by: Andy Chang <andy.chang@synaptics.corp-partner.google.com>
---
.../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
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v1 2/2] Bluetooth: btbcm: Add Synaptics 4384 chip support
2026-08-27 11:02 [PATCH v1 0/2] Add support for the Synaptics BCM4384 Bluetooth controller Andy Chang
2026-08-27 11:02 ` [PATCH v1 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384 Andy Chang
@ 2026-08-27 11:02 ` Andy Chang
1 sibling, 0 replies; 22+ messages in thread
From: Andy Chang @ 2026-08-27 11:02 UTC (permalink / raw)
To: linux-bluetooth, Marcel Holtmann, Luiz Augusto von Dentz
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree,
Linus Walleij, linux-kernel, Andy Chang
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.
Signed-off-by: Andy Chang <andy.chang@synaptics.corp-partner.google.com>
---
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
^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [PATCH v1 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384
2026-08-27 11:02 ` [PATCH v1 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384 Andy Chang
@ 2026-08-27 16:38 ` Conor Dooley
2026-08-31 9:34 ` Andy Chang
2026-09-01 2:32 ` [PATCH v2 0/2] Add support for the Synaptics BCM4384 Bluetooth controller Andy Chang
1 sibling, 1 reply; 22+ messages in thread
From: Conor Dooley @ 2026-08-27 16:38 UTC (permalink / raw)
To: Andy Chang
Cc: linux-bluetooth, Marcel Holtmann, Luiz Augusto von Dentz,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree,
Linus Walleij, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 1130 bytes --]
On Thu, Aug 27, 2026 at 07:02:41PM +0800, Andy Chang wrote:
> Add the brcm,bcm4384-bt compatible string to support the
> Synaptics BCM4384 Bluetooth controller.
Please explain why a fallback compatible is not suitable here, or
alternatively if it is, use one.
pw-bot: changes-requested
Thanks,
Conor.
>
> Signed-off-by: Andy Chang <andy.chang@synaptics.corp-partner.google.com>
> ---
> .../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
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v1 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384
2026-08-27 16:38 ` Conor Dooley
@ 2026-08-31 9:34 ` Andy Chang
2026-08-31 15:02 ` Conor Dooley
0 siblings, 1 reply; 22+ messages in thread
From: Andy Chang @ 2026-08-31 9:34 UTC (permalink / raw)
To: Conor Dooley
Cc: linux-bluetooth, Marcel Holtmann, Luiz Augusto von Dentz,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree,
Linus Walleij, linux-kernel
On Fri, Aug 28, 2026 at 12:38 AM Conor Dooley <conor@kernel.org> wrote:
>
> On Thu, Aug 27, 2026 at 07:02:41PM +0800, Andy Chang wrote:
> > Add the brcm,bcm4384-bt compatible string to support the
> > Synaptics BCM4384 Bluetooth controller.
>
> Please explain why a fallback compatible is not suitable here, or
> alternatively if it is, use one.
>
> pw-bot: changes-requested
>
> Thanks,
> Conor.
Hi Conor,
A fallback compatible is not suitable here because the BCM4384
controller requires a dedicated firmware patch file (.hcd) matching
its specific hardware ID and revision.
Falling back to an existing compatible would cause the driver to
request the wrong firmware binary and fail the controller
initialization.
Therefore, it requires a distinct compatible string.
>
> >
> > Signed-off-by: Andy Chang <andy.chang@synaptics.corp-partner.google.com>
> > ---
> > .../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
> >
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v1 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384
2026-08-31 9:34 ` Andy Chang
@ 2026-08-31 15:02 ` Conor Dooley
0 siblings, 0 replies; 22+ messages in thread
From: Conor Dooley @ 2026-08-31 15:02 UTC (permalink / raw)
To: Andy Chang
Cc: linux-bluetooth, Marcel Holtmann, Luiz Augusto von Dentz,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree,
Linus Walleij, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 967 bytes --]
On Mon, Aug 31, 2026 at 05:34:23PM +0800, Andy Chang wrote:
> On Fri, Aug 28, 2026 at 12:38 AM Conor Dooley <conor@kernel.org> wrote:
> >
> > On Thu, Aug 27, 2026 at 07:02:41PM +0800, Andy Chang wrote:
> > > Add the brcm,bcm4384-bt compatible string to support the
> > > Synaptics BCM4384 Bluetooth controller.
> >
> > Please explain why a fallback compatible is not suitable here, or
> > alternatively if it is, use one.
> >
> > pw-bot: changes-requested
> >
> > Thanks,
> > Conor.
> Hi Conor,
> A fallback compatible is not suitable here because the BCM4384
> controller requires a dedicated firmware patch file (.hcd) matching
> its specific hardware ID and revision.
> Falling back to an existing compatible would cause the driver to
> request the wrong firmware binary and fail the controller
> initialization.
> Therefore, it requires a distinct compatible string.
Cool, please put this info in the commit message.
Thanks,
Conor.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH v2 0/2] Add support for the Synaptics BCM4384 Bluetooth controller
2026-08-27 11:02 ` [PATCH v1 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384 Andy Chang
2026-08-27 16:38 ` Conor Dooley
@ 2026-09-01 2:32 ` Andy Chang
2026-09-01 2:32 ` [PATCH v2 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384 Andy Chang
` (2 more replies)
1 sibling, 3 replies; 22+ messages in thread
From: Andy Chang @ 2026-09-01 2:32 UTC (permalink / raw)
To: linux-bluetooth, Marcel Holtmann, Luiz Augusto von Dentz
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree,
Linus Walleij, linux-kernel, Andy Chang
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
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH v2 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384
2026-09-01 2:32 ` [PATCH v2 0/2] Add support for the Synaptics BCM4384 Bluetooth controller Andy Chang
@ 2026-09-01 2:32 ` Andy Chang
2026-09-01 8:57 ` [PATCH v3 0/2] Add support for the Synaptics BCM4384 Bluetooth controller Andy Chang
2026-09-01 17:10 ` [PATCH v2 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384 Linus Walleij
2026-09-01 2:33 ` [PATCH v2 2/2] Bluetooth: btbcm: Add Synaptics 4384 chip support Andy Chang
2026-09-03 12:18 ` [PATCH v4 0/2] Add support for the Synaptics BCM4384 Bluetooth controller Andy Chang
2 siblings, 2 replies; 22+ messages in thread
From: Andy Chang @ 2026-09-01 2:32 UTC (permalink / raw)
To: linux-bluetooth, Marcel Holtmann, Luiz Augusto von Dentz
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree,
Linus Walleij, linux-kernel, Andy Chang
Add the brcm,bcm4384-bt compatible string to support the
Synaptics BCM4384 Bluetooth controller.
A fallback compatible is not suitable here because the BCM4384
controller requires a dedicated firmware patch file (.hcd) matching
its specific hardware ID and revision.
Falling back to an existing compatible would cause the driver to
request the wrong firmware binary and fail the controller
initialization.
Signed-off-by: Andy Chang <andy.chang@synaptics.corp-partner.google.com>
---
Changes in v2:
- Add an explaination for why a fallback compatible is not suitable.
.../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
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v2 2/2] Bluetooth: btbcm: Add Synaptics 4384 chip support
2026-09-01 2:32 ` [PATCH v2 0/2] Add support for the Synaptics BCM4384 Bluetooth controller Andy Chang
2026-09-01 2:32 ` [PATCH v2 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384 Andy Chang
@ 2026-09-01 2:33 ` Andy Chang
2026-09-03 12:18 ` [PATCH v4 0/2] Add support for the Synaptics BCM4384 Bluetooth controller Andy Chang
2 siblings, 0 replies; 22+ messages in thread
From: Andy Chang @ 2026-09-01 2:33 UTC (permalink / raw)
To: linux-bluetooth, Marcel Holtmann, Luiz Augusto von Dentz
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree,
Linus Walleij, linux-kernel, Andy Chang
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.
Signed-off-by: Andy Chang <andy.chang@synaptics.corp-partner.google.com>
---
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
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v3 0/2] Add support for the Synaptics BCM4384 Bluetooth controller
2026-09-01 2:32 ` [PATCH v2 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384 Andy Chang
@ 2026-09-01 8:57 ` Andy Chang
2026-09-01 8:57 ` [PATCH v3 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384 Andy Chang
2026-09-01 8:57 ` [PATCH v3 2/2] Bluetooth: btbcm: Add Synaptics 4384 chip support Andy Chang
2026-09-01 17:10 ` [PATCH v2 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384 Linus Walleij
1 sibling, 2 replies; 22+ messages in thread
From: Andy Chang @ 2026-09-01 8:57 UTC (permalink / raw)
To: linux-bluetooth, Marcel Holtmann, Luiz Augusto von Dentz
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree,
Linus Walleij, linux-kernel, Andy Chang
he first patch adds the BCM4384 Device Tree compatible string.
The second patch adds the controller support to the Broadcom
Bluetooth driver
Changes in v3:
- Patch 1: Fixed typo and GitLint failure.
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
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH v3 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384
2026-09-01 8:57 ` [PATCH v3 0/2] Add support for the Synaptics BCM4384 Bluetooth controller Andy Chang
@ 2026-09-01 8:57 ` Andy Chang
2026-09-01 13:42 ` Paul Menzel
2026-09-01 8:57 ` [PATCH v3 2/2] Bluetooth: btbcm: Add Synaptics 4384 chip support Andy Chang
1 sibling, 1 reply; 22+ messages in thread
From: Andy Chang @ 2026-09-01 8:57 UTC (permalink / raw)
To: linux-bluetooth, Marcel Holtmann, Luiz Augusto von Dentz
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree,
Linus Walleij, linux-kernel, Andy Chang
Add the brcm,bcm4384-bt compatible string to support the
Synaptics BCM4384 Bluetooth controller.
A fallback compatible is not suitable here because the BCM4384
controller requires a dedicated firmware patch file (.hcd) matching
its specific hardware ID and revision.
Falling back to an existing compatible would cause the driver to
request the wrong firmware binary and fail the controller
initialization.
Signed-off-by: Andy Chang <andy.chang@synaptics.corp-partner.google.com>
---
Changes in v3:
- Fix typo and GitLint failure.
.../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
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v3 2/2] Bluetooth: btbcm: Add Synaptics 4384 chip support
2026-09-01 8:57 ` [PATCH v3 0/2] Add support for the Synaptics BCM4384 Bluetooth controller Andy Chang
2026-09-01 8:57 ` [PATCH v3 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384 Andy Chang
@ 2026-09-01 8:57 ` Andy Chang
2026-09-01 13:55 ` Paul Menzel
2026-09-01 17:11 ` Linus Walleij
1 sibling, 2 replies; 22+ messages in thread
From: Andy Chang @ 2026-09-01 8:57 UTC (permalink / raw)
To: linux-bluetooth, Marcel Holtmann, Luiz Augusto von Dentz
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree,
Linus Walleij, linux-kernel, Andy Chang
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.
Signed-off-by: Andy Chang <andy.chang@synaptics.corp-partner.google.com>
---
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
^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [PATCH v3 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384
2026-09-01 8:57 ` [PATCH v3 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384 Andy Chang
@ 2026-09-01 13:42 ` Paul Menzel
0 siblings, 0 replies; 22+ messages in thread
From: Paul Menzel @ 2026-09-01 13:42 UTC (permalink / raw)
To: Andy Chang
Cc: Marcel Holtmann, Luiz Augusto von Dentz, linux-bluetooth,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree,
Linus Walleij, linux-kernel
Dear Andy,
Thank you for your patch.
Am 01.09.26 um 10:57 schrieb Andy Chang:
> Add the brcm,bcm4384-bt compatible string to support the
> Synaptics BCM4384 Bluetooth controller.
>
> A fallback compatible is not suitable here because the BCM4384
> controller requires a dedicated firmware patch file (.hcd) matching
> its specific hardware ID and revision.
>
> Falling back to an existing compatible would cause the driver to
> request the wrong firmware binary and fail the controller
> initialization.
>
> Signed-off-by: Andy Chang <andy.chang@synaptics.corp-partner.google.com>
I’d use your @synaptics.com address.
> ---
> Changes in v3:
> - Fix typo and GitLint failure.
kaihsin.chung@synaptics.corp-partner.google.com also sent in patches
[1]. It’d be great if you could coordinate.
> .../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
Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>
Kind regards,
Paul
[1]:
https://lore.kernel.org/all/?q=kaihsin.chung@synaptics.corp-partner.google.com
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 2/2] Bluetooth: btbcm: Add Synaptics 4384 chip support
2026-09-01 8:57 ` [PATCH v3 2/2] Bluetooth: btbcm: Add Synaptics 4384 chip support Andy Chang
@ 2026-09-01 13:55 ` Paul Menzel
2026-09-01 17:11 ` Linus Walleij
1 sibling, 0 replies; 22+ messages in thread
From: Paul Menzel @ 2026-09-01 13:55 UTC (permalink / raw)
To: Andy Chang
Cc: Marcel Holtmann, Luiz Augusto von Dentz, linux-bluetooth,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree,
Linus Walleij, linux-kernel
Dear Andy,
Thank you for your patch. Same comments as in *PATCH v3 1/2*.
Am 01.09.26 um 10:57 schrieb Andy Chang:
> 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.
Should you resend, please paste the new Linux log message into the
commit message, as most people don’t have the hardware for testing.
> Signed-off-by: Andy Chang <andy.chang@synaptics.corp-partner.google.com>
> ---
> 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 },
> { },
Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>
Kind regards,
Paul
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v2 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384
2026-09-01 2:32 ` [PATCH v2 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384 Andy Chang
2026-09-01 8:57 ` [PATCH v3 0/2] Add support for the Synaptics BCM4384 Bluetooth controller Andy Chang
@ 2026-09-01 17:10 ` Linus Walleij
1 sibling, 0 replies; 22+ messages in thread
From: Linus Walleij @ 2026-09-01 17:10 UTC (permalink / raw)
To: Andy Chang
Cc: linux-bluetooth, Marcel Holtmann, Luiz Augusto von Dentz,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree,
linux-kernel
On Tue, Sep 1, 2026 at 4:32 AM Andy Chang
<andy.chang@synaptics.corp-partner.google.com> wrote:
> Add the brcm,bcm4384-bt compatible string to support the
> Synaptics BCM4384 Bluetooth controller.
>
> A fallback compatible is not suitable here because the BCM4384
> controller requires a dedicated firmware patch file (.hcd) matching
> its specific hardware ID and revision.
>
> Falling back to an existing compatible would cause the driver to
> request the wrong firmware binary and fail the controller
> initialization.
I would word this neutrally like
"any operating system must discern the proper firmware to drive
this hardware and the compatible string will fulfil that purpose".
> Signed-off-by: Andy Chang <andy.chang@synaptics.corp-partner.google.com>
Either way:
Reviewed-by: Linus Walleij <linusw@linaro.org>
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [PATCH v3 2/2] Bluetooth: btbcm: Add Synaptics 4384 chip support
2026-09-01 8:57 ` [PATCH v3 2/2] Bluetooth: btbcm: Add Synaptics 4384 chip support Andy Chang
2026-09-01 13:55 ` Paul Menzel
@ 2026-09-01 17:11 ` Linus Walleij
1 sibling, 0 replies; 22+ messages in thread
From: Linus Walleij @ 2026-09-01 17:11 UTC (permalink / raw)
To: Andy Chang
Cc: linux-bluetooth, Marcel Holtmann, Luiz Augusto von Dentz,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree,
linux-kernel
On Tue, Sep 1, 2026 at 10:57 AM Andy Chang
<andy.chang@synaptics.corp-partner.google.com> wrote:
> 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.
>
> Signed-off-by: Andy Chang <andy.chang@synaptics.corp-partner.google.com>
Reviewed-by: Linus Walleij <linusw@kernel.org>
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH v4 0/2] Add support for the Synaptics BCM4384 Bluetooth controller
2026-09-01 2:32 ` [PATCH v2 0/2] Add support for the Synaptics BCM4384 Bluetooth controller Andy Chang
2026-09-01 2:32 ` [PATCH v2 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384 Andy Chang
2026-09-01 2:33 ` [PATCH v2 2/2] Bluetooth: btbcm: Add Synaptics 4384 chip support Andy Chang
@ 2026-09-03 12:18 ` Andy Chang
2026-09-03 12:18 ` [PATCH v4 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384 Andy Chang
2026-09-03 12:18 ` [PATCH v4 2/2] Bluetooth: btbcm: Add Synaptics 4384 chip support Andy Chang
2 siblings, 2 replies; 22+ messages in thread
From: Andy Chang @ 2026-09-03 12:18 UTC (permalink / raw)
To: linux-bluetooth, Marcel Holtmann, Luiz Augusto von Dentz
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree,
Linus Walleij, linux-kernel, Andy Chang
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
^ permalink raw reply [flat|nested] 22+ messages in thread
* [PATCH v4 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384
2026-09-03 12:18 ` [PATCH v4 0/2] Add support for the Synaptics BCM4384 Bluetooth controller Andy Chang
@ 2026-09-03 12:18 ` Andy Chang
2026-09-03 12:18 ` [PATCH v4 2/2] Bluetooth: btbcm: Add Synaptics 4384 chip support Andy Chang
1 sibling, 0 replies; 22+ messages in thread
From: Andy Chang @ 2026-09-03 12:18 UTC (permalink / raw)
To: linux-bluetooth, Marcel Holtmann, Luiz Augusto von Dentz
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree,
Linus Walleij, linux-kernel, Andy Chang, Paul Menzel,
Linus Walleij
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
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [PATCH v4 2/2] Bluetooth: btbcm: Add Synaptics 4384 chip support
2026-09-03 12:18 ` [PATCH v4 0/2] Add support for the Synaptics BCM4384 Bluetooth controller Andy Chang
2026-09-03 12:18 ` [PATCH v4 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384 Andy Chang
@ 2026-09-03 12:18 ` Andy Chang
1 sibling, 0 replies; 22+ messages in thread
From: Andy Chang @ 2026-09-03 12:18 UTC (permalink / raw)
To: linux-bluetooth, Marcel Holtmann, Luiz Augusto von Dentz
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, devicetree,
Linus Walleij, linux-kernel, Andy Chang, Paul Menzel
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
^ permalink raw reply related [flat|nested] 22+ messages in thread
end of thread, other threads:[~2026-09-03 12:18 UTC | newest]
Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-27 11:02 [PATCH v1 0/2] Add support for the Synaptics BCM4384 Bluetooth controller Andy Chang
2026-08-27 11:02 ` [PATCH v1 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384 Andy Chang
2026-08-27 16:38 ` Conor Dooley
2026-08-31 9:34 ` Andy Chang
2026-08-31 15:02 ` Conor Dooley
2026-09-01 2:32 ` [PATCH v2 0/2] Add support for the Synaptics BCM4384 Bluetooth controller Andy Chang
2026-09-01 2:32 ` [PATCH v2 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384 Andy Chang
2026-09-01 8:57 ` [PATCH v3 0/2] Add support for the Synaptics BCM4384 Bluetooth controller Andy Chang
2026-09-01 8:57 ` [PATCH v3 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384 Andy Chang
2026-09-01 13:42 ` Paul Menzel
2026-09-01 8:57 ` [PATCH v3 2/2] Bluetooth: btbcm: Add Synaptics 4384 chip support Andy Chang
2026-09-01 13:55 ` Paul Menzel
2026-09-01 17:11 ` Linus Walleij
2026-09-01 17:10 ` [PATCH v2 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384 Linus Walleij
2026-09-01 2:33 ` [PATCH v2 2/2] Bluetooth: btbcm: Add Synaptics 4384 chip support Andy Chang
2026-09-03 12:18 ` [PATCH v4 0/2] Add support for the Synaptics BCM4384 Bluetooth controller Andy Chang
2026-09-03 12:18 ` [PATCH v4 1/2] Bluetooth: dt-bindings: net: bluetooth: add BCM4384 Andy Chang
2026-09-03 12:18 ` [PATCH v4 2/2] Bluetooth: btbcm: Add Synaptics 4384 chip support Andy Chang
2026-08-27 11:02 ` [PATCH v1 " Andy Chang
-- strict thread matches above, loose matches on Subject: below --
2026-08-18 1:49 [PATCH v2 0/2] Add support for the Synaptics BCM4384 Bluetooth controller Kaihsin Chung
2026-08-18 1:49 ` [PATCH v2 2/2] Bluetooth: btbcm: Add Synaptics 4384 chip support Kaihsin Chung
2026-08-18 6:47 ` Linus Walleij
2026-08-18 7:37 ` Paul Menzel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox