MLK-19082 drm/bridge: sec-dsim: wait 'ph_tx_done' for long packet send
authorFancy Fang <chen.fang@nxp.com>
Fri, 27 Jul 2018 14:50:17 +0000 (22:50 +0800)
committerLeonard Crestez <leonard.crestez@nxp.com>
Wed, 17 Apr 2019 23:51:34 +0000 (02:51 +0300)
According to a lot of tests, for long packet send, the packet
payload transfer done interrupt will be triggered no later than
the packet header transfer done interrupt. So, to make sure the
long packet has been send to the peripheral completely, wait
'ph_tx_done' interrupt instead of 'pl_tx_done' for long packet
transfer. Otherwise it may cause subsequent packet transfer
failed sometimes.

Signed-off-by: Fancy Fang <chen.fang@nxp.com>
(cherry picked from commit 69a5f44025c6ecb2fee16c1650a81198b501f284)
(cherry picked from commit 9f89a46266ecd905c701cc88e15d2303ac319acd)

drivers/gpu/drm/bridge/sec-dsim.c

index b7f146b..928469a 100644 (file)
@@ -575,7 +575,7 @@ static ssize_t sec_mipi_dsim_host_transfer(struct mipi_dsi_host *host,
                                                   packet.header,
                                                   use_lpm);
 
-               ret = wait_for_completion_timeout(&dsim->pl_tx_done,
+               ret = wait_for_completion_timeout(&dsim->ph_tx_done,
                                                  MIPI_FIFO_TIMEOUT);
                if (!ret) {
                        dev_err(dsim->dev, "wait payload tx done time out\n");