On Wed, 17 Apr 2024 at 02:57, Marijn Suijten <marijn.suijten@xxxxxxxxxxxxxx> wrote: > > When configuring the timing of DSI hosts (interfaces) in > dsi_timing_setup() all values written to registers are taking bonded > DSI into account by dividing the original mode width by 2 (half the > data is sent over each of the two DSI hosts), but the full width > instead of the interface width is passed as hdisplay parameter to > dsi_update_dsc_timing(). > > Currently only msm_dsc_get_slices_per_intf() is called within > dsi_update_dsc_timing() with the `hdisplay` argument which clearly > documents that it wants the width of a single interface (which, again, > in bonded DSI mode is half the total width of the mode). Thus pass the > bonded-mode-adjusted hdisplay parameter into dsi_update_dsc_timing() > otherwise all values written to registers by this function (i.e. the > number of slices per interface or packet, and derived from this the EOL > byte number) are twice too large. > > Inversely the panel driver is expected to only set the slice width and > number of slices for half the panel, i.e. what will be sent by each > host individually, rather than fixing that up like hdisplay here. > > Fixes: 08802f515c3c ("drm/msm/dsi: Add support for DSC configuration") > Signed-off-by: Marijn Suijten <marijn.suijten@xxxxxxxxxxxxxx> > --- > drivers/gpu/drm/msm/dsi/dsi_host.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> -- With best wishes Dmitry