|
@@ -1699,6 +1699,8 @@ void sde_rm_release(struct sde_rm *rm, struct drm_encoder *enc, bool nxt)
|
|
|
{
|
|
|
struct sde_rm_rsvp *rsvp;
|
|
|
struct drm_connector *conn;
|
|
|
+ struct msm_drm_private *priv;
|
|
|
+ struct sde_kms *sde_kms;
|
|
|
uint64_t top_ctrl;
|
|
|
|
|
|
if (!rm || !enc) {
|
|
@@ -1706,6 +1708,13 @@ void sde_rm_release(struct sde_rm *rm, struct drm_encoder *enc, bool nxt)
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ priv = enc->dev->dev_private;
|
|
|
+ if (!priv->kms) {
|
|
|
+ SDE_ERROR("invalid kms\n");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ sde_kms = to_sde_kms(priv->kms);
|
|
|
+
|
|
|
mutex_lock(&rm->rm_lock);
|
|
|
|
|
|
if (nxt)
|
|
@@ -1718,6 +1727,11 @@ void sde_rm_release(struct sde_rm *rm, struct drm_encoder *enc, bool nxt)
|
|
|
goto end;
|
|
|
}
|
|
|
|
|
|
+ if (_sde_rm_is_display_in_cont_splash(sde_kms, enc)) {
|
|
|
+ _sde_rm_release_rsvp(rm, rsvp, conn);
|
|
|
+ goto end;
|
|
|
+ }
|
|
|
+
|
|
|
conn = _sde_rm_get_connector(enc);
|
|
|
if (!conn) {
|
|
|
SDE_ERROR("failed to get connector for enc %d, nxt %d",
|