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

Commit 27ab7a8b authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm/sde: prevent double register of input handler"

parents 6da9dba3 0c6ce3c1
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -259,6 +259,7 @@ struct sde_encoder_virt {
	struct kthread_work input_event_work;
	struct kthread_work esd_trigger_work;
	struct input_handler *input_handler;
	bool input_handler_registered;
	struct msm_display_topology topology;
	bool vblank_enabled;

@@ -743,6 +744,7 @@ void sde_encoder_destroy(struct drm_encoder *drm_enc)
	if (sde_enc->input_handler) {
		kfree(sde_enc->input_handler);
		sde_enc->input_handler = NULL;
		sde_enc->input_handler_registered = false;
	}

	kfree(sde_enc);
@@ -2634,6 +2636,7 @@ static int _sde_encoder_input_handler(
	input_handler->private = sde_enc;

	sde_enc->input_handler = input_handler;
	sde_enc->input_handler_registered = false;

	return rc;
}
@@ -2755,12 +2758,14 @@ static void sde_encoder_virt_enable(struct drm_encoder *drm_enc)
		return;
	}

	if (sde_enc->input_handler) {
	if (sde_enc->input_handler && !sde_enc->input_handler_registered) {
		ret = _sde_encoder_input_handler_register(
				sde_enc->input_handler);
		if (ret)
			SDE_ERROR(
			"input handler registration failed, rc = %d\n", ret);
		else
			sde_enc->input_handler_registered = true;
	}

	ret = sde_encoder_resource_control(drm_enc, SDE_ENC_RC_EVENT_KICKOFF);
@@ -2838,8 +2843,11 @@ static void sde_encoder_virt_disable(struct drm_encoder *drm_enc)

	SDE_EVT32(DRMID(drm_enc));

	if (sde_enc->input_handler)
	if (sde_enc->input_handler && sde_enc->input_handler_registered) {
		input_unregister_handler(sde_enc->input_handler);
		sde_enc->input_handler_registered = false;
	}


	/* wait for idle */
	sde_encoder_wait_for_event(drm_enc, MSM_ENC_TX_COMPLETE);