The Shikra modem uses BAM-DMUX for its WWAN data path, but the qcom,shikra-pas remoteproc binding has no way to describe that modem-owned child device.
Without a bam-dmux child node, the binding cannot model the relationship between BAM-DMUX and the modem remoteproc, and userspace cannot associate the multiplexer with the correct remoteproc instance. Add an optional bam-dmux subnode to qcom,shikra-mpss-pas referencing qcom,bam-dmux.yaml, and restrict it to the MPSS compatible since only the modem subsystem uses BAM-DMUX. Add a second example exercising the new subnode for dt_binding_check. Co-developed-by: Deepak Kumar Singh <[email protected]> Signed-off-by: Deepak Kumar Singh <[email protected]> Signed-off-by: Vishnu Santhosh <[email protected]> --- Changes in v4: - Reword the commit message to explain why BAM-DMUX belongs under the modem remoteproc. - Restore the original CDSP example and add a separate MPSS example that exercises the new bam-dmux subnode. - Link to v3: https://lore.kernel.org/r/20260813-shikra-pas-bam-dmux-binding-v3-1-167a3fb50...@oss.qualcomm.com Changes in v3: - Reword commit message to keep it scoped to the binding change. - Retarget the example to qcom,shikra-mpss-pas and add a bam-dmux child. - Link to v2: https://lore.kernel.org/r/20260729-shikra-pas-bam-dmux-binding-v2-1-d85fea84c...@oss.qualcomm.com Changes in v2: - Restrict bam-dmux to the qcom,shikra-mpss-pas compatible. - Link to v1: https://lore.kernel.org/r/20260727-shikra-pas-bam-dmux-binding-v1-1-c0159c7c3...@oss.qualcomm.com --- .../bindings/remoteproc/qcom,shikra-pas.yaml | 75 ++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/Documentation/devicetree/bindings/remoteproc/qcom,shikra-pas.yaml b/Documentation/devicetree/bindings/remoteproc/qcom,shikra-pas.yaml index 253b14eb2b598f0ca91854c8ff4d0b785090e621..da66034311522ba36d160959172c1444c5999509 100644 --- a/Documentation/devicetree/bindings/remoteproc/qcom,shikra-pas.yaml +++ b/Documentation/devicetree/bindings/remoteproc/qcom,shikra-pas.yaml @@ -44,6 +44,11 @@ properties: - description: Firmware name of the Hexagon core - description: Firmware name of the Hexagon Devicetree + bam-dmux: + $ref: /schemas/net/qcom,bam-dmux.yaml# + description: + Qualcomm BAM Data Multiplexer (provides network interface to the modem) + glink-edge: $ref: /schemas/remoteproc/qcom,glink-edge.yaml# description: @@ -117,6 +122,16 @@ allOf: power-domains: false power-domain-names: false + - if: + properties: + compatible: + enum: + - qcom,shikra-cdsp-pas + - qcom,shikra-lpaicp-pas + then: + properties: + bam-dmux: false + unevaluatedProperties: false examples: @@ -165,3 +180,63 @@ examples: label = "cdsp"; }; }; + + - | + #include <dt-bindings/clock/qcom,rpmcc.h> + #include <dt-bindings/interconnect/qcom,icc.h> + #include <dt-bindings/interconnect/qcom,rpm-icc.h> + #include <dt-bindings/interconnect/qcom,shikra.h> + #include <dt-bindings/interrupt-controller/arm-gic.h> + #include <dt-bindings/interrupt-controller/irq.h> + #include <dt-bindings/power/qcom-rpmpd.h> + + remoteproc@6080000 { + compatible = "qcom,shikra-mpss-pas"; + reg = <0x06080000 0x100>; + + interrupts-extended = <&intc GIC_SPI 307 IRQ_TYPE_EDGE_RISING>, + <&modem_smp2p_in 0 IRQ_TYPE_EDGE_RISING>, + <&modem_smp2p_in 1 IRQ_TYPE_EDGE_RISING>, + <&modem_smp2p_in 2 IRQ_TYPE_EDGE_RISING>, + <&modem_smp2p_in 3 IRQ_TYPE_EDGE_RISING>, + <&modem_smp2p_in 7 IRQ_TYPE_EDGE_RISING>; + interrupt-names = "wdog", "fatal", "ready", + "handover", "stop-ack", "shutdown-ack"; + + clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>; + clock-names = "xo"; + + interconnects = <&mem_noc MASTER_AMPSS_M0 RPM_ALWAYS_TAG + &mc_virt SLAVE_EBI_CH0 RPM_ALWAYS_TAG>; + + power-domains = <&rpmpd RPMHPD_CX>; + power-domain-names = "cx"; + + memory-region = <&mpss_wlan_mem>; + + qcom,smem-states = <&modem_smp2p_out 0>; + qcom,smem-state-names = "stop"; + + firmware-name = "qcom/shikra/modem.mbn"; + + glink-edge { + interrupts = <GIC_SPI 68 IRQ_TYPE_EDGE_RISING>; + mboxes = <&apcs_glb 12>; + qcom,remote-pid = <1>; + label = "mpss"; + }; + + 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"; + }; + }; --- base-commit: 3d6d817622b0a9721e3cc404df3469171582be13 change-id: 20260727-shikra-pas-bam-dmux-binding-28a6bf97857c Best regards, -- Vishnu Santhosh <[email protected]>

