summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarijn Suijten <marijn.suijten@somainline.org>2022-12-22 00:19:38 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2023-07-19 16:21:31 +0200
commitef25872788e538c4c879375142d9f8288b458aac (patch)
tree1a9437e8a86368911389dc9d710599d3d8e5a35e
parent937da3db61bff9aa0905e7eaf968e08739df3007 (diff)
downloadlinux-stable-ef25872788e538c4c879375142d9f8288b458aac.tar.gz
linux-stable-ef25872788e538c4c879375142d9f8288b458aac.tar.bz2
linux-stable-ef25872788e538c4c879375142d9f8288b458aac.zip
drm/msm/dsi: Flip greater-than check for slice_count and slice_per_intf
[ Upstream commit 82e72fd22a8f9eff4e75c08be68319008ea90a29 ] According to downstream /and the comment copied from it/ this comparison should be the other way around. In other words, when the panel driver requests to use more slices per packet than what could be sent over this interface, it is bumped down to only use a single slice per packet (and strangely not the number of slices that could fit on the interface). Fixes: 08802f515c3c ("drm/msm/dsi: Add support for DSC configuration") Signed-off-by: Marijn Suijten <marijn.suijten@somainline.org> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com> Patchwork: https://patchwork.freedesktop.org/patch/515686/ Link: https://lore.kernel.org/r/20221221231943.1961117-4-marijn.suijten@somainline.org Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Stable-dep-of: 155fa3a91d64 ("drm/msm/dsi: Remove incorrect references to slice_count") Signed-off-by: Sasha Levin <sashal@kernel.org>
-rw-r--r--drivers/gpu/drm/msm/dsi/dsi_host.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c
index 5ab5e872c3cf..ef988e4c2104 100644
--- a/drivers/gpu/drm/msm/dsi/dsi_host.c
+++ b/drivers/gpu/drm/msm/dsi/dsi_host.c
@@ -853,11 +853,12 @@ static void dsi_update_dsc_timing(struct msm_dsi_host *msm_host, bool is_cmd_mod
*/
slice_per_intf = DIV_ROUND_UP(hdisplay, dsc->slice_width);
- /* If slice_per_pkt is greater than slice_per_intf
+ /*
+ * If slice_count is greater than slice_per_intf
* then default to 1. This can happen during partial
* update.
*/
- if (slice_per_intf > dsc->slice_count)
+ if (dsc->slice_count > slice_per_intf)
dsc->slice_count = 1;
total_bytes_per_intf = dsc->slice_chunk_size * slice_per_intf;