HDMI-TX Resolution Handling in Kernel DRM Driver
Introduction
The scope of this document is to provide information and instructions for
HDMI-TX resolution handling in the syna_drm kernel DRM driver, including
runtime force mode testing and persistent configuration.
HDMI-TX Resolution Control Modes
The syna_drm driver supports two main options to control output resolution:
Fixed mode disabled in DTS
Fixed mode enabled in DTS
Fixed mode disabled in DTS
If fixed mode is disabled, full control is delegated to the display managers/compositors in application or middleware layers.
Fixed mode enabled in DTS
If fixed mode is enabled, the kernel driver handles resolution selection, independent of display managers/compositors.
When fixed mode is enabled, two functional paths are used:
Default case
Resolution is selected from sink EDID capability.
Typical behavior:
2K TV:
2K604K TV:
4K30
Force mode
Resolution is explicitly forced through the module parameter.
Supported force values are listed in the next section.
HDMI Force Mode Testing Guide
Feature overview
The HDMI driver applies resolution selection in this priority order:
Force mode: user sets
hdmi_force_modethrough module parameter.Auto-detect: driver chooses from sink (TV) EDID capabilities.
Supported Force Mode Values
The following strings are supported for hdmi_force_mode:
4K302K602K50720p576p480p
Runtime Testing (Valid for Current Boot)
These steps apply mode changes on next hotplug event and do not persist across reboot.
Step 1: Set the mode
Use the module parameter interface:
For 4K at 30 Hz:
echo "4K30" > /sys/module/syna_drm/parameters/hdmi_force_mode
For 1080p at 60 Hz:
echo "2K60" > /sys/module/syna_drm/parameters/hdmi_force_mode
For legacy 480p:
echo "480p" > /sys/module/syna_drm/parameters/hdmi_force_mode
Step 2: Trigger hotplug
The new mode is applied on next HDMI connection event.
Physically unplug and replug the HDMI cable.
Step 3: Verification
Top-level check:
Verify the TV OSD/pop-up shows expected resolution.
Kernel log check:
dmesg | grep "syna_drm"
Success log examples:
Processing force mode: '4K30'HDMI_HPD detected, setting res to resId:16
Fallback log examples:
Force 4K30 requested but Sink ... doesn't support it ... Fallback.Fallback: setting res to resId:24
Step 4: Clear force mode
Clear the force mode setting:
echo > /sys/module/syna_drm/parameters/hdmi_force_mode
Persistent Configuration (Reboot Safe)
To ensure force mode remains active after reboot, configure the module parameter
using modprobe.d.
Update syna_drm.conf on target device:
Open the configuration file:
vi /usr/lib/modprobe.d/syna_drm.conf
Add or update the option. Example to keep
2K60:options syna_drm hdmi_force_mode=2K60
Reboot the board.
Verify that the configured resolution is maintained.
Sticky Mode Behavior Check
The driver remembers the last successfully applied mode from user request or force mode logic.
Expected behavior when switching TVs (hotplug):
Keep the same resolution if the new TV supports it.
If unsupported, fallback to the next best mode supported by the TV.