summaryrefslogtreecommitdiff
path: root/Documentation/devicetree/bindings/soc/qcom/qcom,smd.yaml
blob: 9b3efe97f47c36b0041781052d1ef10ceacfbfc3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# 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>;
                };

            };
        };
    };