amd-gfx.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Sasha Levin <sashal@kernel.org>, Eric Yang <Eric.Yang2@amd.com>,
	Wenjing Liu <Wenjing.Liu@amd.com>,
	amd-gfx@lists.freedesktop.org, Hersen Wu <hersenxs.wu@amd.com>,
	dri-devel@lists.freedesktop.org,
	Alex Deucher <alexander.deucher@amd.com>,
	Harry Wentland <harry.wentland@amd.com>,
	Louis Li <Ching-shih.Li@amd.com>
Subject: [PATCH AUTOSEL 5.4 101/459] drm/amd/display: Retrain dongles when SINK_COUNT becomes non-zero
Date: Fri, 14 Feb 2020 10:55:51 -0500	[thread overview]
Message-ID: <20200214160149.11681-101-sashal@kernel.org> (raw)
In-Reply-To: <20200214160149.11681-1-sashal@kernel.org>

From: Harry Wentland <harry.wentland@amd.com>

[ Upstream commit 3eb6d7aca53d81ce888624f09cd44dc0302161e8 ]

[WHY]
Two years ago the patch referenced by the Fixes tag stopped running
dp_verify_link_cap_with_retries during DP detection when the reason
for the detection was a short-pulse interrupt. This effectively meant
that we were no longer doing the verify_link_cap training on active
dongles when their SINK_COUNT changed from 0 to 1.

A year ago this was partly remedied with:
commit 80adaebd2d41 ("drm/amd/display: Don't skip link training for empty dongle")

This made sure that we trained the dongle on initial hotplug (without
connected downstream devices).

This is all fine and dandy if it weren't for the fact that there are
some dongles on the market that don't like link training when SINK_COUNT
is 0 These dongles will in fact indicate a SINK_COUNT of 0 immediately
after hotplug, even when a downstream device is connected, and then
trigger a shortpulse interrupt indicating a SINK_COUNT change to 1.

In order to play nicely we will need our policy to not link train an
active DP dongle when SINK_COUNT is 0 but ensure we train it when the
SINK_COUNT changes to 1.

[HOW]
Call dp_verify_link_cap_with_retries on detection even when the detection
is triggered from a short pulse interrupt.

With this change we can also revert this commit which we'll do in a separate
follow-up change:
commit 80adaebd2d41 ("drm/amd/display: Don't skip link training for empty dongle")

