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

Commit f25360d9 authored by raghavendra ambadas's avatar raghavendra ambadas
Browse files

fbdev: msm: Fix race condition during te_irq calls



Add lock to synchronize te_irq calls from both the dsi
blank/unblank and wait4pingpong function calls.

Change-Id: If59e7efe55ff8f7f9eb61d6297aefedb857e7abf
Signed-off-by: default avatarRaghavendra Ambadas <rambad@codeaurora.org>
parent a0f7b85f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -3685,6 +3685,7 @@ static int mdss_dsi_ctrl_probe(struct platform_device *pdev)

	pdata = &ctrl_pdata->panel_data;
	init_completion(&pdata->te_done);
	mutex_init(&pdata->te_mutex);
	if (pdata->panel_info.type == MIPI_CMD_PANEL) {
		if (!te_irq_registered) {
			rc = devm_request_irq(&pdev->dev,
+4 −0
Original line number Diff line number Diff line
@@ -1014,6 +1014,7 @@ struct mdss_panel_data {

	int panel_te_gpio;
	bool is_te_irq_enabled;
	struct mutex te_mutex;
	struct completion te_done;
};

@@ -1033,6 +1034,7 @@ static inline void panel_update_te_irq(struct mdss_panel_data *pdata,
		return;
	}

	mutex_lock(&pdata->te_mutex);
	if (enable && !pdata->is_te_irq_enabled) {
		enable_irq(gpio_to_irq(pdata->panel_te_gpio));
		pdata->is_te_irq_enabled = true;
@@ -1040,6 +1042,8 @@ static inline void panel_update_te_irq(struct mdss_panel_data *pdata,
		disable_irq(gpio_to_irq(pdata->panel_te_gpio));
		pdata->is_te_irq_enabled = false;
	}
	mutex_unlock(&pdata->te_mutex);

}

/**