Reset BT via BT_KILL_1V2_L hardware pin. On the M.2 standard hardware pin interface, the MTK chip has a pin called BT_KILL_1V2_L or W_DISABLE#2, it uses function-level device reset (FLDR) to reset Bluetooth. When it is pulled low, it can external shut down the BT function, it is defined as 5 on the MT7925 chip, and is defined as 248 on the device tree pio controller. Signed-off-by: Zhangchao Zhang <ot_zhangchao.zhang@xxxxxxxxxxxx> --- .../bluetooth/mediatek,mt7925-bluetooth.yaml | 47 +++++++++++++++++++ MAINTAINERS | 1 + 2 files changed, 48 insertions(+) create mode 100644 Documentation/devicetree/bindings/net/bluetooth/mediatek,mt7925-bluetooth.yaml diff --git a/Documentation/devicetree/bindings/net/bluetooth/mediatek,mt7925-bluetooth.yaml b/Documentation/devicetree/bindings/net/bluetooth/mediatek,mt7925-bluetooth.yaml new file mode 100644 index 000000000000..dd24312735e0 --- /dev/null +++ b/Documentation/devicetree/bindings/net/bluetooth/mediatek,mt7925-bluetooth.yaml @@ -0,0 +1,47 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/net/bluetooth/mediatek,mt7925-bluetooth.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Bluetooth mediatek use BT_KILL_1V2_L hardware pin to reset BT + +maintainers: + - Sean Wang <sean.wang@xxxxxxxxxxxx> + +description: + MT7925 modules provides hardware pin called W_DISABLE#2 to reset Bluetotoh, + two methods are used to reset Bluetooth. When an exception occurs, resetting + Bluetooth by hardware pin is more stable than resetting Bluetooth by software. + +allOf: + - $ref: bluetooth-controller.yaml# + +properties: + compatible: + enum: + - mediatek,mt7925-bluetooth + + reset-gpios: + maxItems: 1 + description: + This pin can is used to externally reset BT function. When pull low, + the Bluetooth and USB interface will be also disabled. After 100ms, + it is pulled high to 3.3V to re_enable the device and trigger the + next probe. This is typically used on M.2 key E modules. + +required: + - compatible + - reset-gpios + +unevaluatedProperties: false + +examples: + - | + #include <dt-bindings/gpio/gpio.h> + + bluetooth { + compatible = "mediatek,mt7925-bluetooth"; + #gpio-cells = <2>; + reset-gpios = <&pio 248 GPIO_ACTIVE_LOW>; + }; diff --git a/MAINTAINERS b/MAINTAINERS index 5959513a7359..d104a5821f20 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -14676,6 +14676,7 @@ L: linux-mediatek@xxxxxxxxxxxxxxxxxxx (moderated for non-subscribers) S: Maintained F: Documentation/devicetree/bindings/net/bluetooth/mediatek,bluetooth.txt F: Documentation/devicetree/bindings/net/bluetooth/mediatek,mt7921s-bluetooth.yaml +F: Documentation/devicetree/bindings/net/bluetooth/mediatek,mt7925-bluetooth.yaml F: drivers/bluetooth/btmtkuart.c MEDIATEK BOARD LEVEL SHUTDOWN DRIVERS -- 2.45.2