mbox series

[v2,00/15] ARM: sunxi: Enable Broadcom-based Bluetooth controllers

Message ID 20181115093603.26729-1-wens@csie.org (mailing list archive)
Headers show
Series ARM: sunxi: Enable Broadcom-based Bluetooth controllers | expand

Message

Chen-Yu Tsai Nov. 15, 2018, 9:35 a.m. UTC
Hi everyone,

This is v2 of my Broadcom-based Bluetooth controllers on Allwinner SoC-
based SBCs series.

Changes since v1:

  - Collected tags
  - Re-organize dt binding clocks and clock-names properties
  - Simplify check for deferred probe when getting clocks
  - Add explanation of Cubietruck's clk_out_a pinmux setting placement
    to commit message.
  - Add missing "uart-has-rtscts" property to Cubietruck device tree

Original cover letter follows.


On many Allwinner SBCs / developer boards, there is a WiFi+BT combo
module from AMPAK. Inside is either one or two Broadcom chips, depending
on the model. This series enables the Bluetooth controllers for AMPAK
AP6210, AP6212, and AP6330 found on several boards. More will come later
as other SoCs require changes to some other parts. I did not cover the
SCO PCM connections from the controller to the SoC's I2S interface. It
seems no one is actually doing this, so I was not sure how to proceed.
Any suggestions?

I deliberately left out the netdev mailing list and Dave Miller, as the
only thing that is under net is the binding document. Maybe we should
move that out of Documentation/devicetree/bindings/net/ ?

Also, I'm not subscribed to the linux-bluetooth ML, so please CC me for
any discussions.

Patches 1 through 4 are device tree binding changes:

1 - Make the external clock name unambiguous, and add a second entry for
    the LPO clock.

2 - Add regulator supply properties for the VBAT and VDDIO power pins.

3 - Add a compatible string for BCM20702A1.

4 - Add a compatible string for BCM4330.

Patches 5 through 13 are changes to the driver, either improvements,
or updates to handle the updated device tree binding.

5 - Make the driver handle deferred probing for the external clock.

6 - Simplify clock error checking for subsequent clk API calls.

7 - Handle clock-names for the main external clock.

8 - Support a new external clock, the LPO.

9 - Support regulator supplies.

10 - Wait a small amount of time after toggling the GPIO for the device
     to settle.

11 - Add support for BCM20702A1, including its default address.

12 - Add BCM4330 compatible string to the driver.

13 - Handle default address for BCM43430A0.

14 - Enable Broadcom-based serdev Bluetooth for multiple Allwinner ARMv7
     boards.

15 - Enable Broadcom-based serdev Bluetooth for the Bananapi M64.

checkpatch reports an error for both patch 11 and patch 13:

    ERROR: space required after that close brace '}'

I followed the existing code's style. If this is undesirable, I can send
a follow-up patch fixing the entire code block.

The first 13 patches should go through the Bluetooth tree, while we, the
sunxi maintainers, will take the last 2.


Thanks
ChenYu

Chen-Yu Tsai (14):
  dt-bindings: net: broadcom-bluetooth: Fix external clock names
  dt-bindings: net: broadcom-bluetooth: Add VBAT and VDDIO supplies
  dt-bindings: net: broadcom-bluetooth: Add BCM20702A1 compatible string
  dt-bindings: net: broadcom-bluetooth: Add BCM4330 compatible string
  Bluetooth: hci_bcm: Handle deferred probing for the clock supply
  Bluetooth: hci_bcm: Simplify clk_get error handling
  Bluetooth: hci_bcm: Use "txco" and "extclk" to get clock reference
  Bluetooth: hci_bcm: Add support for LPO clock
  Bluetooth: hci_bcm: Add support for regulator supplies
  Bluetooth: hci_bcm: Wait for device to come out of reset after power
    on
  Bluetooth: hci_bcm: Add compatible string for BCM4330
  Bluetooth: btbcm: Add default address for BCM43430A0
  ARM: dts: sunxi: Enable Broadcom-based Bluetooth for multiple boards
  arm64: dts: allwinner: a64: bananapi-m64: Add Bluetooth device node

