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

This commit is contained in:
qctecmdr
2020-07-19 12:15:43 -07:00
committed by Gerrit - the friendly Code Review server
4 changed files with 14 additions and 0 deletions

View File

@@ -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);

View File

@@ -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;

View File

@@ -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);

View File

@@ -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;