xref: /linux/Documentation/devicetree/bindings/interconnect/qcom,msm8998-bwmon.yaml (revision c7546e2c3cb739a3c1a2f5acaf9bb629d401afe5)
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,sa8775p-cpu-bwmon
30              - qcom,sc7180-cpu-bwmon
31              - qcom,sc7280-cpu-bwmon
32              - qcom,sc8280xp-cpu-bwmon
33              - qcom,sdm845-cpu-bwmon
34              - qcom,sm6115-cpu-bwmon
35              - qcom,sm6350-llcc-bwmon
36              - qcom,sm8250-cpu-bwmon
37              - qcom,sm8550-cpu-bwmon
38              - qcom,sm8650-cpu-bwmon
39              - qcom,x1e80100-cpu-bwmon
40          - const: qcom,sdm845-bwmon    # BWMON v4, unified register space
41      - items:
42          - enum:
43              - qcom,sa8775p-llcc-bwmon
44              - qcom,sc7180-llcc-bwmon
45              - qcom,sc8280xp-llcc-bwmon
46              - qcom,sm6350-cpu-bwmon
47              - qcom,sm8250-llcc-bwmon
48              - qcom,sm8550-llcc-bwmon
49              - qcom,sm8650-llcc-bwmon
50              - qcom,x1e80100-llcc-bwmon
51          - const: qcom,sc7280-llcc-bwmon
52      - const: qcom,sc7280-llcc-bwmon   # BWMON v5
53      - const: qcom,sdm845-llcc-bwmon   # BWMON v5
54
55  interconnects:
56    maxItems: 1
57
58  interrupts:
59    maxItems: 1
60
61  operating-points-v2: true
62  opp-table:
63    type: object
64
65  reg:
66    # BWMON v5 uses one register address space, v1-v4 use one or two.
67    minItems: 1
68    maxItems: 2
69
70  reg-names:
71    minItems: 1
72    maxItems: 2
73
74required:
75  - compatible
76  - interconnects
77  - interrupts
78  - operating-points-v2
79  - reg
80
81additionalProperties: false
82
83allOf:
84  - if:
85      properties:
86        compatible:
87          const: qcom,msm8998-bwmon
88    then:
89      properties:
90        reg:
91          minItems: 2
92
93        reg-names:
94          items:
95            - const: monitor
96            - const: global
97
98    else:
99      properties:
100        reg:
101          maxItems: 1
102
103        reg-names:
104          maxItems: 1
105
106examples:
107  - |
108    #include <dt-bindings/interconnect/qcom,sdm845.h>
109    #include <dt-bindings/interrupt-controller/arm-gic.h>
110
111    pmu@1436400 {
112        compatible = "qcom,sdm845-cpu-bwmon", "qcom,sdm845-bwmon";
113        reg = <0x01436400 0x600>;
114        interrupts = <GIC_SPI 581 IRQ_TYPE_LEVEL_HIGH>;
115        interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_LLCC 3>;
116
117        operating-points-v2 = <&cpu_bwmon_opp_table>;
118
119        cpu_bwmon_opp_table: opp-table {
120            compatible = "operating-points-v2";
121            opp-0 {
122                opp-peak-kBps = <4800000>;
123            };
124            opp-1 {
125                opp-peak-kBps = <9216000>;
126            };
127            opp-2 {
128                opp-peak-kBps = <15052800>;
129            };
130            opp-3 {
131                opp-peak-kBps = <20889600>;
132            };
133            opp-4 {
134                opp-peak-kBps = <25497600>;
135            };
136        };
137    };
138