From bcd5ad8e903c95c1f081e53a3daedcd8fb149df1 Mon Sep 17 00:00:00 2001 From: Chinmay Sawarkar Date: Tue, 5 Nov 2019 15:11:46 -0800 Subject: [PATCH] msm: vidc: Update cycle count for vpx VPx cycle requirement is not same as CABAC. Hence update required as per system recommendation. CRs-Fixed: 2560714 Change-Id: If600bc9c4abb364dba5f807c944976be992567c9 Signed-off-by: Chinmay Sawarkar --- msm/vidc/msm_vidc_clocks.c | 12 ++++++++++-- msm/vidc/msm_vidc_platform.c | 6 +++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/msm/vidc/msm_vidc_clocks.c b/msm/vidc/msm_vidc_clocks.c index ba9440fc86d9..9ad69717600a 100644 --- a/msm/vidc/msm_vidc_clocks.c +++ b/msm/vidc/msm_vidc_clocks.c @@ -622,6 +622,7 @@ static unsigned long msm_vidc_calc_freq_iris2(struct msm_vidc_inst *inst, struct clock_data *dcvs = NULL; u32 operating_rate, vsp_factor_num = 1, vsp_factor_den = 1; u32 base_cycles = 0; + u32 codec = 0; core = inst->core; dcvs = &inst->clk_data; @@ -674,8 +675,11 @@ static unsigned long msm_vidc_calc_freq_iris2(struct msm_vidc_inst *inst, vsp_cycles = div_u64(((u64)inst->clk_data.bitrate * vsp_factor_num), vsp_factor_den); + codec = get_v4l2_codec(inst); base_cycles = inst->clk_data.entry->vsp_cycles; - if (inst->entropy_mode == HFI_H264_ENTROPY_CABAC) { + if (codec == V4L2_PIX_FMT_VP8 || codec == V4L2_PIX_FMT_VP9) { + vsp_cycles = div_u64(vsp_cycles * 170, 100); + } else if (inst->entropy_mode == HFI_H264_ENTROPY_CABAC) { vsp_cycles = div_u64(vsp_cycles * 135, 100); } else { base_cycles = 0; @@ -700,9 +704,13 @@ static unsigned long msm_vidc_calc_freq_iris2(struct msm_vidc_inst *inst, vpp_cycles += div_u64(vpp_cycles * 59, 1000); /* VSP */ + codec = get_v4l2_codec(inst); base_cycles = inst->clk_data.entry->vsp_cycles; vsp_cycles = fps * filled_len * 8; - if (inst->entropy_mode == HFI_H264_ENTROPY_CABAC) { + + if (codec == V4L2_PIX_FMT_VP8 || codec == V4L2_PIX_FMT_VP9) { + vsp_cycles = div_u64(vsp_cycles * 170, 100); + } else if (inst->entropy_mode == HFI_H264_ENTROPY_CABAC) { vsp_cycles = div_u64(vsp_cycles * 135, 100); } else { base_cycles = 0; diff --git a/msm/vidc/msm_vidc_platform.c b/msm/vidc/msm_vidc_platform.c index 320addaeb03b..29eed30e50db 100644 --- a/msm/vidc/msm_vidc_platform.c +++ b/msm/vidc/msm_vidc_platform.c @@ -58,12 +58,12 @@ static struct msm_vidc_codec_data default_codec_data[] = { static struct msm_vidc_codec_data lahaina_codec_data[] = { CODEC_ENTRY(V4L2_PIX_FMT_H264, MSM_VIDC_ENCODER, 25, 675, 320), CODEC_ENTRY(V4L2_PIX_FMT_HEVC, MSM_VIDC_ENCODER, 25, 675, 320), - CODEC_ENTRY(V4L2_PIX_FMT_VP8, MSM_VIDC_ENCODER, 25, 675, 320), + CODEC_ENTRY(V4L2_PIX_FMT_VP8, MSM_VIDC_ENCODER, 60, 675, 320), CODEC_ENTRY(V4L2_PIX_FMT_MPEG2, MSM_VIDC_DECODER, 25, 200, 200), CODEC_ENTRY(V4L2_PIX_FMT_H264, MSM_VIDC_DECODER, 25, 200, 200), CODEC_ENTRY(V4L2_PIX_FMT_HEVC, MSM_VIDC_DECODER, 25, 200, 200), - CODEC_ENTRY(V4L2_PIX_FMT_VP8, MSM_VIDC_DECODER, 25, 200, 200), - CODEC_ENTRY(V4L2_PIX_FMT_VP9, MSM_VIDC_DECODER, 25, 200, 200), + CODEC_ENTRY(V4L2_PIX_FMT_VP8, MSM_VIDC_DECODER, 60, 200, 200), + CODEC_ENTRY(V4L2_PIX_FMT_VP9, MSM_VIDC_DECODER, 60, 200, 200), }; static struct msm_vidc_codec_data bengal_codec_data[] = {