xref: /openbmc/linux/Documentation/devicetree/bindings/devfreq/event/samsung,exynos-ppmu.yaml (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
1c507f152SKrzysztof Kozlowski# SPDX-License-Identifier: GPL-2.0
2c507f152SKrzysztof Kozlowski%YAML 1.2
3c507f152SKrzysztof Kozlowski---
4c507f152SKrzysztof Kozlowski$id: http://devicetree.org/schemas/devfreq/event/samsung,exynos-ppmu.yaml#
5c507f152SKrzysztof Kozlowski$schema: http://devicetree.org/meta-schemas/core.yaml#
6c507f152SKrzysztof Kozlowski
7c507f152SKrzysztof Kozlowskititle: Samsung Exynos SoC PPMU (Platform Performance Monitoring Unit)
8c507f152SKrzysztof Kozlowski
9c507f152SKrzysztof Kozlowskimaintainers:
10c507f152SKrzysztof Kozlowski  - Chanwoo Choi <cw00.choi@samsung.com>
118a1e6bb3SKrzysztof Kozlowski  - Krzysztof Kozlowski <krzk@kernel.org>
12c507f152SKrzysztof Kozlowski
13c507f152SKrzysztof Kozlowskidescription: |
14c507f152SKrzysztof Kozlowski  The Samsung Exynos SoC has PPMU (Platform Performance Monitoring Unit) for
15c507f152SKrzysztof Kozlowski  each IP. PPMU provides the primitive values to get performance data. These
16c507f152SKrzysztof Kozlowski  PPMU events provide information of the SoC's behaviors so that you may use to
17c507f152SKrzysztof Kozlowski  analyze system performance, to make behaviors visible and to count usages of
18c507f152SKrzysztof Kozlowski  each IP (DMC, CPU, RIGHTBUS, LEFTBUS, CAM interface, LCD, G3D, MFC).  The
19c507f152SKrzysztof Kozlowski  Exynos PPMU driver uses the devfreq-event class to provide event data to
20c507f152SKrzysztof Kozlowski  various devfreq devices. The devfreq devices would use the event data when
21*47aab533SBjorn Helgaas  determining the current state of each IP.
22c507f152SKrzysztof Kozlowski
23c507f152SKrzysztof Kozlowskiproperties:
24c507f152SKrzysztof Kozlowski  compatible:
25c507f152SKrzysztof Kozlowski    enum:
26c507f152SKrzysztof Kozlowski      - samsung,exynos-ppmu
27c507f152SKrzysztof Kozlowski      - samsung,exynos-ppmu-v2
28c507f152SKrzysztof Kozlowski
29c507f152SKrzysztof Kozlowski  clock-names:
30c507f152SKrzysztof Kozlowski    items:
31c507f152SKrzysztof Kozlowski      - const: ppmu
32c507f152SKrzysztof Kozlowski
33c507f152SKrzysztof Kozlowski  clocks:
34c507f152SKrzysztof Kozlowski    maxItems: 1
35c507f152SKrzysztof Kozlowski
36c507f152SKrzysztof Kozlowski  reg:
37c507f152SKrzysztof Kozlowski    maxItems: 1
38c507f152SKrzysztof Kozlowski
39c507f152SKrzysztof Kozlowski  events:
40c507f152SKrzysztof Kozlowski    type: object
41c507f152SKrzysztof Kozlowski
42c507f152SKrzysztof Kozlowski    patternProperties:
43c507f152SKrzysztof Kozlowski      '^ppmu-event[0-9]+(-[a-z0-9]+){,2}$':
44c507f152SKrzysztof Kozlowski        type: object
45c507f152SKrzysztof Kozlowski        properties:
46c507f152SKrzysztof Kozlowski          event-name:
47c507f152SKrzysztof Kozlowski            description: |
48c507f152SKrzysztof Kozlowski              The unique event name among PPMU device
49c507f152SKrzysztof Kozlowski            $ref: /schemas/types.yaml#/definitions/string
50c507f152SKrzysztof Kozlowski
51c507f152SKrzysztof Kozlowski          event-data-type:
52c507f152SKrzysztof Kozlowski            description: |
53c507f152SKrzysztof Kozlowski              Define the type of data which shell be counted by the counter.
54c507f152SKrzysztof Kozlowski              You can check include/dt-bindings/pmu/exynos_ppmu.h for all
55c507f152SKrzysztof Kozlowski              possible type, i.e. count read requests, count write data in
56c507f152SKrzysztof Kozlowski              bytes, etc.  This field is optional and when it is missing, the
57c507f152SKrzysztof Kozlowski              driver code will use default data type.
58c507f152SKrzysztof Kozlowski            $ref: /schemas/types.yaml#/definitions/uint32
59c507f152SKrzysztof Kozlowski
60c507f152SKrzysztof Kozlowski        required:
61c507f152SKrzysztof Kozlowski          - event-name
62c507f152SKrzysztof Kozlowski
63c507f152SKrzysztof Kozlowski        additionalProperties: false
64c507f152SKrzysztof Kozlowski
65c507f152SKrzysztof Kozlowski    additionalProperties: false
66c507f152SKrzysztof Kozlowski
67c507f152SKrzysztof Kozlowskirequired:
68c507f152SKrzysztof Kozlowski  - compatible
69c507f152SKrzysztof Kozlowski  - reg
70c507f152SKrzysztof Kozlowski
71c507f152SKrzysztof KozlowskiadditionalProperties: false
72c507f152SKrzysztof Kozlowski
73c507f152SKrzysztof Kozlowskiexamples:
74c507f152SKrzysztof Kozlowski  - |
75c507f152SKrzysztof Kozlowski    // PPMUv1 nodes for Exynos3250 (although the board DTS defines events)
76c507f152SKrzysztof Kozlowski    #include <dt-bindings/clock/exynos3250.h>
77c507f152SKrzysztof Kozlowski
78c507f152SKrzysztof Kozlowski    ppmu_dmc0: ppmu@106a0000 {
79c507f152SKrzysztof Kozlowski        compatible = "samsung,exynos-ppmu";
80c507f152SKrzysztof Kozlowski        reg = <0x106a0000 0x2000>;
81c507f152SKrzysztof Kozlowski
82c507f152SKrzysztof Kozlowski        events {
83c507f152SKrzysztof Kozlowski            ppmu_dmc0_3: ppmu-event3-dmc0 {
84c507f152SKrzysztof Kozlowski                event-name = "ppmu-event3-dmc0";
85c507f152SKrzysztof Kozlowski            };
86c507f152SKrzysztof Kozlowski
87c507f152SKrzysztof Kozlowski            ppmu_dmc0_2: ppmu-event2-dmc0 {
88c507f152SKrzysztof Kozlowski                event-name = "ppmu-event2-dmc0";
89c507f152SKrzysztof Kozlowski            };
90c507f152SKrzysztof Kozlowski
91c507f152SKrzysztof Kozlowski            ppmu_dmc0_1: ppmu-event1-dmc0 {
92c507f152SKrzysztof Kozlowski                event-name = "ppmu-event1-dmc0";
93c507f152SKrzysztof Kozlowski            };
94c507f152SKrzysztof Kozlowski
95c507f152SKrzysztof Kozlowski            ppmu_dmc0_0: ppmu-event0-dmc0 {
96c507f152SKrzysztof Kozlowski                event-name = "ppmu-event0-dmc0";
97c507f152SKrzysztof Kozlowski            };
98c507f152SKrzysztof Kozlowski        };
99c507f152SKrzysztof Kozlowski    };
100c507f152SKrzysztof Kozlowski
101c507f152SKrzysztof Kozlowski    ppmu_rightbus: ppmu@112a0000 {
102c507f152SKrzysztof Kozlowski        compatible = "samsung,exynos-ppmu";
103c507f152SKrzysztof Kozlowski        reg = <0x112a0000 0x2000>;
104c507f152SKrzysztof Kozlowski        clocks = <&cmu CLK_PPMURIGHT>;
105c507f152SKrzysztof Kozlowski        clock-names = "ppmu";
106c507f152SKrzysztof Kozlowski
107c507f152SKrzysztof Kozlowski        events {
108c507f152SKrzysztof Kozlowski            ppmu_rightbus_3: ppmu-event3-rightbus {
109c507f152SKrzysztof Kozlowski                event-name = "ppmu-event3-rightbus";
110c507f152SKrzysztof Kozlowski            };
111c507f152SKrzysztof Kozlowski        };
112c507f152SKrzysztof Kozlowski    };
113c507f152SKrzysztof Kozlowski
114c507f152SKrzysztof Kozlowski  - |
115c507f152SKrzysztof Kozlowski    // PPMUv2 nodes in Exynos5433
116c507f152SKrzysztof Kozlowski    ppmu_d0_cpu: ppmu@10480000 {
117c507f152SKrzysztof Kozlowski        compatible = "samsung,exynos-ppmu-v2";
118c507f152SKrzysztof Kozlowski        reg = <0x10480000 0x2000>;
119c507f152SKrzysztof Kozlowski    };
120c507f152SKrzysztof Kozlowski
121c507f152SKrzysztof Kozlowski    ppmu_d0_general: ppmu@10490000 {
122c507f152SKrzysztof Kozlowski        compatible = "samsung,exynos-ppmu-v2";
123c507f152SKrzysztof Kozlowski        reg = <0x10490000 0x2000>;
124c507f152SKrzysztof Kozlowski
125c507f152SKrzysztof Kozlowski        events {
126c507f152SKrzysztof Kozlowski            ppmu_event0_d0_general: ppmu-event0-d0-general {
127c507f152SKrzysztof Kozlowski                event-name = "ppmu-event0-d0-general";
128c507f152SKrzysztof Kozlowski            };
129c507f152SKrzysztof Kozlowski        };
130c507f152SKrzysztof Kozlowski    };
131c507f152SKrzysztof Kozlowski
132c507f152SKrzysztof Kozlowski    ppmu_d0_rt: ppmu@104a0000 {
133c507f152SKrzysztof Kozlowski        compatible = "samsung,exynos-ppmu-v2";
134c507f152SKrzysztof Kozlowski        reg = <0x104a0000 0x2000>;
135c507f152SKrzysztof Kozlowski    };
136c507f152SKrzysztof Kozlowski
137c507f152SKrzysztof Kozlowski    ppmu_d1_cpu: ppmu@104b0000 {
138c507f152SKrzysztof Kozlowski        compatible = "samsung,exynos-ppmu-v2";
139c507f152SKrzysztof Kozlowski        reg = <0x104b0000 0x2000>;
140c507f152SKrzysztof Kozlowski    };
141c507f152SKrzysztof Kozlowski
142c507f152SKrzysztof Kozlowski    ppmu_d1_general: ppmu@104c0000 {
143c507f152SKrzysztof Kozlowski        compatible = "samsung,exynos-ppmu-v2";
144c507f152SKrzysztof Kozlowski        reg = <0x104c0000 0x2000>;
145c507f152SKrzysztof Kozlowski    };
146c507f152SKrzysztof Kozlowski
147c507f152SKrzysztof Kozlowski    ppmu_d1_rt: ppmu@104d0000 {
148c507f152SKrzysztof Kozlowski        compatible = "samsung,exynos-ppmu-v2";
149c507f152SKrzysztof Kozlowski        reg = <0x104d0000 0x2000>;
150c507f152SKrzysztof Kozlowski    };
151c507f152SKrzysztof Kozlowski
152c507f152SKrzysztof Kozlowski  - |
153c507f152SKrzysztof Kozlowski    // PPMUv1 nodes with event-data-type for Exynos4412
154c507f152SKrzysztof Kozlowski    #include <dt-bindings/pmu/exynos_ppmu.h>
155c507f152SKrzysztof Kozlowski
156c507f152SKrzysztof Kozlowski    ppmu@106a0000 {
157c507f152SKrzysztof Kozlowski        compatible = "samsung,exynos-ppmu";
158c507f152SKrzysztof Kozlowski        reg = <0x106a0000 0x2000>;
159c507f152SKrzysztof Kozlowski        clocks = <&clock 400>;
160c507f152SKrzysztof Kozlowski        clock-names = "ppmu";
161c507f152SKrzysztof Kozlowski
162c507f152SKrzysztof Kozlowski        events {
163c507f152SKrzysztof Kozlowski            ppmu-event3-dmc0 {
164c507f152SKrzysztof Kozlowski                event-name = "ppmu-event3-dmc0";
165c507f152SKrzysztof Kozlowski                event-data-type = <(PPMU_RO_DATA_CNT |
166c507f152SKrzysztof Kozlowski                                    PPMU_WO_DATA_CNT)>;
167c507f152SKrzysztof Kozlowski            };
168c507f152SKrzysztof Kozlowski        };
169c507f152SKrzysztof Kozlowski    };
170