aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0290-drm-amd-display-support-PHY-compliance-automation-fo.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0290-drm-amd-display-support-PHY-compliance-automation-fo.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0290-drm-amd-display-support-PHY-compliance-automation-fo.patch205
1 files changed, 205 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0290-drm-amd-display-support-PHY-compliance-automation-fo.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0290-drm-amd-display-support-PHY-compliance-automation-fo.patch
new file mode 100644
index 00000000..ea0b466c
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/0290-drm-amd-display-support-PHY-compliance-automation-fo.patch
@@ -0,0 +1,205 @@
+From 1ea6a40912ccf8a3e78c3f83ee1a359ef604d7ac Mon Sep 17 00:00:00 2001
+From: Tony Cheng <tony.cheng@amd.com>
+Date: Tue, 14 Mar 2017 19:16:36 -0400
+Subject: [PATCH 0290/4131] drm/amd/display: support PHY compliance automation
+ for CP2520 pattern 1/2/3
+
+Signed-off-by: Tony Cheng <tony.cheng@amd.com>
+Acked-by: Harry Wentland <Harry.Wentland@amd.com>
+Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c | 55 ++++++++++++----------
+ .../gpu/drm/amd/display/dc/dce/dce_link_encoder.c | 17 +++++--
+ drivers/gpu/drm/amd/display/include/dpcd_defs.h | 4 +-
+ .../drm/amd/display/include/link_service_types.h | 11 +++--
+ 4 files changed, 53 insertions(+), 34 deletions(-)
+
+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
+index ef80473..d04cad2 100644
+--- a/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c
+@@ -1599,19 +1599,25 @@ static void dp_test_send_phy_test_pattern(struct core_link *link)
+ switch (dpcd_test_pattern.bits.PATTERN) {
+ case PHY_TEST_PATTERN_D10_2:
+ test_pattern = DP_TEST_PATTERN_D102;
+- break;
++ break;
+ case PHY_TEST_PATTERN_SYMBOL_ERROR:
+ test_pattern = DP_TEST_PATTERN_SYMBOL_ERROR;
+- break;
++ break;
+ case PHY_TEST_PATTERN_PRBS7:
+ test_pattern = DP_TEST_PATTERN_PRBS7;
+- break;
++ break;
+ case PHY_TEST_PATTERN_80BIT_CUSTOM:
+ test_pattern = DP_TEST_PATTERN_80BIT_CUSTOM;
+- break;
+- case PHY_TEST_PATTERN_HBR2_COMPLIANCE_EYE:
+- test_pattern = DP_TEST_PATTERN_HBR2_COMPLIANCE_EYE;
+- break;
++ break;
++ case PHY_TEST_PATTERN_CP2520_1:
++ test_pattern = DP_TEST_PATTERN_CP2520_1;
++ break;
++ case PHY_TEST_PATTERN_CP2520_2:
++ test_pattern = DP_TEST_PATTERN_CP2520_2;
++ break;
++ case PHY_TEST_PATTERN_CP2520_3:
++ test_pattern = DP_TEST_PATTERN_CP2520_3;
++ break;
+ default:
+ test_pattern = DP_TEST_PATTERN_VIDEO_MODE;
+ break;
+@@ -2202,16 +2208,9 @@ void dc_link_dp_disable_hpd(const struct dc_link *link)
+
+ static bool is_dp_phy_pattern(enum dp_test_pattern test_pattern)
+ {
+- if (test_pattern == DP_TEST_PATTERN_D102 ||
+- test_pattern == DP_TEST_PATTERN_SYMBOL_ERROR ||
+- test_pattern == DP_TEST_PATTERN_PRBS7 ||
+- test_pattern == DP_TEST_PATTERN_80BIT_CUSTOM ||
+- test_pattern == DP_TEST_PATTERN_HBR2_COMPLIANCE_EYE ||
+- test_pattern == DP_TEST_PATTERN_TRAINING_PATTERN1 ||
+- test_pattern == DP_TEST_PATTERN_TRAINING_PATTERN2 ||
+- test_pattern == DP_TEST_PATTERN_TRAINING_PATTERN3 ||
+- test_pattern == DP_TEST_PATTERN_TRAINING_PATTERN4 ||
+- test_pattern == DP_TEST_PATTERN_VIDEO_MODE)
++ if ((DP_TEST_PATTERN_PHY_PATTERN_BEGIN <= test_pattern &&
++ test_pattern <= DP_TEST_PATTERN_PHY_PATTERN_END) ||
++ test_pattern == DP_TEST_PATTERN_VIDEO_MODE)
+ return true;
+ else
+ return false;
+@@ -2377,22 +2376,28 @@ bool dc_link_dp_set_test_pattern(
+ switch (test_pattern) {
+ case DP_TEST_PATTERN_VIDEO_MODE:
+ pattern = PHY_TEST_PATTERN_NONE;
+- break;
++ break;
+ case DP_TEST_PATTERN_D102:
+ pattern = PHY_TEST_PATTERN_D10_2;
+- break;
++ break;
+ case DP_TEST_PATTERN_SYMBOL_ERROR:
+ pattern = PHY_TEST_PATTERN_SYMBOL_ERROR;
+- break;
++ break;
+ case DP_TEST_PATTERN_PRBS7:
+ pattern = PHY_TEST_PATTERN_PRBS7;
+- break;
++ break;
+ case DP_TEST_PATTERN_80BIT_CUSTOM:
+ pattern = PHY_TEST_PATTERN_80BIT_CUSTOM;
+- break;
+- case DP_TEST_PATTERN_HBR2_COMPLIANCE_EYE:
+- pattern = PHY_TEST_PATTERN_HBR2_COMPLIANCE_EYE;
+- break;
++ break;
++ case DP_TEST_PATTERN_CP2520_1:
++ pattern = PHY_TEST_PATTERN_CP2520_1;
++ break;
++ case DP_TEST_PATTERN_CP2520_2:
++ pattern = PHY_TEST_PATTERN_CP2520_2;
++ break;
++ case DP_TEST_PATTERN_CP2520_3:
++ pattern = PHY_TEST_PATTERN_CP2520_3;
++ break;
+ default:
+ return false;
+ }
+diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c b/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c
+index 65cc64a..ed46e9a 100644
+--- a/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c
++++ b/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c
+@@ -376,7 +376,8 @@ static void set_dp_phy_pattern_80bit_custom(
+ }
+
+ static void set_dp_phy_pattern_hbr2_compliance_cp2520_2(
+- struct dce110_link_encoder *enc110)
++ struct dce110_link_encoder *enc110,
++ unsigned int cp2520_pattern)
+ {
+
+ /* previously there is a register DP_HBR2_EYE_PATTERN
+@@ -408,10 +409,13 @@ static void set_dp_phy_pattern_hbr2_compliance_cp2520_2(
+ /* swap every BS with SR */
+ REG_UPDATE(DP_DPHY_SCRAM_CNTL, DPHY_SCRAMBLER_BS_COUNT, 0);
+
+- /* select cp2520 pattern 2 */
++ /* select cp2520 patterns */
+ if (REG(DP_DPHY_HBR2_PATTERN_CONTROL))
+ REG_UPDATE(DP_DPHY_HBR2_PATTERN_CONTROL,
+- DP_DPHY_HBR2_PATTERN_CONTROL, 0x2);
++ DP_DPHY_HBR2_PATTERN_CONTROL, cp2520_pattern);
++ else
++ /* pre-DCE11 can only generate CP2520 pattern 2 */
++ ASSERT(cp2520_pattern == 2);
+
+ /* set link training complete */
+ set_link_training_complete(enc110, true);
+@@ -1395,8 +1399,11 @@ void dce110_link_encoder_dp_set_phy_pattern(
+ set_dp_phy_pattern_80bit_custom(
+ enc110, param->custom_pattern);
+ break;
+- case DP_TEST_PATTERN_HBR2_COMPLIANCE_EYE:
+- set_dp_phy_pattern_hbr2_compliance_cp2520_2(enc110);
++ case DP_TEST_PATTERN_CP2520_1:
++ set_dp_phy_pattern_hbr2_compliance_cp2520_2(enc110, 1);
++ break;
++ case DP_TEST_PATTERN_CP2520_2:
++ set_dp_phy_pattern_hbr2_compliance_cp2520_2(enc110, 2);
+ break;
+ case DP_TEST_PATTERN_VIDEO_MODE: {
+ set_dp_phy_pattern_passthrough_mode(
+diff --git a/drivers/gpu/drm/amd/display/include/dpcd_defs.h b/drivers/gpu/drm/amd/display/include/dpcd_defs.h
+index 2dca4a4..482f8b2 100644
+--- a/drivers/gpu/drm/amd/display/include/dpcd_defs.h
++++ b/drivers/gpu/drm/amd/display/include/dpcd_defs.h
+@@ -74,7 +74,9 @@ enum dpcd_phy_test_patterns {
+ PHY_TEST_PATTERN_SYMBOL_ERROR,
+ PHY_TEST_PATTERN_PRBS7,
+ PHY_TEST_PATTERN_80BIT_CUSTOM,/* For DP1.2 only */
+- PHY_TEST_PATTERN_HBR2_COMPLIANCE_EYE/* For DP1.2 only */
++ PHY_TEST_PATTERN_CP2520_1,
++ PHY_TEST_PATTERN_CP2520_2,
++ PHY_TEST_PATTERN_CP2520_3, /* same as TPS4 */
+ };
+
+ enum dpcd_test_dyn_range {
+diff --git a/drivers/gpu/drm/amd/display/include/link_service_types.h b/drivers/gpu/drm/amd/display/include/link_service_types.h
+index 479e5ff..b232601 100644
+--- a/drivers/gpu/drm/amd/display/include/link_service_types.h
++++ b/drivers/gpu/drm/amd/display/include/link_service_types.h
+@@ -75,19 +75,24 @@ enum dp_test_pattern {
+ /* Input data is pass through Scrambler
+ * and 8b10b Encoder straight to output*/
+ DP_TEST_PATTERN_VIDEO_MODE = 0,
++
+ /* phy test patterns*/
+- DP_TEST_PATTERN_D102,
++ DP_TEST_PATTERN_PHY_PATTERN_BEGIN,
++ DP_TEST_PATTERN_D102 = DP_TEST_PATTERN_PHY_PATTERN_BEGIN,
+ DP_TEST_PATTERN_SYMBOL_ERROR,
+ DP_TEST_PATTERN_PRBS7,
+-
+ DP_TEST_PATTERN_80BIT_CUSTOM,
+- DP_TEST_PATTERN_HBR2_COMPLIANCE_EYE,
++ DP_TEST_PATTERN_CP2520_1,
++ DP_TEST_PATTERN_CP2520_2,
++ DP_TEST_PATTERN_HBR2_COMPLIANCE_EYE = DP_TEST_PATTERN_CP2520_2,
+
+ /* Link Training Patterns */
+ DP_TEST_PATTERN_TRAINING_PATTERN1,
+ DP_TEST_PATTERN_TRAINING_PATTERN2,
+ DP_TEST_PATTERN_TRAINING_PATTERN3,
+ DP_TEST_PATTERN_TRAINING_PATTERN4,
++ DP_TEST_PATTERN_CP2520_3 = DP_TEST_PATTERN_TRAINING_PATTERN4,
++ DP_TEST_PATTERN_PHY_PATTERN_END = DP_TEST_PATTERN_TRAINING_PATTERN4,
+
+ /* link test patterns*/
+ DP_TEST_PATTERN_COLOR_SQUARES,
+--
+2.7.4
+