This change originates from the Qualcomm Android Linux driver. It is
essential to support a dual-DSI configuration with two panels in
some circumstances per testing. As the name suggests, this modification
may enhance the bandwidth robustness of a bus.

Co-developed-by: Jonathan Marek <jonat...@marek.ca>
Signed-off-by: Jonathan Marek <jonat...@marek.ca>
Signed-off-by: Jun Nie <jun....@linaro.org>
---
 drivers/gpu/drm/msm/dsi/dsi_host.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c 
b/drivers/gpu/drm/msm/dsi/dsi_host.c
index 
42e100a8adca09d7b55afce0e2553e76d898744f..f59c4cd6bc8cdb31c1302f8e3ff395486c0b4898
 100644
--- a/drivers/gpu/drm/msm/dsi/dsi_host.c
+++ b/drivers/gpu/drm/msm/dsi/dsi_host.c
@@ -2238,13 +2238,23 @@ int msm_dsi_host_cmd_rx(struct mipi_dsi_host *host,
        return ret;
 }
 
+#define DSI_VBIF_CTRL                  (0x01CC - 4)
+#define DSI_VBIF_CTRL_PRIORITY         0x07
+
 void msm_dsi_host_cmd_xfer_commit(struct mipi_dsi_host *host, u32 dma_base,
                                  u32 len)
 {
        struct msm_dsi_host *msm_host = to_msm_dsi_host(host);
+       const struct msm_dsi_cfg_handler *cfg_hnd = msm_host->cfg_hnd;
+       u32 reg;
 
        dsi_write(msm_host, REG_DSI_DMA_BASE, dma_base);
        dsi_write(msm_host, REG_DSI_DMA_LEN, len);
+       if (cfg_hnd->minor >= MSM_DSI_6G_VER_MINOR_V2_8_0) {
+               reg = dsi_read(msm_host, DSI_VBIF_CTRL);
+               reg |= (DSI_VBIF_CTRL_PRIORITY & 0x7);
+               dsi_write(msm_host, DSI_VBIF_CTRL, reg);
+       }
        dsi_write(msm_host, REG_DSI_TRIG_DMA, 1);
 
        /* Make sure trigger happens */

-- 
2.34.1

Reply via email to