1d5b0e70fSEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2d5b0e70fSEmmanuel Vadot%YAML 1.2
3d5b0e70fSEmmanuel Vadot---
4d5b0e70fSEmmanuel Vadot$id: http://devicetree.org/schemas/soc/qcom/qcom,smd.yaml#
5d5b0e70fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6d5b0e70fSEmmanuel Vadot
7d5b0e70fSEmmanuel Vadottitle: Qualcomm Shared Memory Driver
8d5b0e70fSEmmanuel Vadot
9d5b0e70fSEmmanuel Vadotmaintainers:
10d5b0e70fSEmmanuel Vadot  - Andy Gross <agross@kernel.org>
11d5b0e70fSEmmanuel Vadot  - Bjorn Andersson <bjorn.andersson@linaro.org>
12d5b0e70fSEmmanuel Vadot  - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
13d5b0e70fSEmmanuel Vadot
14d5b0e70fSEmmanuel Vadotdescription:
15d5b0e70fSEmmanuel Vadot  The Qualcomm Shared Memory Driver is a FIFO based communication channel for
16d5b0e70fSEmmanuel Vadot  sending data between the various subsystems in Qualcomm platforms.
17d5b0e70fSEmmanuel Vadot
18*aa1a8ff2SEmmanuel Vadot  Using the top-level SMD node is deprecated. Instead, the SMD edges are defined
19*aa1a8ff2SEmmanuel Vadot  directly below the device node representing the respective remote subsystem
20*aa1a8ff2SEmmanuel Vadot  or remote processor.
21*aa1a8ff2SEmmanuel Vadot
22*aa1a8ff2SEmmanuel Vadotdeprecated: true
23*aa1a8ff2SEmmanuel Vadot
24d5b0e70fSEmmanuel Vadotproperties:
25d5b0e70fSEmmanuel Vadot  compatible:
26d5b0e70fSEmmanuel Vadot    const: qcom,smd
27d5b0e70fSEmmanuel Vadot
28d5b0e70fSEmmanuel VadotpatternProperties:
297ef62cebSEmmanuel Vadot  "^smd-edge|rpm$":
30b97ee269SEmmanuel Vadot    $ref: /schemas/remoteproc/qcom,smd-edge.yaml#
317ef62cebSEmmanuel Vadot    unevaluatedProperties: false
32d5b0e70fSEmmanuel Vadot    description:
33d5b0e70fSEmmanuel Vadot      Each subnode of the SMD node represents a remote subsystem or a remote
34d5b0e70fSEmmanuel Vadot      processor of some sort - or in SMD language an "edge". The name of the
35d5b0e70fSEmmanuel Vadot      edges are not important.
36d5b0e70fSEmmanuel Vadot
37d5b0e70fSEmmanuel Vadotrequired:
38d5b0e70fSEmmanuel Vadot  - compatible
39d5b0e70fSEmmanuel Vadot
40d5b0e70fSEmmanuel VadotadditionalProperties: false
41d5b0e70fSEmmanuel Vadot
42d5b0e70fSEmmanuel Vadotexamples:
43d5b0e70fSEmmanuel Vadot  # The following example represents a smd node, with one edge representing the
44d5b0e70fSEmmanuel Vadot  # "rpm" subsystem. For the "rpm" subsystem we have a device tied to the
45d5b0e70fSEmmanuel Vadot  # "rpm_request" channel.
46*aa1a8ff2SEmmanuel Vadot  # NOTE: This is deprecated, represent the RPM using "qcom,rpm-proc" instead.
47d5b0e70fSEmmanuel Vadot  - |
48d5b0e70fSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
49d5b0e70fSEmmanuel Vadot
50d5b0e70fSEmmanuel Vadot    shared-memory {
51d5b0e70fSEmmanuel Vadot        compatible = "qcom,smd";
52d5b0e70fSEmmanuel Vadot
53d5b0e70fSEmmanuel Vadot        rpm {
54d5b0e70fSEmmanuel Vadot            interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
55d5b0e70fSEmmanuel Vadot            qcom,ipc = <&apcs 8 0>;
56d5b0e70fSEmmanuel Vadot            qcom,smd-edge = <15>;
57d5b0e70fSEmmanuel Vadot
58d5b0e70fSEmmanuel Vadot            rpm-requests {
59d5b0e70fSEmmanuel Vadot                compatible = "qcom,rpm-msm8974";
60d5b0e70fSEmmanuel Vadot                qcom,smd-channels = "rpm_requests";
61d5b0e70fSEmmanuel Vadot
62d5b0e70fSEmmanuel Vadot                clock-controller {
63d5b0e70fSEmmanuel Vadot                    compatible = "qcom,rpmcc-msm8974", "qcom,rpmcc";
64d5b0e70fSEmmanuel Vadot                    #clock-cells = <1>;
65d5b0e70fSEmmanuel Vadot                };
66d5b0e70fSEmmanuel Vadot
67d5b0e70fSEmmanuel Vadot            };
68d5b0e70fSEmmanuel Vadot        };
69d5b0e70fSEmmanuel Vadot    };
70