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      - items:
26          - enum:
27              - qcom,sc7280-bwmon
28              - qcom,sdm845-bwmon
29          - const: qcom,msm8998-bwmon
30      - const: qcom,msm8998-bwmon       # BWMON v4
31      - const: qcom,sc7280-llcc-bwmon   # BWMON v5
32      - const: qcom,sdm845-llcc-bwmon   # BWMON v5
33
34  interconnects:
35    maxItems: 1
36
37  interrupts:
38    maxItems: 1
39
40  operating-points-v2: true
41  opp-table:
42    type: object
43
44  reg:
45    # BWMON v4 (currently described) and BWMON v5 use one register address
46    # space.  BWMON v2 uses two register spaces - not yet described.
47    maxItems: 1
48
49required:
50  - compatible
51  - interconnects
52  - interrupts
53  - operating-points-v2
54  - opp-table
55  - reg
56
57additionalProperties: false
58
59examples:
60  - |
61    #include <dt-bindings/interconnect/qcom,sdm845.h>
62    #include <dt-bindings/interrupt-controller/arm-gic.h>
63
64    pmu@1436400 {
65        compatible = "qcom,sdm845-bwmon", "qcom,msm8998-bwmon";
66        reg = <0x01436400 0x600>;
67        interrupts = <GIC_SPI 581 IRQ_TYPE_LEVEL_HIGH>;
68        interconnects = <&gladiator_noc MASTER_APPSS_PROC 3 &mem_noc SLAVE_LLCC 3>;
69
70        operating-points-v2 = <&cpu_bwmon_opp_table>;
71
72        cpu_bwmon_opp_table: opp-table {
73            compatible = "operating-points-v2";
74            opp-0 {
75                opp-peak-kBps = <4800000>;
76            };
77            opp-1 {
78                opp-peak-kBps = <9216000>;
79            };
80            opp-2 {
81                opp-peak-kBps = <15052800>;
82            };
83            opp-3 {
84                opp-peak-kBps = <20889600>;
85            };
86            opp-4 {
87                opp-peak-kBps = <25497600>;
88            };
89        };
90    };
91