summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHoegeun Kwon <hoegeun.kwon@samsung.com>2019-02-14 11:22:19 +0900
committerHoegeun Kwon <hoegeun.kwon@samsung.com>2019-02-19 08:53:09 +0900
commitef32d04d2c8220bd54b261c4fdb5c0486aa956ff (patch)
treeb82dd9c2a9b7f46531d3fff5e65383613a987293
parenta6df9ba196ea6b7526d9661453e869b0705caa41 (diff)
downloadlinux-rpi3-ef32d04d2c8220bd54b261c4fdb5c0486aa956ff.tar.gz
linux-rpi3-ef32d04d2c8220bd54b261c4fdb5c0486aa956ff.tar.bz2
linux-rpi3-ef32d04d2c8220bd54b261c4fdb5c0486aa956ff.zip
drm/vc4: Fix reduce interrupt timeout 'workaround'submit/tizen/20190219.001534accepted/tizen/unified/20190219.154228
Since flag 'ignore_lcd=0' is set in config.txt, dsi interrupt is disabled so that interrupt does not occur even when dsi_write is operated. The waiting time causes a boot delay. So it reduces the timeout to 100msecs until it is resolved. As a result, the boot delay has been reduced from 22,000 to 2,200 msecs. Change-Id: I2c27397102f38128ffd3599405d57198fd0f16f6 Signed-off-by: Hoegeun Kwon <hoegeun.kwon@samsung.com>
-rw-r--r--drivers/gpu/drm/vc4/vc4_dsi.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c
index a3f416cbd1d6..c7fd5e310d9c 100644
--- a/drivers/gpu/drm/vc4/vc4_dsi.c
+++ b/drivers/gpu/drm/vc4/vc4_dsi.c
@@ -1230,11 +1230,17 @@ static ssize_t vc4_dsi_host_transfer(struct mipi_dsi_host *host,
DSI_PORT_WRITE(TXPKT1H, pkth);
DSI_PORT_WRITE(TXPKT1C, pktc);
+ /*
+ * WORKAROUND: The timeout below bas been reduced from 1000 to 100msecs.
+ * Interrupt does not occur even if DSI transmission is performed,
+ * so reduce timeout.
+ */
if (!wait_for_completion_timeout(&dsi->xfer_completion,
- msecs_to_jiffies(1000))) {
+ msecs_to_jiffies(100))) {
dev_err(&dsi->pdev->dev, "transfer interrupt wait timeout");
dev_err(&dsi->pdev->dev, "instat: 0x%08x\n",
DSI_PORT_READ(INT_STAT));
+ dev_warn(&dsi->pdev->dev, "WORKAROUND: Interrupt does not occur even if DSI transmission.");
ret = -ETIMEDOUT;
} else {
ret = dsi->xfer_result;