disp: msm: sde: expose api to control encoder irq

Expose an API in encoder to control display irq's
when the VM enters and exits TUI use case.

Change-Id: Ic2386dcebfd8a9dd2ce06f068c6daf066a3e885f
Signed-off-by: Jeykumar Sankaran <jsanka@codeaurora.org>
This commit is contained in:
Jeykumar Sankaran
2020-05-17 17:53:42 -07:00
committed by Gerrit - the friendly Code Review server
parent c3389d315c
commit 53db678726
2 changed files with 15 additions and 8 deletions

View File

@@ -1341,7 +1341,7 @@ static int _sde_encoder_update_rsc_client(
return ret; return ret;
} }
static void _sde_encoder_irq_control(struct drm_encoder *drm_enc, bool enable) void sde_encoder_irq_control(struct drm_encoder *drm_enc, bool enable)
{ {
struct sde_encoder_virt *sde_enc; struct sde_encoder_virt *sde_enc;
int i; int i;
@@ -1451,7 +1451,7 @@ static int _sde_encoder_resource_control_helper(struct drm_encoder *drm_enc,
} }
/* enable all the irq */ /* enable all the irq */
_sde_encoder_irq_control(drm_enc, true); sde_encoder_irq_control(drm_enc, true);
_sde_encoder_pm_qos_add_request(drm_enc); _sde_encoder_pm_qos_add_request(drm_enc);
@@ -1459,7 +1459,7 @@ static int _sde_encoder_resource_control_helper(struct drm_encoder *drm_enc,
_sde_encoder_pm_qos_remove_request(drm_enc); _sde_encoder_pm_qos_remove_request(drm_enc);
/* disable all the irq */ /* disable all the irq */
_sde_encoder_irq_control(drm_enc, false); sde_encoder_irq_control(drm_enc, false);
/* disable DSI clks */ /* disable DSI clks */
sde_connector_clk_ctrl(sde_enc->cur_master->connector, false); sde_connector_clk_ctrl(sde_enc->cur_master->connector, false);
@@ -1626,7 +1626,7 @@ static int _sde_encoder_rc_kickoff(struct drm_encoder *drm_enc,
} }
if (is_vid_mode && sde_enc->rc_state == SDE_ENC_RC_STATE_IDLE) { if (is_vid_mode && sde_enc->rc_state == SDE_ENC_RC_STATE_IDLE) {
_sde_encoder_irq_control(drm_enc, true); sde_encoder_irq_control(drm_enc, true);
} else { } else {
/* enable all the clks and resources */ /* enable all the clks and resources */
ret = _sde_encoder_resource_control_helper(drm_enc, ret = _sde_encoder_resource_control_helper(drm_enc,
@@ -1663,7 +1663,7 @@ static int _sde_encoder_rc_pre_stop(struct drm_encoder *drm_enc,
if (is_vid_mode && if (is_vid_mode &&
sde_enc->rc_state == SDE_ENC_RC_STATE_IDLE) { sde_enc->rc_state == SDE_ENC_RC_STATE_IDLE) {
_sde_encoder_irq_control(drm_enc, true); sde_encoder_irq_control(drm_enc, true);
} }
/* skip if is already OFF or IDLE, resources are off already */ /* skip if is already OFF or IDLE, resources are off already */
else if (sde_enc->rc_state == SDE_ENC_RC_STATE_OFF || else if (sde_enc->rc_state == SDE_ENC_RC_STATE_OFF ||
@@ -1780,7 +1780,7 @@ static int _sde_encoder_rc_pre_modeset(struct drm_encoder *drm_enc,
goto end; goto end;
} }
_sde_encoder_irq_control(drm_enc, false); sde_encoder_irq_control(drm_enc, false);
_sde_encoder_modeset_helper_locked(drm_enc, sw_event); _sde_encoder_modeset_helper_locked(drm_enc, sw_event);
SDE_EVT32(DRMID(drm_enc), sw_event, sde_enc->rc_state, SDE_EVT32(DRMID(drm_enc), sw_event, sde_enc->rc_state,
@@ -1818,7 +1818,7 @@ static int _sde_encoder_rc_post_modeset(struct drm_encoder *drm_enc,
} }
_sde_encoder_modeset_helper_locked(drm_enc, sw_event); _sde_encoder_modeset_helper_locked(drm_enc, sw_event);
_sde_encoder_irq_control(drm_enc, true); sde_encoder_irq_control(drm_enc, true);
_sde_encoder_update_rsc_client(drm_enc, true); _sde_encoder_update_rsc_client(drm_enc, true);
@@ -1862,7 +1862,7 @@ static int _sde_encoder_rc_idle(struct drm_encoder *drm_enc,
} }
if (is_vid_mode) { if (is_vid_mode) {
_sde_encoder_irq_control(drm_enc, false); sde_encoder_irq_control(drm_enc, false);
} else { } else {
/* disable all the clks and resources */ /* disable all the clks and resources */
_sde_encoder_update_rsc_client(drm_enc, false); _sde_encoder_update_rsc_client(drm_enc, false);

View File

@@ -525,6 +525,13 @@ void sde_encoder_needs_hw_reset(struct drm_encoder *enc);
*/ */
void sde_encoder_uidle_enable(struct drm_encoder *drm_enc, bool enable); void sde_encoder_uidle_enable(struct drm_encoder *drm_enc, bool enable);
/**
* sde_encoder_irq_control - control enable/disable of IRQ's
* @drm_enc: Pointer to drm encoder structure
* @enable: enable/disable flag
*/
void sde_encoder_irq_control(struct drm_encoder *drm_enc, bool enable);
/** /**
* sde_encoder_get_kms - retrieve the kms from encoder * sde_encoder_get_kms - retrieve the kms from encoder
* @drm_enc: Pointer to drm encoder structure * @drm_enc: Pointer to drm encoder structure