* [PATCH] arm64: dts: qcom: shikra-iqs: add M.2 Wi-Fi and Bluetooth overlay
@ 2026-10-12 12:29 Linghui Wu
2026-10-12 12:44 ` sashiko-bot
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Linghui Wu @ 2026-10-12 12:29 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, kernel
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm,
devicetree, linux-kernel, Miaoqing Pan, Hangtian Zhu, Wei Deng,
Linghui Wu
Add an overlay for M.2 Key-E Wi-Fi and Bluetooth modules on Qualcomm
Shikra IQS EVK.
Describe the PCIe and UART connections through the M.2 connector, the
3.3 V supply, the W_DISABLE signals and the PCIe reset signal. Disable
the onboard Wi-Fi and Bluetooth nodes when the overlay is selected.
The Wi-Fi PCIe path was tested on a Shikra IQS EVK with a QCC2072
module. The overlay was applied, the link trained at Gen2 x1 and the
endpoint enumerated. Bluetooth UART and HCI runtime validation is
pending.
Co-developed-by: Wei Deng <wei.deng@oss.qualcomm.com>
Signed-off-by: Wei Deng <wei.deng@oss.qualcomm.com>
Signed-off-by: Linghui Wu <linghui.wu@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/Makefile | 1 +
.../dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso | 107 ++++++++++++++++++
2 files changed, 108 insertions(+)
create mode 100644 arch/arm64/boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 1c86e7e98f55..799faa32e2d9 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -339,6 +339,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sdx75-idp.dtb
dtb-$(CONFIG_ARCH_QCOM) += shikra-cqm-evk.dtb
dtb-$(CONFIG_ARCH_QCOM) += shikra-cqs-evk.dtb
dtb-$(CONFIG_ARCH_QCOM) += shikra-iqs-evk.dtb
+dtb-$(CONFIG_ARCH_QCOM) += shikra-iqs-evk-m2-wifi-bt.dtbo
dtb-$(CONFIG_ARCH_QCOM) += sm4250-oneplus-billie2.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm4450-qrd.dtb
dtb-$(CONFIG_ARCH_QCOM) += sm6115-fxtec-pro1x.dtb
diff --git a/arch/arm64/boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso b/arch/arm64/boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso
new file mode 100644
index 000000000000..3264c0add67b
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso
@@ -0,0 +1,107 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2026 Qualcomm Technologies, Inc. and/or its subsidiaries.
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+
+&{/} {
+ m2_keye_3p3: regulator-m2-keye-3p3 {
+ compatible = "regulator-fixed";
+ regulator-name = "VREG_3P3_KEYE";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&qps_gpio_expander 6 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ regulator-boot-on;
+ startup-delay-us = <100000>;
+ };
+
+ wifi-bt-connector {
+ compatible = "pcie-m2-e-connector";
+ vpcie3v3-supply = <&m2_keye_3p3>;
+ w-disable1-gpios = <&tlmm 61 GPIO_ACTIVE_LOW>;
+ w-disable2-gpios = <&tlmm 60 GPIO_ACTIVE_LOW>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ m2_e_pcie_ep: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&pcie_port0_ep>;
+ };
+ };
+
+ port@3 {
+ reg = <3>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ m2_e_uart_ep: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&uart8_ep>;
+ };
+ };
+ };
+ };
+};
+
+&{/wcn3988-pmu} {
+ status = "disabled";
+};
+
+&i2c3 {
+ qps_gpio_expander: gpio@3c {
+ compatible = "nxp,pca9534";
+ reg = <0x3c>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+};
+
+&pcie {
+ iommu-map = <0x0 &apps_smmu 0x0800 0x0 0x1>,
+ <0x100 &apps_smmu 0x0801 0x0 0x1>;
+ vddpe-3v3-supply = <&m2_keye_3p3>;
+};
+
+&pcie_port0 {
+ compatible = "pciclass,0604";
+ reset-gpios = <&tlmm 118 GPIO_ACTIVE_LOW>;
+
+ port {
+ pcie_port0_ep: endpoint {
+ remote-endpoint = <&m2_e_pcie_ep>;
+ };
+ };
+};
+
+&tc9563 {
+ reg = <0x1ff00 0x0 0x0 0x0 0x0>;
+ status = "disabled";
+};
+
+&uart8 {
+ bluetooth {
+ status = "disabled";
+ };
+
+ port {
+ uart8_ep: endpoint {
+ remote-endpoint = <&m2_e_uart_ep>;
+ };
+ };
+};
+
+&wifi {
+ status = "disabled";
+};
--
2.43.0
^ permalink raw reply related [flat|nested] 9+ messages in thread* Re: [PATCH] arm64: dts: qcom: shikra-iqs: add M.2 Wi-Fi and Bluetooth overlay 2026-10-12 12:29 [PATCH] arm64: dts: qcom: shikra-iqs: add M.2 Wi-Fi and Bluetooth overlay Linghui Wu @ 2026-10-12 12:44 ` sashiko-bot 2026-10-13 4:55 ` [PATCH v2] " Linghui Wu 2026-10-20 2:09 ` [PATCH v3] " Linghui Wu 2 siblings, 0 replies; 9+ messages in thread From: sashiko-bot @ 2026-10-12 12:44 UTC (permalink / raw) To: Linghui Wu; +Cc: robh, devicetree, conor+dt Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider: - [Medium] dts: qcom: shikra: overlay references missing &pcie and &tc9563 labels - [Medium] dts: qcom: shikra: i2c3 bus left disabled in Wi-Fi/BT overlay -- commit c7775498584a8a4439bd0383ef59c4918ec334ae Author: Linghui Wu <linghui.wu@oss.qualcomm.com> arm64: dts: qcom: shikra-iqs: add M.2 Wi-Fi and Bluetooth overlay Add an overlay for M.2 Key-E Wi-Fi and Bluetooth modules on Qualcomm Shikra IQS EVK. > diff --git a/arch/arm64/boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso b/arch/arm64/boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso > new file mode 100644 > index 0000000000000..3264c0add67bd > --- /dev/null > +++ b/arch/arm64/boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso > @@ -0,0 +1,107 @@ [ ... ] > +&i2c3 { > + qps_gpio_expander: gpio@3c { > + compatible = "nxp,pca9534"; > + reg = <0x3c>; > + gpio-controller; > + #gpio-cells = <2>; > + }; > +}; [Severity: Medium] Will this GPIO expander probe successfully? The i2c3 bus is disabled by default in the base SoC device tree, and this overlay adds the expander to the bus without explicitly setting status = "okay" to enable the controller. Since the m2_keye_3p3 regulator relies on a GPIO from qps_gpio_expander, the expander failing to probe will cause the regulator to defer indefinitely, leaving the Wi-Fi/BT module unpowered. > + > +&pcie { > + iommu-map = <0x0 &apps_smmu 0x0800 0x0 0x1>, > + <0x100 &apps_smmu 0x0801 0x0 0x1>; > + vddpe-3v3-supply = <&m2_keye_3p3>; > +}; [Severity: Medium] Are we missing prerequisite patches for the base Shikra device tree? The overlay targets the &pcie label, which does not appear to be defined anywhere in the base device trees (shikra.dtsi, shikra-iqs-som.dtsi, shikra-iqs-evk.dts). Applying the overlay will fail with an unresolved phandle error. > + > +&pcie_port0 { > + compatible = "pciclass,0604"; > + reset-gpios = <&tlmm 118 GPIO_ACTIVE_LOW>; > + > + port { > + pcie_port0_ep: endpoint { > + remote-endpoint = <&m2_e_pcie_ep>; > + }; > + }; > +}; [Severity: Medium] Similarly, does the base tree define the &pcie_port0 label? It also appears to be missing from the base tree, which will prevent the overlay from applying. > + > +&tc9563 { > + reg = <0x1ff00 0x0 0x0 0x0 0x0>; > + status = "disabled"; > +}; [Severity: Medium] Is the &tc9563 label present in the base tree? The overlay attempts to disable this node, but it seems to be entirely missing from the base Shikra device tree, which will also result in unresolved phandle errors. -- Sashiko AI review · https://sashiko.dev/#/patchset/20261012122934.3240030-1-linghui.wu@oss.qualcomm.com?part=1 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2] arm64: dts: qcom: shikra-iqs: add M.2 Wi-Fi and Bluetooth overlay 2026-10-12 12:29 [PATCH] arm64: dts: qcom: shikra-iqs: add M.2 Wi-Fi and Bluetooth overlay Linghui Wu 2026-10-12 12:44 ` sashiko-bot @ 2026-10-13 4:55 ` Linghui Wu 2026-10-13 5:04 ` sashiko-bot 2026-10-16 12:37 ` Konrad Dybcio 2026-10-20 2:09 ` [PATCH v3] " Linghui Wu 2 siblings, 2 replies; 9+ messages in thread From: Linghui Wu @ 2026-10-13 4:55 UTC (permalink / raw) To: Bjorn Andersson, Konrad Dybcio, kernel Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Miaoqing Pan, Hangtian Zhu, Cheng Jiang, Linghui Wu, Wei Deng Add an overlay for M.2 Key-E Wi-Fi and Bluetooth modules on Qualcomm Shikra IQS EVK. Describe the PCIe and UART connections through the M.2 connector, the 3.3 V supply, the W_DISABLE signals and the PCIe reset signal. Disable the onboard Wi-Fi and Bluetooth nodes when the overlay is selected. The Wi-Fi PCIe path was tested on a Shikra IQS EVK with a QCC2072 module. The overlay was applied, the link trained at Gen2 x1 and the endpoint enumerated. Bluetooth UART and HCI runtime validation is pending. Co-developed-by: Wei Deng <wei.deng@oss.qualcomm.com> Signed-off-by: Wei Deng <wei.deng@oss.qualcomm.com> Signed-off-by: Linghui Wu <linghui.wu@oss.qualcomm.com> --- Changes in v2: - Drop regulator-boot-on and startup-delay-us from the 3.3 V regulator. arch/arm64/boot/dts/qcom/Makefile | 1 + .../dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso | 106 ++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100644 arch/arm64/boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile index 1c86e7e98f55..799faa32e2d9 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -339,6 +339,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sdx75-idp.dtb dtb-$(CONFIG_ARCH_QCOM) += shikra-cqm-evk.dtb dtb-$(CONFIG_ARCH_QCOM) += shikra-cqs-evk.dtb dtb-$(CONFIG_ARCH_QCOM) += shikra-iqs-evk.dtb +dtb-$(CONFIG_ARCH_QCOM) += shikra-iqs-evk-m2-wifi-bt.dtbo dtb-$(CONFIG_ARCH_QCOM) += sm4250-oneplus-billie2.dtb dtb-$(CONFIG_ARCH_QCOM) += sm4450-qrd.dtb dtb-$(CONFIG_ARCH_QCOM) += sm6115-fxtec-pro1x.dtb diff --git a/arch/arm64/boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso b/arch/arm64/boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso new file mode 100644 index 000000000000..9496c6558eef --- /dev/null +++ b/arch/arm64/boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso @@ -0,0 +1,106 @@ +// SPDX-License-Identifier: BSD-3-Clause +/* + * Copyright (c) 2026 Qualcomm Technologies, Inc. and/or its subsidiaries. + */ + +/dts-v1/; +/plugin/; + +#include <dt-bindings/gpio/gpio.h> + +&{/} { + m2_keye_3p3: regulator-m2-keye-3p3 { + compatible = "regulator-fixed"; + regulator-name = "VREG_3P3_KEYE"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + gpio = <&qps_gpio_expander 6 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; + + wifi-bt-connector { + compatible = "pcie-m2-e-connector"; + + vpcie3v3-supply = <&m2_keye_3p3>; + w-disable1-gpios = <&tlmm 61 GPIO_ACTIVE_LOW>; + w-disable2-gpios = <&tlmm 60 GPIO_ACTIVE_LOW>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + + m2_e_pcie_ep: endpoint@0 { + reg = <0>; + remote-endpoint = <&pcie_port0_ep>; + }; + }; + + port@3 { + reg = <3>; + #address-cells = <1>; + #size-cells = <0>; + + m2_e_uart_ep: endpoint@0 { + reg = <0>; + remote-endpoint = <&uart8_ep>; + }; + }; + }; + }; +}; + +&{/wcn3988-pmu} { + status = "disabled"; +}; + +&i2c3 { + qps_gpio_expander: gpio@3c { + compatible = "nxp,pca9534"; + reg = <0x3c>; + gpio-controller; + #gpio-cells = <2>; + }; +}; + +&pcie { + iommu-map = <0x0 &apps_smmu 0x0800 0x0 0x1>, + <0x100 &apps_smmu 0x0801 0x0 0x1>; + vddpe-3v3-supply = <&m2_keye_3p3>; +}; + +&pcie_port0 { + compatible = "pciclass,0604"; + reset-gpios = <&tlmm 118 GPIO_ACTIVE_LOW>; + + port { + pcie_port0_ep: endpoint { + remote-endpoint = <&m2_e_pcie_ep>; + }; + }; +}; + +&tc9563 { + reg = <0x1ff00 0x0 0x0 0x0 0x0>; + status = "disabled"; +}; + +&uart8 { + bluetooth { + status = "disabled"; + }; + + port { + uart8_ep: endpoint { + remote-endpoint = <&m2_e_uart_ep>; + }; + }; +}; + +&wifi { + status = "disabled"; +}; -- 2.43.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2] arm64: dts: qcom: shikra-iqs: add M.2 Wi-Fi and Bluetooth overlay 2026-10-13 4:55 ` [PATCH v2] " Linghui Wu @ 2026-10-13 5:04 ` sashiko-bot 2026-10-16 12:37 ` Konrad Dybcio 1 sibling, 0 replies; 9+ messages in thread From: sashiko-bot @ 2026-10-13 5:04 UTC (permalink / raw) To: Linghui Wu; +Cc: devicetree, robh, conor+dt Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider: - [High] dt: unresolved phandles in dtso cause overlay application failure - [High] dt: missing status okay for i2c3 prevents child devices from probing -- commit 20bd5cfd16cb2c55b562568723f33d895fa37020 Author: Linghui Wu <linghui.wu@oss.qualcomm.com> arm64: dts: qcom: shikra-iqs: add M.2 Wi-Fi and Bluetooth overlay Add an overlay for M.2 Key-E Wi-Fi and Bluetooth modules on Qualcomm Shikra IQS EVK. Describe the PCIe and UART connections through the M.2 connector, the 3.3 V supply, the W_DISABLE signals and the PCIe reset signal. Disable the onboard Wi-Fi and Bluetooth nodes when the overlay is selected. > diff --git a/arch/arm64/boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso b/arch/arm64/boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso > new file mode 100644 > index 0000000000000..9496c6558eef6 > --- /dev/null > +++ b/arch/arm64/boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso [ ... ] > +&i2c3 { > + qps_gpio_expander: gpio@3c { > + compatible = "nxp,pca9534"; > + reg = <0x3c>; > + gpio-controller; > + #gpio-cells = <2>; > + }; > +}; [Severity: High] Does this overlay need to set status = "okay" for the i2c3 bus? In the base device tree, the i2c3 bus has status = "disabled". Because the parent I2C bus remains disabled, the child qps_gpio_expander will never probe. Consequently, the m2_keye_3p3 regulator, which relies on a GPIO from this expander, will defer indefinitely, leaving the M.2 Wi-Fi/BT module unpowered. > + > +&pcie { > + iommu-map = <0x0 &apps_smmu 0x0800 0x0 0x1>, > + <0x100 &apps_smmu 0x0801 0x0 0x1>; > + vddpe-3v3-supply = <&m2_keye_3p3>; > +}; [Severity: High] Do the &pcie, &pcie_port0, and &tc9563 labels exist in the upstream platform code? Applying this overlay at runtime or via the bootloader will fail due to unresolvable symbols. None of these labels are defined in the upstream platform code (shikra.dtsi, shikra-iqs-som.dtsi, or shikra-iqs-evk.dts). Does this overlay rely on unmerged or out-of-tree patches that add PCIe support to the Shikra platform? > + > +&pcie_port0 { > + compatible = "pciclass,0604"; > + reset-gpios = <&tlmm 118 GPIO_ACTIVE_LOW>; > + > + port { > + pcie_port0_ep: endpoint { > + remote-endpoint = <&m2_e_pcie_ep>; > + }; > + }; > +}; > + > +&tc9563 { > + reg = <0x1ff00 0x0 0x0 0x0 0x0>; > + status = "disabled"; > +}; -- Sashiko AI review · https://sashiko.dev/#/patchset/20261013045527.56941-1-linghui.wu@oss.qualcomm.com?part=1 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2] arm64: dts: qcom: shikra-iqs: add M.2 Wi-Fi and Bluetooth overlay 2026-10-13 4:55 ` [PATCH v2] " Linghui Wu 2026-10-13 5:04 ` sashiko-bot @ 2026-10-16 12:37 ` Konrad Dybcio 1 sibling, 0 replies; 9+ messages in thread From: Konrad Dybcio @ 2026-10-16 12:37 UTC (permalink / raw) To: Linghui Wu, Bjorn Andersson, Konrad Dybcio, kernel Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Miaoqing Pan, Hangtian Zhu, Cheng Jiang, Wei Deng On 10/13/26 6:55 AM, Linghui Wu wrote: > Add an overlay for M.2 Key-E Wi-Fi and Bluetooth modules on Qualcomm > Shikra IQS EVK. > > Describe the PCIe and UART connections through the M.2 connector, the > 3.3 V supply, the W_DISABLE signals and the PCIe reset signal. Disable > the onboard Wi-Fi and Bluetooth nodes when the overlay is selected. Is this not part of the base board? Why would I be prevented from using both the onboard and M.2 WLAN? Konrad ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v3] arm64: dts: qcom: shikra-iqs: add M.2 Wi-Fi and Bluetooth overlay 2026-10-12 12:29 [PATCH] arm64: dts: qcom: shikra-iqs: add M.2 Wi-Fi and Bluetooth overlay Linghui Wu 2026-10-12 12:44 ` sashiko-bot 2026-10-13 4:55 ` [PATCH v2] " Linghui Wu @ 2026-10-20 2:09 ` Linghui Wu 2026-10-20 8:19 ` sashiko-bot ` (2 more replies) 2 siblings, 3 replies; 9+ messages in thread From: Linghui Wu @ 2026-10-20 2:09 UTC (permalink / raw) To: Bjorn Andersson, Konrad Dybcio, kernel Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Miaoqing Pan, Hangtian Zhu, Cheng Jiang, Linghui Wu, Wei Deng Add an overlay for M.2 Key-E Wi-Fi and Bluetooth modules on the Qualcomm Shikra IQS EVK. The M.2 variant uses the external module connected through the Key-E connector instead of the onboard WCN3988 devices. Disable the onboard Wi-Fi and Bluetooth nodes when the overlay is selected so the device tree matches the hardware variant and does not probe the unavailable onboard connectivity path. Describe the PCIe and UART connections through the M.2 connector, the 3.3 V supply, the W_DISABLE signals and the PCIe reset signal. The Wi-Fi PCIe path was tested on a Shikra IQS EVK with a QCC2072 module. The overlay was applied, the link trained at Gen2 x1 and the endpoint enumerated. Bluetooth UART and HCI runtime validation is pending. Co-developed-by: Wei Deng <wei.deng@oss.qualcomm.com> Signed-off-by: Wei Deng <wei.deng@oss.qualcomm.com> Signed-off-by: Linghui Wu <linghui.wu@oss.qualcomm.com> --- Changes in v2: - Drop regulator-boot-on and startup-delay-us from the 3.3 V regulator. Changes in v3: - Drop the unused reg override from the disabled TC9563 node. arch/arm64/boot/dts/qcom/Makefile | 1 + .../dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso | 105 +++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 arch/arm64/boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile index 1c86e7e98f55..799faa32e2d9 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -339,6 +339,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sdx75-idp.dtb dtb-$(CONFIG_ARCH_QCOM) += shikra-cqm-evk.dtb dtb-$(CONFIG_ARCH_QCOM) += shikra-cqs-evk.dtb dtb-$(CONFIG_ARCH_QCOM) += shikra-iqs-evk.dtb +dtb-$(CONFIG_ARCH_QCOM) += shikra-iqs-evk-m2-wifi-bt.dtbo dtb-$(CONFIG_ARCH_QCOM) += sm4250-oneplus-billie2.dtb dtb-$(CONFIG_ARCH_QCOM) += sm4450-qrd.dtb dtb-$(CONFIG_ARCH_QCOM) += sm6115-fxtec-pro1x.dtb diff --git a/arch/arm64/boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso b/arch/arm64/boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso new file mode 100644 index 000000000000..9496c6558eef --- /dev/null +++ b/arch/arm64/boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso @@ -0,0 +1,105 @@ +// SPDX-License-Identifier: BSD-3-Clause +/* + * Copyright (c) 2026 Qualcomm Technologies, Inc. and/or its subsidiaries. + */ + +/dts-v1/; +/plugin/; + +#include <dt-bindings/gpio/gpio.h> + +&{/} { + m2_keye_3p3: regulator-m2-keye-3p3 { + compatible = "regulator-fixed"; + regulator-name = "VREG_3P3_KEYE"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + gpio = <&qps_gpio_expander 6 GPIO_ACTIVE_HIGH>; + enable-active-high; + }; + + wifi-bt-connector { + compatible = "pcie-m2-e-connector"; + + vpcie3v3-supply = <&m2_keye_3p3>; + w-disable1-gpios = <&tlmm 61 GPIO_ACTIVE_LOW>; + w-disable2-gpios = <&tlmm 60 GPIO_ACTIVE_LOW>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + + m2_e_pcie_ep: endpoint@0 { + reg = <0>; + remote-endpoint = <&pcie_port0_ep>; + }; + }; + + port@3 { + reg = <3>; + #address-cells = <1>; + #size-cells = <0>; + + m2_e_uart_ep: endpoint@0 { + reg = <0>; + remote-endpoint = <&uart8_ep>; + }; + }; + }; + }; +}; + +&{/wcn3988-pmu} { + status = "disabled"; +}; + +&i2c3 { + qps_gpio_expander: gpio@3c { + compatible = "nxp,pca9534"; + reg = <0x3c>; + gpio-controller; + #gpio-cells = <2>; + }; +}; + +&pcie { + iommu-map = <0x0 &apps_smmu 0x0800 0x0 0x1>, + <0x100 &apps_smmu 0x0801 0x0 0x1>; + vddpe-3v3-supply = <&m2_keye_3p3>; +}; + +&pcie_port0 { + compatible = "pciclass,0604"; + reset-gpios = <&tlmm 118 GPIO_ACTIVE_LOW>; + + port { + pcie_port0_ep: endpoint { + remote-endpoint = <&m2_e_pcie_ep>; + }; + }; +}; + +&tc9563 { + status = "disabled"; +}; + +&uart8 { + bluetooth { + status = "disabled"; + }; + + port { + uart8_ep: endpoint { + remote-endpoint = <&m2_e_uart_ep>; + }; + }; +}; + +&wifi { + status = "disabled"; +}; -- 2.43.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v3] arm64: dts: qcom: shikra-iqs: add M.2 Wi-Fi and Bluetooth overlay 2026-10-20 2:09 ` [PATCH v3] " Linghui Wu @ 2026-10-20 8:19 ` sashiko-bot 2026-10-21 17:18 ` Rob Herring 2026-10-21 23:20 ` Dmitry Baryshkov 2 siblings, 0 replies; 9+ messages in thread From: sashiko-bot @ 2026-10-20 8:19 UTC (permalink / raw) To: Linghui Wu; +Cc: devicetree, robh, conor+dt Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider: - [High] arm64: dts: qcom: unapplied shikra M.2 overlay and missing base DTB targets - [Medium] arm64: dts: qcom: missing address/size cells and status in i2c3 overlay node - [Medium] arm64: dts: qcom: shikra-iqs: duplicate m2_keye_3p3 supply on pcie and M.2 connector -- commit 09177a14c1310eacd965626caf4a52cacd777f25 Author: Linghui Wu <linghui.wu@oss.qualcomm.com> arm64: dts: qcom: shikra-iqs: add M.2 Wi-Fi and Bluetooth overlay This patch adds a device tree overlay for M.2 Key-E Wi-Fi and Bluetooth modules on the Qualcomm Shikra IQS EVK and disables the onboard WCN3988 Wi-Fi and Bluetooth nodes when applied. > diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile > index 1c86e7e98f55d..799faa32e2d98 100644 > --- a/arch/arm64/boot/dts/qcom/Makefile > +++ b/arch/arm64/boot/dts/qcom/Makefile > @@ -339,6 +339,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sdx75-idp.dtb > dtb-$(CONFIG_ARCH_QCOM) += shikra-cqm-evk.dtb > dtb-$(CONFIG_ARCH_QCOM) += shikra-cqs-evk.dtb > dtb-$(CONFIG_ARCH_QCOM) += shikra-iqs-evk.dtb > +dtb-$(CONFIG_ARCH_QCOM) += shikra-iqs-evk-m2-wifi-bt.dtbo > dtb-$(CONFIG_ARCH_QCOM) += sm4250-oneplus-billie2.dtb > dtb-$(CONFIG_ARCH_QCOM) += sm4450-qrd.dtb > dtb-$(CONFIG_ARCH_QCOM) += sm6115-fxtec-pro1x.dtb [Severity: High] Does adding shikra-iqs-evk-m2-wifi-bt.dtbo directly to dtb-$(CONFIG_ARCH_QCOM) without a composite -dtbs target cause a Kbuild warning and prevent the base DTB from being compiled with symbols? In scripts/Makefile.dtbs, Kbuild checks that every .dtbo in dtb-y is applied to at least one base .dtb via a -dtbs rule: scripts/Makefile.dtbs: applied-dtbo := $(filter %.dtbo, \ $(call real-search, $(call multi-search, $(all-dtb), .dtb, -dtbs), .dtb, -dtbs)) unapplied-dtbo := $(filter-out $(applied-dtbo),$(filter %.dtbo, $(dtb-y))) $(if $(unapplied-dtbo), $(warning .dtbo is not applied to any base: $(unapplied-dtbo))) In addition, scripts/Makefile.dtbs only passes -@ to dtc for base DTBs listed in a composite -dtbs rule (base-dtb-y). Without defining: shikra-iqs-evk-m2-wifi-bt-dtbs := shikra-iqs-evk.dtb shikra-iqs-evk-m2-wifi-bt.dtbo dtb-$(CONFIG_ARCH_QCOM) += shikra-iqs-evk-m2-wifi-bt.dtb shikra-iqs-evk.dtb is compiled without a /__symbols__ node, so the overlay cannot be applied to it. Furthermore, when attempting to apply this overlay to shikra-iqs-evk.dtb, the target labels &pcie, &pcie_port0, and &tc9563 referenced below do not exist in shikra.dtsi, shikra-iqs-som.dtsi, shikra-evk.dtsi, or shikra-iqs-evk.dts, causing fdtoverlay to fail with FDT_ERR_NOTFOUND. Is this patch depending on unmerged base DTB changes? > diff --git a/arch/arm64/boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso b/arch/arm64/boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso > new file mode 100644 > index 0000000000000..985c728dd693d > --- /dev/null > +++ b/arch/arm64/boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso > @@ -0,0 +1,105 @@ > +// SPDX-License-Identifier: BSD-3-Clause > +/* > + * Copyright (c) 2026 Qualcomm Technologies, Inc. and/or its subsidiaries. > + */ > + > +/dts-v1/; > +/plugin/; > + > +#include <dt-bindings/gpio/gpio.h> > + > +&{/} { > + m2_keye_3p3: regulator-m2-keye-3p3 { > + compatible = "regulator-fixed"; > + regulator-name = "VREG_3P3_KEYE"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + gpio = <&qps_gpio_expander 6 GPIO_ACTIVE_HIGH>; > + enable-active-high; > + }; > + > + wifi-bt-connector { > + compatible = "pcie-m2-e-connector"; > + > + vpcie3v3-supply = <&m2_keye_3p3>; > + w-disable1-gpios = <&tlmm 61 GPIO_ACTIVE_LOW>; > + w-disable2-gpios = <&tlmm 60 GPIO_ACTIVE_LOW>; [ ... ] > +&i2c3 { > + qps_gpio_expander: gpio@3c { > + compatible = "nxp,pca9534"; > + reg = <0x3c>; > + gpio-controller; > + #gpio-cells = <2>; > + }; > +}; [Severity: Medium] Should the &i2c3 fragment include #address-cells = <1>, #size-cells = <0>, and status = "okay"? When dtc compiles the .dtso plugin in isolation, check_reg_format() and check_avoid_default_addr_size() in scripts/dtc/checks.c evaluate gpio@3c against the fragment parent, which defaults to 2 address cells and 1 size cell when #address-cells and #size-cells are omitted, emitting reg_format and avoid_default_addr_size warnings on reg = <0x3c>. Also, in arch/arm64/boot/dts/qcom/shikra.dtsi, i2c3 is defined with status = "disabled" and is not enabled in the board DTS/DTSI files: arch/arm64/boot/dts/qcom/shikra.dtsi: i2c3: i2c@4a8c000 { compatible = "qcom,geni-i2c"; ... status = "disabled"; }; Without status = "okay" on &i2c3, will qps_gpio_expander and the dependent m2_keye_3p3 regulator fail to probe? > + > +&pcie { > + iommu-map = <0x0 &apps_smmu 0x0800 0x0 0x1>, > + <0x100 &apps_smmu 0x0801 0x0 0x1>; > + vddpe-3v3-supply = <&m2_keye_3p3>; > +}; [Severity: Medium] Will assigning &m2_keye_3p3 to both vddpe-3v3-supply on &pcie and vpcie3v3-supply on wifi-bt-connector cause the PCIe host controller and the M.2 power sequencer to contend over the 3.3 V regulator? During qcom_pcie_probe() -> dw_pcie_host_init() -> qcom_pcie_host_init() in drivers/pci/controller/dwc/pcie-qcom.c: ret = pcie->cfg->ops->init(pcie); if (ret) return ret; ret = qcom_pcie_phy_power_on(pcie); if (ret) goto err_deinit; if (!pci->suspended) { ret = pci_pwrctrl_create_devices(pci->dev); if (ret) goto err_disable_phy; } if (!pp->skip_pwrctrl_off) { ret = pci_pwrctrl_power_on_devices(pci->dev); if (ret) goto err_pwrctrl_destroy; } pcie->cfg->ops->init(pcie) enables vddpe-3v3 (&m2_keye_3p3) directly before pci_pwrctrl_create_devices() and pci_pwrctrl_power_on_devices() run. When pci_pwrctrl_power_on_devices() returns -EPROBE_DEFER while waiting for pci-pwrctrl-slot and pwrseq-pcie-m2 to bind, qcom_pcie_host_init() unwinds through err_deinit and disables &m2_keye_3p3, glitching the 3.3 V rail before re-probing. Once bound, &pcie also holds a direct enable vote on &m2_keye_3p3 outside of pwrseq-pcie-m2. Should vddpe-3v3-supply be omitted from &pcie so that &m2_keye_3p3 is managed solely via vpcie3v3-supply on wifi-bt-connector? [ ... ] > -- Sashiko AI review · https://sashiko.dev/#/patchset/20261020020925.3915548-1-linghui.wu@oss.qualcomm.com?part=1 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3] arm64: dts: qcom: shikra-iqs: add M.2 Wi-Fi and Bluetooth overlay 2026-10-20 2:09 ` [PATCH v3] " Linghui Wu 2026-10-20 8:19 ` sashiko-bot @ 2026-10-21 17:18 ` Rob Herring 2026-10-21 23:20 ` Dmitry Baryshkov 2 siblings, 0 replies; 9+ messages in thread From: Rob Herring @ 2026-10-21 17:18 UTC (permalink / raw) To: Linghui Wu Cc: Bjorn Andersson, Konrad Dybcio, kernel, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Miaoqing Pan, Hangtian Zhu, Cheng Jiang, Wei Deng On Mon, Oct 19, 2026 at 9:09 PM Linghui Wu <linghui.wu@oss.qualcomm.com> wrote: > > Add an overlay for M.2 Key-E Wi-Fi and Bluetooth modules on the Qualcomm > Shikra IQS EVK. > > The M.2 variant uses the external module connected through the Key-E > connector instead of the onboard WCN3988 devices. Disable the onboard > Wi-Fi and Bluetooth nodes when the overlay is selected so the device tree > matches the hardware variant and does not probe the unavailable onboard > connectivity path. > > Describe the PCIe and UART connections through the M.2 connector, the > 3.3 V supply, the W_DISABLE signals and the PCIe reset signal. > > The Wi-Fi PCIe path was tested on a Shikra IQS EVK with a QCC2072 > module. The overlay was applied, the link trained at Gen2 x1 and the > endpoint enumerated. Bluetooth UART and HCI runtime validation is > pending. > > Co-developed-by: Wei Deng <wei.deng@oss.qualcomm.com> > Signed-off-by: Wei Deng <wei.deng@oss.qualcomm.com> > Signed-off-by: Linghui Wu <linghui.wu@oss.qualcomm.com> > --- > Changes in v2: > - Drop regulator-boot-on and startup-delay-us from the 3.3 V regulator. > > Changes in v3: > - Drop the unused reg override from the disabled TC9563 node. > > arch/arm64/boot/dts/qcom/Makefile | 1 + > .../dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso | 105 +++++++++++++++++ > 2 files changed, 106 insertions(+) > create mode 100644 arch/arm64/boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso > > diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile > index 1c86e7e98f55..799faa32e2d9 100644 > --- a/arch/arm64/boot/dts/qcom/Makefile > +++ b/arch/arm64/boot/dts/qcom/Makefile > @@ -339,6 +339,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sdx75-idp.dtb > dtb-$(CONFIG_ARCH_QCOM) += shikra-cqm-evk.dtb > dtb-$(CONFIG_ARCH_QCOM) += shikra-cqs-evk.dtb > dtb-$(CONFIG_ARCH_QCOM) += shikra-iqs-evk.dtb > +dtb-$(CONFIG_ARCH_QCOM) += shikra-iqs-evk-m2-wifi-bt.dtbo Overlays must be applied to a base DT to test that they apply. Sashiko has pointed out that this doesn't apply on every version you've sent and you've not replied to the report. Please reply on the other issues. Rob ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v3] arm64: dts: qcom: shikra-iqs: add M.2 Wi-Fi and Bluetooth overlay 2026-10-20 2:09 ` [PATCH v3] " Linghui Wu 2026-10-20 8:19 ` sashiko-bot 2026-10-21 17:18 ` Rob Herring @ 2026-10-21 23:20 ` Dmitry Baryshkov 2 siblings, 0 replies; 9+ messages in thread From: Dmitry Baryshkov @ 2026-10-21 23:20 UTC (permalink / raw) To: Linghui Wu Cc: Bjorn Andersson, Konrad Dybcio, kernel, Rob Herring, Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree, linux-kernel, Miaoqing Pan, Hangtian Zhu, Cheng Jiang, Wei Deng On Tue, Oct 20, 2026 at 10:09:25AM +0800, Linghui Wu wrote: > Add an overlay for M.2 Key-E Wi-Fi and Bluetooth modules on the Qualcomm > Shikra IQS EVK. > > The M.2 variant uses the external module connected through the Key-E > connector instead of the onboard WCN3988 devices. Disable the onboard > Wi-Fi and Bluetooth nodes when the overlay is selected so the device tree > matches the hardware variant and does not probe the unavailable onboard > connectivity path. You already got a question on GitHub and ignored it there. Why are you disaling onboard WiFi/BT? What makes it unavailable? > > Describe the PCIe and UART connections through the M.2 connector, the > 3.3 V supply, the W_DISABLE signals and the PCIe reset signal. > > The Wi-Fi PCIe path was tested on a Shikra IQS EVK with a QCC2072 > module. The overlay was applied, the link trained at Gen2 x1 and the > endpoint enumerated. Bluetooth UART and HCI runtime validation is > pending. Please don't send unvalidated patches. > > Co-developed-by: Wei Deng <wei.deng@oss.qualcomm.com> > Signed-off-by: Wei Deng <wei.deng@oss.qualcomm.com> > Signed-off-by: Linghui Wu <linghui.wu@oss.qualcomm.com> > --- > Changes in v2: > - Drop regulator-boot-on and startup-delay-us from the 3.3 V regulator. > > Changes in v3: > - Drop the unused reg override from the disabled TC9563 node. > > arch/arm64/boot/dts/qcom/Makefile | 1 + > .../dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso | 105 +++++++++++++++++ > 2 files changed, 106 insertions(+) > create mode 100644 arch/arm64/boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso > > diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile > index 1c86e7e98f55..799faa32e2d9 100644 > --- a/arch/arm64/boot/dts/qcom/Makefile > +++ b/arch/arm64/boot/dts/qcom/Makefile > @@ -339,6 +339,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sdx75-idp.dtb > dtb-$(CONFIG_ARCH_QCOM) += shikra-cqm-evk.dtb > dtb-$(CONFIG_ARCH_QCOM) += shikra-cqs-evk.dtb > dtb-$(CONFIG_ARCH_QCOM) += shikra-iqs-evk.dtb > +dtb-$(CONFIG_ARCH_QCOM) += shikra-iqs-evk-m2-wifi-bt.dtbo How does the Makefile handle eother dtbos? > dtb-$(CONFIG_ARCH_QCOM) += sm4250-oneplus-billie2.dtb > dtb-$(CONFIG_ARCH_QCOM) += sm4450-qrd.dtb > dtb-$(CONFIG_ARCH_QCOM) += sm6115-fxtec-pro1x.dtb > diff --git a/arch/arm64/boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso b/arch/arm64/boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso > new file mode 100644 > index 000000000000..9496c6558eef > --- /dev/null > +++ b/arch/arm64/boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso > @@ -0,0 +1,105 @@ > +// SPDX-License-Identifier: BSD-3-Clause > +/* > + * Copyright (c) 2026 Qualcomm Technologies, Inc. and/or its subsidiaries. > + */ > + > +/dts-v1/; > +/plugin/; > + > +#include <dt-bindings/gpio/gpio.h> > + > +&{/} { > + m2_keye_3p3: regulator-m2-keye-3p3 { > + compatible = "regulator-fixed"; > + regulator-name = "VREG_3P3_KEYE"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + gpio = <&qps_gpio_expander 6 GPIO_ACTIVE_HIGH>; > + enable-active-high; > + }; > + > + wifi-bt-connector { > + compatible = "pcie-m2-e-connector"; > + > + vpcie3v3-supply = <&m2_keye_3p3>; > + w-disable1-gpios = <&tlmm 61 GPIO_ACTIVE_LOW>; > + w-disable2-gpios = <&tlmm 60 GPIO_ACTIVE_LOW>; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + #address-cells = <1>; > + #size-cells = <0>; > + > + m2_e_pcie_ep: endpoint@0 { > + reg = <0>; > + remote-endpoint = <&pcie_port0_ep>; > + }; > + }; > + > + port@3 { > + reg = <3>; > + #address-cells = <1>; > + #size-cells = <0>; > + > + m2_e_uart_ep: endpoint@0 { > + reg = <0>; > + remote-endpoint = <&uart8_ep>; > + }; > + }; > + }; > + }; > +}; > + > +&{/wcn3988-pmu} { Add a label to the PMU and update it by label rather than by the path. If the path changes, this node, I think, will happily create a new one. Using label will generate an error. > + status = "disabled"; > +}; > + > +&i2c3 { > + qps_gpio_expander: gpio@3c { > + compatible = "nxp,pca9534"; > + reg = <0x3c>; > + gpio-controller; > + #gpio-cells = <2>; > + }; > +}; > + > +&pcie { > + iommu-map = <0x0 &apps_smmu 0x0800 0x0 0x1>, > + <0x100 &apps_smmu 0x0801 0x0 0x1>; > + vddpe-3v3-supply = <&m2_keye_3p3>; > +}; > + > +&pcie_port0 { > + compatible = "pciclass,0604"; > + reset-gpios = <&tlmm 118 GPIO_ACTIVE_LOW>; > + > + port { > + pcie_port0_ep: endpoint { > + remote-endpoint = <&m2_e_pcie_ep>; > + }; > + }; > +}; > + > +&tc9563 { > + status = "disabled"; > +}; > + > +&uart8 { > + bluetooth { > + status = "disabled"; > + }; > + > + port { > + uart8_ep: endpoint { > + remote-endpoint = <&m2_e_uart_ep>; > + }; > + }; How does the UART switch from the onboard WiFi/BT card to the M.2 slot? Is ther an automatic switch? > +}; > + > +&wifi { > + status = "disabled"; > +}; > -- > 2.43.0 -- With best wishes Dmitry ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2026-10-21 23:20 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-10-12 12:29 [PATCH] arm64: dts: qcom: shikra-iqs: add M.2 Wi-Fi and Bluetooth overlay Linghui Wu 2026-10-12 12:44 ` sashiko-bot 2026-10-13 4:55 ` [PATCH v2] " Linghui Wu 2026-10-13 5:04 ` sashiko-bot 2026-10-16 12:37 ` Konrad Dybcio 2026-10-20 2:09 ` [PATCH v3] " Linghui Wu 2026-10-20 8:19 ` sashiko-bot 2026-10-21 17:18 ` Rob Herring 2026-10-21 23:20 ` Dmitry Baryshkov
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox