Re: [PATCH v3 10/10] arm64: dts: qcom: shikra: Enable Bluetooth and WiFi on EVK boards
From: Loic Poulain
Date: Sat Jun 06 2026 - 08:57:55 EST
On Mon, Jun 1, 2026 at 2:57 PM Komal Bajaj <komal.bajaj@xxxxxxxxxxxxxxxx> wrote:
>
> Enable Bluetooth and WiFi connectivity on Shikra CQM, CQS and IQS
> EVK boards using the WCN3988 combo chip.
>
> For Bluetooth, enable uart8 and add WCN3988 Bluetooth node with
> board-specific regulator supplies across CQM, CQS and IQS Shikra
> EVK boards.
>
> For WiFi, introduce the wcn3990-wifi hardware node in shikra.dtsi
> with register space, interrupts, IOMMU configuration and reserved
> memory. The node is kept disabled by default and enabled per-board
> with the appropriate PMIC supply connections and calibration variant
> selection.
>
> Co-developed-by: Yepuri Siddu <yepuri.siddu@xxxxxxxxxxxxxxxx>
> Signed-off-by: Yepuri Siddu <yepuri.siddu@xxxxxxxxxxxxxxxx>
> Co-developed-by: Miaoqing Pan <miaoqing.pan@xxxxxxxxxxxxxxxx>
> Signed-off-by: Miaoqing Pan <miaoqing.pan@xxxxxxxxxxxxxxxx>
> Signed-off-by: Komal Bajaj <komal.bajaj@xxxxxxxxxxxxxxxx>
> ---
> arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts | 59 +++++++++++++++++++++++++
> arch/arm64/boot/dts/qcom/shikra-cqs-evk.dts | 59 +++++++++++++++++++++++++
> arch/arm64/boot/dts/qcom/shikra-evk.dtsi | 15 +++++++
> arch/arm64/boot/dts/qcom/shikra-iqs-evk.dts | 67 +++++++++++++++++++++++++++++
> arch/arm64/boot/dts/qcom/shikra.dtsi | 23 ++++++++++
> 5 files changed, 223 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts b/arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts
> index b112b21b1d79..c2ed0396533a 100644
> --- a/arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts
> +++ b/arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts
> @@ -16,11 +16,48 @@ / {
> aliases {
> mmc0 = &sdhc_1;
> serial0 = &uart0;
> + serial1 = &uart8;
> };
>
> chosen {
> stdout-path = "serial0:115200n8";
> };
> +
> + wcn3988-pmu {
> + compatible = "qcom,wcn3988-pmu";
> +
> + pinctrl-0 = <&sw_ctrl_default>;
> + pinctrl-names = "default";
> +
> + vddio-supply = <&pm4125_l7>;
> + vddxo-supply = <&pm4125_l13>;
> + vddrf-supply = <&pm4125_l10>;
> + vddch0-supply = <&pm4125_l22>;
> +
> + swctrl-gpios = <&tlmm 88 GPIO_ACTIVE_HIGH>;
> +
> + regulators {
> + vreg_pmu_io: ldo0 {
> + regulator-name = "vreg_pmu_io";
> + };
> +
> + vreg_pmu_xo: ldo1 {
> + regulator-name = "vreg_pmu_xo";
> + };
> +
> + vreg_pmu_rf: ldo2 {
> + regulator-name = "vreg_pmu_rf";
> + };
> +
> + vreg_pmu_ch0: ldo3 {
> + regulator-name = "vreg_pmu_ch0";
> + };
> +
> + vreg_pmu_ch1: ldo4 {
> + regulator-name = "vreg_pmu_ch1";
> + };
> + };
> + };
> };
>
> &remoteproc_cdsp {
> @@ -57,3 +94,25 @@ &sdhc_1 {
>
> status = "okay";
> };
> +
> +&uart8 {
> + status = "okay";
> +
> + bluetooth {
> + vddio-supply = <&vreg_pmu_io>;
> + vddxo-supply = <&vreg_pmu_xo>;
> + vddrf-supply = <&vreg_pmu_rf>;
> + vddch0-supply = <&vreg_pmu_ch0>;
> + };
> +};
> +
> +&wifi {
> + vdd-0.8-cx-mx-supply = <&pm4125_l7>;
> + vdd-1.8-xo-supply = <&vreg_pmu_xo>;
> + vdd-1.3-rfa-supply = <&vreg_pmu_rf>;
> + vdd-3.3-ch0-supply = <&vreg_pmu_ch0>;
> + qcom,calibration-variant = "Shikra_EVK";
> + firmware-name = "cq2390";
> +
> + status = "okay";
> +};
> diff --git a/arch/arm64/boot/dts/qcom/shikra-cqs-evk.dts b/arch/arm64/boot/dts/qcom/shikra-cqs-evk.dts
> index e62ba5aef71f..3bfd0050064f 100644
> --- a/arch/arm64/boot/dts/qcom/shikra-cqs-evk.dts
> +++ b/arch/arm64/boot/dts/qcom/shikra-cqs-evk.dts
> @@ -16,11 +16,48 @@ / {
> aliases {
> mmc0 = &sdhc_1;
> serial0 = &uart0;
> + serial1 = &uart8;
> };
>
> chosen {
> stdout-path = "serial0:115200n8";
> };
> +
> + wcn3988-pmu {
> + compatible = "qcom,wcn3988-pmu";
> +
> + pinctrl-0 = <&sw_ctrl_default>;
> + pinctrl-names = "default";
> +
> + vddio-supply = <&pm4125_l7>;
> + vddxo-supply = <&pm4125_l13>;
> + vddrf-supply = <&pm4125_l10>;
> + vddch0-supply = <&pm4125_l22>;
> +
> + swctrl-gpios = <&tlmm 88 GPIO_ACTIVE_HIGH>;
> +
> + regulators {
> + vreg_pmu_io: ldo0 {
> + regulator-name = "vreg_pmu_io";
> + };
> +
> + vreg_pmu_xo: ldo1 {
> + regulator-name = "vreg_pmu_xo";
> + };
> +
> + vreg_pmu_rf: ldo2 {
> + regulator-name = "vreg_pmu_rf";
> + };
> +
> + vreg_pmu_ch0: ldo3 {
> + regulator-name = "vreg_pmu_ch0";
> + };
> +
> + vreg_pmu_ch1: ldo4 {
> + regulator-name = "vreg_pmu_ch1";
> + };
> + };
> + };
> };
>
> &remoteproc_cdsp {
> @@ -57,3 +94,25 @@ &sdhc_1 {
>
> status = "okay";
> };
> +
> +&uart8 {
> + status = "okay";
> +
> + bluetooth {
> + vddio-supply = <&vreg_pmu_io>;
> + vddxo-supply = <&vreg_pmu_xo>;
> + vddrf-supply = <&vreg_pmu_rf>;
> + vddch0-supply = <&vreg_pmu_ch0>;
> + };
> +};
> +
> +&wifi {
> + vdd-0.8-cx-mx-supply = <&pm4125_l7>;
> + vdd-1.8-xo-supply = <&vreg_pmu_xo>;
> + vdd-1.3-rfa-supply = <&vreg_pmu_rf>;
> + vdd-3.3-ch0-supply = <&vreg_pmu_ch0>;
> + qcom,calibration-variant = "Shikra_EVK";
> + firmware-name = "cq2390";
> +
> + status = "okay";
> +};
> diff --git a/arch/arm64/boot/dts/qcom/shikra-evk.dtsi b/arch/arm64/boot/dts/qcom/shikra-evk.dtsi
> index 8b03d4eafa6d..a79f44aff968 100644
> --- a/arch/arm64/boot/dts/qcom/shikra-evk.dtsi
> +++ b/arch/arm64/boot/dts/qcom/shikra-evk.dtsi
> @@ -8,7 +8,22 @@ &qupv3_0 {
> status = "okay";
> };
>
> +&tlmm {
> + sw_ctrl_default: sw-ctrl-default-state {
> + pins = "gpio88";
> + function = "gpio";
> + bias-pull-down;
> + };
> +};
> +
> &uart0 {
> status = "okay";
> };
>
> +&uart8 {
> + bluetooth {
> + compatible = "qcom,wcn3988-bt";
> + max-speed = <3200000>;
> + };
> +};
> +
> diff --git a/arch/arm64/boot/dts/qcom/shikra-iqs-evk.dts b/arch/arm64/boot/dts/qcom/shikra-iqs-evk.dts
> index 727809430fd1..95bd797d009d 100644
> --- a/arch/arm64/boot/dts/qcom/shikra-iqs-evk.dts
> +++ b/arch/arm64/boot/dts/qcom/shikra-iqs-evk.dts
> @@ -16,11 +16,56 @@ / {
> aliases {
> mmc0 = &sdhc_1;
> serial0 = &uart0;
> + serial1 = &uart8;
> };
>
> chosen {
> stdout-path = "serial0:115200n8";
> };
> +
> + vreg_wcn_3p3: regulator-wcn-3p3 {
> + compatible = "regulator-fixed";
> + regulator-name = "wcn_3p3";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-always-on;
> + };
> +
> + wcn3988-pmu {
> + compatible = "qcom,wcn3988-pmu";
> +
> + pinctrl-0 = <&sw_ctrl_default>;
> + pinctrl-names = "default";
> +
> + vddio-supply = <&pm8150_s4>;
> + vddxo-supply = <&pm8150_l12>;
> + vddrf-supply = <&pm8150_l8>;
> + vddch0-supply = <&vreg_wcn_3p3>;
> +
> + swctrl-gpios = <&tlmm 88 GPIO_ACTIVE_HIGH>;
> +
> + regulators {
> + vreg_pmu_io: ldo0 {
> + regulator-name = "vreg_pmu_io";
> + };
> +
> + vreg_pmu_xo: ldo1 {
> + regulator-name = "vreg_pmu_xo";
> + };
> +
> + vreg_pmu_rf: ldo2 {
> + regulator-name = "vreg_pmu_rf";
> + };
> +
> + vreg_pmu_ch0: ldo3 {
> + regulator-name = "vreg_pmu_ch0";
> + };
> +
> + vreg_pmu_ch1: ldo4 {
> + regulator-name = "vreg_pmu_ch1";
> + };
> + };
> + };
> };
>
> &remoteproc_cdsp {
> @@ -57,3 +102,25 @@ &sdhc_1 {
>
> status = "okay";
> };
> +
> +&uart8 {
> + status = "okay";
> +
> + bluetooth {
> + vddio-supply = <&vreg_pmu_io>;
> + vddxo-supply = <&vreg_pmu_xo>;
> + vddrf-supply = <&vreg_pmu_rf>;
> + vddch0-supply = <&vreg_pmu_ch0>;
> + };
> +};
> +
> +&wifi {
> + vdd-0.8-cx-mx-supply = <&pm8150_s4>;
> + vdd-1.8-xo-supply = <&vreg_pmu_xo>;
> + vdd-1.3-rfa-supply = <&vreg_pmu_rf>;
> + vdd-3.3-ch0-supply = <&vreg_pmu_ch0>;
> + qcom,calibration-variant = "Shikra_EVK";
> + firmware-name = "cq2390";
Does the firmware differ from the one used on Agatti (QCM2290)?
> +
> + status = "okay";
> +};
> diff --git a/arch/arm64/boot/dts/qcom/shikra.dtsi b/arch/arm64/boot/dts/qcom/shikra.dtsi
> index c1f25ce89bb1..6bac6ebac8da 100644
> --- a/arch/arm64/boot/dts/qcom/shikra.dtsi
> +++ b/arch/arm64/boot/dts/qcom/shikra.dtsi
> @@ -2064,6 +2064,29 @@ apps_smmu: iommu@c600000 {
> <GIC_SPI 150 IRQ_TYPE_LEVEL_HIGH 0>;
> };
>
> + wifi: wifi@c800000 {
> + compatible = "qcom,wcn3990-wifi";
> + reg = <0x0 0x0c800000 0x0 0x800000>;
> + reg-names = "membase";
> + memory-region = <&wlan_mem>;
> + interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH 0>,
> + <GIC_SPI 359 IRQ_TYPE_LEVEL_HIGH 0>,
> + <GIC_SPI 360 IRQ_TYPE_LEVEL_HIGH 0>,
> + <GIC_SPI 361 IRQ_TYPE_LEVEL_HIGH 0>,
> + <GIC_SPI 362 IRQ_TYPE_LEVEL_HIGH 0>,
> + <GIC_SPI 363 IRQ_TYPE_LEVEL_HIGH 0>,
> + <GIC_SPI 364 IRQ_TYPE_LEVEL_HIGH 0>,
> + <GIC_SPI 365 IRQ_TYPE_LEVEL_HIGH 0>,
> + <GIC_SPI 366 IRQ_TYPE_LEVEL_HIGH 0>,
> + <GIC_SPI 367 IRQ_TYPE_LEVEL_HIGH 0>,
> + <GIC_SPI 368 IRQ_TYPE_LEVEL_HIGH 0>,
> + <GIC_SPI 369 IRQ_TYPE_LEVEL_HIGH 0>;
> + iommus = <&apps_smmu 0x1a0 0x1>;
> + qcom,msa-fixed-perm;
> +
> + status = "disabled";
> + };
> +
> intc: interrupt-controller@f200000 {
> compatible = "arm,gic-v3";
> reg = <0x0 0xf200000 0x0 0x10000>,
>
> --
> 2.34.1
>
>