msm: vidc: do not update operating rate during INT_MAX

INT_MAX is an interface provided to client to configure
video session in TURBO mode. When client configures the
operating rate as INT_MAX, the rate at which the frames
arrive at video driver does not change, so there is no
need to update the operating rate.
If the operating rate is updated, macroblocks/s for the
session goes high. As a result, the session gets rejected
as the clock is not sufficient for high mbs/s.

Change-Id: Iaa48073a486ce6435664a6afb8a4c6ddd7b7f87d
Signed-off-by: Vikash Garodia <vgarodia@codeaurora.org>
Signed-off-by: Rakshitha Shakamuri <rshakamu@codeaurora.org>
This commit is contained in:
Vikash Garodia 2020-02-19 18:25:30 +05:30 committed by Gerrit - the friendly Code Review server
parent c638b9401e
commit 307e961aa9
2 changed files with 9 additions and 7 deletions

View File

@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
*/
#include "msm_vdec.h"
@ -914,10 +914,11 @@ int msm_vdec_s_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl)
case V4L2_CID_MPEG_VIDC_VIDEO_PRIORITY:
break;
case V4L2_CID_MPEG_VIDC_VIDEO_OPERATING_RATE:
inst->clk_data.operating_rate = ctrl->val;
inst->flags &= ~VIDC_TURBO;
if (ctrl->val == INT_MAX)
inst->flags |= VIDC_TURBO;
else
inst->clk_data.operating_rate = ctrl->val;
break;
case V4L2_CID_MPEG_VIDC_VIDEO_LOWLATENCY_MODE:
inst->clk_data.low_latency_mode = !!ctrl->val;

View File

@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
*/
#include "msm_venc.h"
#include "msm_vidc_internal.h"
@ -1670,16 +1670,17 @@ int msm_venc_s_ctrl(struct msm_vidc_inst *inst, struct v4l2_ctrl *ctrl)
}
break;
case V4L2_CID_MPEG_VIDC_VIDEO_OPERATING_RATE:
inst->clk_data.operating_rate = ctrl->val;
inst->flags &= ~VIDC_TURBO;
if (ctrl->val == INT_MAX)
inst->flags |= VIDC_TURBO;
else
inst->clk_data.operating_rate = ctrl->val;
/* For HEIC image encode, set operating rate to 1 */
if (is_grid_session(inst)) {
s_vpr_h(sid, "%s: set operating rate to 1 for HEIC\n",
__func__);
inst->clk_data.operating_rate = 1 << 16;
}
inst->flags &= ~VIDC_TURBO;
if (ctrl->val == INT_MAX)
inst->flags |= VIDC_TURBO;
if (inst->state < MSM_VIDC_LOAD_RESOURCES)
msm_vidc_calculate_buffer_counts(inst);
if (inst->state == MSM_VIDC_START_DONE) {