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[] = {