1251881Speter# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2251881Speter%YAML 1.2
3251881Speter---
4251881Speter$id: http://devicetree.org/schemas/net/broadcom-bluetooth.yaml#
5251881Speter$schema: http://devicetree.org/meta-schemas/core.yaml#
6251881Speter
7251881Spetertitle: Broadcom Bluetooth Chips
8251881Speter
9251881Spetermaintainers:
10251881Speter  - Linus Walleij <linus.walleij@linaro.org>
11251881Speter
12251881Speterdescription:
13251881Speter  This binding describes Broadcom UART-attached bluetooth chips.
14251881Speter
15251881Speterproperties:
16251881Speter  compatible:
17251881Speter    oneOf:
18251881Speter      - items:
19251881Speter          - enum:
20251881Speter              - infineon,cyw43439-bt
21251881Speter          - const: brcm,bcm4329-bt
22251881Speter      - enum:
23251881Speter          - brcm,bcm20702a1
24251881Speter          - brcm,bcm4329-bt
25251881Speter          - brcm,bcm4330-bt
26251881Speter          - brcm,bcm4334-bt
27251881Speter          - brcm,bcm43430a0-bt
28251881Speter          - brcm,bcm43430a1-bt
29251881Speter          - brcm,bcm43438-bt
30251881Speter          - brcm,bcm4345c5
31251881Speter          - brcm,bcm43540-bt
32251881Speter          - brcm,bcm4335a0
33251881Speter          - brcm,bcm4349-bt
34251881Speter          - cypress,cyw4373a0-bt
35251881Speter          - infineon,cyw55572-bt
36251881Speter
37251881Speter  shutdown-gpios:
38251881Speter    maxItems: 1
39251881Speter    description: GPIO specifier for the line BT_REG_ON used to
40251881Speter      power on the BT module
41251881Speter
42251881Speter  reset-gpios:
43251881Speter    maxItems: 1
44251881Speter    description: GPIO specifier for the line BT_RST_N used to
45251881Speter      reset the BT module. This should be marked as
46251881Speter      GPIO_ACTIVE_LOW.
47251881Speter
48251881Speter  device-wakeup-gpios:
49251881Speter    maxItems: 1
50251881Speter    description: GPIO specifier for the line BT_WAKE used to
51251881Speter      wakeup the controller. This is using the BT_GPIO_0
52251881Speter      pin on the chip when in use.
53251881Speter
54251881Speter  host-wakeup-gpios:
55251881Speter    maxItems: 1
56251881Speter    deprecated: true
57251881Speter    description: GPIO specifier for the line HOST_WAKE used
58251881Speter      to wakeup the host processor. This is using he BT_GPIO_1
59251881Speter      pin on the chip when in use. This is deprecated and replaced
60251881Speter      by interrupts and "host-wakeup" interrupt-names
61251881Speter
62  clocks:
63    minItems: 1
64    maxItems: 2
65    description: 1 or 2 clocks as defined in clock-names below,
66      in that order
67
68  clock-names:
69    description: Names of the 1 to 2 supplied clocks
70    oneOf:
71      - const: extclk
72        deprecated: true
73        description: Deprecated in favor of txco
74
75      - const: txco
76        description: >
77          external reference clock (not a standalone crystal)
78
79      - const: lpo
80        description: >
81          external low power 32.768 kHz clock
82
83      - items:
84          - const: txco
85          - const: lpo
86
87  vbat-supply:
88    description: phandle to regulator supply for VBAT
89
90  vddio-supply:
91    description: phandle to regulator supply for VDDIO
92
93  brcm,bt-pcm-int-params:
94    $ref: /schemas/types.yaml#/definitions/uint8-array
95    minItems: 5
96    maxItems: 5
97    description: |-
98      configure PCM parameters via a 5-byte array:
99       sco-routing: 0 = PCM, 1 = Transport, 2 = Codec, 3 = I2S
100       pcm-interface-rate: 128KBps, 256KBps, 512KBps, 1024KBps, 2048KBps
101       pcm-frame-type: short, long
102       pcm-sync-mode: slave, master
103       pcm-clock-mode: slave, master
104
105  brcm,requires-autobaud-mode:
106    type: boolean
107    description:
108      Set this property if autobaud mode is required. Autobaud mode is required
109      if the device's initial baud rate in normal mode is not supported by the
110      host or if the device requires autobaud mode startup before loading FW.
111
112  interrupts:
113    items:
114      - description: Handle to the line HOST_WAKE used to wake
115          up the host processor. This uses the BT_GPIO_1 pin on
116          the chip when in use.
117
118  interrupt-names:
119    items:
120      - const: host-wakeup
121
122  max-speed: true
123  current-speed: true
124
125required:
126  - compatible
127
128dependencies:
129  brcm,requires-autobaud-mode: [ shutdown-gpios ]
130
131if:
132  not:
133    properties:
134      compatible:
135        contains:
136          enum:
137            - brcm,bcm20702a1
138            - brcm,bcm4329-bt
139            - brcm,bcm4330-bt
140then:
141  properties:
142    reset-gpios: false
143
144additionalProperties: false
145
146examples:
147  - |
148    #include <dt-bindings/gpio/gpio.h>
149    #include <dt-bindings/interrupt-controller/irq.h>
150
151    uart {
152        uart-has-rtscts;
153
154        bluetooth {
155            compatible = "brcm,bcm4330-bt";
156            max-speed = <921600>;
157            brcm,bt-pcm-int-params = [01 02 00 01 01];
158            shutdown-gpios = <&gpio 30 GPIO_ACTIVE_HIGH>;
159            device-wakeup-gpios = <&gpio 7 GPIO_ACTIVE_HIGH>;
160            reset-gpios = <&gpio 9 GPIO_ACTIVE_LOW>;
161            interrupt-parent = <&gpio>;
162            interrupts = <8 IRQ_TYPE_EDGE_FALLING>;
163        };
164    };
165