STM32MP257F-DK: HDMI output non-functional - ADV7535 driver probe() never executes
Summary:
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.
Hardware Configuration:
Board: STM32MP257F-DK Discovery Board
Firmware: OpenSTLinux v25.06.11 (latest as of Jan 2026)
Display: 800x480 HDMI display (Raspberry Pi compatible)
- EDID: Acer G50 (110x60mm)
- Native resolution: 800x480 @ 60Hz
- HDMI cable: Standard HDMI-to-HDM
Connection: HDMI port (CN14) → Display via HDMI cable
Software Configuration:
Images tested:
- FlashLayout_emmc_stm32mp257f-dk-fastboot.tsv (eMMC)
- FlashLayout_sdcard_stm32mp257f-dk-optee.tsv (microSD)
DTB variants tested:
- stm32mp257f-dk-ca35tdcid-ostl-m33-examples.dtb (default)
- stm32mp257f-dk.dtb (standard)
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
Problem Description:
Observed Behavior:
Display backlight turns on (5V power present)
Screen remains completely black (no image, no test pattern)
- DRM reports HDMI-A-1 as "connected" and "enabled"
- EDID is successfully read and parsed
- 800x480 @ 60Hz mode is correctly detected
- modetest reports proper refresh rate (60.18Hz) but no image displayed
Root Cause Analysis:
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
Reproducible Steps:
- Connect 800x480 HDMI display to CN14 (HDMI port)
- Flash board with FlashLayout_sdcard_stm32mp257f-dk-optee.tsv
- Boot system
- Observe: Display backlight on, screen black
- Check driver status:
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
- Test output:
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
EDID (decoded):
- Manufacturer: Acer
- Model: G50
- Native resolution: 800x480 @ 60Hz
- Display size: 110mm x 60mm
- Timing: 29.610 MHz pixel clock
DRM state:
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
DSI device:
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.
Device Tree verification:
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.
Probable Root Cause:
The adv7511 kernel driver appears to have an incomplete or buggy probe sequence for this hardware configuration. Possible causes:
- Missing probe trigger: Device tree configuration may be correct, but something prevents the probe() callback from being invoked
- Silent probe failure: Probe may execute but fail early without logging
- Resource dependency: Driver may be waiting for a resource that never becomes available (no deferred probe indication)
Device Tree Analysis:
Device tree configuration appears correct:
- compatible = "adi,adv7535"
- adi,dsi-lanes = <0x04> ✓
- Regulators configured ✓
- Reset GPIO configured ✓
Comparison with Working Configurations:
Users on ST Community have reported success with HDMI output, but notably:
- They used different displays (with 800x600 or 1280x720 native resolution)
- No users have reported success with 800x480 displays specifically
- Bootlin buildroot documentation notes: "On the STM32MP257-DK, HDMI does not function if the LVDS is connected" (LVDS is not connected in this case)
Request for ST Engineering:
- Confirm ADV7535 driver status: Is probe() expected to execute automatically, or is additional configuration required?
- 800x480 support: Is this resolution officially supported via HDMI on STM32MP257F-DK?
- Debug logging: Can you provide guidance on enabling verbose ADV7535 driver logging to diagnose why probe() doesn't execute?
- Known issues: Are there known issues with ADV7535 initialization in v25.06.11 firmware?
- Workaround: Is there a kernel parameter, device tree modification, or driver patch that enables ADV7535 probe?
- Additional Information:
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:
- :white_heavy_check_mark: Tested multiple firmware images (fastboot, optee)
- :white_heavy_check_mark: Tested multiple DTB variants (standard, M33 examples)
- :white_heavy_check_mark: Verified all hardware connections
- :white_heavy_check_mark: Tested with different HDMI cables
- :white_heavy_check_mark: Manually configured ADV7535 via I2C (no effect)
- :white_heavy_check_mark: Verified Device Tree configuration (correct)
- :cross_mark: All attempts unsuccessful
- Expected Behavior:
HDMI output should display test pattern with modetest -M stm -s 32:800x480 -v and Weston desktop after boot.
Impact:
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!
