Browse Source

video: driver: adding average banwidth in stats logs

average calculation for llcc and ddr bandwidth for 2 seconds window
is printed in stats logs

Change-Id: I3507a0117c65b723644d00c89c7d466130d4a467
Signed-off-by: Ashish Patil <[email protected]>
Ashish Patil 2 years ago
parent
commit
2160e99d3d

+ 2 - 0
driver/vidc/inc/msm_vidc_internal.h

@@ -713,6 +713,8 @@ struct msm_vidc_statistics {
 	struct debug_buf_count             count;
 	u64                                data_size;
 	u64                                time_ms;
+	u32                                avg_bw_llcc;
+	u32                                avg_bw_ddr;
 };
 
 enum efuse_purpose {

+ 6 - 3
driver/vidc/src/msm_vidc_driver.c

@@ -2691,13 +2691,16 @@ void msm_vidc_print_stats(struct msm_vidc_inst *inst)
 	bitrate_kbps = (inst->stats.data_size * 8 * 1000) / (dt_ms * 1024);
 
 	i_vpr_hs(inst,
-		"counts (etb,ebd,ftb,fbd): %u %u %u %u (total %llu %llu %llu %llu), achieved bitrate %lldKbps fps %u/s, frame rate %u, operating rate %u, priority %u, dt %ums\n",
+		"counts (etb,ebd,ftb,fbd): %u %u %u %u (total %llu %llu %llu %llu), achieved bitrate %lldKbps fps %u/s, frame rate %u, operating rate %u, priority %u, avg bw llcc %ukhz, avb bw ddr %ukhz, dt %ums\n",
 		etb, ebd, ftb, fbd, inst->debug_count.etb, inst->debug_count.ebd,
-		inst->debug_count.ftb, inst->debug_count.fbd,
-		bitrate_kbps, achieved_fps, frame_rate, operating_rate, priority, dt_ms);
+		inst->debug_count.ftb, inst->debug_count.fbd, bitrate_kbps,
+		achieved_fps, frame_rate, operating_rate, priority,
+		inst->stats.avg_bw_llcc, inst->stats.avg_bw_ddr, dt_ms);
 
 	inst->stats.count = inst->debug_count;
 	inst->stats.data_size = 0;
+	inst->stats.avg_bw_llcc = 0;
+	inst->stats.avg_bw_ddr = 0;
 	inst->stats.time_ms = time_ms;
 }
 

+ 12 - 0
driver/vidc/src/msm_vidc_power.c

@@ -346,6 +346,18 @@ int msm_vidc_scale_buses(struct msm_vidc_inst *inst)
 	inst->power.ddr_bw = vote_data->calc_bw_ddr;
 	inst->power.sys_cache_bw = vote_data->calc_bw_llcc;
 
+	if (!inst->stats.avg_bw_llcc)
+		inst->stats.avg_bw_llcc = inst->power.sys_cache_bw;
+	else
+		inst->stats.avg_bw_llcc =
+			(inst->stats.avg_bw_llcc + inst->power.sys_cache_bw) / 2;
+
+	if (!inst->stats.avg_bw_ddr)
+		inst->stats.avg_bw_ddr = inst->power.ddr_bw;
+	else
+		inst->stats.avg_bw_ddr =
+			(inst->stats.avg_bw_ddr + inst->power.ddr_bw) / 2;
+
 set_buses:
 	inst->power.power_mode = vote_data->power_mode;
 	rc = msm_vidc_set_buses(inst);