From 535dba47c0f2f20926f4edfc79c823eae0be8950 Mon Sep 17 00:00:00 2001 From: Darshana Patil Date: Wed, 29 Sep 2021 15:04:05 -0700 Subject: [PATCH] video: driver: debugfs update for clockrate,bandwidth setting /d/msm_vidc/core_clock_voting will modify only clock rate and not ddr and llc bandwidth. example usage: adb shell "echo 444000000 > /d/msm_vidc/core_clock_voting". introduction of /d/msm_vidc/ddr_bw and /d/msm_vidc/llcc_bw which will modify ddr and llc bandwidth respectively. example usage: adb shell "echo 5000000 > /d/msm_vidc/ddr_bw_kbps". adb shell "echo 7000000 > /d/msm_vidc/llc_bw_kbps". Change-Id: If4aca728cae212630928dda69a38310d8268b5e1 Signed-off-by: Darshana Patil --- driver/vidc/inc/msm_vidc_debug.h | 2 ++ driver/vidc/src/msm_vidc_debug.c | 6 ++++++ driver/vidc/src/msm_vidc_power.c | 12 ++++++++++-- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/driver/vidc/inc/msm_vidc_debug.h b/driver/vidc/inc/msm_vidc_debug.h index 2f5aa14812..89f61f62a6 100644 --- a/driver/vidc/inc/msm_vidc_debug.h +++ b/driver/vidc/inc/msm_vidc_debug.h @@ -34,6 +34,8 @@ extern unsigned int msm_vidc_debug; extern bool msm_vidc_lossless_encode; extern bool msm_vidc_syscache_disable; extern int msm_vidc_clock_voting; +extern int msm_vidc_ddr_bw; +extern int msm_vidc_llc_bw; extern bool msm_vidc_fw_dump; extern unsigned int msm_vidc_enable_bugon; diff --git a/driver/vidc/src/msm_vidc_debug.c b/driver/vidc/src/msm_vidc_debug.c index 31aedd4bb1..93f8812dbb 100644 --- a/driver/vidc/src/msm_vidc_debug.c +++ b/driver/vidc/src/msm_vidc_debug.c @@ -85,6 +85,8 @@ bool msm_vidc_syscache_disable = !true; EXPORT_SYMBOL(msm_vidc_syscache_disable); int msm_vidc_clock_voting = !1; +int msm_vidc_ddr_bw = !1; +int msm_vidc_llc_bw = !1; bool msm_vidc_fw_dump = !true; EXPORT_SYMBOL(msm_vidc_fw_dump); @@ -301,6 +303,10 @@ struct dentry* msm_vidc_debugfs_init_drv() debugfs_create_u32("core_clock_voting", 0644, dir, &msm_vidc_clock_voting); + debugfs_create_u32("ddr_bw_kbps", 0644, dir, + &msm_vidc_ddr_bw); + debugfs_create_u32("llc_bw_kbps", 0644, dir, + &msm_vidc_llc_bw); debugfs_create_bool("disable_video_syscache", 0644, dir, &msm_vidc_syscache_disable); debugfs_create_bool("lossless_encoding", 0644, dir, diff --git a/driver/vidc/src/msm_vidc_power.c b/driver/vidc/src/msm_vidc_power.c index 4440ec1f24..7e13aee978 100644 --- a/driver/vidc/src/msm_vidc_power.c +++ b/driver/vidc/src/msm_vidc_power.c @@ -167,6 +167,16 @@ static int msm_vidc_set_buses(struct msm_vidc_inst* inst) } mutex_unlock(&core->lock); + if (msm_vidc_ddr_bw) { + d_vpr_l("msm_vidc_ddr_bw %d\n", msm_vidc_ddr_bw); + total_bw_ddr = msm_vidc_ddr_bw; + } + + if (msm_vidc_llc_bw) { + d_vpr_l("msm_vidc_llc_bw %d\n", msm_vidc_llc_bw); + total_bw_llcc = msm_vidc_llc_bw; + } + rc = venus_hfi_scale_buses(inst, total_bw_ddr, total_bw_llcc); if (rc) return rc; @@ -197,8 +207,6 @@ int msm_vidc_scale_buses(struct msm_vidc_inst *inst) vote_data->power_mode = VIDC_POWER_NORMAL; if (inst->power.buffer_counter < DCVS_WINDOW || is_image_session(inst)) vote_data->power_mode = VIDC_POWER_TURBO; - if (msm_vidc_clock_voting) - vote_data->power_mode = VIDC_POWER_TURBO; if (vote_data->power_mode == VIDC_POWER_TURBO) goto set_buses;