162306a36Sopenharmony_ci.. SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci
362306a36Sopenharmony_ci===========================================================
462306a36Sopenharmony_ciAmlogic SoC DDR Bandwidth Performance Monitoring Unit (PMU)
562306a36Sopenharmony_ci===========================================================
662306a36Sopenharmony_ci
762306a36Sopenharmony_ciThe Amlogic Meson G12 SoC contains a bandwidth monitor inside DRAM controller.
862306a36Sopenharmony_ciThe monitor includes 4 channels. Each channel can count the request accessing
962306a36Sopenharmony_ciDRAM. The channel can count up to 3 AXI port simultaneously. It can be helpful
1062306a36Sopenharmony_cito show if the performance bottleneck is on DDR bandwidth.
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciCurrently, this driver supports the following 5 perf events:
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci+ meson_ddr_bw/total_rw_bytes/
1562306a36Sopenharmony_ci+ meson_ddr_bw/chan_1_rw_bytes/
1662306a36Sopenharmony_ci+ meson_ddr_bw/chan_2_rw_bytes/
1762306a36Sopenharmony_ci+ meson_ddr_bw/chan_3_rw_bytes/
1862306a36Sopenharmony_ci+ meson_ddr_bw/chan_4_rw_bytes/
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_cimeson_ddr_bw/chan_{1,2,3,4}_rw_bytes/ events are channel-specific events.
2162306a36Sopenharmony_ciEach channel support filtering, which can let the channel to monitor
2262306a36Sopenharmony_ciindividual IP module in SoC.
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciBelow are DDR access request event filter keywords:
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci+ arm             - from CPU
2762306a36Sopenharmony_ci+ vpu_read1       - from OSD + VPP read
2862306a36Sopenharmony_ci+ gpu             - from 3D GPU
2962306a36Sopenharmony_ci+ pcie            - from PCIe controller
3062306a36Sopenharmony_ci+ hdcp            - from HDCP controller
3162306a36Sopenharmony_ci+ hevc_front      - from HEVC codec front end
3262306a36Sopenharmony_ci+ usb3_0          - from USB3.0 controller
3362306a36Sopenharmony_ci+ hevc_back       - from HEVC codec back end
3462306a36Sopenharmony_ci+ h265enc         - from HEVC encoder
3562306a36Sopenharmony_ci+ vpu_read2       - from DI read
3662306a36Sopenharmony_ci+ vpu_write1      - from VDIN write
3762306a36Sopenharmony_ci+ vpu_write2      - from di write
3862306a36Sopenharmony_ci+ vdec            - from legacy codec video decoder
3962306a36Sopenharmony_ci+ hcodec          - from H264 encoder
4062306a36Sopenharmony_ci+ ge2d            - from ge2d
4162306a36Sopenharmony_ci+ spicc1          - from SPI controller 1
4262306a36Sopenharmony_ci+ usb0            - from USB2.0 controller 0
4362306a36Sopenharmony_ci+ dma             - from system DMA controller 1
4462306a36Sopenharmony_ci+ arb0            - from arb0
4562306a36Sopenharmony_ci+ sd_emmc_b       - from SD eMMC b controller
4662306a36Sopenharmony_ci+ usb1            - from USB2.0 controller 1
4762306a36Sopenharmony_ci+ audio           - from Audio module
4862306a36Sopenharmony_ci+ sd_emmc_c       - from SD eMMC c controller
4962306a36Sopenharmony_ci+ spicc2          - from SPI controller 2
5062306a36Sopenharmony_ci+ ethernet        - from Ethernet controller
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ciExamples:
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci  + Show the total DDR bandwidth per seconds:
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci    .. code-block:: bash
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci       perf stat -a -e meson_ddr_bw/total_rw_bytes/ -I 1000 sleep 10
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci  + Show individual DDR bandwidth from CPU and GPU respectively, as well as
6362306a36Sopenharmony_ci    sum of them:
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci    .. code-block:: bash
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci       perf stat -a -e meson_ddr_bw/chan_1_rw_bytes,arm=1/ -I 1000 sleep 10
6862306a36Sopenharmony_ci       perf stat -a -e meson_ddr_bw/chan_2_rw_bytes,gpu=1/ -I 1000 sleep 10
6962306a36Sopenharmony_ci       perf stat -a -e meson_ddr_bw/chan_3_rw_bytes,arm=1,gpu=1/ -I 1000 sleep 10
7062306a36Sopenharmony_ci
71