| |
| * Samsung Exynos PPMU (Platform Performance Monitoring Unit) device |
| |
| 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. |
| |
| Required properties for PPMU device: |
| - compatible: Should be "samsung,exynos-ppmu" or "samsung,exynos-ppmu-v2. |
| - reg: physical base address of each PPMU and length of memory mapped region. |
| |
| Optional properties for PPMU device: |
| - clock-names : the name of clock used by the PPMU, "ppmu" |
| - clocks : phandles for clock specified in "clock-names" property |
| |
| Required properties for 'events' child node of PPMU device: |
| - event-name : the unique event name among PPMU device |
| Optional properties for 'events' child node of PPMU device: |
| - event-data-type : 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. |
| |
| Example1 : PPMUv1 nodes in exynos3250.dtsi are listed below. |
| |
| ppmu_dmc0: ppmu_dmc0@106a0000 { |
| compatible = "samsung,exynos-ppmu"; |
| reg = <0x106a0000 0x2000>; |
| status = "disabled"; |
| }; |
| |
| ppmu_dmc1: ppmu_dmc1@106b0000 { |
| compatible = "samsung,exynos-ppmu"; |
| reg = <0x106b0000 0x2000>; |
| status = "disabled"; |
| }; |
| |
| ppmu_cpu: ppmu_cpu@106c0000 { |
| compatible = "samsung,exynos-ppmu"; |
| reg = <0x106c0000 0x2000>; |
| status = "disabled"; |
| }; |
| |
| ppmu_rightbus: ppmu_rightbus@112a0000 { |
| compatible = "samsung,exynos-ppmu"; |
| reg = <0x112a0000 0x2000>; |
| clocks = <&cmu CLK_PPMURIGHT>; |
| clock-names = "ppmu"; |
| status = "disabled"; |
| }; |
| |
| ppmu_leftbus: ppmu_leftbus0@116a0000 { |
| compatible = "samsung,exynos-ppmu"; |
| reg = <0x116a0000 0x2000>; |
| clocks = <&cmu CLK_PPMULEFT>; |
| clock-names = "ppmu"; |
| status = "disabled"; |
| }; |
| |
| Example2 : Events of each PPMU node in exynos3250-rinato.dts are listed below. |
| |
| &ppmu_dmc0 { |
| status = "okay"; |
| |
| 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_dmc1 { |
| status = "okay"; |
| |
| events { |
| ppmu_dmc1_3: ppmu-event3-dmc1 { |
| event-name = "ppmu-event3-dmc1"; |
| }; |
| }; |
| }; |
| |
| &ppmu_leftbus { |
| status = "okay"; |
| |
| events { |
| ppmu_leftbus_3: ppmu-event3-leftbus { |
| event-name = "ppmu-event3-leftbus"; |
| }; |
| }; |
| }; |
| |
| &ppmu_rightbus { |
| status = "okay"; |
| |
| events { |
| ppmu_rightbus_3: ppmu-event3-rightbus { |
| event-name = "ppmu-event3-rightbus"; |
| }; |
| }; |
| }; |
| |
| Example3 : PPMUv2 nodes in exynos5433.dtsi are listed below. |
| |
| ppmu_d0_cpu: ppmu_d0_cpu@10480000 { |
| compatible = "samsung,exynos-ppmu-v2"; |
| reg = <0x10480000 0x2000>; |
| status = "disabled"; |
| }; |
| |
| ppmu_d0_general: ppmu_d0_general@10490000 { |
| compatible = "samsung,exynos-ppmu-v2"; |
| reg = <0x10490000 0x2000>; |
| status = "disabled"; |
| }; |
| |
| ppmu_d0_rt: ppmu_d0_rt@104a0000 { |
| compatible = "samsung,exynos-ppmu-v2"; |
| reg = <0x104a0000 0x2000>; |
| status = "disabled"; |
| }; |
| |
| ppmu_d1_cpu: ppmu_d1_cpu@104b0000 { |
| compatible = "samsung,exynos-ppmu-v2"; |
| reg = <0x104b0000 0x2000>; |
| status = "disabled"; |
| }; |
| |
| ppmu_d1_general: ppmu_d1_general@104c0000 { |
| compatible = "samsung,exynos-ppmu-v2"; |
| reg = <0x104c0000 0x2000>; |
| status = "disabled"; |
| }; |
| |
| ppmu_d1_rt: ppmu_d1_rt@104d0000 { |
| compatible = "samsung,exynos-ppmu-v2"; |
| reg = <0x104d0000 0x2000>; |
| status = "disabled"; |
| }; |
| |
| Example4 : 'event-data-type' in exynos4412-ppmu-common.dtsi are listed below. |
| |
| &ppmu_dmc0 { |
| status = "okay"; |
| events { |
| ppmu_dmc0_3: ppmu-event3-dmc0 { |
| event-name = "ppmu-event3-dmc0"; |
| event-data-type = <(PPMU_RO_DATA_CNT | |
| PPMU_WO_DATA_CNT)>; |
| }; |
| }; |
| }; |