Merge "disp: msm: sde: update idle_pc_duration based on frame rate"
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

commit
1bb44a8184
@@ -2330,8 +2330,10 @@ static void _sde_encoder_rc_restart_delayed(struct sde_encoder_virt *sde_enc,
|
|||||||
{
|
{
|
||||||
struct drm_encoder *drm_enc = &sde_enc->base;
|
struct drm_encoder *drm_enc = &sde_enc->base;
|
||||||
struct msm_drm_private *priv;
|
struct msm_drm_private *priv;
|
||||||
unsigned int lp, idle_pc_duration;
|
unsigned int lp, idle_pc_duration, frame_time_ms, fps;
|
||||||
struct msm_drm_thread *disp_thread;
|
struct msm_drm_thread *disp_thread;
|
||||||
|
unsigned int min_duration = IDLE_POWERCOLLAPSE_DURATION;
|
||||||
|
unsigned int max_duration = IDLE_POWERCOLLAPSE_IN_EARLY_WAKEUP;
|
||||||
|
|
||||||
/* return early if called from esd thread */
|
/* return early if called from esd thread */
|
||||||
if (sde_enc->delay_kickoff)
|
if (sde_enc->delay_kickoff)
|
||||||
@@ -2344,10 +2346,15 @@ static void _sde_encoder_rc_restart_delayed(struct sde_encoder_virt *sde_enc,
|
|||||||
else
|
else
|
||||||
lp = SDE_MODE_DPMS_ON;
|
lp = SDE_MODE_DPMS_ON;
|
||||||
|
|
||||||
|
fps = sde_enc->mode_info.frame_rate;
|
||||||
if ((lp == SDE_MODE_DPMS_LP1) || (lp == SDE_MODE_DPMS_LP2))
|
if ((lp == SDE_MODE_DPMS_LP1) || (lp == SDE_MODE_DPMS_LP2))
|
||||||
idle_pc_duration = IDLE_SHORT_TIMEOUT;
|
idle_pc_duration = IDLE_SHORT_TIMEOUT;
|
||||||
else
|
else {
|
||||||
idle_pc_duration = IDLE_POWERCOLLAPSE_DURATION;
|
frame_time_ms = 1000;
|
||||||
|
do_div(frame_time_ms, fps);
|
||||||
|
idle_pc_duration = max(4 * frame_time_ms, min_duration);
|
||||||
|
idle_pc_duration = min(idle_pc_duration, max_duration);
|
||||||
|
}
|
||||||
|
|
||||||
priv = drm_enc->dev->dev_private;
|
priv = drm_enc->dev->dev_private;
|
||||||
disp_thread = &priv->disp_thread[sde_enc->crtc->index];
|
disp_thread = &priv->disp_thread[sde_enc->crtc->index];
|
||||||
|
Reference in New Issue
Block a user