2022-06-30 12:50:03

by Hakan Jansson

[permalink] [raw]
Subject: [PATCH v2 0/5] Bluetooth: hci_bcm: Improve FW load time on CYW55572

These patches add an optional device specific data member to specify max
baudrate of a device when in autobaud mode. This allows the host to set a
first baudrate higher than "init speed" to improve FW load time.

The host baudrate will later be changed to "init speed" (as usual) once FW
loading is complete and the device has been reset to begin normal
operation.

Changes v1 -> v2:
- Add patch to tighten DT binding constraints after feedback in:
https://lore.kernel.org/linux-devicetree/[email protected]/
- Add actual baud rates and example FW load time in commit message:
https://lore.kernel.org/linux-devicetree/[email protected]/

Hakan Jansson (5):
dt-bindings: net: broadcom-bluetooth: Add CYW55572 DT binding
dt-bindings: net: broadcom-bluetooth: Add conditional constraints
Bluetooth: hci_bcm: Add DT compatible for CYW55572
Bluetooth: hci_bcm: Prevent early baudrate setting in autobaud mode
Bluetooth: hci_bcm: Increase host baudrate for CYW55572 in autobaud
mode

.../bindings/net/broadcom-bluetooth.yaml | 17 +++++++++++++
drivers/bluetooth/hci_bcm.c | 24 +++++++++++++------
2 files changed, 34 insertions(+), 7 deletions(-)


base-commit: 681ec6abcd7f051f7fc318068a3ac09772ebef7e
--
2.25.1


2022-06-30 12:50:24

by Hakan Jansson

[permalink] [raw]
Subject: [PATCH v2 2/5] dt-bindings: net: broadcom-bluetooth: Add conditional constraints

Add conditional constraint to make property "reset-gpios" available only
for compatible devices acually having the reset pin.

Make property "brcm,requires-autobaud-mode" depend on property
"shutdown-gpios" as the shutdown pin is required to enter autobaud mode.

I looked at all compatible devices and compiled the matrix below before
formulating the conditional constraint. This was a pure paper exercise and
no verification testing has been performed.

d
e
v h
i o
c s
s e t
h - -
u w w v
t r a a v d
d e k k b d
o s e e a i
w e u u t o
n t p p - -
- - - - s s
g g g g u u
p p p p t p p
i i i i x l p p
o o o o c p l l
s s s s o o y y
---------------------------------------
brcm,bcm20702a1 X X X X X X X X
brcm,bcm4329-bt X X X X X X X X
brcm,bcm4330-bt X X X X X X X X
brcm,bcm4334-bt X - X X X X X X
brcm,bcm43438-bt X - X X X X X X
brcm,bcm4345c5 X - X X X X X X
brcm,bcm43540-bt X - X X X X X X
brcm,bcm4335a0 X - X X X X X X
brcm,bcm4349-bt X - X X X X X X
infineon,cyw55572-bt X - X X X X X X

Signed-off-by: Hakan Jansson <[email protected]>
---
V1 -> V2:
- New patch added to series

.../bindings/net/broadcom-bluetooth.yaml | 16 ++++++++++++++++
1 file changed, 16 insertions(+)

diff --git a/Documentation/devicetree/bindings/net/broadcom-bluetooth.yaml b/Documentation/devicetree/bindings/net/broadcom-bluetooth.yaml
index 71fe9b17f8f1..445b2a553625 100644
--- a/Documentation/devicetree/bindings/net/broadcom-bluetooth.yaml
+++ b/Documentation/devicetree/bindings/net/broadcom-bluetooth.yaml
@@ -117,6 +117,22 @@ properties:
required:
- compatible

+dependencies:
+ brcm,requires-autobaud-mode: [ 'shutdown-gpios' ]
+
+if:
+ not:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - brcm,bcm20702a1
+ - brcm,bcm4329-bt
+ - brcm,bcm4330-bt
+then:
+ properties:
+ reset-gpios: false
+
additionalProperties: false

examples:
--
2.25.1

2022-06-30 12:50:26

by Hakan Jansson

[permalink] [raw]
Subject: [PATCH v2 3/5] Bluetooth: hci_bcm: Add DT compatible for CYW55572

CYW55572 is a Wi-Fi + Bluetooth combo device from Infineon.

