diff --git a/msm/sde_rsc.c b/msm/sde_rsc.c index 779665f54e..eeaa35e9c0 100644 --- a/msm/sde_rsc.c +++ b/msm/sde_rsc.c @@ -543,6 +543,13 @@ static int sde_rsc_switch_to_cmd(struct sde_rsc_priv *rsc, } } + /* vsync wait not needed during VID->CMD switch (rev 4+ HW only) */ + if (rsc->current_state == SDE_RSC_VID_STATE && + rsc->version >= SDE_RSC_REV_4) { + rc = 0; + goto end; + } + vsync_wait: /* indicate wait for vsync for vid to cmd state switch & cfg update */ if (!rc && (rsc->current_state == SDE_RSC_VID_STATE || @@ -689,6 +696,13 @@ static int sde_rsc_switch_to_vid(struct sde_rsc_priv *rsc, } } + /* vsync wait not needed during CMD->VID switch (rev 4+ HW only) */ + if (rsc->current_state == SDE_RSC_CMD_STATE && + rsc->version >= SDE_RSC_REV_4) { + rc = 0; + goto end; + } + vsync_wait: /* indicate wait for vsync for vid to cmd state switch & cfg update */ if (!rc && (rsc->current_state == SDE_RSC_VID_STATE ||