From: Linghui Wu <linghui.wu@oss.qualcomm.com>
To: Bjorn Andersson <andersson@kernel.org>,
Konrad Dybcio <konradybcio@kernel.org>,
kernel@oss.qualcomm.com
Cc: Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>,
linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org,
Miaoqing Pan <miaoqing.pan@oss.qualcomm.com>,
Hangtian Zhu <hangtian.zhu@oss.qualcomm.com>,
Cheng Jiang <cheng.jiang@oss.qualcomm.com>,
Wei Deng <wei.deng@oss.qualcomm.com>,
Linghui Wu <linghui.wu@oss.qualcomm.com>
Subject: [PATCH v4] arm64: dts: qcom: shikra-iqs: add M.2 Wi-Fi and Bluetooth overlay
Date: Mon, 2 Nov 2026 12:58:15 +0800 [thread overview]
Message-ID: <20261102045815.2938940-1-linghui.wu@oss.qualcomm.com> (raw)
In-Reply-To: <20261012122934.3240030-1-linghui.wu@oss.qualcomm.com>
Add an overlay for M.2 Key-E Wi-Fi and Bluetooth modules on the Qualcomm
Shikra IQS EVK.
The Shikra product design supports either the onboard Apache WCN3988 path
or the M.2 HSP Cologne path at a time; the two connectivity paths are not
intended to operate simultaneously. The overlay describes the board after
hardware rework selects the M.2 path. Disable the inherited onboard Wi-Fi
and Bluetooth nodes when this overlay is selected.
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 with a QCC2072 module. The overlay was
applied, the link trained at Gen2 x1, the endpoint enumerated, and ath12k
started MHI. The Bluetooth UART and HCI path was also tested and the
QCC2072 controller initialized successfully.
Link: https://lore.kernel.org/r/20261020020925.3915548-1.linghui.wu@oss.qualcomm.com
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.
Changes in v4:
- Build a composite DTB to validate that the overlay applies to the base DTB.
- Add a label to the WCN3988 PMU and reference it from the overlay.
- Explain that the product design does not operate the onboard and M.2
connectivity paths simultaneously.
- Update the validation status after testing Bluetooth UART and HCI.
- Restore the TC9563 reg override after runtime testing showed that the stale
OF node otherwise matches the directly connected QCC2072 endpoint.
arch/arm64/boot/dts/qcom/Makefile | 3 +
.../boot/dts/qcom/shikra-iqs-evk-m2-wifi-bt.dtso | 106 ++++++++++++++++++++
arch/arm64/boot/dts/qcom/shikra-iqs-evk.dts | 2 +-
3 files changed, 110 insertions(+), 1 deletion(-)
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 71f9822ad942f3854f4ccaba9cad484298c994aa..c61bf4577d0e67a12e17f7537a0b4dc91c8e5150 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -427,11 +427,14 @@ shikra-cqm-evk-hdmi-dtbs := shikra-cqm-evk.dtb shikra-cqm-cqs-evk-hdmi.dtbo
shikra-cqs-evk-hdmi-dtbs := shikra-cqs-evk.dtb shikra-cqm-cqs-evk-hdmi.dtbo
shikra-iqs-evk-dlc-panel-dtbs := shikra-iqs-evk.dtb shikra-iqs-evk-dlc-panel.dtbo
shikra-iqs-evk-lvds-auo,g133han01-dtbs := shikra-iqs-evk.dtb shikra-iqs-evk-lvds-auo,g133han01.dtbo
+shikra-iqs-evk-m2-wifi-bt-dtbs := shikra-iqs-evk.dtb shikra-iqs-evk-m2-wifi-bt.dtbo
dtb-$(CONFIG_ARCH_QCOM) += shikra-cqm-evk-hdmi.dtb
dtb-$(CONFIG_ARCH_QCOM) += shikra-cqs-evk-hdmi.dtb
dtb-$(CONFIG_ARCH_QCOM) += shikra-iqs-evk-dlc-panel.dtb
dtb-$(CONFIG_ARCH_QCOM) += shikra-iqs-evk-lvds-auo,g133han01.dtb
+dtb-$(CONFIG_ARCH_QCOM) += shikra-iqs-evk-m2-wifi-bt.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
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 0000000000000000000000000000000000000000..7d65e67bfcc2b05259e01e658d007274cc4f13c4
--- /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";
+};
diff --git a/arch/arm64/boot/dts/qcom/shikra-iqs-evk.dts b/arch/arm64/boot/dts/qcom/shikra-iqs-evk.dts
index e4058a58d05f3d7bf2f69ab945ce5eb6d6635320..779247b7f80af61a394d0dbdec23411ce5d5cb04 100644
--- a/arch/arm64/boot/dts/qcom/shikra-iqs-evk.dts
+++ b/arch/arm64/boot/dts/qcom/shikra-iqs-evk.dts
@@ -164,7 +164,7 @@ vreg_wcn_3p3: regulator-wcn-3p3 {
regulator-always-on;
};
- wcn3988-pmu {
+ wcn3988_pmu: wcn3988-pmu {
compatible = "qcom,wcn3988-pmu";
pinctrl-0 = <&sw_ctrl_default>;
--
2.43.0
prev parent reply other threads:[~2026-11-02 4:58 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-12 12:29 [PATCH] " Linghui Wu
2026-10-13 4:55 ` [PATCH v2] " Linghui Wu
2026-10-16 12:37 ` Konrad Dybcio
2026-10-20 2:09 ` [PATCH v3] " Linghui Wu
2026-10-21 17:18 ` Rob Herring
2026-11-02 4:32 ` Linghui Wu
2026-10-21 23:20 ` Dmitry Baryshkov
2026-11-02 4:58 ` Linghui Wu [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261102045815.2938940-1-linghui.wu@oss.qualcomm.com \
--to=linghui.wu@oss.qualcomm.com \
--cc=andersson@kernel.org \
--cc=cheng.jiang@oss.qualcomm.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.baryshkov@oss.qualcomm.com \
--cc=hangtian.zhu@oss.qualcomm.com \
--cc=kernel@oss.qualcomm.com \
--cc=konradybcio@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=miaoqing.pan@oss.qualcomm.com \
--cc=robh@kernel.org \
--cc=wei.deng@oss.qualcomm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®