Bläddra i källkod

Merge "disp: msm: sde: handle cont-splash & check only rm reserve"

qctecmdr 6 år sedan
förälder
incheckning
4be499df4b
2 ändrade filer med 15 tillägg och 1 borttagningar
  1. 1 1
      msm/sde/sde_crtc.c
  2. 14 0
      msm/sde/sde_rm.c

+ 1 - 1
msm/sde/sde_crtc.c

@@ -3313,7 +3313,7 @@ static void sde_crtc_destroy_state(struct drm_crtc *crtc,
 
 	SDE_DEBUG("crtc%d\n", crtc->base.id);
 
-	if (sde_kms && enc && !sde_encoder_in_cont_splash(enc))
+	if (sde_kms && enc)
 		sde_rm_release(&sde_kms->rm, enc, true);
 
 	__drm_atomic_helper_crtc_destroy_state(state);

+ 14 - 0
msm/sde/sde_rm.c

@@ -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",