# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/remoteproc/qcom,rpm-proc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm Resource Power Manager (RPM) Processor/Subsystem

maintainers:
  - Bjorn Andersson <andersson@kernel.org>
  - Konrad Dybcio <konrad.dybcio@linaro.org>
  - Stephan Gerhold <stephan@gerhold.net>

description: |
  Resource Power Manager (RPM) subsystem found in various Qualcomm platforms:

                  +--------------------------------------------+
                  |       RPM subsystem (qcom,rpm-proc)        |
                  |                                            |
            reset | +---------------+     +-----+  +-----+     |
          --------->|               |     | MPM |  | CPR | ... |
   IPC interrupts | | ARM Cortex-M3 |---  +-----+  +-----+     |
  ----------------->|               |  |     |        |        |
                  | +---------------+  |---------------------- |
                  | +---------------+  |                       |
                  | |   Code RAM    |--|  +------------------+ |
                  | +---------------+  |  |                  | |
                  | +---------------+  |--|   Message RAM    | |
                  | |   Data RAM    |--|  |                  | |
                  | +---------------+  |  +------------------+ |
                  +--------------------|-----------------------+
                                       v
                                      NoC

  The firmware running on the processor inside the RPM subsystem allows each
  component in the system to vote for state of the system resources, such as
  clocks, regulators and bus frequencies. It implements multiple separate
  communication interfaces that are described in subnodes, e.g. SMD and MPM:

             +------------------------------+
             |        ARM Cortex-M3         |
             |                              |   +------------------------------+
             | +--------------------------+ |   |          Message RAM         |
             | |  RPM firmware            | |   |                              |
   IPC IRQ 0 | | +----------------------+ | |   | +--------------------------+ |
  -------------->| SMD server           |<------->| SMD data structures      | |
             | | | +--------------+     | | |   | | +--------------+         | |
             | | | | rpm_requests | ... | | |   | | | rpm_requests |   ...   | |
             | | | +--------------+     | | |   | | +--------------+         | |
   IPC IRQ 1 | | +----------------------+ | |   | +--------------------------+ |
  -------------->| MPM virtualization   |<--------| MPM register copy (vMPM) | |
             | | +----------------------+ | |   | +--------------------------+ |
             | |           ...      |     | |   |              ...             |
             | +--------------------|-----+ |   +------------------------------+
             +----------------------|-------+
                                    v
                             +--------------+
                             | MPM Hardware |
                             +--------------+

  The services provided by the firmware are only available after the firmware
  has been loaded and the processor has been released from reset. Usually this
  happens early in the boot process before the operating system is started.

properties:
  compatible:
    items:
      - enum:
          - qcom,apq8084-rpm-proc
          - qcom,ipq6018-rpm-proc
          - qcom,ipq9574-rpm-proc
          - qcom,mdm9607-rpm-proc
          - qcom,msm8226-rpm-proc
          - qcom,msm8610-rpm-proc
          - qcom,msm8909-rpm-proc
          - qcom,msm8916-rpm-proc
          - qcom,msm8917-rpm-proc
          - qcom,msm8936-rpm-proc
          - qcom,msm8937-rpm-proc
          - qcom,msm8952-rpm-proc
          - qcom,msm8953-rpm-proc
          - qcom,msm8974-rpm-proc
          - qcom,msm8976-rpm-proc
          - qcom,msm8994-rpm-proc
          - qcom,msm8996-rpm-proc
          - qcom,msm8998-rpm-proc
          - qcom,qcm2290-rpm-proc
          - qcom,qcs404-rpm-proc
          - qcom,sdm660-rpm-proc
          - qcom,sm6115-rpm-proc
          - qcom,sm6125-rpm-proc
          - qcom,sm6375-rpm-proc
      - const: qcom,rpm-proc

  smd-edge:
    $ref: /schemas/remoteproc/qcom,smd-edge.yaml#
    description:
      Qualcomm Shared Memory subnode which represents communication edge,
      channels and devices related to the RPM subsystem.

  glink-edge:
    $ref: /schemas/remoteproc/qcom,glink-rpm-edge.yaml#
    description:
      Qualcomm G-Link subnode which represents communication edge,
      channels and devices related to the RPM subsystem.

  interrupt-controller:
    type: object
    $ref: /schemas/interrupt-controller/qcom,mpm.yaml#
    description:
      MSM Power Manager (MPM) interrupt controller that monitors interrupts
      when the system is asleep.

  master-stats:
    $ref: /schemas/soc/qcom/qcom,rpm-master-stats.yaml#
    description:
      Subsystem-level low-power mode statistics provided by RPM.

required:
  - compatible

oneOf:
  - required:
      - smd-edge
  - required:
      - glink-edge

additionalProperties: false

examples:
  # SMD
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/interrupt-controller/irq.h>

    remoteproc {
      compatible = "qcom,msm8916-rpm-proc", "qcom,rpm-proc";

      smd-edge {
        interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
        qcom,ipc = <&apcs 8 0>;
        qcom,smd-edge = <15>;

        rpm-requests {
          compatible = "qcom,rpm-msm8916";
          qcom,smd-channels = "rpm_requests";
          /* ... */
        };
      };
    };
  # GLINK
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/interrupt-controller/irq.h>

    remoteproc {
      compatible = "qcom,qcm2290-rpm-proc", "qcom,rpm-proc";

      glink-edge {
        compatible = "qcom,glink-rpm";
        interrupts = <GIC_SPI 194 IRQ_TYPE_EDGE_RISING>;
        qcom,rpm-msg-ram = <&rpm_msg_ram>;
        mboxes = <&apcs_glb 0>;

        rpm-requests {
          compatible = "qcom,rpm-qcm2290";
          qcom,glink-channels = "rpm_requests";
          /* ... */
        };
      };
    };