Fixes: 0301ccbaf67d ("drm/amd/display: DP Compliance 400.1.1 failure")
Suggested-by: Louis Li <Ching-shih.Li@amd.com>
Tested-by: Louis Li <Ching-shih.Li@amd.com>
Cc: Wenjing Liu <Wenjing.Liu@amd.com>
Cc: Hersen Wu <hersenxs.wu@amd.com>
Cc: Eric Yang <Eric.Yang2@amd.com>
Reviewed-by: Wenjing Liu <Wenjing.Liu@amd.com>
Signed-off-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/gpu/drm/amd/display/dc/core/dc_link.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link.c b/drivers/gpu/drm/amd/display/dc/core/dc_link.c
index c0f1c62c59b42..3aedc724241ef 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc_link.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_link.c
@@ -948,8 +948,7 @@ bool dc_link_detect(struct dc_link *link, enum dc_detect_reason reason)
 			same_edid = is_same_edid(&prev_sink->dc_edid, &sink->dc_edid);
 
 		if (link->connector_signal == SIGNAL_TYPE_DISPLAY_PORT &&
-			sink_caps.transaction_type == DDC_TRANSACTION_TYPE_I2C_OVER_AUX &&
-			reason != DETECT_REASON_HPDRX) {
+			sink_caps.transaction_type == DDC_TRANSACTION_TYPE_I2C_OVER_AUX) {
 			/*
 			 * TODO debug why Dell 2413 doesn't like
 			 *  two link trainings
-- 
2.20.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

  parent reply	other threads:[~2020-02-14 16:04 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-14 15:54 [PATCH AUTOSEL 5.4 001/459] drm/amdgpu: remove set but not used variable 'mc_shared_chmap' from 'gfx_v6_0.c' and 'gfx_v7_0.c' Sasha Levin
2020-02-14 15:54 ` [PATCH AUTOSEL 5.4 023/459] drm/amd/display: Map ODM memory correctly when doing ODM combine Sasha Levin
2020-02-14 15:55 ` [PATCH AUTOSEL 5.4 061/459] drm/amdgpu/sriov: workaround on rev_id for Navi12 under sriov Sasha Levin
2020-02-14 15:55 ` [PATCH AUTOSEL 5.4 070/459] drm/amd/display: Clear state after exiting fixed active VRR state Sasha Levin
2020-02-14 15:55 ` Sasha Levin [this message]
2020-02-14 15:56 ` [PATCH AUTOSEL 5.4 113/459] drm/amdkfd: Fix a bug in SDMA RLC queue counting under HWS mode Sasha Levin
2020-02-14 15:56 ` [PATCH AUTOSEL 5.4 119/459] drm/amdgpu: remove 4 set but not used variable in amdgpu_atombios_get_connector_info_from_object_table Sasha Levin
2020-02-14 15:56 ` [PATCH AUTOSEL 5.4 120/459] drm/amdgpu: remove set but not used variable 'dig_connector' Sasha Levin
2020-02-14 15:56 ` [PATCH AUTOSEL 5.4 121/459] drm/amdgpu: remove set but not used variable 'dig' Sasha Levin
2020-02-14 15:56 ` [PATCH AUTOSEL 5.4 122/459] drm/amdgpu: remove always false comparison in 'amdgpu_atombios_i2c_process_i2c_ch' Sasha Levin
2020-02-14 15:56 ` [PATCH AUTOSEL 5.4 123/459] drm/amdgpu: remove set but not used variable 'mc_shared_chmap' Sasha Levin
2020-02-14 15:56 ` [PATCH AUTOSEL 5.4 124/459] drm/amd/powerplay: remove set but not used variable 'vbios_version', 'data' Sasha Levin
2020-02-14 15:56 ` [PATCH AUTOSEL 5.4 125/459] drm/amd/powerplay: remove set but not used variable 'data' Sasha Levin
2020-02-14 15:56 ` [PATCH AUTOSEL 5.4 126/459] drm/amd/powerplay: remove set but not used variable 'threshold', 'state' Sasha Levin
2020-02-14 15:56 ` [PATCH AUTOSEL 5.4 127/459] drm/amdgpu: remove set but not used variable 'amdgpu_connector' Sasha Levin
2020-02-14 15:56 ` [PATCH AUTOSEL 5.4 128/459] drm/amdgpu: remove set but not used variable 'count' Sasha Levin
2020-02-14 15:56 ` [PATCH AUTOSEL 5.4 129/459] drm/amdgpu: remove set but not used variable 'invalid' Sasha Levin
2020-02-14 15:56 ` [PATCH AUTOSEL 5.4 130/459] drm/amd/powerplay: remove set but not used variable 'us_mvdd' Sasha Levin
2020-02-14 15:56 ` [PATCH AUTOSEL 5.4 135/459] drm/amdkfd: remove set but not used variable 'top_dev' Sasha Levin
2020-02-14 15:56 ` [PATCH AUTOSEL 5.4 136/459] drm/amd/display: remove set but not used variable 'old_plane_crtc' Sasha Levin
2020-02-14 15:56 ` [PATCH AUTOSEL 5.4 137/459] drm/amd/display: remove set but not used variable 'bp' in bios_parser2.c Sasha Levin
2020-02-14 15:56 ` [PATCH AUTOSEL 5.4 138/459] drm/amd/display: remove set but not used variable 'bp' in bios_parser.c Sasha Levin
2020-02-14 15:56 ` [PATCH AUTOSEL 5.4 139/459] drm/radeon: remove set but not used variable 'size', 'relocs_chunk' Sasha Levin
2020-02-14 15:56 ` [PATCH AUTOSEL 5.4 140/459] drm/radeon: remove set but not used variable 'backbias_response_time' Sasha Levin
2020-02-14 15:56 ` [PATCH AUTOSEL 5.4 141/459] drm/radeon: remove set but not used variable 'dig_connector' Sasha Levin
2020-02-14 15:56 ` [PATCH AUTOSEL 5.4 142/459] drm/radeon: remove set but not used variable 'radeon_connector' Sasha Levin
2020-02-14 15:56 ` [PATCH AUTOSEL 5.4 143/459] drm/radeon: remove set but not used variable 'blocks' Sasha Levin
2020-02-14 15:56 ` [PATCH AUTOSEL 5.4 144/459] drm/radeon: remove set but not used variable 'tv_pll_cntl1' Sasha Levin
2020-02-14 15:56 ` [PATCH AUTOSEL 5.4 146/459] drm/amdgpu: Ensure ret is always initialized when using SOC15_WAIT_ON_RREG Sasha Levin
2020-02-14 15:57 ` [PATCH AUTOSEL 5.4 204/459] drm/amdgpu: fix KIQ ring test fail in TDR of SRIOV Sasha Levin
2020-02-14 15:58 ` [PATCH AUTOSEL 5.4 255/459] drm/amdkfd: Fix permissions of hang_hws Sasha Levin
2020-02-14 15:59 ` [PATCH AUTOSEL 5.4 337/459] drm/amd/display: fixup DML dependencies Sasha Levin
2020-02-14 16:01 ` [PATCH AUTOSEL 5.4 422/459] drm/amd/display: do not allocate display_mode_lib unnecessarily Sasha Levin
2020-02-14 16:01 ` [PATCH AUTOSEL 5.4 429/459] radeon: insert 10ms sleep in dce5_crtc_load_lut Sasha Levin
2020-02-14 16:01 ` [PATCH AUTOSEL 5.4 449/459] drm/amdgpu/smu10: fix smu10_get_clock_by_type_with_latency Sasha Levin
2020-02-14 16:01 ` [PATCH AUTOSEL 5.4 450/459] drm/amdgpu/smu10: fix smu10_get_clock_by_type_with_voltage Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200214160149.11681-101-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=Ching-shih.Li@amd.com \
    --cc=Eric.Yang2@amd.com \
    --cc=Wenjing.Liu@amd.com \
    --cc=alexander.deucher@amd.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=harry.wentland@amd.com \
    --cc=hersenxs.wu@amd.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).