**Hardware/Software**
- SoM: Toradex Verdin iMX95 Hexa 8GB WB IT V1.0B
- Carrier: custom carrier + custom DSI-to-HDMI option board based on LT8912B (U19, on i2c-2 @ 0x48/0x49)
- OS: Torizon OS 7.6.1+build.38, kernel 6.6.138-7.6.1
- Driver: lontium-lt8912b (loaded as module), bound to 2-0048
**Problem**
HDMI output is black. The LT8912B’s MIPI RX input sync/clock counters never increment — the chip never locks onto any DSI input.
0x48: 9a=00 9b=00 9c=ff 9d=ff 9e=00 9f=00
0x49: 04=00 05=00 06=00 07=00
**What I have already verified (please don’t suggest these):**
1. Chip is fully alive. On a clean cold boot, all init/config registers latch correctly to the driver’s values (0x48: 08=ff 0b=7c 31=b1 3e=d6 3f=d4; 0x49: 12=04 1a=03 1b=03 4e=ff). i2c read/write/latch all work.
2. Power rails OK — all VCCA rails measured at 1.8V.
3. Reset OK — reset GPIO statically released, correct polarity.
4. Driver enable path runs — kprobe confirms lt8912_bridge_enable → lt8912_video_on are called on every modeset, return 0, i2c writes ACK.
5. Upstream SoC display pipeline is healthy — clk_summary shows disp1pix 148.44 MHz (enabled, used by 4acf0000.dsi), dispaxi 800 MHz, mipiphypllref 24 MHz, mipiphycfg 24 MHz; crtc-0 enable=1 active=1.
6. DSI host computes PLL correctly on enable:
imx95-mipi-dsi: Fout = 445500000, best Fout = 445333333, m=167, n=9
imx95-mipi-dsi: adj clock 148500 for mode “1920x1080”
7. Schematic DSI lane mapping is clean — DSI_1_D0..D3/CK map straight to MIPI_RX0..3/CK with correct P/N polarity, no swap.
**The decisive test — DSI host VPG also fails:**
I enabled the DSI host’s built-in Video Pattern Generator (/sys/kernel/debug/4acf0000.dsi/vpg), which makes the DSI controller transmit its own test pattern, bypassing the DPU, pixel_interleaver, and pixel_link entirely. Even with vpg=1 and a fresh modeset, the LT8912B sync counters stay at 0 and the screen stays black.
=> This proves the entire upstream pipeline is innocent. The wall is strictly between the DSI PHY output and the LT8912B MIPI input — either a physical/lane issue or a DSI format the chip won’t lock onto.
**My questions:**
1. On i.MX95 (or i.MX8-family) DSI, is continuous DSI clock required for the LT8912B to lock its MIPI RX? Does the imx95-mipi-dsi / dw-mipi-dsi host default to non-continuous clock, and if so, how do I force continuous clock (DT property or driver flag)? My current symptom (counters all 0) matches a chip that never sees a clock.
2. Is there a known requirement for burst mode vs non-burst/sync-event with LT8912B on i.MX DSI? The upstream lontium-lt8912b driver attaches with MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_VIDEO_NO_HFP | MIPI_DSI_MODE_NO_EOT_PACKET (no burst). When I rebuilt the module with MIPI_DSI_MODE_VIDEO_BURST added, it panics in lt8912_video_on (regmap path) — which suggests the driver’s video_on timing isn’t written for burst. Has anyone gotten burst working with this bridge, and what timing changes were needed?
3. Is there any way, without a high-bandwidth scope (I can’t probe the 445 MHz differential pairs on the QFN64), to confirm whether the DSI PHY actually enters HS and toggles the clock lane? The dw_mipi_dsi / imx95_mipi_dsi modules have no dynamic_debug callsites for the PHY HS/PLL-lock stage, so I can’t trace it via dyndbg.
Any pointers on the clock-continuous setting or a known-good DSI configuration for LT8912B on Verdin iMX95 would be hugely appreciated.