| # SPDX-License-Identifier: GPL-2.0 |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/devfreq/event/samsung,exynos-ppmu.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: Samsung Exynos SoC PPMU (Platform Performance Monitoring Unit) |
| |
| maintainers: |
| - Chanwoo Choi <cw00.choi@samsung.com> |
| - Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com> |
| |
| description: | |
| The Samsung Exynos SoC has PPMU (Platform Performance Monitoring Unit) for |
| each IP. PPMU provides the primitive values to get performance data. These |
| PPMU events provide information of the SoC's behaviors so that you may use to |
| analyze system performance, to make behaviors visible and to count usages of |
| each IP (DMC, CPU, RIGHTBUS, LEFTBUS, CAM interface, LCD, G3D, MFC). The |
| Exynos PPMU driver uses the devfreq-event class to provide event data to |
| various devfreq devices. The devfreq devices would use the event data when |
| derterming the current state of each IP. |
| |
| properties: |
| compatible: |
| enum: |
| - samsung,exynos-ppmu |
| - samsung,exynos-ppmu-v2 |
| |
| clock-names: |
| items: |
| - const: ppmu |
| |
| clocks: |
| maxItems: 1 |
| |
| reg: |
| maxItems: 1 |
| |
| events: |
| type: object |
| |
| patternProperties: |
| '^ppmu-event[0-9]+(-[a-z0-9]+){,2}$': |
| type: object |
| properties: |
| event-name: |
| description: | |
| The unique event name among PPMU device |
| $ref: /schemas/types.yaml#/definitions/string |
| |
| event-data-type: |
| description: | |
| Define the type of data which shell be counted by the counter. |
| You can check include/dt-bindings/pmu/exynos_ppmu.h for all |
| possible type, i.e. count read requests, count write data in |
| bytes, etc. This field is optional and when it is missing, the |
| driver code will use default data type. |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| |
| required: |
| - event-name |
| |
| additionalProperties: false |
| |
| additionalProperties: false |
| |
| required: |
| - compatible |
| - reg |
| |
| additionalProperties: false |
| |
| examples: |
| - | |
| // PPMUv1 nodes for Exynos3250 (although the board DTS defines events) |
| #include <dt-bindings/clock/exynos3250.h> |
| |
| ppmu_dmc0: ppmu@106a0000 { |
| compatible = "samsung,exynos-ppmu"; |
| reg = <0x106a0000 0x2000>; |
| |
| events { |
| ppmu_dmc0_3: ppmu-event3-dmc0 { |
| event-name = "ppmu-event3-dmc0"; |
| }; |
| |
| ppmu_dmc0_2: ppmu-event2-dmc0 { |
| event-name = "ppmu-event2-dmc0"; |
| }; |
| |
| ppmu_dmc0_1: ppmu-event1-dmc0 { |
| event-name = "ppmu-event1-dmc0"; |
| }; |
| |
| ppmu_dmc0_0: ppmu-event0-dmc0 { |
| event-name = "ppmu-event0-dmc0"; |
| }; |
| }; |
| }; |
| |
| ppmu_rightbus: ppmu@112a0000 { |
| compatible = "samsung,exynos-ppmu"; |
| reg = <0x112a0000 0x2000>; |
| clocks = <&cmu CLK_PPMURIGHT>; |
| clock-names = "ppmu"; |
| |
| events { |
| ppmu_rightbus_3: ppmu-event3-rightbus { |
| event-name = "ppmu-event3-rightbus"; |
| }; |
| }; |
| }; |
| |
| - | |
| // PPMUv2 nodes in Exynos5433 |
| ppmu_d0_cpu: ppmu@10480000 { |
| compatible = "samsung,exynos-ppmu-v2"; |
| reg = <0x10480000 0x2000>; |
| }; |
| |
| ppmu_d0_general: ppmu@10490000 { |
| compatible = "samsung,exynos-ppmu-v2"; |
| reg = <0x10490000 0x2000>; |
| |
| events { |
| ppmu_event0_d0_general: ppmu-event0-d0-general { |
| event-name = "ppmu-event0-d0-general"; |
| }; |
| }; |
| }; |
| |
| ppmu_d0_rt: ppmu@104a0000 { |
| compatible = "samsung,exynos-ppmu-v2"; |
| reg = <0x104a0000 0x2000>; |
| }; |
| |
| ppmu_d1_cpu: ppmu@104b0000 { |
| compatible = "samsung,exynos-ppmu-v2"; |
| reg = <0x104b0000 0x2000>; |
| }; |
| |
| ppmu_d1_general: ppmu@104c0000 { |
| compatible = "samsung,exynos-ppmu-v2"; |
| reg = <0x104c0000 0x2000>; |
| }; |
| |
| ppmu_d1_rt: ppmu@104d0000 { |
| compatible = "samsung,exynos-ppmu-v2"; |
| reg = <0x104d0000 0x2000>; |
| }; |
| |
| - | |
| // PPMUv1 nodes with event-data-type for Exynos4412 |
| #include <dt-bindings/pmu/exynos_ppmu.h> |
| |
| ppmu@106a0000 { |
| compatible = "samsung,exynos-ppmu"; |
| reg = <0x106a0000 0x2000>; |
| clocks = <&clock 400>; |
| clock-names = "ppmu"; |
| |
| events { |
| ppmu-event3-dmc0 { |
| event-name = "ppmu-event3-dmc0"; |
| event-data-type = <(PPMU_RO_DATA_CNT | |
| PPMU_WO_DATA_CNT)>; |
| }; |
| }; |
| }; |