brintos

brintos / linux-shallow public Read only

0
0
Text · 6.2 KiB · 540bdfc Raw
172 lines · yaml
1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)2%YAML 1.23---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/Subsystem8 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                                       v33                                      NoC34 35  The firmware running on the processor inside the RPM subsystem allows each36  component in the system to vote for state of the system resources, such as37  clocks, regulators and bus frequencies. It implements multiple separate38  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                                    v57                             +--------------+58                             | MPM Hardware |59                             +--------------+60 61  The services provided by the firmware are only available after the firmware62  has been loaded and the processor has been released from reset. Usually this63  happens early in the boot process before the operating system is started.64 65properties:66  compatible:67    items:68      - enum:69          - qcom,apq8084-rpm-proc70          - qcom,ipq6018-rpm-proc71          - qcom,ipq9574-rpm-proc72          - qcom,mdm9607-rpm-proc73          - qcom,msm8226-rpm-proc74          - qcom,msm8610-rpm-proc75          - qcom,msm8909-rpm-proc76          - qcom,msm8916-rpm-proc77          - qcom,msm8917-rpm-proc78          - qcom,msm8936-rpm-proc79          - qcom,msm8937-rpm-proc80          - qcom,msm8952-rpm-proc81          - qcom,msm8953-rpm-proc82          - qcom,msm8974-rpm-proc83          - qcom,msm8976-rpm-proc84          - qcom,msm8994-rpm-proc85          - qcom,msm8996-rpm-proc86          - qcom,msm8998-rpm-proc87          - qcom,qcm2290-rpm-proc88          - qcom,qcs404-rpm-proc89          - qcom,sdm660-rpm-proc90          - qcom,sm6115-rpm-proc91          - qcom,sm6125-rpm-proc92          - qcom,sm6375-rpm-proc93      - const: qcom,rpm-proc94 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: object109    $ref: /schemas/interrupt-controller/qcom,mpm.yaml#110    description:111      MSM Power Manager (MPM) interrupt controller that monitors interrupts112      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  - compatible121 122oneOf:123  - required:124      - smd-edge125  - required:126      - glink-edge127 128additionalProperties: false129 130examples:131  # SMD132  - |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  # GLINK152  - |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    };172