Эх сурвалжийг харах

Merge "disp: msm: sde: reconfigure misr based on user input"

qctecmdr 5 жил өмнө
parent
commit
e50c2562c7

+ 5 - 0
msm/sde/sde_crtc.c

@@ -5659,6 +5659,9 @@ 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) {
@@ -5668,6 +5671,7 @@ 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,
@@ -5893,6 +5897,7 @@ static ssize_t _sde_crtc_misr_setup(struct file *file,
 		return rc;
 
 	sde_crtc->misr_enable_debugfs = enable;
+	sde_crtc->misr_reconfigure = true;
 	sde_crtc_misr_setup(crtc, enable, frame_count);
 	pm_runtime_put_sync(crtc->dev->dev);
 

+ 2 - 0
msm/sde/sde_crtc.h

@@ -267,6 +267,7 @@ struct sde_crtc_misr_info {
  *                    for secure cases.
  * @misr_enable_debugfs : boolean entry indicates misr enable/disable status
  *                        from debugfs.
+ * @misr_reconfigure : boolean entry indicates misr reconfigure status
  * @misr_frame_count  : misr frame count provided by client
  * @misr_data     : store misr data before turning off the clocks.
  * @idle_notify_work: delayed worker to notify idle timeout to user space
@@ -341,6 +342,7 @@ struct sde_crtc {
 	spinlock_t event_lock;
 	bool misr_enable_sui;
 	bool misr_enable_debugfs;
+	bool misr_reconfigure;
 	u32 misr_frame_count;
 	struct kthread_delayed_work idle_notify_work;
 

+ 5 - 0
msm/sde/sde_encoder.c

@@ -1485,6 +1485,9 @@ static void sde_encoder_misr_configure(struct drm_encoder *drm_enc,
 	}
 	sde_enc = to_sde_encoder_virt(drm_enc);
 
+	if (!sde_enc->misr_reconfigure)
+		return;
+
 	for (i = 0; i < sde_enc->num_phys_encs; i++) {
 		struct sde_encoder_phys *phys = sde_enc->phys_encs[i];
 
@@ -1493,6 +1496,7 @@ static void sde_encoder_misr_configure(struct drm_encoder *drm_enc,
 
 		phys->ops.setup_misr(phys, enable, frame_count);
 	}
+	sde_enc->misr_reconfigure = false;
 }
 
 static void sde_encoder_input_event_handler(struct input_handle *handle,
@@ -4292,6 +4296,7 @@ static ssize_t _sde_encoder_misr_setup(struct file *file,
 		return rc;
 
 	sde_enc->misr_enable = enable;
+	sde_enc->misr_reconfigure = true;
 	sde_enc->misr_frame_count = frame_count;
 	sde_encoder_misr_configure(&sde_enc->base, enable, frame_count);
 	pm_runtime_put_sync(drm_enc->dev->dev);

+ 2 - 0
msm/sde/sde_encoder.h

@@ -159,6 +159,7 @@ struct sde_encoder_ops {
  * @rsc_state_init:		boolean to indicate rsc config init
  * @disp_info:			local copy of msm_display_info struct
  * @misr_enable:		misr enable/disable status
+ * @misr_reconfigure:		boolean entry indicates misr reconfigure status
  * @misr_frame_count:		misr frame count before start capturing the data
  * @idle_pc_enabled:		indicate if idle power collapse is enabled
  *				currently. This can be controlled by user-mode
@@ -226,6 +227,7 @@ struct sde_encoder_virt {
 	bool rsc_state_init;
 	struct msm_display_info disp_info;
 	bool misr_enable;
+	bool misr_reconfigure;
 	u32 misr_frame_count;
 
 	bool idle_pc_enabled;