1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/soc/qcom/qcom,smd.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm Shared Memory Driver
8
9maintainers:
10  - Andy Gross <agross@kernel.org>
11  - Bjorn Andersson <bjorn.andersson@linaro.org>
12  - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
13
14description:
15  The Qualcomm Shared Memory Driver is a FIFO based communication channel for
16  sending data between the various subsystems in Qualcomm platforms.
17
18properties:
19  compatible:
20    const: qcom,smd
21
22patternProperties:
23  "^.*-edge|rpm$":
24    $ref: /schemas/remoteproc/qcom,smd-edge.yaml#
25    description:
26      Each subnode of the SMD node represents a remote subsystem or a remote
27      processor of some sort - or in SMD language an "edge". The name of the
28      edges are not important.
29
30    properties:
31      rpm-requests:
32        type: object
33        description:
34          In turn, subnodes of the "edges" represent devices tied to SMD
35          channels on that "edge". The names of the devices are not
36          important. The properties of these nodes are defined by the
37          individual bindings for the SMD devices.
38
39        properties:
40          qcom,smd-channels:
41            $ref: /schemas/types.yaml#/definitions/string-array
42            minItems: 1
43            maxItems: 32
44            description:
45              A list of channels tied to this device, used for matching the
46              device to channels.
47
48        required:
49          - compatible
50          - qcom,smd-channels
51
52        additionalProperties: true
53
54    unevaluatedProperties: false
55
56required:
57  - compatible
58
59additionalProperties: false
60
61examples:
62  # The following example represents a smd node, with one edge representing the
63  # "rpm" subsystem. For the "rpm" subsystem we have a device tied to the
64  # "rpm_request" channel.
65  - |
66    #include <dt-bindings/interrupt-controller/arm-gic.h>
67
68    shared-memory {
69        compatible = "qcom,smd";
70
71        rpm {
72            interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
73            qcom,ipc = <&apcs 8 0>;
74            qcom,smd-edge = <15>;
75
76            rpm-requests {
77                compatible = "qcom,rpm-msm8974";
78                qcom,smd-channels = "rpm_requests";
79
80                clock-controller {
81                    compatible = "qcom,rpmcc-msm8974", "qcom,rpmcc";
82                    #clock-cells = <1>;
83                };
84
85            };
86        };
87    };
88