|
@@ -2645,6 +2645,11 @@ static int _sde_encoder_rc_idle(struct drm_encoder *drm_enc,
|
|
|
}
|
|
|
|
|
|
crtc_id = drm_crtc_index(crtc);
|
|
|
+ /*
|
|
|
+ * Avoid power collapse entry for writeback crtc since HAL does not repopulate
|
|
|
+ * crtc, plane properties like luts for idlepc exit commit. Here is_vid_mode will
|
|
|
+ * represents video mode panels and wfd baring CWB.
|
|
|
+ */
|
|
|
if (is_vid_mode) {
|
|
|
sde_encoder_irq_control(drm_enc, false);
|
|
|
_sde_encoder_pm_qos_remove_request(drm_enc);
|
|
@@ -2763,8 +2768,10 @@ static int sde_encoder_resource_control(struct drm_encoder *drm_enc,
|
|
|
}
|
|
|
sde_enc = to_sde_encoder_virt(drm_enc);
|
|
|
priv = drm_enc->dev->dev_private;
|
|
|
- if (sde_encoder_check_curr_mode(&sde_enc->base, MSM_DISPLAY_VIDEO_MODE))
|
|
|
- is_vid_mode = true;
|
|
|
+
|
|
|
+ /* is_vid_mode represents vid mode panel and WFD for clocks and irq control. */
|
|
|
+ is_vid_mode = !((sde_encoder_get_intf_mode(drm_enc) == INTF_MODE_CMD) ||
|
|
|
+ sde_encoder_in_clone_mode(drm_enc));
|
|
|
/*
|
|
|
* when idle_pc is not supported, process only KICKOFF, STOP and MODESET
|
|
|
* events and return early for other events (ie wb display).
|