Signed-off-by: Hakan Jansson <[email protected]>
---
V1 -> V2:
- No changes, submitted as part of updated patch series

drivers/bluetooth/hci_bcm.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/bluetooth/hci_bcm.c b/drivers/bluetooth/hci_bcm.c
index 6f834ff1b44b..9a129867a4c0 100644
--- a/drivers/bluetooth/hci_bcm.c
+++ b/drivers/bluetooth/hci_bcm.c
@@ -1557,6 +1557,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 = "infineon,cyw55572-bt" },
{ },
};
MODULE_DEVICE_TABLE(of, bcm_bluetooth_of_match);
--
2.25.1

2022-06-30 12:51:09

by Hakan Jansson

[permalink] [raw]
Subject: [PATCH v2 4/5] Bluetooth: hci_bcm: Prevent early baudrate setting in autobaud mode

Always prevent trying to set device baudrate before calling setup() when
using autobaud mode.

This was previously happening for devices which had device specific data
with member no_early_set_baudrate set to 0.

Signed-off-by: Hakan Jansson <[email protected]>
Reviewed-by: Linus Walleij <[email protected]>
---
V1 -> V2:
- No changes, submitted as part of updated patch series

drivers/bluetooth/hci_bcm.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/drivers/bluetooth/hci_bcm.c b/drivers/bluetooth/hci_bcm.c
index 9a129867a4c0..0ae627c293c5 100644
--- a/drivers/bluetooth/hci_bcm.c
+++ b/drivers/bluetooth/hci_bcm.c
@@ -484,7 +484,7 @@ static int bcm_open(struct hci_uart *hu)
/* If oper_speed is set, ldisc/serdev will set the baudrate
* before calling setup()
*/
- if (!bcm->dev->no_early_set_baudrate)
+ if (!bcm->dev->no_early_set_baudrate && !bcm->dev->use_autobaud_mode)
hu->oper_speed = bcm->dev->oper_speed;

