# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause %YAML 1.2 --- $id: http://devicetree.org/schemas/soc/qcom/qcom,smp2p.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Qualcomm Shared Memory Point 2 Point maintainers: - Andy Gross <agross@kernel.org> - Bjorn Andersson <bjorn.andersson@linaro.org> - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> description: The Shared Memory Point to Point (SMP2P) protocol facilitates communication of a single 32-bit value between two processors. Each value has a single writer (the local side) and a single reader (the remote side). Values are uniquely identified in the system by the directed edge (local processor ID to remote processor ID) and a string identifier. properties: compatible: const: qcom,smp2p interrupts: maxItems: 1 mboxes: maxItems: 1 description: Reference to the mailbox representing the outgoing doorbell in APCS for this client. qcom,ipc: $ref: /schemas/types.yaml#/definitions/phandle-array items: - items: - description: phandle to a syscon node representing the APCS registers - description: u32 representing offset to the register within the syscon - description: u32 representing the ipc bit within the register description: Three entries specifying the outgoing ipc bit used for signaling the remote end of the smp2p edge. qcom,local-pid: $ref: /schemas/types.yaml#/definitions/uint32 description: The identifier of the local endpoint of this edge. qcom,remote-pid: $ref: /schemas/types.yaml#/definitions/uint32 description: The identifier of the remote endpoint of this edge. qcom,smem: $ref: /schemas/types.yaml#/definitions/uint32-array items: maxItems: 2 description: Two identifiers of the inbound and outbound smem items used for this edge. patternProperties: "^master-kernel|slave-kernel|ipa-ap-to-modem|ipa-modem-to-ap|wlan-ap-to-wpss|wlan-wpss-to-ap$": type: object description: Each SMP2P pair contain a set of inbound and outbound entries, these are described in subnodes of the smp2p device node. The node names are not important. properties: interrupt-controller: description: Marks the entry as inbound; the node should be specified as a two cell interrupt-controller. If not specified this node will denote the outgoing entry. '#interrupt-cells': const: 2 qcom,entry-name: $ref: /schemas/types.yaml#/definitions/string description: The name of this entry, for inbound entries this will be used to match against the remotely allocated entry and for outbound entries this name is used for allocating entries. '#qcom,smem-state-cells': $ref: /schemas/types.yaml#/definitions/uint32 const: 1 description: Required for outgoing entries. required: - qcom,entry-name oneOf: - required: - interrupt-controller - '#interrupt-cells' - required: - '#qcom,smem-state-cells' additionalProperties: false required: - compatible - interrupts - qcom,local-pid - qcom,remote-pid - qcom,smem oneOf: - required: - mboxes - required: - qcom,ipc additionalProperties: false examples: # The following example shows the SMP2P setup with the wireless processor, # defined from the 8974 apps processor's point-of-view. It encompasses one # inbound and one outbound entry. - | #include <dt-bindings/interrupt-controller/arm-gic.h> shared-memory { compatible = "qcom,smp2p"; qcom,smem = <431>, <451>; interrupts = <GIC_SPI 143 IRQ_TYPE_EDGE_RISING>; qcom,ipc = <&apcs 8 18>; qcom,local-pid = <0>; qcom,remote-pid = <4>; wcnss_smp2p_out: master-kernel { qcom,entry-name = "master-kernel"; #qcom,smem-state-cells = <1>; }; wcnss_smp2p_in: slave-kernel { qcom,entry-name = "slave-kernel"; interrupt-controller; #interrupt-cells = <2>; }; };