summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVasantha Balla <quic_vballa@quicinc.com>2021-12-17 14:48:52 +0530
committerVasantha Balla <quic_vballa@quicinc.com>2021-12-17 14:48:52 +0530
commit9dd3d3e874fcf955751b45809f98c9e7f1ad05a8 (patch)
tree873b81445d609725e9400d3927a3b7a89c6e2803
parente5c1ae80cabf566753583730dc3f6ba109964032 (diff)
downloadvideo-driver-9dd3d3e874fcf955751b45809f98c9e7f1ad05a8.tar.gz
msm: vidc: Add clock/bus votes for eos/flush commands
If voting is not added for eos and flush command processing, Firmware is processing only high priority session commands which causes non real time session to wait for completion of realtime session for its eos processing. So adding votes for eos and flush commands. Change-Id: I9de8c1d0dc79e93d991d34d2d687e2fa1910531b Signed-off-by: Vasantha Balla <quic_vballa@quicinc.com>
-rw-r--r--msm/vidc/msm_vidc_clocks.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/msm/vidc/msm_vidc_clocks.c b/msm/vidc/msm_vidc_clocks.c
index 5fdfe53..fda0871 100644
--- a/msm/vidc/msm_vidc_clocks.c
+++ b/msm/vidc/msm_vidc_clocks.c
@@ -309,7 +309,15 @@ int msm_comm_set_buses(struct msm_vidc_core *core, u32 sid)
if ((!filled_len || !device_addr) &&
(inst->session_type != MSM_VIDC_CVP)) {
s_vpr_l(sid, "%s: no input\n", __func__);
- continue;
+ mutex_lock(&inst->eosbufs.lock);
+ if (list_empty(&inst->eosbufs.list) &&
+ !inst->in_flush && !inst->out_flush) {
+ s_vpr_l(sid, "%s:No pending eos/flush cmds\n",
+ __func__);
+ mutex_unlock(&inst->eosbufs.lock);
+ continue;
+ }
+ mutex_unlock(&inst->eosbufs.lock);
}
/* skip inactive session bus bandwidth */
@@ -917,7 +925,15 @@ int msm_vidc_set_clocks(struct msm_vidc_core *core, u32 sid)
if (!filled_len || !device_addr) {
s_vpr_l(sid, "%s: no input\n", __func__);
- continue;
+ mutex_lock(&inst->eosbufs.lock);
+ if (list_empty(&inst->eosbufs.list) && !inst->in_flush
+ && !inst->out_flush) {
+ s_vpr_l(sid, "%s:No pending eos/flush cmds\n",
+ __func__);
+ mutex_unlock(&inst->eosbufs.lock);
+ continue;
+ }
+ mutex_unlock(&inst->eosbufs.lock);
}
/* skip inactive session clock rate */