Use the correct calculations for eol_byte_num and pkt_per_line.

Currently, pkt_per_line is calculated by dividing slice_per_intf by
slice_count. This is incorrect, as slice_per_intf should be divided by
slice_per_pkt, which is not always equivalent to slice_count as it is
possible for there to be multiple soft slices per interface even though
a panel only specifies one slice per packet.

For eol_byte_num, the current calculation describes the size of the
trailing bytes in the line. Change the calculation so that it describes
the number of padding bytes instead.

Fixes: 08802f515c3c ("drm/msm/dsi: Add support for DSC configuration")
Signed-off-by: Jessica Zhang <quic_jessz...@quicinc.com>
---
 drivers/gpu/drm/msm/dsi/dsi_host.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c 
b/drivers/gpu/drm/msm/dsi/dsi_host.c
index b7ab81737473..613ec19f4383 100644
--- a/drivers/gpu/drm/msm/dsi/dsi_host.c
+++ b/drivers/gpu/drm/msm/dsi/dsi_host.c
@@ -842,7 +842,7 @@ static void dsi_update_dsc_timing(struct msm_dsi_host 
*msm_host, bool is_cmd_mod
 {
        struct drm_dsc_config *dsc = msm_host->dsc;
        u32 reg, reg_ctrl, reg_ctrl2;
-       u32 slice_per_intf, total_bytes_per_intf;
+       u32 slice_per_intf;
        u32 pkt_per_line;
        u32 eol_byte_num;
 
@@ -859,10 +859,12 @@ static void dsi_update_dsc_timing(struct msm_dsi_host 
*msm_host, bool is_cmd_mod
        if (dsc->slice_count > slice_per_intf)
                dsc->slice_count = 1;
 
-       total_bytes_per_intf = dsc->slice_chunk_size * slice_per_intf;
+       eol_byte_num = msm_dsc_get_eol_byte_num(dsc, hdisplay, 
dsi_get_bpp(msm_host->format));
 
-       eol_byte_num = total_bytes_per_intf % 3;
-       pkt_per_line = slice_per_intf / dsc->slice_count;
+       /* Default to 1 slice_per_pkt, so pkt_per_line will be equal to
+        * slice per intf.
+        */
+       pkt_per_line = slice_per_intf;
 
        if (is_cmd_mode) /* packet data type */
                reg = 
DSI_COMMAND_COMPRESSION_MODE_CTRL_STREAM0_DATATYPE(MIPI_DSI_DCS_LONG_WRITE);

-- 
2.39.2

Reply via email to