Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
f2ee870
WORKAROUND: arm64: dts: qcom: hamoa-iot-evk: support Bluetooth over b…
shuaz-shuai Mar 24, 2026
5a472e1
WORKAROUND: power: sequencing: qcom-wcn: skip BT devices without bt-e…
shuaz-shuai Mar 19, 2026
149f712
WORKAROUND: Revert "drm/msm/dpu: enable virtual planes by default"
sgaud-quic May 8, 2026
3aff695
WORKAROUND: arm64: dts: qcom: purwa-iot-evk: support Bluetooth over b…
May 7, 2026
a2e72b2
WORKAROUND: phy: qcom: qmp-pcie: Add vdda-refgen and vdda-qref suppli…
May 14, 2026
95316f8
WORKAROUND: arm64: dts: qcom: qcs8300-ride: Add vdda-qref and vdda-re…
May 14, 2026
06f2b9c
WORKAROUND: power: sequencing: qcom-wcn: skip BT devices without bt-e…
shuaz-shuai May 28, 2026
d88b882
FROMLIST: dt-bindings: net: bluetooth: qcom: document QCC2072
yepurisiddu Jun 8, 2026
f086e50
FROMLIST: Bluetooth: qca: add QCC2072 support
yepurisiddu Jun 8, 2026
8549859
FROMLIST: arm64: dts: qcom: Add M.2 QCC2072 support on qcs6490-rb3gen…
yepurisiddu Jun 8, 2026
816f79a
FROMLIST: Bluetooth: qca: combine NVM and calibration data for QCC2072
yepurisiddu Jun 8, 2026
3a88451
WORKAROUND: arch: arm64: qcom: glymur-crd: Disable PCIe6 instance
krishnachaitanya-linux Jun 22, 2026
a2ced88
WORKAROUND: iommu/arm-smmu: Work around Qualcomm SMMU-500 TLBIVAL gra…
quic-guptap Jul 14, 2026
0d39a9d
WORKAROUND: phy: qcom: qmp-pcie: Add qref and refgen regulator vote f…
Jul 3, 2026
ab982c1
WORKAROUND: arm64: dts: qcom: qcs8300: Add qref and refgen supply for…
Jul 3, 2026
724d4dc
WORKAROUND: arm64: dts: qcom: sa8775p: Add qref and refgen supply for…
Jul 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/bluetooth/qcom,qcc2072-bt.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm QCC2072 Bluetooth

maintainers:
- Balakrishna Godavarthi <quic_bgodavar@quicinc.com>
- Rocky Liao <quic_rjliao@quicinc.com>

description:
Qualcomm QCC2072 is a UART-based Bluetooth controller.

properties:
compatible:
enum:
- qcom,qcc2072-bt

required:
- compatible

allOf:
- $ref: bluetooth-controller.yaml#
- $ref: qcom,bluetooth-common.yaml#
- $ref: /schemas/serial/serial-peripheral-props.yaml#

unevaluatedProperties: false

examples:
- |
serial {
bluetooth {
compatible = "qcom,qcc2072-bt";
max-speed = <3200000>;
};
};
2 changes: 2 additions & 0 deletions arch/arm64/boot/dts/qcom/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -179,11 +179,13 @@ dtb-$(CONFIG_ARCH_QCOM) += qcs6490-rb3gen2.dtb

qcs6490-rb3gen2-vision-mezzanine-dtbs := qcs6490-rb3gen2.dtb qcs6490-rb3gen2-vision-mezzanine.dtbo
qcs6490-rb3gen2-industrial-mezzanine-dtbs := qcs6490-rb3gen2.dtb qcs6490-rb3gen2-industrial-mezzanine.dtbo
qcs6490-rb3gen2-industrial-mezzanine-m2-cologne-dtbs := qcs6490-rb3gen2.dtb qcs6490-rb3gen2-industrial-mezzanine.dtbo qcs6490-rb3gen2-industrial-mezzanine-m2-cologne.dtbo

