On 2026-03-07 19:12:49, Pengyu Luo wrote: > ac47870fd795 incorrecly broke hdisplay calculation for CMD mode, fix > it.
Where's the what/how/why? This commit message explains exactly nothing while a description is a requirement for submitting patches upstream: https://docs.kernel.org/process/submitting-patches.html#describe-your-changes Take my version of this patch as an example. > > 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. This needs a source and justification (in the commit message). For most panels where bpc is simply 8, the resulting rate is the same as when widebus is disabled, meaning that widebus has no effect on the pclk rate in video-mode? - Marijn > * > * 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 >
