1*0be43924SKonrad Dybcio# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*0be43924SKonrad Dybcio%YAML 1.2
3*0be43924SKonrad Dybcio---
4*0be43924SKonrad Dybcio$id: http://devicetree.org/schemas/soc/qcom/qcom,rpm-master-stats.yaml#
5*0be43924SKonrad Dybcio$schema: http://devicetree.org/meta-schemas/core.yaml#
6*0be43924SKonrad Dybcio
7*0be43924SKonrad Dybciotitle: Qualcomm Technologies, Inc. (QTI) RPM Master Stats
8*0be43924SKonrad Dybcio
9*0be43924SKonrad Dybciomaintainers:
10*0be43924SKonrad Dybcio  - Konrad Dybcio <konrad.dybcio@linaro.org>
11*0be43924SKonrad Dybcio
12*0be43924SKonrad Dybciodescription: |
13*0be43924SKonrad Dybcio  The Qualcomm RPM (Resource Power Manager) architecture includes a concept
14*0be43924SKonrad Dybcio  of "RPM Masters". They can be thought of as "the local gang leaders", usually
15*0be43924SKonrad Dybcio  spanning a single subsystem (e.g. APSS, ADSP, CDSP). All of the RPM decisions
16*0be43924SKonrad Dybcio  (particularly around entering hardware-driven low power modes: XO shutdown
17*0be43924SKonrad Dybcio  and total system-wide power collapse) are first made at Master-level, and
18*0be43924SKonrad Dybcio  only then aggregated for the entire system.
19*0be43924SKonrad Dybcio
20*0be43924SKonrad Dybcio  The Master Stats provide a few useful bits that can be used to assess whether
21*0be43924SKonrad Dybcio  our device has entered the desired low-power mode, how long it took to do so,
22*0be43924SKonrad Dybcio  the duration of that residence, how long it took to come back online,
23*0be43924SKonrad Dybcio  how many times a given sleep state was entered and which cores are actively
24*0be43924SKonrad Dybcio  voting for staying awake.
25*0be43924SKonrad Dybcio
26*0be43924SKonrad Dybcio  This scheme has been used on various SoCs in the 2013-2023 era, with some
27*0be43924SKonrad Dybcio  newer or higher-end designs providing this information through an SMEM query.
28*0be43924SKonrad Dybcio
29*0be43924SKonrad Dybcioproperties:
30*0be43924SKonrad Dybcio  compatible:
31*0be43924SKonrad Dybcio    const: qcom,rpm-master-stats
32*0be43924SKonrad Dybcio
33*0be43924SKonrad Dybcio  qcom,rpm-msg-ram:
34*0be43924SKonrad Dybcio    $ref: /schemas/types.yaml#/definitions/phandle-array
35*0be43924SKonrad Dybcio    description: Phandle to an RPM MSG RAM slice containing the master stats
36*0be43924SKonrad Dybcio    minItems: 1
37*0be43924SKonrad Dybcio    maxItems: 5
38*0be43924SKonrad Dybcio
39*0be43924SKonrad Dybcio  qcom,master-names:
40*0be43924SKonrad Dybcio    $ref: /schemas/types.yaml#/definitions/string-array
41*0be43924SKonrad Dybcio    description:
42*0be43924SKonrad Dybcio      The name of the RPM Master which owns the MSG RAM slice where this
43*0be43924SKonrad Dybcio      instance of Master Stats resides
44*0be43924SKonrad Dybcio    minItems: 1
45*0be43924SKonrad Dybcio    maxItems: 5
46*0be43924SKonrad Dybcio
47*0be43924SKonrad Dybciorequired:
48*0be43924SKonrad Dybcio  - compatible
49*0be43924SKonrad Dybcio  - qcom,rpm-msg-ram
50*0be43924SKonrad Dybcio  - qcom,master-names
51*0be43924SKonrad Dybcio
52*0be43924SKonrad DybcioadditionalProperties: false
53*0be43924SKonrad Dybcio
54*0be43924SKonrad Dybcioexamples:
55*0be43924SKonrad Dybcio  - |
56*0be43924SKonrad Dybcio    stats {
57*0be43924SKonrad Dybcio      compatible = "qcom,rpm-master-stats";
58*0be43924SKonrad Dybcio      qcom,rpm-msg-ram = <&apss_master_stats>,
59*0be43924SKonrad Dybcio                         <&mpss_master_stats>,
60*0be43924SKonrad Dybcio                         <&adsp_master_stats>,
61*0be43924SKonrad Dybcio                         <&cdsp_master_stats>,
62*0be43924SKonrad Dybcio                         <&tz_master_stats>;
63*0be43924SKonrad Dybcio      qcom,master-names = "APSS",
64*0be43924SKonrad Dybcio                          "MPSS",
65*0be43924SKonrad Dybcio                          "ADSP",
66*0be43924SKonrad Dybcio                          "CDSP",
67*0be43924SKonrad Dybcio                          "TZ";
68*0be43924SKonrad Dybcio    };
69*0be43924SKonrad Dybcio...
70