Merge "ARM: dts: msm: Add rpm-smd node for bengal"
This commit is contained in:
commit
bc34db6acc
4 files changed
+285
No files matched your search
@@ -0,0 +1,40 @@
|
||||
Resource Power Manager(RPM)
|
||||
|
||||
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.
|
||||
|
||||
The devicetree representation of the RPM block should be:
|
||||
|
||||
Required properties
|
||||
|
||||
- compatible: "qcom,rpm-smd"
|
||||
- rpm-channel-name: The string corresponding to the channel name of the
|
||||
peripheral subsystem. Required for both smd and
|
||||
glink transports.
|
||||
- rpm-channel-type: The interal SMD edge for this subsystem found in
|
||||
<soc/qcom/smd.h>
|
||||
- interrupts: The IRQ used by remote processor to inform APSS about
|
||||
reception of response message packet.
|
||||
|
||||
Optional properties
|
||||
- rpm-standalone: Allow RPM driver to run in standalone mode irrespective of RPM
|
||||
channel presence.
|
||||
- reg: Contains the memory address at which rpm messaging format version is
|
||||
stored. If this field is not present, the target only supports v0 format.
|
||||
|
||||
Example:
|
||||
|
||||
qcom,rpm-smd {
|
||||
compatible = "qcom,rpm-smd";
|
||||
interrupts = <GIC_SPI 194 IRQ_TYPE_EDGE_RISING>;
|
||||
qcom,rpm-channel-name = "rpm_requests";
|
||||
qcom,rpm-channel-type = 15; /* APPS_RPM_SMD */
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
* RPM Stats
|
||||
|
||||
RPM maintains a counter of the masters i.e APPS, MPPS etc
|
||||
number of times the SoC entered a deeper sleep mode involving
|
||||
lowering or powering down the backbone rails - Cx and Mx and
|
||||
the oscillator clock, XO.
|
||||
|
||||
PROPERTIES
|
||||
|
||||
- compatible:
|
||||
Usage: required
|
||||
Value type: <string>
|
||||
Definition: Should be "qcom,rpm-master-stats".
|
||||
|
||||
- reg:
|
||||
Usage: required
|
||||
Value type: <prop-encoded-array>
|
||||
Definition: The address on the RPM RAM from where the stats are read
|
||||
should be provided as "phys_addr_base". The offset
|
||||
from which the stats are available should be provided as
|
||||
"offset_addr".
|
||||
|
||||
- reg-names:
|
||||
Usage: required
|
||||
Value type: <prop-encoded-array>
|
||||
Definition: Provides labels for the reg property.
|
||||
|
||||
- qcom,masters:
|
||||
Usage: required
|
||||
Value tye: <string list>
|
||||
Defination: Provides the masters list.
|
||||
|
||||
qcom,master-offset:
|
||||
Usage: required
|
||||
Value tye: <prop-encoded-array>
|
||||
Defination: Provides the masters list
|
||||
|
||||
EXAMPLE:
|
||||
|
||||
qcom,rpm-master-stats@60150 {
|
||||
compatible = "qcom,rpm-master-stats";
|
||||
reg = <0x45f0150 0x5000>;
|
||||
qcom,masters = "APSS", "MPSS", "ADSP", "CDSP", "TZ";
|
||||
qcom,master-stats-version = <2>;
|
||||
qcom,master-offset = <4096>;
|
||||
};
|
||||
|
||||
@@ -0,0 +1,190 @@
|
||||
&soc {
|
||||
qcom,lpm-levels {
|
||||
compatible = "qcom,lpm-levels";
|
||||
qcom,use-psci;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
qcom,pm-cluster@0 {
|
||||
reg = <0>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
label = "system";
|
||||
qcom,spm-device-names = "cci";
|
||||
qcom,psci-mode-shift = <8>;
|
||||
qcom,psci-mode-mask = <0xf>;
|
||||
|
||||
qcom,pm-cluster-level@0 {
|
||||
reg = <0>;
|
||||
label = "system-wfi";
|
||||
qcom,psci-mode = <0x0>;
|
||||
qcom,entry-latency-us = <640>;
|
||||
qcom,exit-latency-us = <1654>;
|
||||
qcom,min-residency-us = <2294>;
|
||||
};
|
||||
|
||||
qcom,pm-cluster-level@1 { /* E3 */
|
||||
reg = <1>;
|
||||
label = "system-pc";
|
||||
qcom,psci-mode = <0x3>;
|
||||
qcom,entry-latency-us = <10831>;
|
||||
qcom,exit-latency-us = <4506>;
|
||||
qcom,min-residency-us = <15338>;
|
||||
qcom,min-child-idx = <2>;
|
||||
qcom,notify-rpm;
|
||||
qcom,is-reset;
|
||||
};
|
||||
|
||||
qcom,pm-cluster@0 {
|
||||
reg = <0>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
label = "pwr";
|
||||
qcom,spm-device-names = "l2";
|
||||
qcom,psci-mode-shift = <4>;
|
||||
qcom,psci-mode-mask = <0xf>;
|
||||
|
||||
qcom,pm-cluster-level@0 { /* D1 */
|
||||
reg = <0>;
|
||||
label = "pwr-l2-wfi";
|
||||
qcom,psci-mode = <0x1>;
|
||||
qcom,entry-latency-us = <38>;
|
||||
qcom,exit-latency-us = <51>;
|
||||
qcom,min-residency-us = <89>;
|
||||
};
|
||||
|
||||
qcom,pm-cluster-level@1 { /* D3G */
|
||||
reg = <1>;
|
||||
label = "pwr-l2-gdhs";
|
||||
qcom,psci-mode = <0x2>;
|
||||
qcom,entry-latency-us = <360>;
|
||||
qcom,exit-latency-us = <421>;
|
||||
qcom,min-residency-us = <782>;
|
||||
qcom,min-child-idx = <1>;
|
||||
};
|
||||
|
||||
qcom,pm-cluster-level@2 { /* D3 */
|
||||
reg = <2>;
|
||||
label = "pwr-l2-pc";
|
||||
qcom,psci-mode = <0x4>;
|
||||
qcom,entry-latency-us = <800>;
|
||||
qcom,exit-latency-us = <2118>;
|
||||
qcom,min-residency-us = <7376>;
|
||||
qcom,min-child-idx = <1>;
|
||||
qcom,is-reset;
|
||||
};
|
||||
|
||||
qcom,pm-cpu {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
qcom,psci-mode-shift = <0>;
|
||||
qcom,psci-mode-mask = <0xf>;
|
||||
qcom,cpu = <&CPU0 &CPU1 &CPU2 &CPU3>;
|
||||
|
||||
qcom,pm-cpu-level@0 { /* C1 */
|
||||
reg = <0>;
|
||||
label = "wfi";
|
||||
qcom,psci-cpu-mode = <0x1>;
|
||||
qcom,entry-latency-us = <49>;
|
||||
qcom,exit-latency-us = <42>;
|
||||
qcom,min-residency-us = <91>;
|
||||
};
|
||||
|
||||
qcom,pm-cpu-level@1 { /* C3 */
|
||||
reg = <1>;
|
||||
label = "pc";
|
||||
qcom,psci-cpu-mode = <0x3>;
|
||||
qcom,entry-latency-us = <290>;
|
||||
qcom,exit-latency-us = <376>;
|
||||
qcom,min-residency-us = <1182>;
|
||||
qcom,is-reset;
|
||||
qcom,use-broadcast-timer;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
qcom,pm-cluster@1 {
|
||||
reg = <1>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
label = "perf";
|
||||
qcom,spm-device-names = "l2";
|
||||
qcom,psci-mode-shift = <4>;
|
||||
qcom,psci-mode-mask = <0xf>;
|
||||
|
||||
qcom,pm-cluster-level@0 { /* D1 */
|
||||
reg = <0>;
|
||||
label = "perf-l2-wfi";
|
||||
qcom,psci-mode = <0x1>;
|
||||
qcom,entry-latency-us = <38>;
|
||||
qcom,exit-latency-us = <51>;
|
||||
qcom,min-residency-us = <89>;
|
||||
};
|
||||
|
||||
qcom,pm-cluster-level@1 { /* D3G*/
|
||||
reg = <1>;
|
||||
label = "perf-l2-gdhs";
|
||||
qcom,psci-mode = <2>;
|
||||
qcom,entry-latency-us = <314>;
|
||||
qcom,exit-latency-us = <345>;
|
||||
qcom,min-residency-us = <660>;
|
||||
qcom,min-child-idx = <1>;
|
||||
};
|
||||
|
||||
qcom,pm-cluster-level@2 { /* D3 */
|
||||
reg = <2>;
|
||||
label = "perf-l2-pc";
|
||||
qcom,psci-mode = <0x4>;
|
||||
qcom,entry-latency-us = <640>;
|
||||
qcom,exit-latency-us = <1654>;
|
||||
qcom,min-residency-us = <8094>;
|
||||
qcom,min-child-idx = <1>;
|
||||
qcom,is-reset;
|
||||
};
|
||||
|
||||
qcom,pm-cpu {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
qcom,psci-mode-shift = <0>;
|
||||
qcom,psci-mode-mask = <0xf>;
|
||||
qcom,cpu = <&CPU4 &CPU5 &CPU6 &CPU7>;
|
||||
|
||||
qcom,pm-cpu-level@0 { /* C1 */
|
||||
reg = <0>;
|
||||
label = "wfi";
|
||||
qcom,psci-cpu-mode = <0x1>;
|
||||
qcom,entry-latency-us = <29>;
|
||||
qcom,exit-latency-us = <39>;
|
||||
qcom,min-residency-us = <68>;
|
||||
};
|
||||
|
||||
qcom,pm-cpu-level@1 { /* C3 */
|
||||
reg = <1>;
|
||||
label = "pc";
|
||||
qcom,psci-cpu-mode = <0x3>;
|
||||
qcom,entry-latency-us = <297>;
|
||||
qcom,exit-latency-us = <324>;
|
||||
qcom,min-residency-us = <1110>;
|
||||
qcom,is-reset;
|
||||
qcom,use-broadcast-timer;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
qcom,rpm-stats@4600000 {
|
||||
compatible = "qcom,rpm-stats";
|
||||
reg = <0x04600000 0x1000>,
|
||||
<0x04690014 0x4>;
|
||||
reg-names = "phys_addr_base", "offset_addr";
|
||||
qcom,sleep-stats-version = <2>;
|
||||
};
|
||||
|
||||
qcom,rpm-master-stats@45f0150 {
|
||||
compatible = "qcom,rpm-master-stats";
|
||||
reg = <0x45f0150 0x5000>;
|
||||
qcom,masters = "APSS", "MPSS", "ADSP", "CDSP", "TZ";
|
||||
qcom,master-stats-version = <2>;
|
||||
qcom,master-offset = <4096>;
|
||||
};
|
||||
};
|
||||
@@ -659,6 +659,13 @@
|
||||
qcom,scandump-sizes = <0x40000>;
|
||||
};
|
||||
|
||||
rpm_bus: qcom,rpm-smd {
|
||||
compatible = "qcom,rpm-smd";
|
||||
rpm-channel-name = "rpm_requests";
|
||||
interrupts = <GIC_SPI 194 IRQ_TYPE_EDGE_RISING>;
|
||||
rpm-channel-type = <15>; /* SMD_APPS_RPM */
|
||||
};
|
||||
|
||||
qcom,chd_silver {
|
||||
compatible = "qcom,core-hang-detect";
|
||||
label = "silver";
|
||||
@@ -1437,6 +1444,7 @@
|
||||
|
||||
#include "msm-arm-smmu-bengal.dtsi"
|
||||
#include "bengal-regulator.dtsi"
|
||||
#include "bengal-pm.dtsi"
|
||||
#include "bengal-pinctrl.dtsi"
|
||||
#include "bengal-qupv3.dtsi"
|
||||
#include "bengal-gpu.dtsi"
|
||||
|
||||
Reference in new issue
Block a user