dtb-$(CONFIG_ARCH_QCOM) += qcs6490-rb3gen2-industrial-mezzanine.dtb
dtb-$(CONFIG_ARCH_QCOM) += qcs6490-rb3gen2-vision-mezzanine.dtb
dtb-$(CONFIG_ARCH_QCOM) += qcs6490-thundercomm-minipc-g1iot.dtb
dtb-$(CONFIG_ARCH_QCOM) += qcs6490-thundercomm-rubikpi3.dtb
dtb-$(CONFIG_ARCH_QCOM) += qcs6490-rb3gen2-industrial-mezzanine-m2-cologne.dtb
dtb-$(CONFIG_ARCH_QCOM) += qcs8300-ride.dtb

qcs8300-ride-el2-dtbs := qcs8300-ride.dtb monaco-el2.dtbo
Expand Down
4 changes: 2 additions & 2 deletions arch/arm64/boot/dts/qcom/glymur-crd.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -522,14 +522,14 @@
pinctrl-0 = <&pcie6_default>;
pinctrl-names = "default";

status = "okay";
status = "disabled";
};

&pcie6_phy {
vdda-phy-supply = <&vreg_l1c_e1_0p82>;
vdda-pll-supply = <&vreg_l4f_e1_1p08>;

status = "okay";
status = "disabled";
};

&pcie6_port0 {
Expand Down
34 changes: 25 additions & 9 deletions arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts
Original file line number Diff line number Diff line change
Expand Up @@ -522,6 +522,23 @@
regulator-boot-on;
};

vreg_wcn_bt_en: regulator-wcn-bt-en {
compatible = "regulator-fixed";

regulator-name = "VREG_WCN_BT_EN";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;

gpio = <&tlmm 116 GPIO_ACTIVE_HIGH>;
enable-active-high;

pinctrl-0 = <&wcn_bt_en>;
pinctrl-names = "default";

regulator-always-on;
regulator-boot-on;
};

vreg_wwan: regulator-wwan {
compatible = "regulator-fixed";

Expand Down Expand Up @@ -687,10 +704,9 @@
vddrfa1p2-supply = <&vreg_wcn_1p9>;
vddrfa1p8-supply = <&vreg_wcn_1p9>;

bt-enable-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>;
wlan-enable-gpios = <&tlmm 117 GPIO_ACTIVE_HIGH>;

pinctrl-0 = <&wcn_bt_en>, <&wcn_wlan_en>;
pinctrl-0 = <&wcn_wlan_en>;
pinctrl-names = "default";

regulators {
Expand Down Expand Up @@ -1519,13 +1535,13 @@
compatible = "qcom,wcn7850-bt";
max-speed = <3200000>;

vddaon-supply = <&vreg_pmu_aon_0p59>;
vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
vddrfacmn-supply = <&vreg_wcn_3p3>;
vddaon-supply = <&vreg_wcn_3p3>;
vddwlcx-supply = <&vreg_wcn_3p3>;
vddwlmx-supply = <&vreg_wcn_3p3>;
vddrfa0p8-supply = <&vreg_wcn_3p3>;
vddrfa1p2-supply = <&vreg_wcn_3p3>;
vddrfa1p8-supply = <&vreg_wcn_3p3>;
};
};

Expand Down
4 changes: 4 additions & 0 deletions arch/arm64/boot/dts/qcom/lemans-evk.dts
Original file line number Diff line number Diff line change
Expand Up @@ -721,6 +721,8 @@
&pcie0_phy {
vdda-phy-supply = <&vreg_l5a>;
vdda-pll-supply = <&vreg_l1c>;
vdda-qref-supply = <&vreg_l4a>;
vdda-refgen-supply = <&vreg_l7a>;

status = "okay";
};
Expand All @@ -738,6 +740,8 @@
&pcie1_phy {
vdda-phy-supply = <&vreg_l5a>;
vdda-pll-supply = <&vreg_l1c>;
vdda-qref-supply = <&vreg_l4a>;
vdda-refgen-supply = <&vreg_l7a>;

status = "okay";
};
Expand Down
4 changes: 4 additions & 0 deletions arch/arm64/boot/dts/qcom/lemans-ride-common.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -983,13 +983,17 @@
&pcie0_phy {
vdda-phy-supply = <&vreg_l5a>;
vdda-pll-supply = <&vreg_l1c>;
vdda-qref-supply = <&vreg_l4a>;
vdda-refgen-supply = <&vreg_l7a>;

status = "okay";
};

