提交 773b30b2 编写于 作者: T Tomi Valkeinen

OMAP: DSS2: DSI: catch DSI errors in send_bta_sync

dsi_vc_send_bta_sync() waits for BTA interrupt with a 500ms timeout. If
a DSI error happens, no BTA is received and the timeout triggers. This
could be handled much faster by listening to DSI errors also.

This patch uses the ISR support to notice DSI errors while waiting for
the BTA, thus speeding up the fail-path considerably.
Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
上级 f34bd465
......@@ -2242,24 +2242,31 @@ int dsi_vc_send_bta_sync(int channel)
if (r)
goto err0;
r = dsi_vc_send_bta(channel);
r = dsi_register_isr(dsi_completion_handler, &completion,
DSI_IRQ_ERROR_MASK);
if (r)
goto err1;
r = dsi_vc_send_bta(channel);
if (r)
goto err2;
if (wait_for_completion_timeout(&completion,
msecs_to_jiffies(500)) == 0) {
DSSERR("Failed to receive BTA\n");
r = -EIO;
goto err1;
goto err2;
}
err = dsi_get_errors();
if (err) {
DSSERR("Error while sending BTA: %x\n", err);
r = -EIO;
goto err1;
goto err2;
}
err2:
dsi_unregister_isr(dsi_completion_handler, &completion,
DSI_IRQ_ERROR_MASK);
err1:
dsi_unregister_isr_vc(channel, dsi_completion_handler,
&completion, DSI_VC_IRQ_BTA);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册