diff --git a/msm/sde/sde_crtc.h b/msm/sde/sde_crtc.h index ffeb42aa9f..7190dc2f78 100644 --- a/msm/sde/sde_crtc.h +++ b/msm/sde/sde_crtc.h @@ -619,6 +619,24 @@ static inline enum sde_crtc_client_type sde_crtc_get_client_type( return cstate->rsc_client ? RT_RSC_CLIENT : RT_CLIENT; } +/** + * sde_crtc_get_client_type_for_qos - check the crtc type- rt, nrt, rsc_rt, etc. + * @crtc: Pointer to crtc + */ +static inline enum sde_crtc_client_type sde_crtc_get_client_type_for_qos( + struct drm_crtc *crtc) +{ + struct sde_crtc_state *cstate = + crtc ? to_sde_crtc_state(crtc->state) : NULL; + + if (!cstate) + return NRT_CLIENT; + + return sde_crtc_get_intf_mode(crtc) == + INTF_MODE_WB_LINE ? NRT_CLIENT : + (cstate->rsc_client ? RT_RSC_CLIENT : RT_CLIENT); +} + /** * sde_crtc_is_enabled - check if sde crtc is enabled or not * @crtc: Pointer to crtc diff --git a/msm/sde/sde_plane.c b/msm/sde/sde_plane.c index d60a3ff700..f8747921ae 100644 --- a/msm/sde/sde_plane.c +++ b/msm/sde/sde_plane.c @@ -376,7 +376,8 @@ static void _sde_plane_set_qos_lut(struct drm_plane *plane, if (fmt && SDE_FORMAT_IS_LINEAR(fmt)) lut_usage = SDE_QOS_LUT_USAGE_LINEAR; - else if (psde->features & BIT(SDE_SSPP_SCALER_QSEED3)) + else if (psde->features & BIT(SDE_SSPP_SCALER_QSEED3) || + psde->features & BIT(SDE_SSPP_SCALER_QSEED3LITE)) lut_usage = SDE_QOS_LUT_USAGE_MACROTILE_QSEED; else lut_usage = SDE_QOS_LUT_USAGE_MACROTILE; @@ -3194,7 +3195,8 @@ static int sde_plane_sspp_atomic_update(struct drm_plane *plane, return 0; pstate->pending = true; - psde->is_rt_pipe = (sde_crtc_get_client_type(crtc) != NRT_CLIENT); + psde->is_rt_pipe = + (sde_crtc_get_client_type_for_qos(crtc) != NRT_CLIENT); _sde_plane_set_qos_ctrl(plane, false, SDE_PLANE_QOS_PANIC_CTRL); _sde_plane_update_properties(plane, crtc, fb);