162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/soc/qcom/qcom,smd.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Qualcomm Shared Memory Driver
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Andy Gross <agross@kernel.org>
1162306a36Sopenharmony_ci  - Bjorn Andersson <bjorn.andersson@linaro.org>
1262306a36Sopenharmony_ci  - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_cidescription:
1562306a36Sopenharmony_ci  The Qualcomm Shared Memory Driver is a FIFO based communication channel for
1662306a36Sopenharmony_ci  sending data between the various subsystems in Qualcomm platforms.
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci  Using the top-level SMD node is deprecated. Instead, the SMD edges are defined
1962306a36Sopenharmony_ci  directly below the device node representing the respective remote subsystem
2062306a36Sopenharmony_ci  or remote processor.
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_cideprecated: true
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciproperties:
2562306a36Sopenharmony_ci  compatible:
2662306a36Sopenharmony_ci    const: qcom,smd
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_cipatternProperties:
2962306a36Sopenharmony_ci  "^smd-edge|rpm$":
3062306a36Sopenharmony_ci    $ref: /schemas/remoteproc/qcom,smd-edge.yaml#
3162306a36Sopenharmony_ci    unevaluatedProperties: false
3262306a36Sopenharmony_ci    description:
3362306a36Sopenharmony_ci      Each subnode of the SMD node represents a remote subsystem or a remote
3462306a36Sopenharmony_ci      processor of some sort - or in SMD language an "edge". The name of the
3562306a36Sopenharmony_ci      edges are not important.
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_cirequired:
3862306a36Sopenharmony_ci  - compatible
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ciadditionalProperties: false
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ciexamples:
4362306a36Sopenharmony_ci  # The following example represents a smd node, with one edge representing the
4462306a36Sopenharmony_ci  # "rpm" subsystem. For the "rpm" subsystem we have a device tied to the
4562306a36Sopenharmony_ci  # "rpm_request" channel.
4662306a36Sopenharmony_ci  # NOTE: This is deprecated, represent the RPM using "qcom,rpm-proc" instead.
4762306a36Sopenharmony_ci  - |
4862306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci    shared-memory {
5162306a36Sopenharmony_ci        compatible = "qcom,smd";
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci        rpm {
5462306a36Sopenharmony_ci            interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
5562306a36Sopenharmony_ci            qcom,ipc = <&apcs 8 0>;
5662306a36Sopenharmony_ci            qcom,smd-edge = <15>;
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci            rpm-requests {
5962306a36Sopenharmony_ci                compatible = "qcom,rpm-msm8974";
6062306a36Sopenharmony_ci                qcom,smd-channels = "rpm_requests";
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci                clock-controller {
6362306a36Sopenharmony_ci                    compatible = "qcom,rpmcc-msm8974", "qcom,rpmcc";
6462306a36Sopenharmony_ci                    #clock-cells = <1>;
6562306a36Sopenharmony_ci                };
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci            };
6862306a36Sopenharmony_ci        };
6962306a36Sopenharmony_ci    };
70