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

Commit 4d5197b3 authored by Aravind Venkateswaran's avatar Aravind Venkateswaran Committed by Gerrit - the friendly Code Review server
Browse files

drm/msm/dsi-staging: validate TE GPIO prior to registering IRQ



If the TE GPIO is incorrectly specified then do not register for
the TE IRQ line. Disable the TE based ESD check feature as well
since it would not be valid in this case.

Change-Id: I028fb3e8bb1f60d12c779af889cb5df11d21cca0
Signed-off-by: default avatarAravind Venkateswaran <aravindh@codeaurora.org>
Signed-off-by: default avatarLakshmi Narayana Kalavala <lkalaval@codeaurora.org>
parent 85d69960
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -343,7 +343,7 @@ static void dsi_display_change_te_irq_status(struct dsi_display *display,

static void dsi_display_register_te_irq(struct dsi_display *display)
{
	int rc;
	int rc = 0;
	struct platform_device *pdev;
	struct device *dev;

@@ -359,6 +359,11 @@ static void dsi_display_register_te_irq(struct dsi_display *display)
		return;
	}

	if (!gpio_is_valid(display->disp_te_gpio)) {
		rc = -EINVAL;
		goto error;
	}

	init_completion(&display->esd_te_gate);

	rc = devm_request_irq(dev, gpio_to_irq(display->disp_te_gpio),
@@ -366,11 +371,19 @@ static void dsi_display_register_te_irq(struct dsi_display *display)
			"TE_GPIO", display);
	if (rc) {
		pr_err("TE request_irq failed for ESD rc:%d\n", rc);
		return;
		goto error;
	}

	disable_irq(gpio_to_irq(display->disp_te_gpio));
	display->is_te_irq_enabled = false;

	return;

error:
	/* disable the TE based ESD check */
	pr_warn("Unable to register for TE IRQ\n");
	if (display->panel->esd_config.status_mode == ESD_MODE_PANEL_TE)
		display->panel->esd_config.esd_enabled = false;
}

static bool dsi_display_is_te_based_esd(struct dsi_display *display)