# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause %YAML 1.2 --- $id: http://devicetree.org/schemas/soc/qcom/qcom,smd.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Qualcomm Shared Memory Driver maintainers: - Andy Gross - Bjorn Andersson - Krzysztof Kozlowski description: The Qualcomm Shared Memory Driver is a FIFO based communication channel for sending data between the various subsystems in Qualcomm platforms. properties: compatible: const: qcom,smd patternProperties: "^.*-edge|rpm$": type: object description: Each subnode of the SMD node represents a remote subsystem or a remote processor of some sort - or in SMD language an "edge". The name of the edges are not important. properties: interrupts: maxItems: 1 label: $ref: /schemas/types.yaml#/definitions/string description: Name of the edge, used for debugging and identification purposes. The node name will be used if this is not present. 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 processor. qcom,smd-edge: $ref: /schemas/types.yaml#/definitions/uint32 description: The identifier of the remote processor in the smd channel allocation table. qcom,remote-pid: $ref: /schemas/types.yaml#/definitions/uint32 description: The identifier for the remote processor as known by the rest of the system. rpm-requests: type: object description: In turn, subnodes of the "edges" represent devices tied to SMD channels on that "edge". The names of the devices are not important. The properties of these nodes are defined by the individual bindings for the SMD devices. properties: qcom,smd-channels: $ref: /schemas/types.yaml#/definitions/string-array minItems: 1 maxItems: 32 description: A list of channels tied to this device, used for matching the device to channels. required: - compatible - qcom,smd-channels additionalProperties: true required: - interrupts - qcom,smd-edge oneOf: - required: - mboxes - required: - qcom,ipc additionalProperties: false required: - compatible additionalProperties: false examples: # The following example represents a smd node, with one edge representing the # "rpm" subsystem. For the "rpm" subsystem we have a device tied to the # "rpm_request" channel. - | #include shared-memory { compatible = "qcom,smd"; rpm { interrupts = ; qcom,ipc = <&apcs 8 0>; qcom,smd-edge = <15>; rpm-requests { compatible = "qcom,rpm-msm8974"; qcom,smd-channels = "rpm_requests"; clock-controller { compatible = "qcom,rpmcc-msm8974", "qcom,rpmcc"; #clock-cells = <1>; }; }; }; };