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 <sbchin@codeaurora.org>
This commit is contained in:
@@ -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);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user