mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-08-30 21:52:21 +00:00

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. -----BEGIN PGP SIGNATURE----- iQJJBAABCAAzFiEEBd4DzF816k8JZtUlCx85Pw2ZrcUFAmbYs3AVHGFuZGVyc3Nv bkBrZXJuZWwub3JnAAoJEAsfOT8Nma3FjywP/1IDWiKrOrIBYc6ndmssYrQLzlRw SSt/Q0YjPKogxl4qwTjTQUmBI/1I+vOa7kf9i0/BNpuslnhJYW51r9bZrcI0n3PW P1Pm7J32WGOIauFU9XoGmqzdlPBCVZKcfeCV3n9xTvF0pAipQqz46+O5mVg77jVU L5MaVIr4guk/glBJTym97KOlkSSbBsSmheistxiBJUIkUlZqX3YwBQE0Cih1VYOn DcQy29EjTpxhbLqI5BqFN3iJqGaV3RS32hL9hM8nYlXth0u8ZBy/H9AEViEK8M1K YakDoRkGyihj0M7oFV405yJdSskEbTBlxAfX7LH7x37XocRpsFf+u/Ti8VWxLMnt VUciuWA8bg6LnhMK1tQKEGM+3Wp2NZDJStKtV+OnYkvWbKN9QwS4DyiWdPvJGsgJ j4qq4B3nF3JU8Pu8Ih59LtPPFTa9/jMkOkqmF7smNehji8gjzHmkAhw6fWPCE5+h p8EC/XrYvXCwkBwPWE5vopip8CIpl3bMPb5bbHYGb4NuY59ztht40EExYxnhQzoN 3ezg+J2jIEaG/HQiBcxt0NrjyLRzkWJVryRxigg1co8Alcmxh7B1UNshiWRI70MA P3Emjh8Snixnp7ZD5O5hyiJ4yahomsfuCoDjVL6Vk4AYjon4ZjZ8pgcGBLgB1gry Zvkj5b5vc+8VNHnd =hZ0b -----END PGP SIGNATURE----- gpgsig -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmbZvJUACgkQYKtH/8kJ Uice9w//SXO0VlWitafyNuWwwqZfWZY953j2sjAjPWC2OWLGgjTQPL2sDKaOnvWG FRl8dZmYRcaEb7C7NeWvs1QrUztvxKDXOCDKlmt82EotyBlH1vLFWJK5KJ3oO0sD 0kQLWDr/KS/QIooXT/PcoFJ0mkpMqYKWV+XLLi+NDQsScMZsGyhZiDdv+qwX3qBw 9lt/srB1VfgW8gBrOGAxmS/WDQ4wup7/KPNpaUTIdPR8JMNFgoMCVY03LkB+FCcM 4s/MeecFzHavshFnZqcWzppf1FNX70lcaWEcbbNopM/bekZICFjGWZGoi+tK/8fZ WFj3OWZwDGYtxkYjT9M/zvxEJK2xDLosIOICV1dm+OcUN6LAXwknHBuCGMMNDQI1 jOQjZBXn3A+aT/Amy5GpKV0ci4K/tTI6AfBGdlZJq9jsQOMfP8Cygsv6leRp3dpJ 06v2ifSWUTv8+ucwYn/Oz0rZDZAe8ucswybzQo0lyor4Qg8lTZJFIU6iNoT/ZCCZ wlNg7t1OfkGGr08SuiAhV6+c5/CK2WivxCfKfZjw8+iMLJXyjE57fnf2HaU9Yfwp iJrV1euITVkLjmyMCg2YJSyWVl8O43T+LBcqreZel2iDJOBgY84zfk5hB/2sLLXj bo3H9QHD7IlQ3yOafT8zuxtanw3cJfBId34afsYD8h9khVz8OmI= =6GV4 -----END PGP SIGNATURE----- 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>
172 lines
6.2 KiB
YAML
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";
|
|
/* ... */
|
|
};
|
|
};
|
|
};
|