Enable WLAN on qcs8300-ride by adding a node for the PMU module
of the WCN6855 and assigning its LDO power outputs to the existing
WiFi module.
Signed-off-by: Stone Zhang <quic_stonez@quicinc.com>
---
arch/arm64/boot/dts/qcom/qcs8300-ride.dts | 100 ++++++++++++++++++++++
1 file changed, 100 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/qcs8300-ride.dts b/arch/arm64/boot/dts/qcom/qcs8300-ride.dts
index 3e246fbc5759..e9304420c93e 100644
--- a/arch/arm64/boot/dts/qcom/qcs8300-ride.dts
+++ b/arch/arm64/boot/dts/qcom/qcs8300-ride.dts
@@ -22,6 +22,80 @@ aliases {
chosen {
stdout-path = "serial0:115200n8";
};
+
+ vreg_conn_1p8: vreg-conn-1p8 {
+ compatible = "regulator-fixed";
+ regulator-name = "vreg_conn_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ startup-delay-us = <4000>;
+ enable-active-high;
+ gpio = <&pmm8650au_1_gpios 4 GPIO_ACTIVE_HIGH>;
+ };
+
+ vreg_conn_pa: vreg-conn-pa {
+ compatible = "regulator-fixed";
+ regulator-name = "vreg_conn_pa";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ startup-delay-us = <4000>;
+ enable-active-high;
+ gpio = <&pmm8650au_1_gpios 6 GPIO_ACTIVE_HIGH>;
+ };
+
+ wcn6855-pmu {
+ compatible = "qcom,wcn6855-pmu";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&wlan_en_state>;
+
+ vddaon-supply = <&vreg_conn_pa>;
+ vddpmu-supply = <&vreg_conn_1p8>;
+
+ wlan-enable-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>;
+
+ regulators {
+ vreg_pmu_rfa_cmn: ldo0 {
+ regulator-name = "vreg_pmu_rfa_cmn";
+ };
+
+ vreg_pmu_aon_0p59: ldo1 {
+ regulator-name = "vreg_pmu_aon_0p59";
+ };
+
+ vreg_pmu_wlcx_0p8: ldo2 {
+ regulator-name = "vreg_pmu_wlcx_0p8";
+ };
+
+ vreg_pmu_wlmx_0p85: ldo3 {
+ regulator-name = "vreg_pmu_wlmx_0p85";
+ };
+
+ vreg_pmu_btcmx_0p85: ldo4 {
+ regulator-name = "vreg_pmu_btcmx_0p85";
+ };
+
+ vreg_pmu_rfa_0p8: ldo5 {
+ regulator-name = "vreg_pmu_rfa_0p8";
+ };
+
+ vreg_pmu_rfa_1p2: ldo6 {
+ regulator-name = "vreg_pmu_rfa_1p2";
+ };
+
+ vreg_pmu_rfa_1p7: ldo7 {
+ regulator-name = "vreg_pmu_rfa_1p7";
+ };
+
+ vreg_pmu_pcie_0p9: ldo8 {
+ regulator-name = "vreg_pmu_pcie_0p9";
+ };
+
+ vreg_pmu_pcie_1p8: ldo9 {
+ regulator-name = "vreg_pmu_pcie_1p8";
+ };
+ };
+ };
};
&apps_rsc {
@@ -337,6 +411,25 @@ &pcie1_phy {
status = "okay";
};
+&pcieport0 {
+ wifi@0 {
+ compatible = "pci17cb,1103";
+ reg = <0x10000 0x0 0x0 0x0 0x0>;
+
+ qcom,ath11k-calibration-variant = "QC_QCS8300_Ride";
+
+ vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
+ vddaon-supply = <&vreg_pmu_aon_0p59>;
+ vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
+ vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
+ vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
+ vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
+ vddrfa1p7-supply = <&vreg_pmu_rfa_1p7>;
+ vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>;
+ vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>;
+ };
+};
+
&qupv3_id_0 {
status = "okay";
};
@@ -446,6 +539,13 @@ perst-pins {
bias-pull-down;
};
};
+
+ wlan_en_state: wlan-en-state {
+ pins = "gpio54";
+ function = "normal";
+ output-low;
+ bias-pull-up;
+ };
};
&uart7 {
--
2.45.2
On Thu, Feb 27, 2025 at 02:54:39PM +0800, Stone Zhang wrote:
> Enable WLAN on qcs8300-ride by adding a node for the PMU module
> of the WCN6855 and assigning its LDO power outputs to the existing
> WiFi module.
>
> Signed-off-by: Stone Zhang <quic_stonez@quicinc.com>
> ---
> arch/arm64/boot/dts/qcom/qcs8300-ride.dts | 100 ++++++++++++++++++++++
> 1 file changed, 100 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/qcs8300-ride.dts b/arch/arm64/boot/dts/qcom/qcs8300-ride.dts
> index 3e246fbc5759..e9304420c93e 100644
> --- a/arch/arm64/boot/dts/qcom/qcs8300-ride.dts
> +++ b/arch/arm64/boot/dts/qcom/qcs8300-ride.dts
> @@ -22,6 +22,80 @@ aliases {
> chosen {
> stdout-path = "serial0:115200n8";
> };
> +
> + vreg_conn_1p8: vreg-conn-1p8 {
> + compatible = "regulator-fixed";
> + regulator-name = "vreg_conn_1p8";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + startup-delay-us = <4000>;
> + enable-active-high;
> + gpio = <&pmm8650au_1_gpios 4 GPIO_ACTIVE_HIGH>;
> + };
> +
> + vreg_conn_pa: vreg-conn-pa {
> + compatible = "regulator-fixed";
> + regulator-name = "vreg_conn_pa";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + startup-delay-us = <4000>;
> + enable-active-high;
> + gpio = <&pmm8650au_1_gpios 6 GPIO_ACTIVE_HIGH>;
> + };
> +
> + wcn6855-pmu {
> + compatible = "qcom,wcn6855-pmu";
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&wlan_en_state>;
> +
> + vddaon-supply = <&vreg_conn_pa>;
> + vddpmu-supply = <&vreg_conn_1p8>;
This is very incomplete. Compare it to sa8775p-ride.dtsi.
> +
> + wlan-enable-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>;
Missing bt-enable-gpios and corresponding bluetooth node.
> +
> + regulators {
> + vreg_pmu_rfa_cmn: ldo0 {
> + regulator-name = "vreg_pmu_rfa_cmn";
> + };
> +
> + vreg_pmu_aon_0p59: ldo1 {
> + regulator-name = "vreg_pmu_aon_0p59";
> + };
> +
> + vreg_pmu_wlcx_0p8: ldo2 {
> + regulator-name = "vreg_pmu_wlcx_0p8";
> + };
> +
> + vreg_pmu_wlmx_0p85: ldo3 {
> + regulator-name = "vreg_pmu_wlmx_0p85";
> + };
> +
> + vreg_pmu_btcmx_0p85: ldo4 {
> + regulator-name = "vreg_pmu_btcmx_0p85";
> + };
> +
> + vreg_pmu_rfa_0p8: ldo5 {
> + regulator-name = "vreg_pmu_rfa_0p8";
> + };
> +
> + vreg_pmu_rfa_1p2: ldo6 {
> + regulator-name = "vreg_pmu_rfa_1p2";
> + };
> +
> + vreg_pmu_rfa_1p7: ldo7 {
> + regulator-name = "vreg_pmu_rfa_1p7";
> + };
> +
> + vreg_pmu_pcie_0p9: ldo8 {
> + regulator-name = "vreg_pmu_pcie_0p9";
> + };
> +
> + vreg_pmu_pcie_1p8: ldo9 {
> + regulator-name = "vreg_pmu_pcie_1p8";
> + };
> + };
> + };
> };
>
> &apps_rsc {
> @@ -337,6 +411,25 @@ &pcie1_phy {
> status = "okay";
> };
>
> +&pcieport0 {
> + wifi@0 {
> + compatible = "pci17cb,1103";
> + reg = <0x10000 0x0 0x0 0x0 0x0>;
> +
> + qcom,ath11k-calibration-variant = "QC_QCS8300_Ride";
> +
> + vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
> + vddaon-supply = <&vreg_pmu_aon_0p59>;
> + vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
> + vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
> + vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
> + vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
> + vddrfa1p7-supply = <&vreg_pmu_rfa_1p7>;
> + vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>;
> + vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>;
> + };
> +};
> +
> &qupv3_id_0 {
> status = "okay";
> };
> @@ -446,6 +539,13 @@ perst-pins {
> bias-pull-down;
> };
> };
> +
> + wlan_en_state: wlan-en-state {
> + pins = "gpio54";
> + function = "normal";
> + output-low;
> + bias-pull-up;
> + };
> };
>
> &uart7 {
> --
> 2.45.2
>
--
With best wishes
Dmitry
On 2/27/2025 11:15 PM, Dmitry Baryshkov wrote:
> On Thu, Feb 27, 2025 at 02:54:39PM +0800, Stone Zhang wrote:
>> Enable WLAN on qcs8300-ride by adding a node for the PMU module
>> of the WCN6855 and assigning its LDO power outputs to the existing
>> WiFi module.
>>
>> Signed-off-by: Stone Zhang <quic_stonez@quicinc.com>
>> ---
>> arch/arm64/boot/dts/qcom/qcs8300-ride.dts | 100 ++++++++++++++++++++++
>> 1 file changed, 100 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/qcom/qcs8300-ride.dts b/arch/arm64/boot/dts/qcom/qcs8300-ride.dts
>> index 3e246fbc5759..e9304420c93e 100644
>> --- a/arch/arm64/boot/dts/qcom/qcs8300-ride.dts
>> +++ b/arch/arm64/boot/dts/qcom/qcs8300-ride.dts
>> @@ -22,6 +22,80 @@ aliases {
>> chosen {
>> stdout-path = "serial0:115200n8";
>> };
>> +
>> + vreg_conn_1p8: vreg-conn-1p8 {
>> + compatible = "regulator-fixed";
>> + regulator-name = "vreg_conn_1p8";
>> + regulator-min-microvolt = <1800000>;
>> + regulator-max-microvolt = <1800000>;
>> + startup-delay-us = <4000>;
>> + enable-active-high;
>> + gpio = <&pmm8650au_1_gpios 4 GPIO_ACTIVE_HIGH>;
>> + };
>> +
>> + vreg_conn_pa: vreg-conn-pa {
>> + compatible = "regulator-fixed";
>> + regulator-name = "vreg_conn_pa";
>> + regulator-min-microvolt = <1800000>;
>> + regulator-max-microvolt = <1800000>;
>> + startup-delay-us = <4000>;
>> + enable-active-high;
>> + gpio = <&pmm8650au_1_gpios 6 GPIO_ACTIVE_HIGH>;
>> + };
>> +
>> + wcn6855-pmu {
>> + compatible = "qcom,wcn6855-pmu";
>> +
>> + pinctrl-names = "default";
>> + pinctrl-0 = <&wlan_en_state>;
>> +
>> + vddaon-supply = <&vreg_conn_pa>;
>> + vddpmu-supply = <&vreg_conn_1p8>;
>
> This is very incomplete. Compare it to sa8775p-ride.dtsi.
It will be completed according to the supply voltage defined in the
power sequence driver.
>
>> +
>> + wlan-enable-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>;
>
> Missing bt-enable-gpios and corresponding bluetooth node.
The BT-related changes will be placed in another change submission.
>
>> +
>> + regulators {
>> + vreg_pmu_rfa_cmn: ldo0 {
>> + regulator-name = "vreg_pmu_rfa_cmn";
>> + };
>> +
>> + vreg_pmu_aon_0p59: ldo1 {
>> + regulator-name = "vreg_pmu_aon_0p59";
>> + };
>> +
>> + vreg_pmu_wlcx_0p8: ldo2 {
>> + regulator-name = "vreg_pmu_wlcx_0p8";
>> + };
>> +
>> + vreg_pmu_wlmx_0p85: ldo3 {
>> + regulator-name = "vreg_pmu_wlmx_0p85";
>> + };
>> +
>> + vreg_pmu_btcmx_0p85: ldo4 {
>> + regulator-name = "vreg_pmu_btcmx_0p85";
>> + };
>> +
>> + vreg_pmu_rfa_0p8: ldo5 {
>> + regulator-name = "vreg_pmu_rfa_0p8";
>> + };
>> +
>> + vreg_pmu_rfa_1p2: ldo6 {
>> + regulator-name = "vreg_pmu_rfa_1p2";
>> + };
>> +
>> + vreg_pmu_rfa_1p7: ldo7 {
>> + regulator-name = "vreg_pmu_rfa_1p7";
>> + };
>> +
>> + vreg_pmu_pcie_0p9: ldo8 {
>> + regulator-name = "vreg_pmu_pcie_0p9";
>> + };
>> +
>> + vreg_pmu_pcie_1p8: ldo9 {
>> + regulator-name = "vreg_pmu_pcie_1p8";
>> + };
>> + };
>> + };
>> };
>>
>> &apps_rsc {
>> @@ -337,6 +411,25 @@ &pcie1_phy {
>> status = "okay";
>> };
>>
>> +&pcieport0 {
>> + wifi@0 {
>> + compatible = "pci17cb,1103";
>> + reg = <0x10000 0x0 0x0 0x0 0x0>;
>> +
>> + qcom,ath11k-calibration-variant = "QC_QCS8300_Ride";
>> +
>> + vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
>> + vddaon-supply = <&vreg_pmu_aon_0p59>;
>> + vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
>> + vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
>> + vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
>> + vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
>> + vddrfa1p7-supply = <&vreg_pmu_rfa_1p7>;
>> + vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>;
>> + vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>;
>> + };
>> +};
>> +
>> &qupv3_id_0 {
>> status = "okay";
>> };
>> @@ -446,6 +539,13 @@ perst-pins {
>> bias-pull-down;
>> };
>> };
>> +
>> + wlan_en_state: wlan-en-state {
>> + pins = "gpio54";
>> + function = "normal";
>> + output-low;
>> + bias-pull-up;
>> + };
>> };
>>
>> &uart7 {
>> --
>> 2.45.2
>>
>
On Tue, Mar 04, 2025 at 10:30:15AM +0800, Stone Zhang wrote:
>
>
> On 2/27/2025 11:15 PM, Dmitry Baryshkov wrote:
> > On Thu, Feb 27, 2025 at 02:54:39PM +0800, Stone Zhang wrote:
> > > Enable WLAN on qcs8300-ride by adding a node for the PMU module
> > > of the WCN6855 and assigning its LDO power outputs to the existing
> > > WiFi module.
> > >
> > > Signed-off-by: Stone Zhang <quic_stonez@quicinc.com>
> > > ---
> > > arch/arm64/boot/dts/qcom/qcs8300-ride.dts | 100 ++++++++++++++++++++++
> > > 1 file changed, 100 insertions(+)
> > >
> > > diff --git a/arch/arm64/boot/dts/qcom/qcs8300-ride.dts b/arch/arm64/boot/dts/qcom/qcs8300-ride.dts
> > > index 3e246fbc5759..e9304420c93e 100644
> > > --- a/arch/arm64/boot/dts/qcom/qcs8300-ride.dts
> > > +++ b/arch/arm64/boot/dts/qcom/qcs8300-ride.dts
> > > @@ -22,6 +22,80 @@ aliases {
> > > chosen {
> > > stdout-path = "serial0:115200n8";
> > > };
> > > +
> > > + vreg_conn_1p8: vreg-conn-1p8 {
> > > + compatible = "regulator-fixed";
> > > + regulator-name = "vreg_conn_1p8";
> > > + regulator-min-microvolt = <1800000>;
> > > + regulator-max-microvolt = <1800000>;
> > > + startup-delay-us = <4000>;
> > > + enable-active-high;
> > > + gpio = <&pmm8650au_1_gpios 4 GPIO_ACTIVE_HIGH>;
> > > + };
> > > +
> > > + vreg_conn_pa: vreg-conn-pa {
> > > + compatible = "regulator-fixed";
> > > + regulator-name = "vreg_conn_pa";
> > > + regulator-min-microvolt = <1800000>;
> > > + regulator-max-microvolt = <1800000>;
> > > + startup-delay-us = <4000>;
> > > + enable-active-high;
> > > + gpio = <&pmm8650au_1_gpios 6 GPIO_ACTIVE_HIGH>;
> > > + };
> > > +
> > > + wcn6855-pmu {
> > > + compatible = "qcom,wcn6855-pmu";
> > > +
> > > + pinctrl-names = "default";
> > > + pinctrl-0 = <&wlan_en_state>;
> > > +
> > > + vddaon-supply = <&vreg_conn_pa>;
> > > + vddpmu-supply = <&vreg_conn_1p8>;
> >
> > This is very incomplete. Compare it to sa8775p-ride.dtsi.
> It will be completed according to the supply voltage defined in the power
> sequence driver.
The Devicetree binding, not the Linux device driver, is what defines
what should go into the Devicetree source. That way the binding forms a
contract between the dtb file and any operating system reading that dtb
file.
If you ran the required "make qcom/qcs8300-ride.dtb CHECK_DTBS=1 W=1"
(short for "make dtbs_check W=1") you would have noticed that your patch
introduces the following errors:
+arch/arm64/boot/dts/qcom/qcs8300-ride.dtb: wifi@0: 'vddrfa1p8-supply' is a required property
+arch/arm64/boot/dts/qcom/qcs8300-ride.dtb: pinctrl@f100000: wlan-en-state: 'oneOf' conditional failed, one must be fixed:
+arch/arm64/boot/dts/qcom/qcs8300-ride.dtb: wcn6855-pmu: 'vddio-supply' is a required property
+arch/arm64/boot/dts/qcom/qcs8300-ride.dtb: wcn6855-pmu: 'vddpmumx-supply' is a required property
+arch/arm64/boot/dts/qcom/qcs8300-ride.dtb: wcn6855-pmu: 'vddpmucx-supply' is a required property
+arch/arm64/boot/dts/qcom/qcs8300-ride.dtb: wcn6855-pmu: 'vddrfa0p95-supply' is a required property
+arch/arm64/boot/dts/qcom/qcs8300-ride.dtb: wcn6855-pmu: 'vddrfa1p3-supply' is a required property
+arch/arm64/boot/dts/qcom/qcs8300-ride.dtb: wcn6855-pmu: 'vddrfa1p9-supply' is a required property
+arch/arm64/boot/dts/qcom/qcs8300-ride.dtb: wcn6855-pmu: 'vddpcie1p3-supply' is a required property
+arch/arm64/boot/dts/qcom/qcs8300-ride.dtb: wcn6855-pmu: 'vddpcie1p9-supply' is a required property
There should be 0 new errors for me to merge the patch.
Regards,
Bjorn
© 2016 - 2025 Red Hat, Inc.