Files
linux/Documentation/devicetree/bindings/remoteproc/qcom,rpm-proc.yaml
Arnd Bergmann 6d67480404 Merge tag 'qcom-drivers-for-6.12' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into soc/drivers
Qualcomm driver updates for v6.12

Support is added for making SCM driver configure the system either for a
full or minimal ramdump following a system crash. The ramdump mode is
changed from being enable-only to enable/disable as requested.

The QSEECOM uefisecapp interface is allow-listed on Surface Laptop 7 and
Lenovo Thinkpad T14s, providing EFI variable access.

The change to match the SMD RPM driver based on the SMD channel name is
reverted, in favor of stepping back to OF-based matching, as a means to
get module autoloading to work properly.

AOSS, APR, ICE, OCMEM, PBS and SMP2P drivers has error handling cleaned
up using scoped resources.

Trace events are added to the BWMON and SMP2P drivers, for better
insights into their operations.

The X1E LLCC configuration data is updated based on recommended values.

A number of platforms are added to the in-kernel PD-mapper.

SocInfo driver is extended with IDs from SM7325, QCS8275 and QCS8300
families.

* tag 'qcom-drivers-for-6.12' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux: (33 commits)
  firmware: qcom: scm: Allow QSEECOM on Surface Laptop 7 models
  dt-bindings: soc: qcom: qcom,pmic-glink: Document SM7325 compatible
  soc: qcom: pd_mapper: Add SM7325 compatible
  soc: qcom: socinfo: Add Soc IDs for SM7325 family
  dt-bindings: arm: qcom,ids: Add IDs for SM7325 family
  soc: qcom: socinfo: add QCS8275/QCS8300 SoC ID
  dt-bindings: arm: qcom,ids: add SoC ID for QCS8275/QCS8300
  soc: qcom: smp2p: use scoped device node handling to simplify error paths
  soc: qcom: pbs: use scoped device node handling to simplify error paths
  soc: qcom: ocmem: use scoped device node handling to simplify error paths
  soc: qcom: ice: use scoped device node handling to simplify error paths
  soc: qcom: aoss: simplify with scoped for each OF child loop
  soc: qcom: apr: simplify with scoped for each OF child loop
  soc: qcom: smd-rpm: add qcom,smd-rpm compatible
  dt-bindings: soc: qcom: smd-rpm: add generic compatibles
  Revert "soc: qcom: smd-rpm: Match rpmsg channel instead of compatible"
  firmware: qcom: scm: Add multiple download mode support
  firmware: qcom: scm: Refactor code to support multiple dload mode
  soc: qcom: pd_mapper: Add more older platforms without domains
  soc: qcom: pd_mapper: Add X1E80100
  ...

Link: https://lore.kernel.org/r/20240904193042.15118-1-andersson@kernel.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
2024-09-05 14:13:41 +00:00

172 lines
6.2 KiB
YAML

# 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";
/* ... */
};
};
};