&pcie1_phy {
vdda-phy-supply = <&vreg_l5a>;
vdda-pll-supply = <&vreg_l1c>;
vdda-qref-supply = <&vreg_l4a>;
vdda-refgen-supply = <&vreg_l7a>;

status = "okay";
};
Expand Down
4 changes: 4 additions & 0 deletions arch/arm64/boot/dts/qcom/lemans.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -2864,6 +2864,8 @@

#phy-cells = <0>;

refgen-supply = <&refgen>;

status = "disabled";
};

Expand Down Expand Up @@ -3035,6 +3037,8 @@

#phy-cells = <0>;

refgen-supply = <&refgen>;

status = "disabled";
};

Expand Down
10 changes: 10 additions & 0 deletions arch/arm64/boot/dts/qcom/monaco-arduino-monza.dts
Original file line number Diff line number Diff line change
Expand Up @@ -475,3 +475,13 @@

status = "okay";
};

&pcie0_phy {
vdda-qref-supply = <&vreg_l4a>;
vdda-refgen-supply = <&vreg_l7a>;
};

&pcie1_phy {
vdda-qref-supply = <&vreg_l4a>;
vdda-refgen-supply = <&vreg_l7a>;
};
4 changes: 4 additions & 0 deletions arch/arm64/boot/dts/qcom/monaco-evk.dts
Original file line number Diff line number Diff line change
Expand Up @@ -623,6 +623,8 @@
&pcie0_phy {
vdda-phy-supply = <&vreg_l6a>;
vdda-pll-supply = <&vreg_l5a>;
vdda-qref-supply = <&vreg_l4a>;
vdda-refgen-supply = <&vreg_l7a>;

status = "okay";
};
Expand All @@ -637,6 +639,8 @@
&pcie1_phy {
vdda-phy-supply = <&vreg_l6a>;
vdda-pll-supply = <&vreg_l5a>;
vdda-qref-supply = <&vreg_l4a>;
vdda-refgen-supply = <&vreg_l7a>;

status = "okay";
};
Expand Down
4 changes: 4 additions & 0 deletions arch/arm64/boot/dts/qcom/monaco.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -2452,6 +2452,8 @@

#phy-cells = <0>;

refgen-supply = <&refgen>;

status = "disabled";
};

Expand Down Expand Up @@ -2643,6 +2645,8 @@

#phy-cells = <0>;

refgen-supply = <&refgen>;

status = "disabled";
};

Expand Down
34 changes: 25 additions & 9 deletions arch/arm64/boot/dts/qcom/purwa-iot-evk.dts
Original file line number Diff line number Diff line change
Expand Up @@ -514,6 +514,23 @@
regulator-boot-on;
};

vreg_wcn_bt_en: regulator-wcn-bt-en {
compatible = "regulator-fixed";

regulator-name = "VREG_WCN_BT_EN";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;

gpio = <&tlmm 116 GPIO_ACTIVE_HIGH>;
enable-active-high;

pinctrl-0 = <&wcn_bt_en>;
pinctrl-names = "default";

regulator-always-on;
regulator-boot-on;
};

