Jiri Slaby ef7db2
From: Ian Chen <ian.chen@amd.com>
Jiri Slaby ef7db2
Date: Mon, 28 Nov 2022 16:17:34 +0800
Jiri Slaby ef7db2
Subject: [PATCH] drm/amd/display: Revert Reduce delay when sink device not
Jiri Slaby ef7db2
 able to ACK 00340h write
Jiri Slaby ef7db2
References: bsc#1012628
Jiri Slaby ef7db2
Patch-mainline: 6.2.3
Jiri Slaby ef7db2
Git-commit: 639f6ad6df7f47db48b59956b469a6917a136afb
Jiri Slaby ef7db2
Jiri Slaby ef7db2
[ Upstream commit 639f6ad6df7f47db48b59956b469a6917a136afb ]
Jiri Slaby ef7db2
Jiri Slaby ef7db2
[WHY]
Jiri Slaby ef7db2
It causes regression AMD source will not write DPCD 340.
Jiri Slaby ef7db2
Jiri Slaby ef7db2
Reviewed-by: Wayne Lin <Wayne.Lin@amd.com>
Jiri Slaby ef7db2
Acked-by: Jasdeep Dhillon <jdhillon@amd.com>
Jiri Slaby ef7db2
Signed-off-by: Ian Chen <ian.chen@amd.com>
Jiri Slaby ef7db2
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Jiri Slaby ef7db2
Signed-off-by: Sasha Levin <sashal@kernel.org>
Jiri Slaby ef7db2
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Jiri Slaby ef7db2
---
Jiri Slaby ef7db2
 drivers/gpu/drm/amd/display/dc/core/dc_link.c    |  6 ------
Jiri Slaby ef7db2
 drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c | 14 +++-----------
Jiri Slaby ef7db2
 drivers/gpu/drm/amd/display/dc/dc_dp_types.h     |  1 -
Jiri Slaby ef7db2
 3 files changed, 3 insertions(+), 18 deletions(-)
Jiri Slaby ef7db2
Jiri Slaby ef7db2
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link.c b/drivers/gpu/drm/amd/display/dc/core/dc_link.c
Jiri Slaby ef7db2
index c88f0446..754fc863 100644
Jiri Slaby ef7db2
--- a/drivers/gpu/drm/amd/display/dc/core/dc_link.c
Jiri Slaby ef7db2
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_link.c
Jiri Slaby ef7db2
@@ -1916,12 +1916,6 @@ struct dc_link *link_create(const struct link_init_data *init_params)
Jiri Slaby ef7db2
 	if (false == dc_link_construct(link, init_params))
Jiri Slaby ef7db2
 		goto construct_fail;
Jiri Slaby ef7db2
 
Jiri Slaby ef7db2
-	/*
Jiri Slaby ef7db2
-	 * Must use preferred_link_setting, not reported_link_cap or verified_link_cap,
Jiri Slaby ef7db2
-	 * since struct preferred_link_setting won't be reset after S3.
Jiri Slaby ef7db2
-	 */
Jiri Slaby ef7db2
-	link->preferred_link_setting.dpcd_source_device_specific_field_support = true;
Jiri Slaby ef7db2
-
Jiri Slaby ef7db2
 	return link;
Jiri Slaby ef7db2
 
Jiri Slaby ef7db2
 construct_fail:
Jiri Slaby ef7db2
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c b/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c
Jiri Slaby ef7db2
index dedd1246..475ad3ee 100644
Jiri Slaby ef7db2
--- a/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c
Jiri Slaby ef7db2
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c
Jiri Slaby ef7db2
@@ -6554,18 +6554,10 @@ void dpcd_set_source_specific_data(struct dc_link *link)
Jiri Slaby ef7db2
 
Jiri Slaby ef7db2
 			uint8_t hblank_size = (uint8_t)link->dc->caps.min_horizontal_blanking_period;
Jiri Slaby ef7db2
 
Jiri Slaby ef7db2
-			if (link->preferred_link_setting.dpcd_source_device_specific_field_support) {
Jiri Slaby ef7db2
-				result_write_min_hblank = core_link_write_dpcd(link,
Jiri Slaby ef7db2
-					DP_SOURCE_MINIMUM_HBLANK_SUPPORTED, (uint8_t *)(&hblank_size),
Jiri Slaby ef7db2
-					sizeof(hblank_size));
Jiri Slaby ef7db2
-
Jiri Slaby ef7db2
-				if (result_write_min_hblank == DC_ERROR_UNEXPECTED)
Jiri Slaby ef7db2
-					link->preferred_link_setting.dpcd_source_device_specific_field_support = false;
Jiri Slaby ef7db2
-			} else {
Jiri Slaby ef7db2
-				DC_LOG_DC("Sink device does not support 00340h DPCD write. Skipping on purpose.\n");
Jiri Slaby ef7db2
-			}
Jiri Slaby ef7db2
+			result_write_min_hblank = core_link_write_dpcd(link,
Jiri Slaby ef7db2
+				DP_SOURCE_MINIMUM_HBLANK_SUPPORTED, (uint8_t *)(&hblank_size),
Jiri Slaby ef7db2
+				sizeof(hblank_size));
Jiri Slaby ef7db2
 		}
Jiri Slaby ef7db2
-
Jiri Slaby ef7db2
 		DC_TRACE_LEVEL_MESSAGE(DAL_TRACE_LEVEL_INFORMATION,
Jiri Slaby ef7db2
 							WPP_BIT_FLAG_DC_DETECTION_DP_CAPS,
Jiri Slaby ef7db2
 							"result=%u link_index=%u enum dce_version=%d DPCD=0x%04X min_hblank=%u branch_dev_id=0x%x branch_dev_name='%c%c%c%c%c%c'",
Jiri Slaby ef7db2
diff --git a/drivers/gpu/drm/amd/display/dc/dc_dp_types.h b/drivers/gpu/drm/amd/display/dc/dc_dp_types.h
Jiri Slaby ef7db2
index 2c54b6e0..296793d8 100644
Jiri Slaby ef7db2
--- a/drivers/gpu/drm/amd/display/dc/dc_dp_types.h
Jiri Slaby ef7db2
+++ b/drivers/gpu/drm/amd/display/dc/dc_dp_types.h
Jiri Slaby ef7db2
@@ -149,7 +149,6 @@ struct dc_link_settings {
Jiri Slaby ef7db2
 	enum dc_link_spread link_spread;
Jiri Slaby ef7db2
 	bool use_link_rate_set;
Jiri Slaby ef7db2
 	uint8_t link_rate_set;
Jiri Slaby ef7db2
-	bool dpcd_source_device_specific_field_support;
Jiri Slaby ef7db2
 };
Jiri Slaby ef7db2
 
Jiri Slaby ef7db2
 union dc_dp_ffe_preset {
Jiri Slaby ef7db2
-- 
Jiri Slaby ef7db2
2.35.3
Jiri Slaby ef7db2