Commit 7820ee1c authored by Linus Walleij's avatar Linus Walleij Committed by Marcel Holtmann
Browse files

Bluetooth: btbcm: Rewrite bindings in YAML and add reset



This rewrites the Broadcom bluetooth bindings in YAML and
adds a GPIO handle for the BT_RST_N line as used on some
platforms.

The Ingenic UART binding was using this binding in its
example DTS fragment, however mistakenly using "vcc-supply"
for what is called "vbat-supply". The proper DTS files
and the code in the kernel all use "vbat-supply" so
fix up the example in this patch so we ge a clean
check.

Cc: devicetree@vger.kernel.org
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent ff02db13
Loading
Loading
Loading
Loading
+0 −56
Original line number Diff line number Diff line
Broadcom Bluetooth Chips
---------------------

This documents the binding structure and common properties for serial
attached Broadcom devices.

Serial attached Broadcom devices shall be a child node of the host UART
device the slave device is attached to.

Required properties:

 - compatible: should contain one of the following:
   * "brcm,bcm20702a1"
   * "brcm,bcm4329-bt"
   * "brcm,bcm4330-bt"
   * "brcm,bcm43438-bt"
   * "brcm,bcm4345c5"
   * "brcm,bcm43540-bt"
   * "brcm,bcm4335a0"

Optional properties:

 - max-speed: see Documentation/devicetree/bindings/serial/serial.yaml
 - shutdown-gpios: GPIO specifier, used to enable the BT module
 - device-wakeup-gpios: GPIO specifier, used to wakeup the controller
 - host-wakeup-gpios: GPIO specifier, used to wakeup the host processor.
                      deprecated, replaced by interrupts and
                      "host-wakeup" interrupt-names
 - clocks: 1 or 2 clocks as defined in clock-names below, in that order
 - clock-names: names for clock inputs, matching the clocks given
   - "extclk": deprecated, replaced by "txco"
   - "txco": external reference clock (not a standalone crystal)
   - "lpo": external low power 32.768 kHz clock
 - vbat-supply: phandle to regulator supply for VBAT
 - vddio-supply: phandle to regulator supply for VDDIO
 - brcm,bt-pcm-int-params: configure PCM parameters via a 5-byte array
    - sco-routing: 0 = PCM, 1 = Transport, 2 = Codec, 3 = I2S
    - pcm-interface-rate: 128KBps, 256KBps, 512KBps, 1024KBps, 2048KBps
    - pcm-frame-type: short, long
    - pcm-sync-mode: slave, master
    - pcm-clock-mode: slave, master
 - interrupts: must be one, used to wakeup the host processor
 - interrupt-names: must be "host-wakeup"

Example:

&uart2 {
       pinctrl-names = "default";
       pinctrl-0 = <&uart2_pins>;

       bluetooth {
               compatible = "brcm,bcm43438-bt";
               max-speed = <921600>;
               brcm,bt-pcm-int-params = [01 02 00 01 01];
       };
};
+117 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/broadcom-bluetooth.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Broadcom Bluetooth Chips

maintainers:
  - Linus Walleij <linus.walleij@linaro.org>

description:
  This binding describes Broadcom UART-attached bluetooth chips.

properties:
  compatible:
    enum:
      - brcm,bcm20702a1
      - brcm,bcm4329-bt
      - brcm,bcm4330-bt
      - brcm,bcm43438-bt
      - brcm,bcm4345c5
      - brcm,bcm43540-bt
      - brcm,bcm4335a0

  shutdown-gpios:
    maxItems: 1
    description: GPIO specifier for the line BT_REG_ON used to
      power on the BT module

  reset-gpios:
    maxItems: 1
    description: GPIO specifier for the line BT_RST_N used to
      reset the BT module. This should be marked as
      GPIO_ACTIVE_LOW.

  device-wakeup-gpios:
    maxItems: 1
    description: GPIO specifier for the line BT_WAKE used to
      wakeup the controller. This is using the BT_GPIO_0
      pin on the chip when in use.

  host-wakeup-gpios:
    maxItems: 1
    deprecated: true
    description: GPIO specifier for the line HOST_WAKE used
      to wakeup the host processor. This is using he BT_GPIO_1
      pin on the chip when in use. This is deprecated and replaced
      by interrupts and "host-wakeup" interrupt-names

  clocks:
    maxItems: 2
    description: 1 or 2 clocks as defined in clock-names below,
      in that order

  clock-names:
    description: Names of the 1 to 2 supplied clocks
    items:
      - const: txco
      - const: lpo
      - const: extclk

  vbat-supply:
    description: phandle to regulator supply for VBAT

  vddio-supply:
    description: phandle to regulator supply for VDDIO

  brcm,bt-pcm-int-params:
    $ref: /schemas/types.yaml#/definitions/uint8-array
    minItems: 5
    maxItems: 5
    description: |-
      configure PCM parameters via a 5-byte array:
       sco-routing: 0 = PCM, 1 = Transport, 2 = Codec, 3 = I2S
       pcm-interface-rate: 128KBps, 256KBps, 512KBps, 1024KBps, 2048KBps
       pcm-frame-type: short, long
       pcm-sync-mode: slave, master
       pcm-clock-mode: slave, master

  interrupts:
    items:
      - description: Handle to the line HOST_WAKE used to wake
          up the host processor. This uses the BT_GPIO_1 pin on
          the chip when in use.

  interrupt-names:
    items:
      - const: host-wakeup

  max-speed: true
  current-speed: true

required:
  - compatible

additionalProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>

    uart {
        uart-has-rtscts;

        bluetooth {
            compatible = "brcm,bcm4330-bt";
            max-speed = <921600>;
            brcm,bt-pcm-int-params = [01 02 00 01 01];
            shutdown-gpios = <&gpio 30 GPIO_ACTIVE_HIGH>;
            device-wakeup-gpios = <&gpio 7 GPIO_ACTIVE_HIGH>;
            reset-gpios = <&gpio 9 GPIO_ACTIVE_LOW>;
            interrupt-parent = <&gpio>;
            interrupts = <8 IRQ_TYPE_EDGE_FALLING>;
        };
    };
+1 −1
Original line number Diff line number Diff line
@@ -91,7 +91,7 @@ examples:
      bluetooth {
        compatible = "brcm,bcm4330-bt";
        reset-gpios = <&gpf 8 GPIO_ACTIVE_HIGH>;
        vcc-supply = <&wlan0_power>;
        vbat-supply = <&wlan0_power>;
        device-wakeup-gpios = <&gpf 5 GPIO_ACTIVE_HIGH>;
        host-wakeup-gpios = <&gpf 6 GPIO_ACTIVE_HIGH>;
        shutdown-gpios = <&gpf 4 GPIO_ACTIVE_LOW>;