xref: /linux/Documentation/devicetree/bindings/interconnect/qcom,msm8998-bwmon.yaml (revision d53b8e36925256097a08d7cb749198d85cbf9b2b)
1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/interconnect/qcom,msm8998-bwmon.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm Interconnect Bandwidth Monitor
8
9maintainers:
10  - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
11
12description: |
13  Bandwidth Monitor measures current throughput on buses between various NoC
14  fabrics and provides information when it crosses configured thresholds.
15
16  Certain SoCs might have more than one Bandwidth Monitors, for example on SDM845::
17   - Measuring the bandwidth between CPUs and Last Level Cache Controller -
18     called just BWMON,
19   - Measuring the bandwidth between Last Level Cache Controller and memory
20     (DDR) - called LLCC BWMON.
21
22properties:
23  compatible:
24    oneOf:
25      - const: qcom,msm8998-bwmon       # BWMON v4
26      - items:
27          - enum:
28              - qcom,qcm2290-cpu-bwmon
29              - qcom,sc7180-cpu-bwmon
30              - qcom,sc7280-cpu-bwmon
31              - qcom,sc8280xp-cpu-bwmon
32              - qcom,sdm845-cpu-bwmon
33              - qcom,sm6115-cpu-bwmon
34              - qcom,sm6350-llcc-bwmon
35              - qcom,sm8250-cpu-bwmon
36              - qcom,sm8550-cpu-bwmon
37              - qcom,sm8650-cpu-bwmon
38              - qcom,x1e80100-cpu-bwmon
39          - const: qcom,sdm845-bwmon    # BWMON v4, unified register space
40      - items:
41          - enum:
42              - qcom,sc7180-llcc-bwmon
43              - qcom,sc8280xp-llcc-bwmon
44              - qcom,sm6350-cpu-bwmon
45              - qcom,sm8250-llcc-bwmon
46              - qcom,sm8550-llcc-bwmon
47              - qcom,sm8650-llcc-bwmon
48              - qcom,x1e80100-llcc-bwmon
49          - const: qcom,sc7280-llcc-bwmon
50      - const: qcom,sc7280-llcc-bwmon   # BWMON v5
51      - const: qcom,sdm845-llcc-bwmon   # BWMON v5
52
53  interconnects:
54    maxItems: 1
55
56  interrupts:
57    maxItems: 1
58
59  operating-points-v2: true
60  opp-table:
61    type: object
62
63  reg:
64    # BWMON v5 uses one register address space, v1-v4 use one or two.
65    minItems: 1
66    maxItems: 2
67
68  reg-names:
69    minItems: 1
70    maxItems: 2
71
72required:
73  - compatible
74  - interconnects
75  - interrupts
76  - operating-points-v2
77  - reg
78
79additionalProperties: false
80
81allOf:
82  - if:
83      properties:
84        compatible:
85          const: qcom,msm8998-bwmon
86    then:
87      properties:
88        reg:
89          minItems: 2
90
91        reg-names:
92          items:
93            - const: monitor
94            - const: global
95
96    else:
97      properties:
98        reg:
99          maxItems: 1
100
101        reg-names:
102          maxItems: 1
103
104examples:
105  - |
106    #include <dt-bindings/interconnect/qcom,sdm845.h>
107    #include <dt-bindings/interrupt-controller/arm-gic.h>
108
109    pmu@1436400 {
110        compatible = "qcom,sdm845-cpu-bwmon", "qcom,sdm845-bwmon";
111        reg = <0x01436400 0x600>;
112        interrupts = <GIC_SPI 581 IRQ_TYPE_LEVEL_HIGH>;
113        interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_LLCC 3>;
114
115        operating-points-v2 = <&cpu_bwmon_opp_table>;
116
117        cpu_bwmon_opp_table: opp-table {
118            compatible = "operating-points-v2";
119            opp-0 {
120                opp-peak-kBps = <4800000>;
121            };
122            opp-1 {
123                opp-peak-kBps = <9216000>;
124            };
125            opp-2 {
126                opp-peak-kBps = <15052800>;
127            };
128            opp-3 {
129                opp-peak-kBps = <20889600>;
130            };
131            opp-4 {
132                opp-peak-kBps = <25497600>;
133            };
134        };
135    };
136