Maxime Ripard (1):
  Bluetooth: hci_bcm: Add BCM20702A1 variant

 .../bindings/net/broadcom-bluetooth.txt       |  11 +-
 arch/arm/boot/dts/sun7i-a20-cubietruck.dts    |  23 ++++
 arch/arm/boot/dts/sun8i-a83t-bananapi-m3.dts  |  18 +++
 .../boot/dts/sun8i-a83t-cubietruck-plus.dts   |  18 +++
 arch/arm/boot/dts/sun8i-r16-bananapi-m2m.dts  |  14 +++
 .../dts/allwinner/sun50i-a64-bananapi-m64.dts |  14 +++
 drivers/bluetooth/btbcm.c                     |  13 +-
 drivers/bluetooth/hci_bcm.c                   | 112 +++++++++++++++---
 8 files changed, 206 insertions(+), 17 deletions(-)

Comments

Chen-Yu Tsai Nov. 28, 2018, 4:25 a.m. UTC | #1
Hi,

On Thu, Nov 15, 2018 at 5:36 PM Chen-Yu Tsai <wens@csie.org> wrote:
>
> Hi everyone,
>
> This is v2 of my Broadcom-based Bluetooth controllers on Allwinner SoC-
> based SBCs series.
>
> Changes since v1:
>
>   - Collected tags
>   - Re-organize dt binding clocks and clock-names properties
>   - Simplify check for deferred probe when getting clocks
>   - Add explanation of Cubietruck's clk_out_a pinmux setting placement
>     to commit message.
>   - Add missing "uart-has-rtscts" property to Cubietruck device tree
>
> Original cover letter follows.
>
>
> On many Allwinner SBCs / developer boards, there is a WiFi+BT combo
> module from AMPAK. Inside is either one or two Broadcom chips, depending
> on the model. This series enables the Bluetooth controllers for AMPAK
> AP6210, AP6212, and AP6330 found on several boards. More will come later
> as other SoCs require changes to some other parts. I did not cover the
> SCO PCM connections from the controller to the SoC's I2S interface. It
> seems no one is actually doing this, so I was not sure how to proceed.
> Any suggestions?
>
> I deliberately left out the netdev mailing list and Dave Miller, as the
> only thing that is under net is the binding document. Maybe we should
> move that out of Documentation/devicetree/bindings/net/ ?
>
> Also, I'm not subscribed to the linux-bluetooth ML, so please CC me for
> any discussions.
>
> Patches 1 through 4 are device tree binding changes:
>
> 1 - Make the external clock name unambiguous, and add a second entry for
>     the LPO clock.
>
> 2 - Add regulator supply properties for the VBAT and VDDIO power pins.
>
> 3 - Add a compatible string for BCM20702A1.
>
> 4 - Add a compatible string for BCM4330.
>
> Patches 5 through 13 are changes to the driver, either improvements,
> or updates to handle the updated device tree binding.
>
> 5 - Make the driver handle deferred probing for the external clock.
>
> 6 - Simplify clock error checking for subsequent clk API calls.
>
> 7 - Handle clock-names for the main external clock.
>
> 8 - Support a new external clock, the LPO.
>
> 9 - Support regulator supplies.
>
> 10 - Wait a small amount of time after toggling the GPIO for the device
>      to settle.
>
> 11 - Add support for BCM20702A1, including its default address.
>
> 12 - Add BCM4330 compatible string to the driver.
>
> 13 - Handle default address for BCM43430A0.
>
> 14 - Enable Broadcom-based serdev Bluetooth for multiple Allwinner ARMv7
>      boards.
>
> 15 - Enable Broadcom-based serdev Bluetooth for the Bananapi M64.
>
> checkpatch reports an error for both patch 11 and patch 13:
>
>     ERROR: space required after that close brace '}'
>
> I followed the existing code's style. If this is undesirable, I can send
> a follow-up patch fixing the entire code block.
>
> The first 13 patches should go through the Bluetooth tree, while we, the
> sunxi maintainers, will take the last 2.

