Passive DP to TMDS dongles do not provide a DP receiver and use native GPIO I2C rather than AUX. dpcd_write_rx_power_ctrl() nevertheless tries to write DP_SET_POWER, causing the DP helpers to retry a transaction that cannot succeed 32 times before giving up.
Skip receiver power control when the link is not using AUX mode. On an Oland GPU with a passive DP to HDMI to DVI chain, this reduced boot-time "DP AUX transfer fail" messages from 32 to 0. The EDID remained 256 bytes and the display continued to use its native 1600x900 mode. Assisted-by: Claude:claude-opus-5 Signed-off-by: NepNep7601 <[email protected]> --- .../gpu/drm/amd/display/dc/link/protocols/link_dp_phy.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_phy.c b/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_phy.c index 49521ac4b0e8..7991531f6ef4 100644 --- a/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_phy.c +++ b/drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_phy.c @@ -50,6 +50,15 @@ void dpcd_write_rx_power_ctrl(struct dc_link *link, bool on) if (link->sync_lt_in_progress) return; + /* + * A passive DP to TMDS dongle presents no DP receiver, so there is + * nothing to power up or down. The write can only fail, and the DP + * helpers retry it 32 times before giving up, which adds tens of + * milliseconds to link bring up. + */ + if (!link->aux_mode) + return; + core_link_write_dpcd(link, DP_SET_POWER, &state, sizeof(state)); -- 2.47.3
