2026-01-08 1:08 PM
HDMI output on STM32MP257F-DK board does not function with 800x480 HDMI display. The ADV7535 DSI-to-HDMI bridge driver loads and binds successfully, but the probe() function never executes, leaving the bridge in powered-down state. Display shows only backlight, no image.
Board: STM32MP257F-DK Discovery Board
Firmware: OpenSTLinux v25.06.11 (latest as of Jan 2026)
Display: 800x480 HDMI display (Raspberry Pi compatible)
Connection: HDMI port (CN14) → Display via HDMI cable
Images tested:
DTB variants tested:
Result: Same behavior with all combinations
Kernel: 6.6.78
OS: ST OpenSTLinux - Weston - v5.0.8-openstlinux-6.6-yocto-scarthgap-mpu-v25.06.11
ADV7535 driver probe() never executes:bash
root@stm32mp2-e3-d0-ef:~# dmesg | grep -i adv [ 1.006254] Advanced Linux Sound Architecture Driver Initialized.[ 3.856755] systemd[1]: System time before build time, advancing clock.[ 12.779970] stm32-dwmac 482c0000.eth1 end0: IEEE 1588-2008 Advanced Timestamp supported
No ADV7535-specific initialization logs - only "Advanced Linux Sound Architecture" appears.
Driver is bound but not initialized:
root@stm32mp2-e3-d0-ef:~# ls -la /sys/bus/i2c/devices/0-003d/driver lrwxrwxrwx 1 root root 0 Jan 1 00:03 /sys/bus/i2c/devices/0-003d/driver -> ../../../../../../../bus/i2c/drivers/adv7511
ADV7535 remains powered down:
root@stm32mp2-e3-d0-ef:~# i2cget -y 0 0x3d 0x41 # Power control register 0x10 # Power down bit set root@stm32mp2-e3-d0-ef:~# i2cget -y 0 0x3d 0xa1 # HDMI mode register 0x00 # HDMI transmitter powered off
Attempting manual I2C configuration fails:
# Manual power-up attempts root@stm32mp2-e3-d0-ef:~# echo "0-003d" > /sys/bus/i2c/drivers/adv7511/unbind root@stm32mp2-e3-d0-ef:~# i2cset -y 0 0x3d 0x41 0x00 # Clear power down root@stm32mp2-e3-d0-ef:~# i2cget -y 0 0x3d 0x41 0x00 # Register writes succeed root@stm32mp2-e3-d0-ef:~# i2cget -y 0 0x3d 0xa1 0x00 # But HDMI transmitter remains off root@stm32mp2-e3-d0-ef:~# echo "0-003d" > /sys/bus/i2c/drivers/adv7511/bind # Result: System crash (kernel oops) - backlight turns off
dmesg | grep -i adv # No probe logs cat /sys/class/drm/card0-HDMI-A-1/status # Shows "connected" modetest -M stm # Shows 800x480 mode available
killall westonmodetest -M stm -s 32:800x480 -v# Result: Reports freq: 60.18Hz but screen remains black ``` --- ## **Diagnostics Data:** ### **modetest output:** ```Connectors:id encoder status name size (mm) modes encoders32 31 connected HDMI-A-1 110x60 1 31 modes: index name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot #0 800x480 60.00 800 816 876 940 480 486 495 525 29610 flags: nhsync, nvsync; type: driver
CRTCs:id fb pos size41 55 (0,0) (800x480) #0 800x480 60.00 800 816 876 940 480 486 495 525 29610 flags: nhsync, nvsync; type: driver
Framebuffer is active (fb=55), but no signal reaches display
root@stm32mp2-e3-d0-ef:~# ls -la /sys/bus/mipi-dsi/devices/ lrwxrwxrwx 1 root root 0 Jan 1 00:01 48000000.dsi.0 -> ../../../devices/platform/soc@0/42080000.bus/48000000.dsi/48000000.dsi.0
DSI device exists and is bound to adv7533 driver.
root@stm32mp2-e3-d0-ef:~# cat /proc/device-tree/soc*/bus*/i2c*/hdmi@3d/adi,dsi-lanes # Returns: 04 (4 lanes configured correctly) ```
--- ## **What Works:** :white_heavy_check_mark: I2C communication with ADV7535 (address 0x3d responds) :white_heavy_check_mark: EDID reading from display :white_heavy_check_mark: DRM/KMS pipeline (LTDC → DSI) :white_heavy_check_mark: Display power (backlight illuminates) :white_heavy_check_mark: Mode detection (800x480 @ 60Hz) :white_heavy_check_mark: Driver binding (`adv7511` driver binds to device) --- ## **What Doesn't Work:** :cross_mark: ADV7535 probe() function never executes :cross_mark: Bridge remains in powered-down state :cross_mark: No video signal output to HDMI :cross_mark: Manual driver bind/unbind causes kernel crash :cross_mark: Manual I2C configuration has no effect --- ## **Analysis:** ### **The Pipeline:** ```LTDC → DSI → [ADV7535 bridge] → HDMI → Display ✓ ✓ :cross_mark: :cross_mark: ✓
The ADV7535 bridge never initializes, breaking the DSI-to-HDMI conversion.
The adv7511 kernel driver appears to have an incomplete or buggy probe sequence for this hardware configuration. Possible causes:
Device tree configuration appears correct:
Users on ST Community have reported success with HDMI output, but notably:
System info:
root@stm32mp2-e3-d0-ef:~# uname -a Linux stm32mp2-e3-d0-ef 6.6.78 #1 SMP PREEMPT Mon Feb 17 08:40:43 UTC 2025 aarch64 GNU/Linux root@stm32mp2-e3-d0-ef:~# dmesg | grep "Machine model" [ 0.000000] Machine model: STMicroelectronics STM32MP257F-DK Discovery Board
Regulators:
root@stm32mp2-e3-d0-ef:~# cat /sys/class/regulator/regulator.12/name v5v_hdmi root@stm32mp2-e3-d0-ef:~# cat /sys/class/regulator/regulator.12/state enabled root@stm32mp2-e3-d0-ef:~# cat /sys/class/regulator/regulator.12/num_users 1
v5v_hdmi regulator is enabled and has 1 consumer (presumably ADV7535).
Attempted Solutions:
HDMI output should display test pattern with modetest -M stm -s 32:800x480 -v and Weston desktop after boot.
This issue prevents use of HDMI displays (particularly 800x480 resolution) with STM32MP257F-DK, despite HDMI being an advertised feature of the board.
Board info: STM32MP257F-DK (MB1605)
Firmware version: v25.06.11 (latest)
Date tested: January 2026
Thank you for investigating this issue!
2026-01-09 4:02 AM
oot@stm32mp2-e3-d0-ef:~# dmesg -C
root@stm32mp2-e3-d0-ef:~# echo 4 > /sys/module/drm/parameters/debug
root@stm32mp2-e3-d0-ef:~# systemctl restart weston-graphical-session
root@stm32mp2-e3-d0-ef:~# dmesg
[ 59.658701] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:32:HDMI-A-1]
[ 59.721604] stm32-display 48010000.display-controller: [drm:update_display_info.part.0] [CONNECTOR:32:HDMI-A-1] HDMI: DVI dual 0, max TMDS clock 0 kHz
[ 59.721647] stm32-display 48010000.display-controller: [drm:update_display_info.part.0] [CONNECTOR:32:HDMI-A-1] ELD monitor Acer G50
[ 59.721662] stm32-display 48010000.display-controller: [drm:update_display_info.part.0] [CONNECTOR:32:HDMI-A-1] HDMI: latency present 0 0, video latency 0 0, audio latency 0 0
[ 59.721680] stm32-display 48010000.display-controller: [drm:update_display_info.part.0] [CONNECTOR:32:HDMI-A-1] ELD size 32, SAD count 1
[ 59.721711] stm32-display 48010000.display-controller: [drm:update_display_info.part.0] [CONNECTOR:32:HDMI-A-1] HDMI: DVI dual 0, max TMDS clock 0 kHz
[ 59.721728] stm32-display 48010000.display-controller: [drm:update_display_info.part.0] [CONNECTOR:32:HDMI-A-1] ELD monitor Acer G50
[ 59.721742] stm32-display 48010000.display-controller: [drm:update_display_info.part.0] [CONNECTOR:32:HDMI-A-1] HDMI: latency present 0 0, video latency 0 0, audio latency 0 0
[ 59.721759] stm32-display 48010000.display-controller: [drm:update_display_info.part.0] [CONNECTOR:32:HDMI-A-1] ELD size 32, SAD count 1
[ 59.723883] [drm:drm_mode_debug_printmodeline] Modeline "640x480": 60 25175 640 656 752 800 480 490 492 525 0x40 0xa
[ 59.723920] [drm:drm_mode_prune_invalid] Not using 640x480 mode: CLOCK_LOW
[ 59.723931] [drm:drm_mode_debug_printmodeline] Modeline "640x480": 60 25200 640 656 752 800 480 490 492 525 0x40 0xa
[ 59.723948] [drm:drm_mode_prune_invalid] Not using 640x480 mode: CLOCK_LOW
[ 59.723960] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:32:HDMI-A-1] probed modes :
[ 59.723976] [drm:drm_mode_debug_printmodeline] Modeline "800x480": 60 29610 800 816 876 940 480 486 495 525 0x40 0xa
[ 59.760303] stm32-display 48010000.display-controller: [drm:drm_mode_addfb2] [FB:55]
[ 60.654588] stm32-display 48010000.display-controller: [drm:drm_mode_addfb2] [FB:57]
root@stm32mp2-e3-d0-ef:~#
2026-01-09 4:23 AM
root@stm32mp2-e3-d0-ef:~# dmesg | grep -i "dsi\|adv753" [ 0.304252] /soc@0/bus@42080000/i2c@40130000/hdmi@3d: Fixed dependency cycle(s) with /soc@0/bus@42080000/dsi@48000000 [ 0.315119] /soc@0/bus@42080000/display-controller@48010000: Fixed dependency cycle(s) with /soc@0/bus@42080000/dsi@48000000 [ 0.368817] /soc@0/bus@42080000/dsi@48000000: Fixed dependency cycle(s) with /soc@0/bus@42080000/i2c@40130000/hdmi@3d [ 0.378851] /soc@0/bus@42080000/dsi@48000000: Fixed dependency cycle(s) with /soc@0/bus@42080000/display-controller@48010000 [ 0.390040] /soc@0/bus@42080000/dsi@48000000: Fixed dependency cycle(s) with /soc@0/clock-controller@44200000 [ 0.400172] /soc@0/clock-controller@44200000: Fixed dependency cycle(s) with /soc@0/bus@42080000/dsi@48000000 [ 0.454990] /soc@0/bus@42080000/i2c@40130000/hdmi@3d: Fixed dependency cycle(s) with /soc@0/bus@42080000/dsi@48000000 [ 0.465834] /soc@0/bus@42080000/display-controller@48010000: Fixed dependency cycle(s) with /soc@0/bus@42080000/dsi@48000000 [ 0.519534] /soc@0/bus@42080000/dsi@48000000: Fixed dependency cycle(s) with /soc@0/bus@42080000/i2c@40130000/hdmi@3d [ 0.529583] /soc@0/bus@42080000/dsi@48000000: Fixed dependency cycle(s) with /soc@0/bus@42080000/display-controller@48010000 [ 0.540768] /soc@0/bus@42080000/dsi@48000000: Fixed dependency cycle(s) with /soc@0/clock-controller@44200000 [ 0.605755] /soc@0/bus@42080000/i2c@40130000/hdmi@3d: Fixed dependency cycle(s) with /soc@0/bus@42080000/dsi@48000000 [ 0.617828] /soc@0/bus@42080000/display-controller@48010000: Fixed dependency cycle(s) with /soc@0/bus@42080000/dsi@48000000 [ 0.693202] /soc@0/bus@42080000/display-controller@48010000: Fixed dependency cycle(s) with /soc@0/bus@42080000/dsi@48000000 [ 0.701852] /soc@0/bus@42080000/i2c@40130000/hdmi@3d: Fixed dependency cycle(s) with /soc@0/bus@42080000/dsi@48000000 [ 0.712430] /soc@0/bus@42080000/dsi@48000000: Fixed dependency cycle(s) with /soc@0/bus@42080000/i2c@40130000/hdmi@3d [ 0.722932] /soc@0/bus@42080000/dsi@48000000: Fixed dependency cycle(s) with /soc@0/bus@42080000/display-controller@48010000 [ 0.734301] /soc@0/bus@42080000/dsi@48000000: Fixed dependency cycle(s) with /soc@0/clock-controller@44200000 [ 0.747126] /soc@0/bus@42080000/dsi@48000000: Fixed dependency cycle(s) with /soc@0/clock-controller@44200000 [ 0.786427] /soc@0/clock-controller@44200000: Fixed dependency cycle(s) with /soc@0/bus@42080000/dsi@48000000 root@stm32mp2-e3-d0-ef:~#
CRITICAL FINDING - Root cause identified:
Kernel detects circular dependency and attempts to "fix" it:
[dmesg output showing "Fixed dependency cycle(s)"]
This circular dependency resolution appears to break ADV7535 probe()
initialization sequence, preventing the bridge from ever powering on.
2026-01-09 4:59 AM
root@stm32mp2-e3-d0-ef:~# cat /sys/class/drm/card0-HDMI-A-1/edid | hexdump -C > edid.txt
root@stm32mp2-e3-d0-ef:~# ls -la edid.txt
-rw-r--r-- 1 root root 959 Jan 1 00:40 edid.txt
root@stm32mp2-e3-d0-ef:~# cat edid.txt
00000000 00 ff ff ff ff ff ff 00 04 72 18 00 db 8d 10 20 |.........r..... |
00000010 01 16 01 03 80 0b 06 78 08 67 60 a2 5a 49 9e 23 |.......x.g`.ZI.#|
00000020 13 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01 |.PT.............|
00000030 01 01 01 01 01 01 91 0b 20 8c 30 e0 2d 10 10 3c |........ .0.-..<|
00000040 69 00 20 e0 31 00 00 18 00 00 00 fd 00 37 41 1e |i. .1........7A.|
00000050 28 03 00 0a 20 20 20 20 20 20 00 00 00 10 00 00 |(... ......|
00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fc |................|
00000070 00 41 63 65 72 20 47 35 30 0a 20 20 20 20 01 27 |.Acer G50. .'|
00000080 02 03 1a 41 47 01 01 01 01 01 01 01 23 09 07 07 |...AG.......#...|
00000090 83 01 00 00 65 03 0c 00 10 00 00 00 00 00 00 00 |....e...........|
000000a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000000f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 |................|
00000100
CEA Extension Block (byte 0x88-0x8D):
65 03 0c 00 10 00
HDMI Vendor-Specific Data Block:
Ko tu teiksi par šo izdruku -
root@stm32mp2-e3-d0-ef:~# dmesg -C
root@stm32mp2-e3-d0-ef:~# echo 4 > /sys/module/drm/parameters/debug
root@stm32mp2-e3-d0-ef:~# systemctl restart weston-graphical-session
root@stm32mp2-e3-d0-ef:~# dmesg
[ 28.779122] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:32:HDMI-A-1]
[ 28.779635] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:32:HDMI-A-1] disconnected
[ 28.892795] [drm:drm_mode_setcrtc] [CRTC:41:crtc-0]
root@stm32mp2-e3-d0-ef:~# dmesg -C
root@stm32mp2-e3-d0-ef:~# echo 4 > /sys/module/drm/parameters/debug
root@stm32mp2-e3-d0-ef:~# systemctl restart weston-graphical-session
root@stm32mp2-e3-d0-ef:~# dmesg
[ 59.658701] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:32:HDMI-A-1]
[ 59.721604] stm32-display 48010000.display-controller: [drm:update_display_info.part.0] [CONNECTOR:32:HDMI-A-1] HDMI: DVI dual 0, max TMDS clock 0 kHz
[ 59.721647] stm32-display 48010000.display-controller: [drm:update_display_info.part.0] [CONNECTOR:32:HDMI-A-1] ELD monitor Acer G50
[ 59.721662] stm32-display 48010000.display-controller: [drm:update_display_info.part.0] [CONNECTOR:32:HDMI-A-1] HDMI: latency present 0 0, video latency 0 0, audio latency 0 0
[ 59.721680] stm32-display 48010000.display-controller: [drm:update_display_info.part.0] [CONNECTOR:32:HDMI-A-1] ELD size 32, SAD count 1
[ 59.721711] stm32-display 48010000.display-controller: [drm:update_display_info.part.0] [CONNECTOR:32:HDMI-A-1] HDMI: DVI dual 0, max TMDS clock 0 kHz
[ 59.721728] stm32-display 48010000.display-controller: [drm:update_display_info.part.0] [CONNECTOR:32:HDMI-A-1] ELD monitor Acer G50
[ 59.721742] stm32-display 48010000.display-controller: [drm:update_display_info.part.0] [CONNECTOR:32:HDMI-A-1] HDMI: latency present 0 0, video latency 0 0, audio latency 0 0
[ 59.721759] stm32-display 48010000.display-controller: [drm:update_display_info.part.0] [CONNECTOR:32:HDMI-A-1] ELD size 32, SAD count 1
[ 59.723883] [drm:drm_mode_debug_printmodeline] Modeline "640x480": 60 25175 640 656 752 800 480 490 492 525 0x40 0xa
[ 59.723920] [drm:drm_mode_prune_invalid] Not using 640x480 mode: CLOCK_LOW
[ 59.723931] [drm:drm_mode_debug_printmodeline] Modeline "640x480": 60 25200 640 656 752 800 480 490 492 525 0x40 0xa
[ 59.723948] [drm:drm_mode_prune_invalid] Not using 640x480 mode: CLOCK_LOW
[ 59.723960] [drm:drm_helper_probe_single_connector_modes] [CONNECTOR:32:HDMI-A-1] probed modes :
[ 59.723976] [drm:drm_mode_debug_printmodeline] Modeline "800x480": 60 29610 800 816 876 940 480 486 495 525 0x40 0xa
[ 59.760303] stm32-display 48010000.display-controller: [drm:drm_mode_addfb2] [FB:55]
[ 60.654588] stm32-display 48010000.display-controller: [drm:drm_mode_addfb2] [FB:57]
root@stm32mp2-e3-d0-ef:~#
"[CONNECTOR:32:HDMI-A-1] HDMI: DVI dual 0, max TMDS clock 0 kHz"............