Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 53db6787 authored by Jeykumar Sankaran's avatar Jeykumar Sankaran Committed by Gerrit - the friendly Code Review server
Browse files

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: default avatarJeykumar Sankaran <jsanka@codeaurora.org>
parent c3389d31
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -1341,7 +1341,7 @@ static int _sde_encoder_update_rsc_client(
	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;
	int i;
@@ -1451,7 +1451,7 @@ static int _sde_encoder_resource_control_helper(struct drm_encoder *drm_enc,
		}

		/* 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);

@@ -1459,7 +1459,7 @@ static int _sde_encoder_resource_control_helper(struct drm_encoder *drm_enc,
		_sde_encoder_pm_qos_remove_request(drm_enc);

		/* disable all the irq */
		_sde_encoder_irq_control(drm_enc, false);
		sde_encoder_irq_control(drm_enc, false);

		/* disable DSI clks */
		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) {
		_sde_encoder_irq_control(drm_enc, true);
		sde_encoder_irq_control(drm_enc, true);
	} else {
		/* enable all the clks and resources */
		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 &&
		  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 */
	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;
	}

	_sde_encoder_irq_control(drm_enc, false);
	sde_encoder_irq_control(drm_enc, false);
	_sde_encoder_modeset_helper_locked(drm_enc, sw_event);

	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_irq_control(drm_enc, true);
	sde_encoder_irq_control(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) {
		_sde_encoder_irq_control(drm_enc, false);
		sde_encoder_irq_control(drm_enc, false);
	} else {
		/* disable all the clks and resources */
		_sde_encoder_update_rsc_client(drm_enc, false);
+7 −0
Original line number Diff line number Diff line
@@ -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);

/**
 * 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
 * @drm_enc:    Pointer to drm encoder structure