]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
drm/bridge: analogix_dp: Fix PE/VS value shift mismatch during link training
authorDamon Ding <damon.ding@rock-chips.com>
Tue, 23 Jun 2026 02:35:06 +0000 (10:35 +0800)
committerHeiko Stuebner <heiko@sntech.de>
Fri, 3 Jul 2026 16:48:02 +0000 (18:48 +0200)
commit6bb8898f702385d363dc2c513a1efa62807f8068
treeb6e945269fbc47725158d06dd3c309559ccef138
parent63bbf9ac5dde2ba85e7b39d0a0b7d540e6252ba4
drm/bridge: analogix_dp: Fix PE/VS value shift mismatch during link training

VS/PE values returned by drm_dp_get_adjust_request_voltage() and
drm_dp_get_adjust_request_pre_emphasis() are already encoded to their
native DPCD register bit positions. However, DPCD_VOLTAGE_SWING_SET /
DPCD_PRE_EMPHASIS_SET macros perform an extra internal shift. Feeding
the raw offset-bearing values directly leads to overlapping bitfields
and invalid lane training configuration, causing link training failures
and black screen.

Add right shift using DP_TRAIN_*_SHIFT constants to strip the DPCD bit
offsets before passing values to the SET macros and subsequent checks.
Apply this fix for both clock recovery and adjust training code paths.

Reported-by: Vicente Bergas <vicencb@gmail.com>
Closes: https://lore.kernel.org/all/CAAMcf8D-d+5n=H44KeKBSqWY42m+o32W+mO-r15VqWNyYhJL7Q@mail.gmail.com/
Fixes: d84b087c7662 ("drm/bridge: analogix_dp: Apply DP helper APIs to get adjusted voltages and pre-emphasises")
Signed-off-by: Damon Ding <damon.ding@rock-chips.com>
Link: https://lore.kernel.org/all/CAAMcf8D-d+5n=H44KeKBSqWY42m+o32W+mO-r15VqWNyYhJL7Q@mail.gmail.com/
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Link: https://patch.msgid.link/20260623023506.309858-1-damon.ding@rock-chips.com
drivers/gpu/drm/bridge/analogix/analogix_dp_core.c