Quellcode durchsuchen

disp: msm: sde: update misr check to configure misr in secure UI

This change updates misr checks so that misr can be
configured during secure display session. In the current
code, misr_reconfigure flag is set only when accessing
through debugfs node.

Change-Id: Ic3a8316a4881551da3f0f340f6ef5ae3fbe4913f
Signed-off-by: Yashwanth <[email protected]>
Yashwanth vor 4 Jahren
Ursprung
Commit
45d0998b96
2 geänderte Dateien mit 6 neuen und 5 gelöschten Zeilen
  1. 0 4
      msm/sde/sde_crtc.c
  2. 6 1
      msm/sde/sde_encoder.c

+ 0 - 4
msm/sde/sde_crtc.c

@@ -5711,9 +5711,6 @@ void sde_crtc_misr_setup(struct drm_crtc *crtc, bool enable, u32 frame_count)
 	}
 	sde_crtc = to_sde_crtc(crtc);
 
-	if (!sde_crtc->misr_reconfigure)
-		return;
-
 	sde_crtc->misr_enable_sui = enable;
 	sde_crtc->misr_frame_count = frame_count;
 	for (i = 0; i < sde_crtc->num_mixers; ++i) {
@@ -5723,7 +5720,6 @@ void sde_crtc_misr_setup(struct drm_crtc *crtc, bool enable, u32 frame_count)
 
 		m->hw_lm->ops.setup_misr(m->hw_lm, enable, frame_count);
 	}
-	sde_crtc->misr_reconfigure = false;
 }
 
 void sde_crtc_get_misr_info(struct drm_crtc *crtc,

+ 6 - 1
msm/sde/sde_encoder.c

@@ -3413,12 +3413,14 @@ static void _sde_encoder_kickoff_phys(struct sde_encoder_virt *sde_enc)
 	struct sde_kms *sde_kms = NULL;
 	struct sde_crtc_misr_info crtc_misr_info = {false, 0};
 	bool is_regdma_blocking = false, is_vid_mode = false;
+	struct sde_crtc *sde_crtc;
 
 	if (!sde_enc) {
 		SDE_ERROR("invalid encoder\n");
 		return;
 	}
 
+	sde_crtc = to_sde_crtc(sde_enc->crtc);
 	if (sde_encoder_check_curr_mode(&sde_enc->base, MSM_DISPLAY_VIDEO_MODE))
 		is_vid_mode = true;
 
@@ -3486,9 +3488,12 @@ static void _sde_encoder_kickoff_phys(struct sde_encoder_virt *sde_enc)
 				sde_enc->misr_frame_count);
 
 	sde_crtc_get_misr_info(sde_enc->crtc, &crtc_misr_info);
-	if (crtc_misr_info.misr_enable)
+	if (crtc_misr_info.misr_enable && sde_crtc &&
+				sde_crtc->misr_reconfigure) {
 		sde_crtc_misr_setup(sde_enc->crtc, true,
 				crtc_misr_info.misr_frame_count);
+		sde_crtc->misr_reconfigure = false;
+	}
 
 	_sde_encoder_trigger_start(sde_enc->cur_master);