From b36195b010de80ca1635b6dc2e9e509a70957952 Mon Sep 17 00:00:00 2001 From: shaspand Date: Wed, 29 Jul 2026 19:04:48 +0530 Subject: [PATCH 1/2] FROMLIST: arm64: dts: qcom: qcs6490-rb3gen2: add audio CMA memory region for AudioReach Add a dynamic CMA pool for the AudioReach audio stack on qcs6490-rb3gen2. Use alloc-ranges to let the kernel pick a free address rather than a fixed reg, which avoided EFI-reserved memory at 0x9cc00000. Add 4 MiB alignment to satisfy CMA_MIN_ALIGNMENT_BYTES. Wire memory-region into q6apmdai so the q6apm-audio-mem-cma child driver can attach the pool. Based on the equivalent implementation for lemans (SA8295P). Link: https://lore.kernel.org/all/20260825133333.376591-1-karthik.s@oss.qualcomm.com/ --- arch/arm64/boot/dts/qcom/qcs6490-audioreach.dtsi | 1 + arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/qcs6490-audioreach.dtsi b/arch/arm64/boot/dts/qcom/qcs6490-audioreach.dtsi index c1867711298b7..06f65ae8afbc4 100644 --- a/arch/arm64/boot/dts/qcom/qcs6490-audioreach.dtsi +++ b/arch/arm64/boot/dts/qcom/qcs6490-audioreach.dtsi @@ -97,6 +97,7 @@ q6apmdai: dais { compatible = "qcom,q6apm-dais"; iommus = <&apps_smmu 0x1801 0x0>; + memory-region = <&audio_cma_mem>; }; q6apmbedai: bedais { diff --git a/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts b/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts index 14ccccc3013fa..4ce79a09ebffc 100644 --- a/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts +++ b/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts @@ -163,6 +163,14 @@ reg = <0x0 0xd0600000 0x0 0x100000>; no-map; }; + + audio_cma_mem: qcom,audio-ml { + compatible = "shared-dma-pool"; + alloc-ranges = <0x0 0x00000000 0x0 0xffffffff>; + reusable; + alignment = <0x0 0x400000>; + size = <0x0 0x1000000>; + }; }; gpio-keys { From 9d3a7aad9986aa6791a90a5684261bcd745c3611 Mon Sep 17 00:00:00 2001 From: shaspand Date: Sun, 9 Aug 2026 00:00:00 +0530 Subject: [PATCH 2/2] FROMLIST: arm64: dts: qcom: kodiak-el2: add LPASS AML IOMMU SIDs for eNPU audio offload MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add the three LPASS AML stream IDs to remoteproc_adsp in the kodiak EL2 overlay so that the q6apm-audio-mem-cma child driver can obtain an IOMMU domain via iommu_get_domain_for_dev(dev). Without these SIDs the CMA device has no IOMMU domain (has_iommu=0) and IOCTL_MAP_HYP_ASSIGN falls through to the SCM path, which fails on RB3Gen2 because Gunyah owns the SMMU. SID assignments: 0x1860 / mask 0x9 — ML Activation + Weights + Write streams 0x1862 / mask 0x1 — ML Config + Bias streams 0x1864 / mask 0x0 — ML Normalized Data stream Link: https://lore.kernel.org/all/20260825133333.376591-1-karthik.s@oss.qualcomm.com/ Signed-off-by: shaspand --- arch/arm64/boot/dts/qcom/kodiak-el2.dtso | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/qcom/kodiak-el2.dtso b/arch/arm64/boot/dts/qcom/kodiak-el2.dtso index 5cab90b6a9dd2..3100f20a76df6 100644 --- a/arch/arm64/boot/dts/qcom/kodiak-el2.dtso +++ b/arch/arm64/boot/dts/qcom/kodiak-el2.dtso @@ -13,7 +13,10 @@ }; &remoteproc_adsp { - iommus = <&apps_smmu 0x1800 0x0>; + iommus = <&apps_smmu 0x1800 0x0>, + <&apps_smmu 0x1860 0x9>, + <&apps_smmu 0x1862 0x1>, + <&apps_smmu 0x1864 0x0>; }; &remoteproc_cdsp {