[PATCH v3 3/8] arm64: dts: qcom: shikra: Add gpr node

From: Mohammad Rafi Shaik

Date: Thu Sep 17 2026 - 00:38:20 EST


Add GPR (Generic Packet Router) node along with APM (Audio Process
Manager) and PRM (Proxy Resource Manager) audio services.

Add a dedicated MDSP carveout memory region for audio usecases on
Shikra and mark both existing audio heap and MDSP carveout regions
as shared DMA pools.

Update the Q6 APM DAI node to reference multiple memory regions,
where index 0 is used for control path buffers and index 1 is used
for MDSP data path buffers. This separation ensures proper memory
allocation and access for APM communication between APSS and MDSP.

Also add shared-dma-pool compatibility to the existing audio heap
region to align with upstream DMA pool usage.

Co-developed-by: Ajay Kumar Nandam <ajay.nandam@xxxxxxxxxxxxxxxx>
Signed-off-by: Ajay Kumar Nandam <ajay.nandam@xxxxxxxxxxxxxxxx>
Signed-off-by: Mohammad Rafi Shaik <mohammad.rafi.shaik@xxxxxxxxxxxxxxxx>
---
arch/arm64/boot/dts/qcom/shikra.dtsi | 49 +++++++++++++++++++++++++++++++++++-
1 file changed, 48 insertions(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/qcom/shikra.dtsi b/arch/arm64/boot/dts/qcom/shikra.dtsi
index 7633d274e090..21e4e6a7e12a 100644
--- a/arch/arm64/boot/dts/qcom/shikra.dtsi
+++ b/arch/arm64/boot/dts/qcom/shikra.dtsi
@@ -8,6 +8,7 @@
#include <dt-bindings/clock/qcom,rpmcc.h>
#include <dt-bindings/clock/qcom,shikra-audiocorecc.h>
#include <dt-bindings/clock/qcom,shikra-gcc.h>
+#include <dt-bindings/firmware/qcom,scm.h>
#include <dt-bindings/interconnect/qcom,icc.h>
#include <dt-bindings/interconnect/qcom,osm-l3.h>
#include <dt-bindings/dma/qcom-gpi.h>
@@ -16,6 +17,7 @@
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/phy/phy-qcom-qmp.h>
#include <dt-bindings/power/qcom-rpmpd.h>
+#include <dt-bindings/soc/qcom,gpr.h>
#include <dt-bindings/sound/qcom,q6dsp-lpass-ports.h>
#include <dt-bindings/thermal/thermal.h>

@@ -476,7 +478,14 @@ smem_mem: smem@86000000 {
};

audio_heap_mem: audio-heap@86200000 {
- reg = <0x0 0x86200000 0x0 0x100000>;
+ compatible = "shared-dma-pool";
+ reg = <0x0 0x86200000 0x0 0x40000>;
+ no-map;
+ };
+
+ audio_mdsp_carveout_mem: audio-mdsp-carveout@86240000 {
+ compatible = "shared-dma-pool";
+ reg = <0x0 0x86240000 0x0 0x100000>;
no-map;
};

@@ -2410,6 +2419,44 @@ glink-edge {
mboxes = <&apcs_glb 12>;
qcom,remote-pid = <1>;
label = "mpss";
+
+ gpr: gpr {
+ compatible = "qcom,gpr";
+ qcom,glink-channels = "modem_apps";
+ qcom,domain = <GPR_DOMAIN_ID_MODEM>;
+ qcom,intents = <200 20>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ q6apm: service@1 {
+ compatible = "qcom,q6apm";
+ reg = <GPR_APM_MODULE_IID>;
+ #sound-dai-cells = <0>;
+
+ q6apmbedai: bedais {
+ compatible = "qcom,q6apm-lpass-dais";
+ #sound-dai-cells = <1>;
+ };
+
+ q6apmdai: dais {
+ compatible = "qcom,q6apm-dais";
+ memory-region = <&audio_heap_mem
+ &audio_mdsp_carveout_mem>;
+ qcom,vmid = <QCOM_SCM_VMID_LPASS
+ QCOM_SCM_VMID_MSS_MSA>;
+ };
+ };
+
+ q6prm: service@2 {
+ compatible = "qcom,q6prm";
+ reg = <GPR_PRM_MODULE_IID>;
+
+ q6prmcc: clock-controller {
+ compatible = "qcom,q6prm-lpass-clocks";
+ #clock-cells = <2>;
+ };
+ };
+ };
};
};


--
2.34.1