# 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,bcm4334-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:
    minItems: 1
    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
    oneOf:
      - const: extclk
        deprecated: true
        description: Deprecated in favor of txco

      - const: txco
        description: >
          external reference clock (not a standalone crystal)

      - const: lpo
        description: >
          external low power 32.768 kHz clock

      - items:
          - const: txco
          - const: lpo

  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>;
        };
    };