It's been close to two weeks. Any comments or concerns from the Bluetooth
maintainers? I'd like to see this in 4.22 if possible.

Thanks
ChenYu

> Thanks
> ChenYu
>
> Chen-Yu Tsai (14):
>   dt-bindings: net: broadcom-bluetooth: Fix external clock names
>   dt-bindings: net: broadcom-bluetooth: Add VBAT and VDDIO supplies
>   dt-bindings: net: broadcom-bluetooth: Add BCM20702A1 compatible string
>   dt-bindings: net: broadcom-bluetooth: Add BCM4330 compatible string
>   Bluetooth: hci_bcm: Handle deferred probing for the clock supply
>   Bluetooth: hci_bcm: Simplify clk_get error handling
>   Bluetooth: hci_bcm: Use "txco" and "extclk" to get clock reference
>   Bluetooth: hci_bcm: Add support for LPO clock
>   Bluetooth: hci_bcm: Add support for regulator supplies
>   Bluetooth: hci_bcm: Wait for device to come out of reset after power
>     on
>   Bluetooth: hci_bcm: Add compatible string for BCM4330
>   Bluetooth: btbcm: Add default address for BCM43430A0
>   ARM: dts: sunxi: Enable Broadcom-based Bluetooth for multiple boards
>   arm64: dts: allwinner: a64: bananapi-m64: Add Bluetooth device node
>
> Maxime Ripard (1):
>   Bluetooth: hci_bcm: Add BCM20702A1 variant
>
>  .../bindings/net/broadcom-bluetooth.txt       |  11 +-
>  arch/arm/boot/dts/sun7i-a20-cubietruck.dts    |  23 ++++
>  arch/arm/boot/dts/sun8i-a83t-bananapi-m3.dts  |  18 +++
>  .../boot/dts/sun8i-a83t-cubietruck-plus.dts   |  18 +++
>  arch/arm/boot/dts/sun8i-r16-bananapi-m2m.dts  |  14 +++
>  .../dts/allwinner/sun50i-a64-bananapi-m64.dts |  14 +++
>  drivers/bluetooth/btbcm.c                     |  13 +-
>  drivers/bluetooth/hci_bcm.c                   | 112 +++++++++++++++---
>  8 files changed, 206 insertions(+), 17 deletions(-)
>
> --
> 2.19.1
>
Chen-Yu Tsai Dec. 3, 2018, 3:51 p.m. UTC | #2
On Wed, Nov 28, 2018 at 12:25 PM Chen-Yu Tsai <wens@csie.org> wrote:
>
> Hi,
>
> On Thu, Nov 15, 2018 at 5:36 PM Chen-Yu Tsai <wens@csie.org> wrote:
> >
> > Hi everyone,
> >
> > This is v2 of my Broadcom-based Bluetooth controllers on Allwinner SoC-
> > based SBCs series.
> >
> > Changes since v1:
> >
> >   - Collected tags
> >   - Re-organize dt binding clocks and clock-names properties
> >   - Simplify check for deferred probe when getting clocks
> >   - Add explanation of Cubietruck's clk_out_a pinmux setting placement
> >     to commit message.
> >   - Add missing "uart-has-rtscts" property to Cubietruck device tree
> >
> > Original cover letter follows.
> >
> >
> > On many Allwinner SBCs / developer boards, there is a WiFi+BT combo
> > module from AMPAK. Inside is either one or two Broadcom chips, depending
> > on the model. This series enables the Bluetooth controllers for AMPAK
> > AP6210, AP6212, and AP6330 found on several boards. More will come later
> > as other SoCs require changes to some other parts. I did not cover the
> > SCO PCM connections from the controller to the SoC's I2S interface. It
> > seems no one is actually doing this, so I was not sure how to proceed.
> > Any suggestions?
> >
> > I deliberately left out the netdev mailing list and Dave Miller, as the
> > only thing that is under net is the binding document. Maybe we should
> > move that out of Documentation/devicetree/bindings/net/ ?
> >
> > Also, I'm not subscribed to the linux-bluetooth ML, so please CC me for
> > any discussions.
> >
> > Patches 1 through 4 are device tree binding changes:
> >
> > 1 - Make the external clock name unambiguous, and add a second entry for
> >     the LPO clock.
> >
> > 2 - Add regulator supply properties for the VBAT and VDDIO power pins.
> >
> > 3 - Add a compatible string for BCM20702A1.
> >
> > 4 - Add a compatible string for BCM4330.
> >
> > Patches 5 through 13 are changes to the driver, either improvements,
> > or updates to handle the updated device tree binding.
> >
> > 5 - Make the driver handle deferred probing for the external clock.
> >
> > 6 - Simplify clock error checking for subsequent clk API calls.
> >
> > 7 - Handle clock-names for the main external clock.
> >
> > 8 - Support a new external clock, the LPO.
> >
> > 9 - Support regulator supplies.
> >
> > 10 - Wait a small amount of time after toggling the GPIO for the device
> >      to settle.
> >
> > 11 - Add support for BCM20702A1, including its default address.
> >
> > 12 - Add BCM4330 compatible string to the driver.
> >
> > 13 - Handle default address for BCM43430A0.
> >
> > 14 - Enable Broadcom-based serdev Bluetooth for multiple Allwinner ARMv7
> >      boards.
> >
> > 15 - Enable Broadcom-based serdev Bluetooth for the Bananapi M64.
> >
> > checkpatch reports an error for both patch 11 and patch 13:
> >
> >     ERROR: space required after that close brace '}'
> >
> > I followed the existing code's style. If this is undesirable, I can send
> > a follow-up patch fixing the entire code block.
> >
> > The first 13 patches should go through the Bluetooth tree, while we, the
> > sunxi maintainers, will take the last 2.
>
> It's been close to two weeks. Any comments or concerns from the Bluetooth
> maintainers? I'd like to see this in 4.22 if possible.

