From b8223cc869b0f6399797c41a0e6d50c8ff1fd928 Mon Sep 17 00:00:00 2001 From: Shashank Babu Chinta Venkata Date: Mon, 29 Mar 2021 20:05:01 -0700 Subject: [PATCH] disp: msm: sde: do on demand registering for te irq Register and unregister te irq only during a ping pong timeout to check the health of panel. Change-Id: I38d7f178b55d252840aad6fae08b5f34296d75ab Signed-off-by: Shashank Babu Chinta Venkata --- msm/dsi/dsi_display.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/msm/dsi/dsi_display.c b/msm/dsi/dsi_display.c index 75ccb8656b..ec386270e4 100644 --- a/msm/dsi/dsi_display.c +++ b/msm/dsi/dsi_display.c @@ -869,6 +869,15 @@ static int dsi_display_status_bta_request(struct dsi_display *display) return rc; } +static void dsi_display_release_te_irq(struct dsi_display *display) +{ + int te_irq = 0; + + te_irq = gpio_to_irq(display->disp_te_gpio); + if (te_irq) + free_irq(te_irq, display); +} + static int dsi_display_status_check_te(struct dsi_display *display, int rechecks) { @@ -878,6 +887,9 @@ static int dsi_display_status_check_te(struct dsi_display *display, if (!rechecks) return rc; + /* register te irq handler */ + dsi_display_register_te_irq(display); + dsi_display_change_te_irq_status(display, true); for (i = 0; i < rechecks; i++) { @@ -891,6 +903,7 @@ static int dsi_display_status_check_te(struct dsi_display *display, } dsi_display_change_te_irq_status(display, false); + dsi_display_release_te_irq(display); return rc; } @@ -5558,8 +5571,6 @@ static int dsi_display_bind(struct device *dev, } } - /* register te irq handler */ - dsi_display_register_te_irq(display); msm_register_vm_event(master, dev, &vm_event_ops, (void *)display);