mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2026-01-08 18:24:39 +00:00
Several Qualcomm Bluetooth controllers lack persistent storage for the device address and instead one can be provided by the boot firmware using the 'local-bd-address' devicetree property. The Bluetooth bindings clearly states that the address should be specified in little-endian order, but due to a long-standing bug in the Qualcomm driver which reversed the address some boot firmware has been providing the address in big-endian order instead. The only device out there that should be affected by this is the WCN3991 used in some Chromebooks. Add a 'qcom,local-bd-address-broken' property which can be set on these platforms to indicate that the boot firmware is using the wrong byte order. Note that ChromeOS always updates the kernel and devicetree in lockstep so that there is no need to handle backwards compatibility with older devicetrees. Reviewed-by: Douglas Anderson <dianders@chromium.org> Signed-off-by: Johan Hovold <johan+linaro@kernel.org> Reviewed-by: Rob Herring <robh@kernel.org> Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
235 lines
5.5 KiB
YAML
235 lines
5.5 KiB
YAML
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/net/bluetooth/qualcomm-bluetooth.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Qualcomm Bluetooth Chips
|
|
|
|
maintainers:
|
|
- Balakrishna Godavarthi <quic_bgodavar@quicinc.com>
|
|
- Rocky Liao <quic_rjliao@quicinc.com>
|
|
|
|
description:
|
|
This binding describes Qualcomm UART-attached bluetooth chips.
|
|
|
|
properties:
|
|
compatible:
|
|
enum:
|
|
- qcom,qca2066-bt
|
|
- qcom,qca6174-bt
|
|
- qcom,qca9377-bt
|
|
- qcom,wcn3988-bt
|
|
- qcom,wcn3990-bt
|
|
- qcom,wcn3991-bt
|
|
- qcom,wcn3998-bt
|
|
- qcom,qca6390-bt
|
|
- qcom,wcn6750-bt
|
|
- qcom,wcn6855-bt
|
|
- qcom,wcn7850-bt
|
|
|
|
enable-gpios:
|
|
maxItems: 1
|
|
description: gpio specifier used to enable chip
|
|
|
|
swctrl-gpios:
|
|
maxItems: 1
|
|
description: gpio specifier is used to find status
|
|
of clock supply to SoC
|
|
|
|
clocks:
|
|
maxItems: 1
|
|
description: clock provided to the controller (SUSCLK_32KHZ)
|
|
|
|
vddio-supply:
|
|
description: VDD_IO supply regulator handle
|
|
|
|
vddxo-supply:
|
|
description: VDD_XO supply regulator handle
|
|
|
|
vddrf-supply:
|
|
description: VDD_RF supply regulator handle
|
|
|
|
vddch0-supply:
|
|
description: VDD_CH0 supply regulator handle
|
|
|
|
vddch1-supply:
|
|
description: VDD_CH1 supply regulator handle
|
|
|
|
vddaon-supply:
|
|
description: VDD_AON supply regulator handle
|
|
|
|
vdddig-supply:
|
|
description: VDD_DIG supply regulator handle
|
|
|
|
vddbtcxmx-supply:
|
|
description: VDD_BT_CXMX supply regulator handle
|
|
|
|
vddrfacmn-supply:
|
|
description: VDD_RFA_CMN supply regulator handle
|
|
|
|
vddrfa0p8-supply:
|
|
description: VDD_RFA_0P8 suppply regulator handle
|
|
|
|
vddrfa1p7-supply:
|
|
description: VDD_RFA_1P7 supply regulator handle
|
|
|
|
vddrfa1p2-supply:
|
|
description: VDD_RFA_1P2 supply regulator handle
|
|
|
|
vddrfa1p9-supply:
|
|
description: VDD_RFA_1P9 supply regulator handle
|
|
|
|
vddrfa2p2-supply:
|
|
description: VDD_RFA_2P2 supply regulator handle
|
|
|
|
vddasd-supply:
|
|
description: VDD_ASD supply regulator handle
|
|
|
|
max-speed:
|
|
description: see Documentation/devicetree/bindings/serial/serial.yaml
|
|
|
|
firmware-name:
|
|
description: specify the name of nvm firmware to load
|
|
|
|
local-bd-address: true
|
|
|
|
qcom,local-bd-address-broken:
|
|
type: boolean
|
|
description:
|
|
boot firmware is incorrectly passing the address in big-endian order
|
|
|
|
required:
|
|
- compatible
|
|
|
|
additionalProperties: false
|
|
|
|
allOf:
|
|
- $ref: bluetooth-controller.yaml#
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,qca2066-bt
|
|
- qcom,qca6174-bt
|
|
then:
|
|
required:
|
|
- enable-gpios
|
|
- clocks
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,wcn3988-bt
|
|
- qcom,wcn3990-bt
|
|
- qcom,wcn3991-bt
|
|
- qcom,wcn3998-bt
|
|
then:
|
|
required:
|
|
- vddio-supply
|
|
- vddxo-supply
|
|
- vddrf-supply
|
|
- vddch0-supply
|
|
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,wcn6750-bt
|
|
then:
|
|
required:
|
|
- enable-gpios
|
|
- swctrl-gpios
|
|
- vddio-supply
|
|
- vddaon-supply
|
|
- vddbtcxmx-supply
|
|
- vddrfacmn-supply
|
|
- vddrfa0p8-supply
|
|
- vddrfa1p7-supply
|
|
- vddrfa1p2-supply
|
|
- vddasd-supply
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,wcn6855-bt
|
|
then:
|
|
required:
|
|
- enable-gpios
|
|
- swctrl-gpios
|
|
- vddio-supply
|
|
- vddbtcxmx-supply
|
|
- vddrfacmn-supply
|
|
- vddrfa0p8-supply
|
|
- vddrfa1p2-supply
|
|
- vddrfa1p7-supply
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- qcom,wcn7850-bt
|
|
then:
|
|
required:
|
|
- enable-gpios
|
|
- swctrl-gpios
|
|
- vddio-supply
|
|
- vddaon-supply
|
|
- vdddig-supply
|
|
- vddrfa0p8-supply
|
|
- vddrfa1p2-supply
|
|
- vddrfa1p9-supply
|
|
|
|
examples:
|
|
- |
|
|
#include <dt-bindings/gpio/gpio.h>
|
|
serial {
|
|
|
|
bluetooth {
|
|
compatible = "qcom,qca6174-bt";
|
|
enable-gpios = <&pm8994_gpios 19 GPIO_ACTIVE_HIGH>;
|
|
clocks = <&divclk4>;
|
|
firmware-name = "nvm_00440302.bin";
|
|
};
|
|
};
|
|
- |
|
|
serial {
|
|
|
|
bluetooth {
|
|
compatible = "qcom,wcn3990-bt";
|
|
vddio-supply = <&vreg_s4a_1p8>;
|
|
vddxo-supply = <&vreg_l7a_1p8>;
|
|
vddrf-supply = <&vreg_l17a_1p3>;
|
|
vddch0-supply = <&vreg_l25a_3p3>;
|
|
max-speed = <3200000>;
|
|
firmware-name = "crnv21.bin";
|
|
};
|
|
};
|
|
- |
|
|
serial {
|
|
|
|
bluetooth {
|
|
compatible = "qcom,wcn6750-bt";
|
|
pinctrl-names = "default";
|
|
pinctrl-0 = <&bt_en_default>;
|
|
enable-gpios = <&tlmm 85 GPIO_ACTIVE_HIGH>;
|
|
swctrl-gpios = <&tlmm 86 GPIO_ACTIVE_HIGH>;
|
|
vddio-supply = <&vreg_l19b_1p8>;
|
|
vddaon-supply = <&vreg_s7b_0p9>;
|
|
vddbtcxmx-supply = <&vreg_s7b_0p9>;
|
|
vddrfacmn-supply = <&vreg_s7b_0p9>;
|
|
vddrfa0p8-supply = <&vreg_s7b_0p9>;
|
|
vddrfa1p7-supply = <&vreg_s1b_1p8>;
|
|
vddrfa1p2-supply = <&vreg_s8b_1p2>;
|
|
vddrfa2p2-supply = <&vreg_s1c_2p2>;
|
|
vddasd-supply = <&vreg_l11c_2p8>;
|
|
max-speed = <3200000>;
|
|
firmware-name = "msnv11.bin";
|
|
};
|
|
};
|