From: Wenjing Liu <wenjing....@amd.com>

[why]
dchubbub supports performance monitoring for hubbub.
The interfaces define the performance monitoring events and their
attributes.

Reviewed-by: Alvin Lee <alvin.l...@amd.com>
Signed-off-by: Wenjing Liu <wenjing....@amd.com>
Signed-off-by: Wayne Lin <wayne....@amd.com>
---
 .../gpu/drm/amd/display/dc/inc/hw/dchubbub.h  | 22 +++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/drivers/gpu/drm/amd/display/dc/inc/hw/dchubbub.h 
b/drivers/gpu/drm/amd/display/dc/inc/hw/dchubbub.h
index 9bee45b36629..843a18287c83 100644
--- a/drivers/gpu/drm/amd/display/dc/inc/hw/dchubbub.h
+++ b/drivers/gpu/drm/amd/display/dc/inc/hw/dchubbub.h
@@ -137,6 +137,19 @@ struct dcn_hubbub_state {
        uint32_t dram_state_cntl;
 };
 
+struct hubbub_system_latencies {
+       uint32_t max_latency_ns;
+       uint32_t avg_latency_ns;
+       uint32_t min_latency_ns;
+};
+
+struct hubbub_urgent_latency_params {
+       uint32_t refclk_mhz;
+       uint32_t t_win_ns;
+       uint32_t bandwidth_mbps;
+       uint32_t bw_factor_x1000;
+};
+
 struct hubbub_funcs {
        void (*update_dchub)(
                        struct hubbub *hubbub,
@@ -231,6 +244,15 @@ struct hubbub_funcs {
        bool (*program_arbiter)(struct hubbub *hubbub, struct 
dml2_display_arb_regs *arb_regs, bool safe_to_lower);
        void (*get_det_sizes)(struct hubbub *hubbub, uint32_t *curr_det_sizes, 
uint32_t *target_det_sizes);
        uint32_t (*compbuf_config_error)(struct hubbub *hubbub);
+       struct hubbub_perfmon_funcs{
+               void (*start_system_latency_measurement)(struct hubbub *hubbub);
+               void (*get_system_latency_result)(struct hubbub *hubbub, 
uint32_t refclk_mhz, struct hubbub_system_latencies *latencies);
+               void (*start_in_order_bandwidth_measurement)(struct hubbub 
*hubbub);
+               void (*get_in_order_bandwidth_result)(struct hubbub *hubbub, 
uint32_t refclk_mhz, uint32_t *bandwidth_mbps);
+               void (*start_urgent_ramp_latency_measurement)(struct hubbub 
*hubbub, const struct hubbub_urgent_latency_params *params);
+               void (*get_urgent_ramp_latency_result)(struct hubbub *hubbub, 
uint32_t refclk_mhz, uint32_t *latency_ns);
+               void (*reset)(struct hubbub *hubbub);
+       } perfmon;
 };
 
 struct hubbub {
-- 
2.43.0

Reply via email to