On Sun, Oct 04, 2026 at 07:27:58PM +0900, Joonhoe Kim wrote: > For DSI with DSC, drm_mode_to_intf_timing_params() scales the INTF > active width by bpp / (3 * bits_per_component) and rounds down. The DSI > host computes the same width with DIV_ROUND_UP, both for the pixel clock > (dsi_adjust_pclk_for_compression()) and for the active width it programs > (dsi_timing_setup(), from bytes per line). When the division is not > exact the INTF line is one pclk shorter than the DSI line, and the DSI > FIFO overflows. > > Example: a bonded DSI video-mode panel, 952 pixels per link, DSC 8 bpp at > 10 bpc: 952 * 8 / 30 = 253.87, so the INTF uses 253 and the DSI 254. > > Round up, as the DSI host does. Qualcomm's downstream SDE driver also > rounds this width up, and Pengyu Luo needed the same rounding on the > Legion Y700 gen 4 [1]. > > Tested on a Lenovo Legion Tab Y700 gen 5 (SM8850) with that panel, with a > module parameter selecting the rounding: rounding down, DPMS off/on gives > no vblank and 14000-17000 DSI FIFO error interrupts per second > (dsi_err_worker: status=4); rounding up, the picture comes back and there > are no errors. Only tested on this device. > > Link: > https://lore.kernel.org/all/CAH2e8h6oinKxN1ndcvHCSc+=bflxvvdzvavf0cqhoiamvew...@mail.gmail.com/ > [1] > Fixes: f9ce482d7dc0 ("drm/msm/dpu: fix video mode DSC for DSI") > Assisted-by: LLM > Signed-off-by: Joonhoe Kim <[email protected]> > ---
Reviewed-by: Dmitry Baryshkov <[email protected]> > -- With best wishes Dmitry
