bindings: Add rpm-smd and mpm dt bindings

Add the rpm-smd and mpm devicetree bindings.

Change-Id: I18ea19cc4c9f76dfc257c460ace5380792f5172c
Signed-off-by: Raghavendra Kakarla <quic_rkakarla@quicinc.com>
This commit is contained in:
Raghavendra Kakarla
2024-04-22 15:00:55 +05:30
committed by raghavendra kakarla
parent 0e6caaf6e2
commit 0b2389f72f
2 changed files with 114 additions and 0 deletions

45
bindings/arm/msm/rpm.yaml Normal file
View File

@@ -0,0 +1,45 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/arm/msm/rpm.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Qualcomm Technologies, Inc. RPM-SMD device
maintainers:
- Raghavendra Kakarla <quic_rkakarla@quicinc.com>
description:
RPM is a dedicated hardware engine for managing shared SoC resources,
which includes buses, clocks, power rails, etc. The goal of RPM is
to achieve the maximum power savings while satisfying the SoC's
operational and performance requirements. RPM accepts resource
requests from multiple RPM masters. It arbitrates and aggregates
the requests, and configures the shared resources. The RPM masters
are the application processor, the modem processor, as well as hardware
accelerators. The RPM driver communicates with the hardware engine using
SMD.
properties:
compatible:
items:
- const: qcom,rpm-smd
interrupts:
maxItems: 1
required:
- compatible
- interrupts
additionalProperties: false
examples:
- |
rpm_bus: qcom,rpm-smd {
compatible = "qcom,rpm-smd";
interrupts = <IPCC_CLIENT_AOP
IPCC_MPROC_SIGNAL_GLINK_QMP
IRQ_TYPE_EDGE_RISING>;
};

View File

@@ -0,0 +1,69 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/interrupt-controller/qcom,mpm-legacy.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: MPM Interrupt Controller
maintainers:
- Raghavendra Kakarla <quic_rkakarla@quicinc.com>
description:
Qualcomm Technologies Inc. SoCs based on the RPM architecture have a
MSM Power Manager (MPM) that is in always-on domain. In addition to managing
resources during sleep, the hardware also has an interrupt controller that
monitors the interrupts when the system is asleep, wakes up the APSS when
one of these interrupts occur and replays it to GIC interrupt controller
after GIC becomes operational.
properties:
compatible:
items:
- enum:
- "qcom,mpm-blair"
- "qcom,mpm-holi"
- "qcom,mpm-pitti"
- "qcom,mpm-monaco"
- const: qcom,mpm
reg:
minItems: 1
items:
- description: Specifies the base address and size of vMPM registers in RPM MSG RAM.
- description: Specifies the address and size of MPM timer registers in RPM MSG RAM.
- description: Timer frame register to read the aggregated time.
'#interrupt-cells':
const: 2
interrupt-controller: true
required:
- compatible
- reg
- interrupts
- '#interrupt-cells'
- interrupt-controller
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
mpm: interrupt-controller@45f01b8 {
compatible = "qcom,mpm", "qcom,mpm-blair";
interrupts = <GIC_SPI 171 IRQ_TYPE_EDGE_RISING>;
reg = <0x45f01b8 0x1000>,
<0xb011008 0x4>, /* MSM_APCS_GCC_BASE 4K */
<0xf121000 0x1000>; /* Timer Frame Register */
reg-names = "vmpm", "ipc", "timer";
interrupt-controller;
interrupt-parent = <&intc>;
interrupt-cells = <2>;
};
wake-device {
interrupts-extended = <&mpm 2 IRQ_TYPE_LEVEL_HIGH>;
};