On Sunday, October 4th, 2026 at 11:49 PM, Ryan Brue <[email protected]> wrote:
> mtk_dsi_reset_engine() does not touch DSI_MODE_CTRL, so whatever the > bootloader left there survives power-on. On boards where the bootloader > lights the panel for a boot logo and hands the DSI over still running, the > leftover value is a video mode, and the first mtk_dsi_host_transfer() then > takes the "already streaming" path: it stops the stream and waits for > VM_DONE, which never arrives, because the engine reset has already stopped > the stream. The panel's very first command fails and it is never > initialised: > > [drm] Wait DSI IRQ(0x00000008) Timeout > *ERROR* failed to switch cmd mode > sending dcs data 8f a5 failed: -62 > > Set command mode right after the engine reset, so DSI_MODE_CTRL describes > the state the reset leaves the engine in. The video mode is programmed by > mtk_dsi_set_mode() when the stream is actually started, exactly as today. > > Seen on the Amazon Fire HD 10 (2017), whose LK bootloader draws its logo > over DSI in video mode and never stops the stream before jumping to the > kernel. > > Assisted-by: LLM > Signed-off-by: Ryan Brue <[email protected]> This is useful for quite lot of mobile SoCs, at least mt6572 and 6768. Acked-by: Roman Vivchar <[email protected]> Best regards, Roman