err = bcm_gpio_set_power(bcm->dev, true);
@@ -1204,9 +1204,6 @@ static int bcm_of_probe(struct bcm_device *bdev)
{
bdev->use_autobaud_mode = device_property_read_bool(bdev->dev,
"brcm,requires-autobaud-mode");
- if (bdev->use_autobaud_mode)
- bdev->no_early_set_baudrate = true;
-
device_property_read_u32(bdev->dev, "max-speed", &bdev->oper_speed);
device_property_read_u8_array(bdev->dev, "brcm,bt-pcm-int-params",
bdev->pcm_int_params, 5);
--
2.25.1

2022-07-01 20:16:05

by Rob Herring

[permalink] [raw]
Subject: Re: [PATCH v2 2/5] dt-bindings: net: broadcom-bluetooth: Add conditional constraints

On Thu, 30 Jun 2022 14:45:21 +0200, Hakan Jansson wrote:
> Add conditional constraint to make property "reset-gpios" available only
> for compatible devices acually having the reset pin.
>
> Make property "brcm,requires-autobaud-mode" depend on property
> "shutdown-gpios" as the shutdown pin is required to enter autobaud mode.
>
> I looked at all compatible devices and compiled the matrix below before
> formulating the conditional constraint. This was a pure paper exercise and
> no verification testing has been performed.
>
> d
> e
> v h
> i o
> c s
> s e t
> h - -
> u w w v
> t r a a v d
> d e k k b d
> o s e e a i
> w e u u t o
> n t p p - -
> - - - - s s
> g g g g u u
> p p p p t p p
> i i i i x l p p
> o o o o c p l l
> s s s s o o y y
> ---------------------------------------
> brcm,bcm20702a1 X X X X X X X X
> brcm,bcm4329-bt X X X X X X X X
> brcm,bcm4330-bt X X X X X X X X
> brcm,bcm4334-bt X - X X X X X X
> brcm,bcm43438-bt X - X X X X X X
> brcm,bcm4345c5 X - X X X X X X
> brcm,bcm43540-bt X - X X X X X X
> brcm,bcm4335a0 X - X X X X X X
> brcm,bcm4349-bt X - X X X X X X
> infineon,cyw55572-bt X - X X X X X X
>
> Signed-off-by: Hakan Jansson <[email protected]>
> ---
> V1 -> V2:
> - New patch added to series
>
> .../bindings/net/broadcom-bluetooth.yaml | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>

Reviewed-by: Rob Herring <[email protected]>

2022-07-11 08:41:09

by Linus Walleij

[permalink] [raw]
Subject: Re: [PATCH v2 2/5] dt-bindings: net: broadcom-bluetooth: Add conditional constraints

On Thu, Jun 30, 2022 at 2:46 PM Hakan Jansson
<[email protected]> wrote:

> Add conditional constraint to make property "reset-gpios" available only
> for compatible devices acually having the reset pin.
>
> Make property "brcm,requires-autobaud-mode" depend on property
> "shutdown-gpios" as the shutdown pin is required to enter autobaud mode.
>
> I looked at all compatible devices and compiled the matrix below before
> formulating the conditional constraint. This was a pure paper exercise and
> no verification testing has been performed.
>
> d
> e
> v h
> i o
> c s
> s e t
> h - -
> u w w v
> t r a a v d
> d e k k b d
> o s e e a i
> w e u u t o
> n t p p - -
> - - - - s s
> g g g g u u
> p p p p t p p
> i i i i x l p p
> o o o o c p l l
> s s s s o o y y
> ---------------------------------------
> brcm,bcm20702a1 X X X X X X X X
> brcm,bcm4329-bt X X X X X X X X
> brcm,bcm4330-bt X X X X X X X X
> brcm,bcm4334-bt X - X X X X X X
> brcm,bcm43438-bt X - X X X X X X
> brcm,bcm4345c5 X - X X X X X X
> brcm,bcm43540-bt X - X X X X X X
> brcm,bcm4335a0 X - X X X X X X
> brcm,bcm4349-bt X - X X X X X X
> infineon,cyw55572-bt X - X X X X X X
>
> Signed-off-by: Hakan Jansson <[email protected]>

A job well done!
Reviewed-by: Linus Walleij <[email protected]>

Yours,
Linus Walleij

2022-07-11 08:43:12

by Linus Walleij

[permalink] [raw]
Subject: Re: [PATCH v2 3/5] Bluetooth: hci_bcm: Add DT compatible for CYW55572

On Thu, Jun 30, 2022 at 2:46 PM Hakan Jansson
<[email protected]> wrote:

> CYW55572 is a Wi-Fi + Bluetooth combo device from Infineon.
>
> Signed-off-by: Hakan Jansson <[email protected]>

Reviewed-by: Linus Walleij <[email protected]>

Yours,
Linus Walleij

2022-07-20 16:25:02

by patchwork-bot+bluetooth

[permalink] [raw]
Subject: Re: [PATCH v2 0/5] Bluetooth: hci_bcm: Improve FW load time on CYW55572

Hello:

This series was applied to bluetooth/bluetooth-next.git (master)
by Luiz Augusto von Dentz <[email protected]>:

On Thu, 30 Jun 2022 14:45:19 +0200 you wrote:
> These patches add an optional device specific data member to specify max
> baudrate of a device when in autobaud mode. This allows the host to set a
> first baudrate higher than "init speed" to improve FW load time.
>
> The host baudrate will later be changed to "init speed" (as usual) once FW
> loading is complete and the device has been reset to begin normal
> operation.
>
> [...]

Here is the summary with links:
- [v2,1/5] dt-bindings: net: broadcom-bluetooth: Add CYW55572 DT binding
https://git.kernel.org/bluetooth/bluetooth-next/c/c6480829cda7
- [v2,2/5] dt-bindings: net: broadcom-bluetooth: Add conditional constraints
https://git.kernel.org/bluetooth/bluetooth-next/c/f5d25901c5cc
- [v2,3/5] Bluetooth: hci_bcm: Add DT compatible for CYW55572
https://git.kernel.org/bluetooth/bluetooth-next/c/7386459d24b3
- [v2,4/5] Bluetooth: hci_bcm: Prevent early baudrate setting in autobaud mode
https://git.kernel.org/bluetooth/bluetooth-next/c/31e65c6d44a2
- [v2,5/5] Bluetooth: hci_bcm: Increase host baudrate for CYW55572 in autobaud mode
https://git.kernel.org/bluetooth/bluetooth-next/c/719a11a62d19

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html