| # 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 <agross@kernel.org> | |
| - Bjorn Andersson <bjorn.andersson@linaro.org> | |
| - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> | |
| 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$": | |
| $ref: /schemas/remoteproc/qcom,smd-edge.yaml# | |
| 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: | |
| 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 | |
| unevaluatedProperties: 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 <dt-bindings/interrupt-controller/arm-gic.h> | |
| shared-memory { | |
| compatible = "qcom,smd"; | |
| rpm { | |
| interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>; | |
| 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>; | |
| }; | |
| }; | |
| }; | |
| }; |