Ugh, I meant 4.21.

ChenYu
Ondřej Jirman Dec. 14, 2018, 12:42 p.m. UTC | #3
On Thu, Nov 15, 2018 at 05:35:48PM +0800, Chen-Yu Tsai wrote:
> Hi everyone,
> 
> This is v2 of my Broadcom-based Bluetooth controllers on Allwinner SoC-
> based SBCs series.
> 
> Changes since v1:
> 
>   - Collected tags
>   - Re-organize dt binding clocks and clock-names properties
>   - Simplify check for deferred probe when getting clocks
>   - Add explanation of Cubietruck's clk_out_a pinmux setting placement
>     to commit message.
>   - Add missing "uart-has-rtscts" property to Cubietruck device tree
>
> [snip]

Hello,

I've tested your patch series on TBS A711 / BCM20702A1 with the following DTS:


 /* There's the BT part of the AP6210 connected to that UART */
 &uart1 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
+	uart-has-rtscts;
 	status = "okay";
+
+	bluetooth {
+		compatible = "brcm,bcm20702a1";
+		clocks = <&ac100_rtc 1>;
+		clock-names = "lpo";
+		vbat-supply = <&reg_vbat>;
+		vddio-supply = <&reg_dldo1>;
+		device-wakeup-gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
+		host-wakeup-gpios = <&r_pio 0 5 GPIO_ACTIVE_HIGH>; /* PL5 */
+		shutdown-gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
+		max-speed = <1500000>;
+	};
 };


And it works. :)

Tested-by: Ondrej Jirman <megous@megous.com>


Thank you and regards,
  o.