My Reform with the A311D processor module has started to have a intermittent failure with the Texas Instruments SN65DSIx6 DSI to eDP bridge, which results in no picture being displayed on the laptop screen. I would say this failure happens about 70% of the time, and the other 30% of the time it boots normally. After a successful boot, I never see any kind of display failure. This started occuring several months ago, which caused me to shelve my Reform (
) for my Framework instead, with me only seriously trying to debug it today. Because of this, I do not know if this started occurring after any kind of software update.
On boot, I get the following errors in the UART kernel log:
[ 7.396154] ti_sn65dsi86 1-002c: error -ENXIO: failed to read device id
[ 7.397180] ------------[ cut here ]------------
[ 7.401736] WARNING: CPU: 2 PID: 231 at drivers/regulator/core.c:2450 _regulator_put+0x58/0x68
[ 7.410315] Modules linked in: ti_sn65dsi86(+) meson_gxbb_wdt dw_mipi_dsi ao_cec_g12a libphy rtc_meson_vrtc reset_meson_audio_arb soundcore clk_phase meson_dw_hdmi meson_canvas mdio_bus cpufreq_dt sha1_ce spi_bitbang gpio_regulator pwm_regulator nvmem_meson_efuse drm_dp_aux_bus clk_pwm
[ 7.435539] CPU: 2 UID: 0 PID: 231 Comm: (udev-worker) Not tainted 6.16.3-mnt-reform-arm64 #1 PREEMPTLAZY Debian 6.16.3-1+reform20250830T222127Z
[ 7.448623] Hardware name: MNT Reform 2 with BPI-CM4 Module (DT)
[ 7.454603] pstate: 80000005 (Nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[ 7.461535] pc : _regulator_put+0x58/0x68
[ 7.465522] lr : regulator_bulk_free+0x54/0x88
[ 7.469942] sp : ffff800083353510
[ 7.473235] x29: ffff800083353510 x28: ffff800083353aa0 x27: 0000000000000000
[ 7.480342] x26: ffff800083353aa0 x25: ffff8000818221a0 x24: ffff800081e3feb0
[ 7.487449] x23: ffff00003f2c6040 x22: ffff000001fa0730 x21: ffff00003f06bb40
[ 7.494555] x20: ffff80008218b090 x19: ffff000001fa06e8 x18: 0000000000000014
[ 7.501662] x17: ffff000000859c80 x16: 00000000000013bb x15: 07640765076c0769
[ 7.508768] x14: 0000000000000000 x13: 6469206563697665 x12: 642064616572206f
[ 7.515875] x11: 742064656c696166 x10: 203a4f49584e452d x9 : ffff800080aea6bc
[ 7.522982] x8 : ffff800083353520 x7 : 0000000000000000 x6 : fffffdffc0fc1ae0
[ 7.530088] x5 : fc13c79df950e868 x4 : 0000000000000000 x3 : 0000000000000000
[ 7.537195] x2 : ffff00003f2c6040 x1 : 0000000000000001 x0 : ffff00003f06bb40
[ 7.544302] Call trace:
[ 7.546730] _regulator_put+0x58/0x68 (P)
[ 7.550715] regulator_bulk_free+0x54/0x88
[ 7.554788] devm_regulator_bulk_release+0x24/0x40
[ 7.559555] release_nodes+0x6c/0x108
[ 7.563195] devres_release_group+0x158/0x1a0
[ 7.567528] i2c_device_probe+0x3a0/0x438
[ 7.571515] really_probe+0xc8/0x3a0
[ 7.575068] __driver_probe_device+0x84/0x160
[ 7.579402] driver_probe_device+0x44/0x130
[ 7.583562] __driver_attach+0xcc/0x208
[ 7.587375] bus_for_each_dev+0x84/0x100
[ 7.591275] driver_attach+0x2c/0x40
[ 7.594828] bus_add_driver+0x118/0x250
[ 7.598642] driver_register+0x70/0x138
[ 7.602455] i2c_register_driver+0x50/0xe8
[ 7.606528] ti_sn65dsi86_init+0x3c/0xff8 [ti_sn65dsi86]
[ 7.611815] do_one_initcall+0x60/0x2d8
[ 7.615628] do_init_module+0x5c/0x268
[ 7.619355] load_module+0x201c/0x27f8
[ 7.623082] init_module_from_file+0x94/0xf8
[ 7.627329] __arm64_sys_finit_module+0x26c/0x368
[ 7.632009] invoke_syscall+0x6c/0x100
[ 7.635735] el0_svc_common.constprop.0+0x48/0xf0
[ 7.640415] do_el0_svc+0x24/0x38
[ 7.643708] el0_svc+0x3c/0x188
[ 7.646829] el0t_64_sync_handler+0x10c/0x140
[ 7.651162] el0t_64_sync+0x198/0x1a0
[ 7.654802] ---[ end trace 0000000000000000 ]---
The initial probe over I2C to the bridge is failing. I hooked up a logic analyzer to the I2C lines to investigate, and found this:
The bridge is NAK’ing after the A311D sends out its address (0x2C) on the I2C bus. Essentially, the chip is just not responding.
A successful I2C probe looks like this:
The fact that the chip is just not responding leads me to believe that it’s a hardware failure, possibly with the chip itself or something closely related to it. I suspect it is the chip itself, there is not a whole lot of supporting circuitry to point any blame at. I’ve checked the 4.7k pull-ups on the I2C lines, and the 100K resistor on the reset line. They all seem fine. I’ve also reseated the processor module and A311D module for good measure.
I don’t want to replace this chip without being more sure that will fix my problem though (chips + shipping are $30 and dealing with that huge thermal pad won’t be fun). Does anyone have any other recommendations for debug, or have you ever encountered a similar issue?
My motherboard revision is MREFPMOB25R02.

