diff --git a/msm/sde/sde_encoder_phys_wb.c b/msm/sde/sde_encoder_phys_wb.c index f00cfe24be8b..12c3d7fb436d 100644 --- a/msm/sde/sde_encoder_phys_wb.c +++ b/msm/sde/sde_encoder_phys_wb.c @@ -168,12 +168,11 @@ static void sde_encoder_phys_wb_set_qos(struct sde_encoder_phys *phys_enc) hw_wb = wb_enc->hw_wb; qos_count = perf->qos_refresh_count; - while (qos_count && perf->qos_refresh_rate) { - if (frame_rate >= perf->qos_refresh_rate[qos_count - 1]) { - fps_index = qos_count - 1; + while ((fps_index < qos_count) && perf->qos_refresh_rate) { + if ((frame_rate <= perf->qos_refresh_rate[fps_index]) || + (fps_index == qos_count - 1)) break; - } - qos_count--; + fps_index++; } qos_cfg.danger_safe_en = true; diff --git a/msm/sde/sde_plane.c b/msm/sde/sde_plane.c index 8ab7ab031148..60ef973e44ca 100644 --- a/msm/sde/sde_plane.c +++ b/msm/sde/sde_plane.c @@ -290,12 +290,11 @@ static void _sde_plane_set_qos_lut(struct drm_plane *plane, frame_rate = crtc->mode.vrefresh; perf = &psde->catalog->perf; qos_count = perf->qos_refresh_count; - while (qos_count && perf->qos_refresh_rate) { - if (frame_rate >= perf->qos_refresh_rate[qos_count - 1]) { - fps_index = qos_count - 1; + while ((fps_index < qos_count) && perf->qos_refresh_rate) { + if ((frame_rate <= perf->qos_refresh_rate[fps_index]) || + (fps_index == qos_count - 1)) break; - } - qos_count--; + fps_index++; } if (!psde->is_rt_pipe) {