ac47870fd795 incorrecly broke hdisplay calculation for CMD mode, fix
it.

Fixes: ac47870fd795 ("drm/msm/dsi: fix hdisplay calculation when programming 
dsi registers")
Signed-off-by: Pengyu Luo <[email protected]>
---
 drivers/gpu/drm/msm/dsi/dsi_host.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c 
b/drivers/gpu/drm/msm/dsi/dsi_host.c
index 7c16216e8b..f63165c7ce 100644
--- a/drivers/gpu/drm/msm/dsi/dsi_host.c
+++ b/drivers/gpu/drm/msm/dsi/dsi_host.c
@@ -1016,8 +1016,9 @@ static void dsi_timing_setup(struct msm_dsi_host 
*msm_host, bool is_bonded_dsi)
                /*
                 * DPU sends 3 bytes per pclk cycle to DSI. If widebus is
                 * enabled, MDP always sends out 48-bit compressed data per
-                * pclk and on average, DSI consumes an amount of compressed
-                * data equivalent to the uncompressed pixel depth per pclk.
+                * pclk and on average, for video mode, DSI consumes only an
+                * amount of compressed data equivalent to the uncompressed
+                * pixel depth per pclk.
                 *
                 * Calculate the number of pclks needed to transmit one line of
                 * the compressed data.
@@ -1029,10 +1030,14 @@ static void dsi_timing_setup(struct msm_dsi_host 
*msm_host, bool is_bonded_dsi)
                 * unused anyway.
                 */
                h_total -= hdisplay;
-               if (wide_bus_enabled)
-                       bits_per_pclk = dsc->bits_per_component * 3;
-               else
+               if (wide_bus_enabled) {
+                       if (msm_host->mode_flags & MIPI_DSI_MODE_VIDEO)
+                               bits_per_pclk = dsc->bits_per_component * 3;
+                       else
+                               bits_per_pclk = 48;
+               } else {
                        bits_per_pclk = 24;
+               }
 
                hdisplay = 
DIV_ROUND_UP(msm_dsc_get_bytes_per_line(msm_host->dsc) * 8, bits_per_pclk);
 
-- 
2.53.0

Reply via email to