* [PATCH v4] arm64: dts: qcom: monaco-arduino-monza: Add QCNFA725B support
@ 2026-06-02 7:05 Qian Zhang
2026-06-02 7:21 ` sashiko-bot
0 siblings, 1 reply; 2+ messages in thread
From: Qian Zhang @ 2026-06-02 7:05 UTC (permalink / raw)
To: linux-arm-msm, devicetree
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-kernel, Qian Zhang
Add support for the QCNFA725B M.2 module (WCN6855-based)
connected to PCIe0 on the Arduino VENTUNO Q board:
- GPIO54 is the W_DISABLE# line on the M.2 connector.
Pulling it low disables the radio transmitter at the hardware
level. It is modeled as rfkill-gpio so the kernel rfkill subsystem
can assert it in response to airplane mode or a hardware kill
switch, keeping RF state consistent across suspend/resume.
- GPIO56 is wlan_en.
- QCNFA725B provides only a single external 3.3V supply input.
Lower voltage rails (e.g. 0.9V, 1.3V and 1.9V) are generated
internally by the integrated PMCA6850 PMIC and are not exposed
as seperately controllable external supplies.
Signed-off-by: Qian Zhang <qian.zhang@oss.qualcomm.com>
---
.../boot/dts/qcom/monaco-arduino-monza.dts | 108 ++++++++++++++++++
1 file changed, 108 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/monaco-arduino-monza.dts b/arch/arm64/boot/dts/qcom/monaco-arduino-monza.dts
index 379b796f261f..7e045397d649 100644
--- a/arch/arm64/boot/dts/qcom/monaco-arduino-monza.dts
+++ b/arch/arm64/boot/dts/qcom/monaco-arduino-monza.dts
@@ -154,6 +154,78 @@ vreg_nvme: regulator-3p3-m2 {
enable-active-high;
startup-delay-us = <20000>;
};
+
+ wlan-rfkill {
+ compatible = "rfkill-gpio";
+ label = "wlan";
+ radio-type = "wlan";
+ shutdown-gpios = <&tlmm 54 GPIO_ACTIVE_LOW>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&wlrfkill_default_state>;
+ };
+
+ wcn6855-pmu {
+ compatible = "qcom,wcn6855-pmu";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&wlan_en_state>;
+
+ wlan-enable-gpios = <&tlmm 56 GPIO_ACTIVE_HIGH>;
+
+ vddio-supply = <&vdc_3v3>;
+ vddaon-supply = <&vdc_3v3>;
+ vddpmu-supply = <&vdc_3v3>;
+ vddpmumx-supply = <&vdc_3v3>;
+ vddpmucx-supply = <&vdc_3v3>;
+ vddrfa0p95-supply = <&vdc_3v3>;
+ vddrfa1p3-supply = <&vdc_3v3>;
+ vddrfa1p9-supply = <&vdc_3v3>;
+ vddpcie1p3-supply = <&vdc_3v3>;
+ vddpcie1p9-supply = <&vdc_3v3>;
+
+ 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_1p8: ldo7 {
+ regulator-name = "vreg_pmu_rfa_1p8";
+ };
+
+ vreg_pmu_pcie_0p9: ldo8 {
+ regulator-name = "vreg_pmu_pcie_0p9";
+ };
+
+ vreg_pmu_pcie_1p8: ldo9 {
+ regulator-name = "vreg_pmu_pcie_1p8";
+ };
+ };
+ };
};
ðernet0 {
@@ -348,6 +420,29 @@ pci@0,0 {
ranges;
reg = <0x010000 0x00 0x00 0x00 0x00>;
+ pci@1,0 {
+ #address-cells = <3>;
+ #size-cells = <2>;
+ device_type = "pci";
+ ranges;
+ reg = <0x20800 0x00 0x00 0x00 0x00>;
+
+ wifi@0 {
+ compatible = "pci17cb,1103";
+ reg = <0 0 0 0 0>;
+
+ 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>;
+ vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
+ vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>;
+ vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>;
+ };
+ };
+
pci@2,0 {
#address-cells = <3>;
#size-cells = <2>;
@@ -449,6 +544,19 @@ adv7535_default: adv7535-default-state {
function = "gpio";
bias-pull-up;
};
+
+ wlrfkill_default_state: wlrfkill-default-state {
+ pins = "gpio54";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+
+ wlan_en_state: wlan-en-state {
+ pins = "gpio56";
+ function = "gpio";
+ output-low;
+ };
};
&uart7 {
--
2.34.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH v4] arm64: dts: qcom: monaco-arduino-monza: Add QCNFA725B support
2026-06-02 7:05 [PATCH v4] arm64: dts: qcom: monaco-arduino-monza: Add QCNFA725B support Qian Zhang
@ 2026-06-02 7:21 ` sashiko-bot
0 siblings, 0 replies; 2+ messages in thread
From: sashiko-bot @ 2026-06-02 7:21 UTC (permalink / raw)
To: Qian Zhang; +Cc: devicetree, conor+dt, robh
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] The `shutdown-gpios` polarity in the `wlan-rfkill` node is logically inverted, permanently disabling the WLAN radio during normal operation.
--
commit c96c608f286f34bcc2c474aeeb078a7d4cf17161
Author: Qian Zhang <qian.zhang@oss.qualcomm.com>
arm64: dts: qcom: monaco-arduino-monza: Add QCNFA725B support
This commit adds support for the QCNFA725B M.2 module on the Arduino VENTUNO Q
board. It models the W_DISABLE# line using rfkill-gpio and handles the module
power supply routing through the PMCA6850 PMIC.
> diff --git a/arch/arm64/boot/dts/qcom/monaco-arduino-monza.dts b/arch/arm64/boot/dts/qcom/monaco-arduino-monza.dts
> index ca14f0ea4dae6..b90397c7000e3 100644
> --- a/arch/arm64/boot/dts/qcom/monaco-arduino-monza.dts
> +++ b/arch/arm64/boot/dts/qcom/monaco-arduino-monza.dts
> @@ -153,6 +153,78 @@ vreg_nvme: regulator-3p3-m2 {
> enable-active-high;
> startup-delay-us = <20000>;
> };
> +
> + wlan-rfkill {
> + compatible = "rfkill-gpio";
> + label = "wlan";
> + radio-type = "wlan";
> + shutdown-gpios = <&tlmm 54 GPIO_ACTIVE_LOW>;
[Severity: High]
The commit message states that pulling GPIO54 low disables the transmitter
at the hardware level.
Since the rfkill-gpio driver treats shutdown-gpios as an active enable
signal, won't setting this to GPIO_ACTIVE_LOW cause the driver to physically
drive the pin low when the radio is supposed to be unblocked?
When the radio is unblocked, the driver asserts the GPIO logically. Because
the device tree defines the pin as active low, a logical 1 translates to a
physical 0. This would disable the radio during normal operation and enable
it during airplane mode.
Should this polarity be specified as GPIO_ACTIVE_HIGH instead?
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&wlrfkill_default_state>;
> + };
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260602070530.4194262-1-qian.zhang@oss.qualcomm.com?part=1
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-06-02 7:21 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-02 7:05 [PATCH v4] arm64: dts: qcom: monaco-arduino-monza: Add QCNFA725B support Qian Zhang
2026-06-02 7:21 ` sashiko-bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox