disp: msm: check max FPS of DFPS to update UIDLE configurations

It is not applicable for all DFPS cases to update UIDLE state
according to current frame rate. If DFPS changes frame rate
through vertical front porch values, the SDE clocks and transfer
time will not get changed accordingly, and it always get fixed
at max frame rate configuration of DFPS.
Add this change to check max FPS of DFPS instead of current
frame rate for UIDLE update, if DFPS is enabled with VFP.

Change-Id: I7634bce6a9eb1af212ba19a267735be08b20ae1f
Signed-off-by: Lei Chen <chenlei@codeaurora.org>
Šī revīzija ir iekļauta:
Lei Chen
2020-08-26 17:34:13 +08:00
vecāks 987b50fe8f
revīzija c44e0b42df
6 mainīti faili ar 78 papildinājumiem un 1 dzēšanām

Parādīt failu

@@ -2375,6 +2375,24 @@ u32 sde_crtc_get_fps_mode(struct drm_crtc *crtc)
return 0;
}
u32 sde_crtc_get_dfps_maxfps(struct drm_crtc *crtc)
{
struct drm_encoder *encoder;
if (!crtc || !crtc->dev) {
SDE_ERROR("invalid crtc\n");
return 0;
}
drm_for_each_encoder_mask(encoder, crtc->dev,
crtc->state->encoder_mask) {
if (!sde_encoder_in_cont_splash(encoder))
return sde_encoder_get_dfps_maxfps(encoder);
}
return 0;
}
static void sde_crtc_vblank_cb(void *data)
{
struct drm_crtc *crtc = (struct drm_crtc *)data;