]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
arm64: dts: qcom: sdm845-oneplus: Describe Wi-Fi/BT properly
authorDavid Heidelberg <david@ixit.cz>
Fri, 27 Mar 2026 13:07:09 +0000 (14:07 +0100)
committerBjorn Andersson <andersson@kernel.org>
Mon, 30 Mar 2026 13:37:01 +0000 (08:37 -0500)
The onboard Wi-Fi / BT device, WCN3990, has a simple on-chip PMU, which
further spreads generated voltage. Describe the PMU in the device tree
and rewire Bluetooth and WiFi supply properties to use the PMU LDO
outputs instead of referencing the SoC regulators directly.

Verified against the datasheet.

Assisted-by: Claude:claude-opus-4.6
Signed-off-by: David Heidelberg <david@ixit.cz>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Link: https://lore.kernel.org/r/20260327-wcn3990-pwrctl-sdm845-v1-2-3f5c34e3fdd0@ixit.cz
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
arch/arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi

index ea187244c92a9699954e988afb7ea1ec1f85256c..6b7378cf4d493a5a11103b66c442b70ed20f56b2 100644 (file)
                pinctrl-names = "default";
                regulator-boot-on;
        };
+
+       wcn3990-pmu {
+               compatible = "qcom,wcn3990-pmu";
+
+               pinctrl-0 = <&sw_ctrl_default>;
+               pinctrl-names = "default";
+
+               vddio-supply = <&vreg_s4a_1p8>;
+               vddxo-supply = <&vreg_l7a_1p8>;
+               vddrf-supply = <&vreg_l17a_1p3>;
+               vddch0-supply = <&vreg_l25a_3p3>;
+               vddch1-supply = <&vreg_l23a_3p3>;
+
+               swctrl-gpios = <&pm8998_gpios 3 GPIO_ACTIVE_HIGH>;
+
+               regulators {
+                       vreg_pmu_io: ldo0 {
+                               regulator-name = "vreg_pmu_io";
+                       };
+
+                       vreg_pmu_xo: ldo1 {
+                               regulator-name = "vreg_pmu_xo";
+                       };
+
+                       vreg_pmu_rf: ldo2 {
+                               regulator-name = "vreg_pmu_rf";
+                       };
+
+                       vreg_pmu_ch0: ldo3 {
+                               regulator-name = "vreg_pmu_ch0";
+                       };
+
+                       vreg_pmu_ch1: ldo4 {
+                               regulator-name = "vreg_pmu_ch1";
+                       };
+               };
+       };
 };
 
 &adsp_pas {
 };
 
 &pm8998_gpios {
+       sw_ctrl_default: sw-ctrl-default-state {
+               pins = "gpio3";
+               function = "normal";
+
+               input-enable;
+               bias-pull-down;
+       };
+
        volume_down_gpio: pm8998-gpio5-state {
                pinconf {
                        pins = "gpio5";
                 */
                firmware-name = "OnePlus/enchilada/crnv21.bin";
 
-               vddio-supply = <&vreg_s4a_1p8>;
-               vddxo-supply = <&vreg_l7a_1p8>;
-               vddrf-supply = <&vreg_l17a_1p3>;
-               vddch0-supply = <&vreg_l25a_3p3>;
+               vddio-supply = <&vreg_pmu_io>;
+               vddxo-supply = <&vreg_pmu_xo>;
+               vddrf-supply = <&vreg_pmu_rf>;
+               vddch0-supply = <&vreg_pmu_ch0>;
+
                max-speed = <3200000>;
        };
 };
 };
 
 &wifi {
-       status = "okay";
        vdd-0.8-cx-mx-supply = <&vreg_l5a_0p8>;
-       vdd-1.8-xo-supply = <&vreg_l7a_1p8>;
-       vdd-1.3-rfa-supply = <&vreg_l17a_1p3>;
-       vdd-3.3-ch0-supply = <&vreg_l25a_3p3>;
-       vdd-3.3-ch1-supply = <&vreg_l23a_3p3>;
+       vdd-1.8-xo-supply = <&vreg_pmu_xo>;
+       vdd-1.3-rfa-supply = <&vreg_pmu_rf>;
+       vdd-3.3-ch0-supply = <&vreg_pmu_ch0>;
+       vdd-3.3-ch1-supply = <&vreg_pmu_ch1>;
 
        qcom,calibration-variant = "oneplus_sdm845";
        qcom,snoc-host-cap-8bit-quirk;
+
+       status = "okay";
 };