disp: msm: sde: update idlepc handling for wfd display
When wfd display is connected, qseed3 coefficient lut programming is getting erased due to idle pc entry for wfd pipes. On idlepc exit commit, plane properties are not reconfigured from userspace since support is not present for writeback crtc. This patch updates idle pc handling to avoid gdsc power off when writeback crtc is connected. Change-Id: Ic4a4b5a6e4ccd59aaa4a076d6d8f1f7cfa27974f Signed-off-by: Jayaprakash Madisetty <quic_jmadiset@quicinc.com>
This commit is contained in:
@@ -6652,16 +6652,6 @@ static void sde_crtc_install_properties(struct drm_crtc *crtc,
|
||||
vfree(info);
|
||||
}
|
||||
|
||||
static bool _is_crtc_intf_mode_wb(struct drm_crtc *crtc)
|
||||
{
|
||||
enum sde_intf_mode intf_mode = sde_crtc_get_intf_mode(crtc, crtc->state);
|
||||
|
||||
if ((intf_mode != INTF_MODE_WB_BLOCK) && (intf_mode != INTF_MODE_WB_LINE))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static int _sde_crtc_get_output_fence(struct drm_crtc *crtc,
|
||||
const struct drm_crtc_state *state, uint64_t *val)
|
||||
{
|
||||
|
||||
@@ -950,6 +950,16 @@ static inline bool sde_crtc_state_in_clone_mode(struct drm_encoder *encoder,
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline bool _is_crtc_intf_mode_wb(struct drm_crtc *crtc)
|
||||
{
|
||||
enum sde_intf_mode intf_mode = sde_crtc_get_intf_mode(crtc, crtc->state);
|
||||
|
||||
if ((intf_mode != INTF_MODE_WB_BLOCK) && (intf_mode != INTF_MODE_WB_LINE))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* sde_crtc_get_ds_io_res - populates the destination scaler src/dst w/h
|
||||
* @state: pointer to drm crtc state
|
||||
|
||||
@@ -2232,7 +2232,11 @@ static int _sde_encoder_rc_idle(struct drm_encoder *drm_enc,
|
||||
}
|
||||
|
||||
crtc_id = drm_crtc_index(crtc);
|
||||
if (is_vid_mode) {
|
||||
/**
|
||||
* Avoid power collapse entry for writeback crtc since HAL does not repopulate
|
||||
* crtc, plane properties like luts for idlepc exit commit.
|
||||
*/
|
||||
if (is_vid_mode || _is_crtc_intf_mode_wb(crtc)) {
|
||||
sde_encoder_irq_control(drm_enc, false);
|
||||
_sde_encoder_pm_qos_remove_request(drm_enc);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user