File Index
Files and directories
Sign in
FILE

qcom,rpm-proc.yaml

File preview with syntax highlighting.

linux-6.19.14/Documentation/devicetree/bindings/remoteproc/qcom,rpm-proc.yaml YAML
  1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
  2%YAML 1.2
  3---
  4$id: http://devicetree.org/schemas/remoteproc/qcom,rpm-proc.yaml#
  5$schema: http://devicetree.org/meta-schemas/core.yaml#
  6
  7title: Qualcomm Resource Power Manager (RPM) Processor/Subsystem
  8
  9maintainers:
 10  - Bjorn Andersson <andersson@kernel.org>
 11  - Konrad Dybcio <konradybcio@kernel.org>
 12  - Stephan Gerhold <stephan@gerhold.net>
 13
 14description: |
 15  Resource Power Manager (RPM) subsystem found in various Qualcomm platforms:
 16
 17                  +--------------------------------------------+
 18                  |       RPM subsystem (qcom,rpm-proc)        |
 19                  |                                            |
 20            reset | +---------------+     +-----+  +-----+     |
 21          --------->|               |     | MPM |  | CPR | ... |
 22   IPC interrupts | | ARM Cortex-M3 |---  +-----+  +-----+     |
 23  ----------------->|               |  |     |        |        |
 24                  | +---------------+  |---------------------- |
 25                  | +---------------+  |                       |
 26                  | |   Code RAM    |--|  +------------------+ |
 27                  | +---------------+  |  |                  | |
 28                  | +---------------+  |--|   Message RAM    | |
 29                  | |   Data RAM    |--|  |                  | |
 30                  | +---------------+  |  +------------------+ |
 31                  +--------------------|-----------------------+
 32                                       v
 33                                      NoC
 34
 35  The firmware running on the processor inside the RPM subsystem allows each
 36  component in the system to vote for state of the system resources, such as
 37  clocks, regulators and bus frequencies. It implements multiple separate
 38  communication interfaces that are described in subnodes, e.g. SMD and MPM:
 39
 40             +------------------------------+
 41             |        ARM Cortex-M3         |
 42             |                              |   +------------------------------+
 43             | +--------------------------+ |   |          Message RAM         |
 44             | |  RPM firmware            | |   |                              |
 45   IPC IRQ 0 | | +----------------------+ | |   | +--------------------------+ |
 46  -------------->| SMD server           |<------->| SMD data structures      | |
 47             | | | +--------------+     | | |   | | +--------------+         | |
 48             | | | | rpm_requests | ... | | |   | | | rpm_requests |   ...   | |
 49             | | | +--------------+     | | |   | | +--------------+         | |
 50   IPC IRQ 1 | | +----------------------+ | |   | +--------------------------+ |
 51  -------------->| MPM virtualization   |<--------| MPM register copy (vMPM) | |
 52             | | +----------------------+ | |   | +--------------------------+ |
 53             | |           ...      |     | |   |              ...             |
 54             | +--------------------|-----+ |   +------------------------------+
 55             +----------------------|-------+
 56                                    v
 57                             +--------------+
 58                             | MPM Hardware |
 59                             +--------------+
 60
 61  The services provided by the firmware are only available after the firmware
 62  has been loaded and the processor has been released from reset. Usually this
 63  happens early in the boot process before the operating system is started.
 64
 65properties:
 66  compatible:
 67    items:
 68      - enum:
 69          - qcom,apq8084-rpm-proc
 70          - qcom,ipq6018-rpm-proc
 71          - qcom,ipq9574-rpm-proc
 72          - qcom,mdm9607-rpm-proc
 73          - qcom,msm8226-rpm-proc
 74          - qcom,msm8610-rpm-proc
 75          - qcom,msm8909-rpm-proc
 76          - qcom,msm8916-rpm-proc
 77          - qcom,msm8917-rpm-proc
 78          - qcom,msm8936-rpm-proc
 79          - qcom,msm8937-rpm-proc
 80          - qcom,msm8952-rpm-proc
 81          - qcom,msm8953-rpm-proc
 82          - qcom,msm8974-rpm-proc
 83          - qcom,msm8976-rpm-proc
 84          - qcom,msm8994-rpm-proc
 85          - qcom,msm8996-rpm-proc
 86          - qcom,msm8998-rpm-proc
 87          - qcom,qcm2290-rpm-proc
 88          - qcom,qcs404-rpm-proc
 89          - qcom,sdm660-rpm-proc
 90          - qcom,sm6115-rpm-proc
 91          - qcom,sm6125-rpm-proc
 92          - qcom,sm6375-rpm-proc
 93      - const: qcom,rpm-proc
 94
 95  smd-edge:
 96    $ref: /schemas/remoteproc/qcom,smd-edge.yaml#
 97    description:
 98      Qualcomm Shared Memory subnode which represents communication edge,
 99      channels and devices related to the RPM subsystem.
100
101  glink-edge:
102    $ref: /schemas/remoteproc/qcom,glink-rpm-edge.yaml#
103    description:
104      Qualcomm G-Link subnode which represents communication edge,
105      channels and devices related to the RPM subsystem.
106
107  interrupt-controller:
108    type: object
109    $ref: /schemas/interrupt-controller/qcom,mpm.yaml#
110    description:
111      MSM Power Manager (MPM) interrupt controller that monitors interrupts
112      when the system is asleep.
113
114  master-stats:
115    $ref: /schemas/soc/qcom/qcom,rpm-master-stats.yaml#
116    description:
117      Subsystem-level low-power mode statistics provided by RPM.
118
119required:
120  - compatible
121
122oneOf:
123  - required:
124      - smd-edge
125  - required:
126      - glink-edge
127
128additionalProperties: false
129
130examples:
131  # SMD
132  - |
133    #include <dt-bindings/interrupt-controller/arm-gic.h>
134    #include <dt-bindings/interrupt-controller/irq.h>
135
136    remoteproc {
137      compatible = "qcom,msm8916-rpm-proc", "qcom,rpm-proc";
138
139      smd-edge {
140        interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
141        qcom,ipc = <&apcs 8 0>;
142        qcom,smd-edge = <15>;
143
144        rpm-requests {
145          compatible = "qcom,rpm-msm8916", "qcom,smd-rpm";
146          qcom,smd-channels = "rpm_requests";
147          /* ... */
148        };
149      };
150    };
151  # GLINK
152  - |
153    #include <dt-bindings/interrupt-controller/arm-gic.h>
154    #include <dt-bindings/interrupt-controller/irq.h>
155
156    remoteproc {
157      compatible = "qcom,qcm2290-rpm-proc", "qcom,rpm-proc";
158
159      glink-edge {
160        compatible = "qcom,glink-rpm";
161        interrupts = <GIC_SPI 194 IRQ_TYPE_EDGE_RISING>;
162        qcom,rpm-msg-ram = <&rpm_msg_ram>;
163        mboxes = <&apcs_glb 0>;
164
165        rpm-requests {
166          compatible = "qcom,rpm-qcm2290", "qcom,glink-smd-rpm";
167          qcom,glink-channels = "rpm_requests";
168          /* ... */
169        };
170      };
171    };
~/ Read-only file preview.