Browse Source

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 <[email protected]>
Shashank Babu Chinta Venkata 4 years ago
parent
commit
b8223cc869
1 changed files with 13 additions and 2 deletions
  1. 13 2
      msm/dsi/dsi_display.c

+ 13 - 2
msm/dsi/dsi_display.c

@@ -869,6 +869,15 @@ static int dsi_display_status_bta_request(struct dsi_display *display)
 	return rc;
 	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,
 static int dsi_display_status_check_te(struct dsi_display *display,
 		int rechecks)
 		int rechecks)
 {
 {
@@ -878,6 +887,9 @@ static int dsi_display_status_check_te(struct dsi_display *display,
 	if (!rechecks)
 	if (!rechecks)
 		return rc;
 		return rc;
 
 
+	/* register te irq handler */
+	dsi_display_register_te_irq(display);
+
 	dsi_display_change_te_irq_status(display, true);
 	dsi_display_change_te_irq_status(display, true);
 
 
 	for (i = 0; i < rechecks; i++) {
 	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_change_te_irq_status(display, false);
+	dsi_display_release_te_irq(display);
 
 
 	return rc;
 	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);
 	msm_register_vm_event(master, dev, &vm_event_ops, (void *)display);