[PATCH v3] arm64: dts: qcom: shikra: Add BAM-DMUX support
From: Vishnu Santhosh
Date: Sat Sep 19 2026 - 23:28:50 EST
Add the SMSM state entries, BAM-DMUX node, and BAM DMA controller needed
to provide modem data channels on Shikra.
Reserve a 256 KiB restricted DMA pool and reference it from both the
BAM-DMUX and BAM DMA nodes. Set qcom,vmid to NAV so the BAM-DMUX driver
can grant the modem access to the complete pool before requesting the DMA
channels.
The 256 KiB pool provides space for BAM-DMUX RX and TX buffers and BAM
descriptor FIFOs, with additional headroom.
Place the BAM-DMUX node below the modem remoteproc so userspace can
associate the resulting network interfaces with the owning remoteproc
through the device hierarchy.
Co-developed-by: Deepak Kumar Singh <deepak.singh@xxxxxxxxxxxxxxxx>
Signed-off-by: Deepak Kumar Singh <deepak.singh@xxxxxxxxxxxxxxxx>
Signed-off-by: Vishnu Santhosh <vishnu.santhosh@xxxxxxxxxxxxxxxx>
---
Changes in v3:
- Add a shared restricted DMA pool for BAM-DMUX mappings and BAM
descriptor FIFOs.
- Add memory-region references to the BAM-DMUX and BAM DMA nodes.
- Add qcom,vmid to grant NAV access to the pool.
- Replace and supersede the separate BAM-DMUX VMID extension v1:
https://lore.kernel.org/r/20260714-b4-qcom-shikra-dts-bam-dmux-vmid-ext-v1-1-5b19da8d7735@xxxxxxxxxxxxxxxx
- Link to v2: https://lore.kernel.org/r/20260711-qcom-shikra-dts-bam-dmux-v2-1-d5b33ee32138@xxxxxxxxxxxxxxxx
Changes in v2:
- Move the "bam-dmux" node below the modem remoteproc
("remoteproc_mpss"), instead of at the root, so that userspace can
associate the resulting network interfaces with the owning
remoteproc via udev/sysfs (Stephan)
- Add the "shikra-dt-m1" series as a declared prerequisite, since it
introduces the "remoteproc_mpss" node this series now depends on
- Link to v1: https://lore.kernel.org/r/20260611-qcom-shikra-dts-bam-dmux-v1-1-43d0b43d41ef@xxxxxxxxxxxxxxxx
---
arch/arm64/boot/dts/qcom/shikra.dtsi | 51 ++++++++++++++++++++++++++++++++++++
1 file changed, 51 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/shikra.dtsi b/arch/arm64/boot/dts/qcom/shikra.dtsi
index 92d22e3b6931cf49f213d1807f78fc1a261f290d..4980c125b7e1a45f3793ba2335b6cfd1702eb877 100644
--- a/arch/arm64/boot/dts/qcom/shikra.dtsi
+++ b/arch/arm64/boot/dts/qcom/shikra.dtsi
@@ -10,6 +10,7 @@
#include <dt-bindings/interconnect/qcom,icc.h>
#include <dt-bindings/interconnect/qcom,osm-l3.h>
#include <dt-bindings/dma/qcom-gpi.h>
+#include <dt-bindings/firmware/qcom,scm.h>
#include <dt-bindings/interconnect/qcom,rpm-icc.h>
#include <dt-bindings/interconnect/qcom,shikra.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
@@ -352,6 +353,13 @@ reserved_memory: reserved-memory {
#size-cells = <2>;
ranges;
+ bam_dmux_pool: restricted-dma-pool {
+ compatible = "restricted-dma-pool";
+ size = <0x0 0x40000>;
+ alignment = <0x0 0x40000>;
+ alloc-ranges = <0x0 0x80000000 0x0 0x80000000>;
+ };
+
hyp_mem: hyp@80000000 {
reg = <0x0 0x80000000 0x0 0x1600000>;
no-map;
@@ -500,6 +508,23 @@ modem_smp2p_in: slave-kernel {
};
};
+ smsm {
+ compatible = "qcom,smsm";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ mboxes = <0>, <&apcs_glb 13>;
+ apps_smsm: apps@0 {
+ reg = <0>;
+ #qcom,smem-state-cells = <1>;
+ };
+ modem_smsm: modem@1 {
+ reg = <1>;
+ interrupts = <GIC_SPI 69 IRQ_TYPE_EDGE_RISING 0>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+ };
+
soc: soc@0 {
compatible = "simple-bus";
@@ -1866,6 +1891,20 @@ glink-edge {
qcom,remote-pid = <1>;
label = "mpss";
};
+
+ bam_dmux: bam-dmux {
+ compatible = "qcom,bam-dmux";
+ interrupt-parent = <&modem_smsm>;
+ interrupts = <1 IRQ_TYPE_EDGE_BOTH>,
+ <11 IRQ_TYPE_EDGE_BOTH>;
+ interrupt-names = "pc", "pc-ack";
+ qcom,smem-states = <&apps_smsm 1>, <&apps_smsm 11>;
+ qcom,smem-state-names = "pc", "pc-ack";
+ dmas = <&bam_dmux_dma 4>, <&bam_dmux_dma 5>;
+ dma-names = "tx", "rx";
+ memory-region = <&bam_dmux_pool>;
+ qcom,vmid = <QCOM_SCM_VMID_NAV>;
+ };
};
remoteproc_cdsp: remoteproc@b300000 {
@@ -2026,6 +2065,18 @@ dispcc: clock-controller@5f00000 {
#power-domain-cells = <1>;
};
+ bam_dmux_dma: dma-controller@6044000 {
+ compatible = "qcom,bam-v1.7.0";
+ reg = <0x0 0x06044000 0x0 0x19000>;
+ interrupts = <GIC_SPI 74 IRQ_TYPE_EDGE_RISING 0>;
+ #dma-cells = <1>;
+ qcom,ee = <0>;
+ num-channels = <6>;
+ qcom,num-ees = <1>;
+ qcom,powered-remotely;
+ memory-region = <&bam_dmux_pool>;
+ };
+
sram@c11e000 {
compatible = "qcom,shikra-imem", "mmio-sram";
reg = <0x0 0x0c11e000 0x0 0x1000>;
---
base-commit: 518e5b794c06c0f0eb40df3e202274a66202c137
change-id: 20260603-qcom-shikra-dts-bam-dmux-7fdcbb6fb662
prerequisite-message-id: 20260908-shikra-pas-bam-dmux-binding-v4-1-6044889e7e3d@xxxxxxxxxxxxxxxx
prerequisite-patch-id: c3d19e8dbf9451f9f8155c86c21a4e6b5dc796d0
prerequisite-message-id: 20260920-qcom-bam-dma-vmid-ext-v2-1-4dbbff0e57c8@xxxxxxxxxxxxxxxx
prerequisite-patch-id: 30840b157a197cc896556c0152b26a00abba0010
prerequisite-message-id: 20260920-qcom-bam-dmux-vmid-ext-v2-0-ef5ca2178378@xxxxxxxxxxxxxxxx
prerequisite-patch-id: a9c2ce26fabf293f94f384409991f8a9b3afaafa
prerequisite-patch-id: c4d2876bea87e825468eb3bd116bfdf5a203f7c1
Best regards,
--
Vishnu Santhosh <vishnu.santhosh@xxxxxxxxxxxxxxxx>