Skip to contentSkip to conversation

Patch "drm/msm/dsi: fix hdisplay calculation when programming dsi registers" has been added to the 6.19-stable tree

DISCUSSION Pengyu Luo 2 participants 2 messages Mar 15 – Mar 17 1 message not in the archive Stable branch

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

Pengyu Luo

author
#1 lore raw
Quoted 8 lines · Sasha Levin

This is a note to let you know that I've just added the patch titled

drm/msm/dsi: fix hdisplay calculation when programming dsi registers

to the 6.19-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

Quoted 8 lines

The filename of the patch is:
drm-msm-dsi-fix-hdisplay-calculation-when-programmin.patch
and it can be found in the queue-6.19 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Please drop it for all stable trees, this patch has an impact on CMD panels. Fixes have been submitted, but not merged yet.

Best wishes,
Pengyu

Quoted 67 lines

commit 5c8236c2f2cd9998509b0b2bb7cff4c7098dcaf6

Author: Pengyu Luo <[email protected]>
Date:   Sat Feb 14 18:51:28 2026 +0800

drm/msm/dsi: fix hdisplay calculation when programming dsi registers

[ Upstream commit ac47870fd795549f03d57e0879fc730c79119f4b ]

Recently, the hdisplay calculation is working for 3:1 compressed ratio only. If we have a video panel with DSC BPP = 8, and BPC = 10, we still use the default bits_per_pclk = 24, then we get the wrong hdisplay. We can draw the conclusion by cross-comparing the calculation with the calculation in dsi_adjust_pclk_for_compression().

Since CMD mode does not use this, we can remove !(msm_host->mode_flags & MIPI_DSI_MODE_VIDEO) safely.

Fixes efcbd6f9cdeb ("drm/msm/dsi: Enable widebus for DSI")

Patchwork: https://patchwork.freedesktop.org/patch/704822/

drivers/gpu/drm/msm/dsi/dsi_host.c +8 -6
index e0de545d40775..e8e83ee61eb09 100644
@@ -993,7 +993,7 @@ static void dsi_timing_setup(struct msm_dsi_host *msm_host, bool is_bonded_dsi)
 
        if (msm_host->dsc) {
                struct drm_dsc_config *dsc = msm_host->dsc;
-               u32 bytes_per_pclk;
+               u32 bits_per_pclk;
 
                /* update dsc params with timing params */
                if (!dsc || !mode->hdisplay || !mode->vdisplay) {
@@ -1015,7 +1015,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, bus width is extended to 6 bytes.
+                * 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.
                 *
                 * Calculate the number of pclks needed to transmit one line of
                 * the compressed data.
@@ -1027,12 +1029,12 @@ static void dsi_timing_setup(struct msm_dsi_host *msm_host, bool is_bonded_dsi)
                 * unused anyway.
                 */
                h_total -= hdisplay;
-               if (wide_bus_enabled && !(msm_host->mode_flags & MIPI_DSI_MODE_VIDEO))
-                       bytes_per_pclk = 6;
+               if (wide_bus_enabled)
+                       bits_per_pclk = mipi_dsi_pixel_format_to_bpp(msm_host->format);
                else
-                       bytes_per_pclk = 3;
+                       bits_per_pclk = 24;
 
-               hdisplay = DIV_ROUND_UP(msm_dsc_get_bytes_per_line(msm_host->dsc), bytes_per_pclk);
+               hdisplay = DIV_ROUND_UP(msm_dsc_get_bytes_per_line(msm_host->dsc) * 8, bits_per_pclk);
 
                h_total += hdisplay;
                ha_end = ha_start + hdisplay;
#2 lore raw
Quoted 13 lines · Pengyu Luo
Quoted 12 lines · Sasha Levin

This is a note to let you know that I've just added the patch titled

drm/msm/dsi: fix hdisplay calculation when programming dsi registers

to the 6.19-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
drm-msm-dsi-fix-hdisplay-calculation-when-programmin.patch
and it can be found in the queue-6.19 subdirectory.

Quoted 7 lines
Quoted 4 lines

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Please drop it for all stable trees, this patch has an impact on CMD panels. Fixes have been submitted, but not merged yet.

Now dropped, thanks.

greg k-h