# 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 <konradybcio@kernel.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-rpm";
          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-smd-rpm";
          qcom,glink-channels = "rpm_requests";
          /* ... */
        };
      };
    };