vreg_wwan: regulator-wwan {
compatible = "regulator-fixed";

Expand Down Expand Up @@ -628,10 +645,9 @@
vddrfa1p2-supply = <&vreg_wcn_1p9>;
vddrfa1p8-supply = <&vreg_wcn_1p9>;

bt-enable-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>;
wlan-enable-gpios = <&tlmm 117 GPIO_ACTIVE_HIGH>;

pinctrl-0 = <&wcn_bt_en>, <&wcn_wlan_en>;
pinctrl-0 = <&wcn_wlan_en>;
pinctrl-names = "default";

regulators {
Expand Down Expand Up @@ -1504,13 +1520,13 @@
compatible = "qcom,wcn7850-bt";
max-speed = <3200000>;

vddaon-supply = <&vreg_pmu_aon_0p59>;
vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
vddaon-supply = <&vreg_wcn_3p3>;
vddwlcx-supply = <&vreg_wcn_3p3>;
vddwlmx-supply = <&vreg_wcn_3p3>;
vddrfacmn-supply = <&vreg_wcn_3p3>;
vddrfa0p8-supply = <&vreg_wcn_3p3>;
vddrfa1p2-supply = <&vreg_wcn_3p3>;
vddrfa1p8-supply = <&vreg_wcn_3p3>;
};
};

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2026, Qualcomm Innovation Center, Inc. All rights reserved.
*/

/dts-v1/;
/plugin/;
#include <dt-bindings/interrupt-controller/arm-gic.h>

&tlmm {
qup_uart4_sleep_cts: qup-uart4-sleep-cts-state {
pins = "gpio16";
function = "gpio";
/*
* Configure a bias-bus-hold on CTS to lower power
* usage when Bluetooth is turned off. Bus hold will
* maintain a low power state regardless of whether
* the Bluetooth module drives the pin in either
* direction or leaves the pin fully unpowered.
*/
bias-bus-hold;
};

qup_uart4_sleep_rts: qup-uart4-sleep-rts-state {
pins = "gpio17";
function = "gpio";
/*
* Configure pull-down on RTS. As RTS is active low
* signal, pull it low to indicate the BT SoC that it
* can wakeup the system anytime from suspend state by
* pulling RX low (by sending wakeup bytes).
*/
bias-pull-down;
};

qup_uart4_sleep_rx: qup-uart4-sleep-rx-state {
pins = "gpio19";
function = "gpio";
/*
* Configure a pull-up on RX. This is needed to avoid
* garbage data when the TX pin of the Bluetooth module
* is floating which may cause spurious wakeups.
*/
bias-pull-up;
};

qup_uart4_sleep_tx: qup-uart4-sleep-tx-state {
pins = "gpio18";
function = "gpio";
/*
* Configure pull-up on TX when it isn't actively driven
* to prevent BT SoC from receiving garbage during sleep.
*/
bias-pull-up;
};

sw_ctrl: sw-ctrl-state {
pins = "gpio86";
function = "gpio";
bias-pull-down;
};
};

&qup_uart4_cts {
/*
* Configure a bias-bus-hold on CTS to lower power
* usage when Bluetooth is turned off. Bus hold will
* maintain a low power state regardless of whether
* the Bluetooth module drives the pin in either
* direction or leaves the pin fully unpowered.
*/
bias-bus-hold;
};

&qup_uart4_rts {
/* We'll drive RTS, so no pull */
drive-strength = <2>;
bias-disable;
};

&qup_uart4_rx {
/*
* Configure a pull-up on RX. This is needed to avoid
* garbage data when the TX pin of the Bluetooth module is
* in tri-state (module powered off or not driving the
* signal yet).
*/
bias-pull-up;
};

&qup_uart4_tx {
/* We'll drive TX, so no pull */
drive-strength = <2>;
bias-disable;
};

&uart4 {
status = "okay";
/delete-property/ interrupts;
interrupts-extended = <&intc GIC_SPI 605 IRQ_TYPE_LEVEL_HIGH>,
<&tlmm 19 IRQ_TYPE_EDGE_FALLING>;
pinctrl-names = "default", "sleep";
pinctrl-1 = <&qup_uart4_sleep_cts>, <&qup_uart4_sleep_rts>,
<&qup_uart4_sleep_tx>, <&qup_uart4_sleep_rx>;

bluetooth: bluetooth {
compatible = "qcom,qcc2072-bt";
max-speed = <3200000>;
};
};
Loading
Loading