Re: [PATCH 1/3] arm64: dts: qcom: hamoa-iot-evk: Describe the PCIe M.2 Key E connector

From: Manivannan Sadhasivam

Date: Tue Jul 14 2026 - 09:54:03 EST


On Thu, Jul 09, 2026 at 12:59:40PM +0530, Wei Deng wrote:
> The hamoa IoT EVK has the PCIe M.2 Mechanical Key E connector to
> connect wireless connectivity cards over PCIe and UART interfaces.
> Hence, describe the connector node, link it with the PCIe 4 Root Port
> node and replace the static BT serdev under UART14 and the
> chip-specific wifi@0 child node with graph port/endpoints, allowing
> the pwrseq-pcie-m2 driver to power the card and dynamically create
> the BT serdev device.
>
> The M.2 Key E connector is powered by vreg_wcn_3p3. WLAN enable is
> controlled via W_DISABLE1# (GPIO117) and BT enable via W_DISABLE2#
> (GPIO116), both described as active-low GPIOs on the connector node.
>
> Remove the chip-specific wcn7850-pmu node as the M.2 connector
> approach replaces the WCN7850-specific power sequencing with a
> chip-agnostic one managed by the pwrseq-pcie-m2 driver.
>
> Also add 'compatible = "pciclass,0604"' to pcie4_port0 in hamoa.dtsi
> to allow the PCI subsystem to associate the DT node with the
> PCI-to-PCI bridge device.
>
> Signed-off-by: Wei Deng <wei.deng@xxxxxxxxxxxxxxxx>

Reviewed-by: Manivannan Sadhasivam <mani@xxxxxxxxxx>

- Mani

> ---
> arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts | 129 ++++++++++-------------------
> arch/arm64/boot/dts/qcom/hamoa.dtsi | 1 +
> 2 files changed, 47 insertions(+), 83 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts b/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts
> index 9fa86bb6438e..41c2004f0ef6 100644
> --- a/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts
> +++ b/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts
> @@ -68,6 +68,44 @@ chosen {
> stdout-path = "serial0:115200n8";
> };
>
> + connector {
> + compatible = "pcie-m2-e-connector";
> + vpcie3v3-supply = <&vreg_wcn_3p3>;
> +
> + w-disable1-gpios = <&tlmm 117 GPIO_ACTIVE_LOW>;
> + w-disable2-gpios = <&tlmm 116 GPIO_ACTIVE_LOW>;
> +
> + pinctrl-0 = <&wcn_wlan_en>, <&wcn_bt_en>;
> + pinctrl-names = "default";
> +
> + 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 = <&pcie4port0_ep>;
> + };
> + };
> +
> + port@3 {
> + reg = <3>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + m2_e_uart_ep: endpoint@0 {
> + reg = <0>;
> + remote-endpoint = <&uart14_ep>;
> + };
> + };
> + };
> + };
> +
> connector3 {
> compatible = "usb-a-connector";
> label = "USB-3-Type-A";
> @@ -676,65 +714,6 @@ usb_1_ss0_sbu_mux: endpoint {
> };
> };
> };
> -
> - wcn7850-pmu {
> - compatible = "qcom,wcn7850-pmu";
> -
> - vdd-supply = <&vreg_wcn_0p95>;
> - vddio-supply = <&vreg_l15b_1p8>;
> - vddaon-supply = <&vreg_wcn_0p95>;
> - vdddig-supply = <&vreg_wcn_0p95>;
> - vddrfa1p2-supply = <&vreg_wcn_1p9>;
> - vddrfa1p8-supply = <&vreg_wcn_1p9>;
> -
> - bt-enable-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>;
> - wlan-enable-gpios = <&tlmm 117 GPIO_ACTIVE_HIGH>;
> -
> - pinctrl-0 = <&wcn_bt_en>, <&wcn_wlan_en>;
> - pinctrl-names = "default";
> -
> - 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";
> - };
> - };
> - };
> };
>
> &i2c1 {
> @@ -1025,19 +1004,10 @@ &pcie4_port0 {
> reset-gpios = <&tlmm 146 GPIO_ACTIVE_LOW>;
> wake-gpios = <&tlmm 148 GPIO_ACTIVE_LOW>;
>
> - wifi@0 {
> - compatible = "pci17cb,1107";
> - reg = <0x10000 0x0 0x0 0x0 0x0>;
> -
> - vddaon-supply = <&vreg_pmu_aon_0p59>;
> - vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
> - vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
> - vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
> - 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>;
> + port {
> + pcie4port0_ep: endpoint {
> + remote-endpoint = <&m2_e_pcie_ep>;
> + };
> };
> };
>
> @@ -1531,17 +1501,10 @@ wcn_usb_sw_n: wcn-usb-sw-n-state {
> &uart14 {
> status = "okay";
>
> - bluetooth {
> - compatible = "qcom,wcn7850-bt";
> - max-speed = <3200000>;
> -
> - vddaon-supply = <&vreg_pmu_aon_0p59>;
> - vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
> - vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
> - vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
> - vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
> - vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
> - vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
> + port {
> + uart14_ep: endpoint {
> + remote-endpoint = <&m2_e_uart_ep>;
> + };
> };
> };
>
> diff --git a/arch/arm64/boot/dts/qcom/hamoa.dtsi b/arch/arm64/boot/dts/qcom/hamoa.dtsi
> index 60f485a4892e..566a6b4c6208 100644
> --- a/arch/arm64/boot/dts/qcom/hamoa.dtsi
> +++ b/arch/arm64/boot/dts/qcom/hamoa.dtsi
> @@ -3776,6 +3776,7 @@ &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
>
> pcie4_port0: pcie@0 {
> device_type = "pci";
> + compatible = "pciclass,0604";
> reg = <0x0 0x0 0x0 0x0 0x0>;
> bus-range = <0x01 0xff>;
>
>
> --
> 2.34.1
>

--
மணிவண்ணன் சதாசிவம்