Loading drivers/gpu/drm/msm/dp/dp_catalog.c +5 −1 Original line number Diff line number Diff line Loading @@ -1067,7 +1067,7 @@ static void dp_catalog_ctrl_send_phy_pattern(struct dp_catalog_ctrl *ctrl, /* 1111100000111110 */ dp_write(base + DP_TEST_80BIT_CUSTOM_PATTERN_REG2, 0x0000F83E); break; case DP_TEST_PHY_PATTERN_HBR2_CTS_EYE_PATTERN: case DP_TEST_PHY_PATTERN_CP2520_PATTERN_1: value = BIT(16); dp_write(base + DP_HBR2_COMPLIANCE_SCRAMBLER_RESET, value); value |= 0xFC; Loading @@ -1075,6 +1075,10 @@ static void dp_catalog_ctrl_send_phy_pattern(struct dp_catalog_ctrl *ctrl, dp_write(base + DP_MAINLINK_LEVELS, 0x2); dp_write(base + DP_STATE_CTRL, 0x10); break; case DP_TEST_PHY_PATTERN_CP2520_PATTERN_3: dp_write(base + DP_MAINLINK_CTRL, 0x11); dp_write(base + DP_STATE_CTRL, 0x8); break; default: pr_debug("No valid test pattern requested: 0x%x\n", pattern); return; Loading drivers/gpu/drm/msm/dp/dp_ctrl.c +11 −5 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ #define MR_LINK_SYMBOL_ERM 0x80 #define MR_LINK_PRBS7 0x100 #define MR_LINK_CUSTOM80 0x200 #define MR_LINK_TRAINING4 0x40 struct dp_vc_tu_mapping_table { u32 vic; Loading Loading @@ -1217,9 +1218,6 @@ static void dp_ctrl_send_phy_test_pattern(struct dp_ctrl_private *ctrl) u32 pattern_sent = 0x0; u32 pattern_requested = ctrl->link->phy_params.phy_test_pattern_sel; pr_debug("request: %s\n", dp_link_get_phy_test_pattern(pattern_requested)); ctrl->catalog->update_vx_px(ctrl->catalog, ctrl->link->phy_params.v_level, ctrl->link->phy_params.p_level); Loading @@ -1227,6 +1225,9 @@ static void dp_ctrl_send_phy_test_pattern(struct dp_ctrl_private *ctrl) ctrl->link->send_test_response(ctrl->link); pattern_sent = ctrl->catalog->read_phy_pattern(ctrl->catalog); pr_debug("pattern_request: %s. pattern_sent: 0x%x\n", dp_link_get_phy_test_pattern(pattern_requested), pattern_sent); switch (pattern_sent) { case MR_LINK_TRAINING1: Loading @@ -1238,7 +1239,7 @@ static void dp_ctrl_send_phy_test_pattern(struct dp_ctrl_private *ctrl) if ((pattern_requested == DP_TEST_PHY_PATTERN_SYMBOL_ERR_MEASUREMENT_CNT) || (pattern_requested == DP_TEST_PHY_PATTERN_HBR2_CTS_EYE_PATTERN)) DP_TEST_PHY_PATTERN_CP2520_PATTERN_1)) success = true; break; case MR_LINK_PRBS7: Loading @@ -1250,9 +1251,14 @@ static void dp_ctrl_send_phy_test_pattern(struct dp_ctrl_private *ctrl) DP_TEST_PHY_PATTERN_80_BIT_CUSTOM_PATTERN) success = true; break; case MR_LINK_TRAINING4: if (pattern_requested == DP_TEST_PHY_PATTERN_CP2520_PATTERN_3) success = true; break; default: success = false; return; break; } pr_debug("%s: %s\n", success ? "success" : "failed", Loading drivers/gpu/drm/msm/dp/dp_link.c +2 −1 Original line number Diff line number Diff line Loading @@ -680,7 +680,8 @@ static bool dp_link_is_phy_test_pattern_supported(u32 phy_test_pattern_sel) case DP_TEST_PHY_PATTERN_SYMBOL_ERR_MEASUREMENT_CNT: case DP_TEST_PHY_PATTERN_PRBS7: case DP_TEST_PHY_PATTERN_80_BIT_CUSTOM_PATTERN: case DP_TEST_PHY_PATTERN_HBR2_CTS_EYE_PATTERN: case DP_TEST_PHY_PATTERN_CP2520_PATTERN_1: case DP_TEST_PHY_PATTERN_CP2520_PATTERN_3: return true; default: return false; Loading drivers/gpu/drm/msm/dp/dp_link.h +6 −3 Original line number Diff line number Diff line Loading @@ -121,9 +121,12 @@ static inline char *dp_link_get_phy_test_pattern(u32 phy_test_pattern_sel) case DP_TEST_PHY_PATTERN_80_BIT_CUSTOM_PATTERN: return DP_LINK_ENUM_STR( DP_TEST_PHY_PATTERN_80_BIT_CUSTOM_PATTERN); case DP_TEST_PHY_PATTERN_HBR2_CTS_EYE_PATTERN: return DP_LINK_ENUM_STR( DP_TEST_PHY_PATTERN_HBR2_CTS_EYE_PATTERN); case DP_TEST_PHY_PATTERN_CP2520_PATTERN_1: return DP_LINK_ENUM_STR(DP_TEST_PHY_PATTERN_CP2520_PATTERN_1); case DP_TEST_PHY_PATTERN_CP2520_PATTERN_2: return DP_LINK_ENUM_STR(DP_TEST_PHY_PATTERN_CP2520_PATTERN_2); case DP_TEST_PHY_PATTERN_CP2520_PATTERN_3: return DP_LINK_ENUM_STR(DP_TEST_PHY_PATTERN_CP2520_PATTERN_3); default: return "unknown"; } Loading include/drm/drm_dp_helper.h +3 −1 Original line number Diff line number Diff line Loading @@ -491,7 +491,9 @@ # define DP_TEST_PHY_PATTERN_SYMBOL_ERR_MEASUREMENT_CNT 0x2 # define DP_TEST_PHY_PATTERN_PRBS7 0x3 # define DP_TEST_PHY_PATTERN_80_BIT_CUSTOM_PATTERN 0x4 # define DP_TEST_PHY_PATTERN_HBR2_CTS_EYE_PATTERN 0x5 # define DP_TEST_PHY_PATTERN_CP2520_PATTERN_1 0x5 # define DP_TEST_PHY_PATTERN_CP2520_PATTERN_2 0x6 # define DP_TEST_PHY_PATTERN_CP2520_PATTERN_3 0x7 #define DP_TEST_RESPONSE 0x260 # define DP_TEST_ACK (1 << 0) Loading Loading
drivers/gpu/drm/msm/dp/dp_catalog.c +5 −1 Original line number Diff line number Diff line Loading @@ -1067,7 +1067,7 @@ static void dp_catalog_ctrl_send_phy_pattern(struct dp_catalog_ctrl *ctrl, /* 1111100000111110 */ dp_write(base + DP_TEST_80BIT_CUSTOM_PATTERN_REG2, 0x0000F83E); break; case DP_TEST_PHY_PATTERN_HBR2_CTS_EYE_PATTERN: case DP_TEST_PHY_PATTERN_CP2520_PATTERN_1: value = BIT(16); dp_write(base + DP_HBR2_COMPLIANCE_SCRAMBLER_RESET, value); value |= 0xFC; Loading @@ -1075,6 +1075,10 @@ static void dp_catalog_ctrl_send_phy_pattern(struct dp_catalog_ctrl *ctrl, dp_write(base + DP_MAINLINK_LEVELS, 0x2); dp_write(base + DP_STATE_CTRL, 0x10); break; case DP_TEST_PHY_PATTERN_CP2520_PATTERN_3: dp_write(base + DP_MAINLINK_CTRL, 0x11); dp_write(base + DP_STATE_CTRL, 0x8); break; default: pr_debug("No valid test pattern requested: 0x%x\n", pattern); return; Loading
drivers/gpu/drm/msm/dp/dp_ctrl.c +11 −5 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ #define MR_LINK_SYMBOL_ERM 0x80 #define MR_LINK_PRBS7 0x100 #define MR_LINK_CUSTOM80 0x200 #define MR_LINK_TRAINING4 0x40 struct dp_vc_tu_mapping_table { u32 vic; Loading Loading @@ -1217,9 +1218,6 @@ static void dp_ctrl_send_phy_test_pattern(struct dp_ctrl_private *ctrl) u32 pattern_sent = 0x0; u32 pattern_requested = ctrl->link->phy_params.phy_test_pattern_sel; pr_debug("request: %s\n", dp_link_get_phy_test_pattern(pattern_requested)); ctrl->catalog->update_vx_px(ctrl->catalog, ctrl->link->phy_params.v_level, ctrl->link->phy_params.p_level); Loading @@ -1227,6 +1225,9 @@ static void dp_ctrl_send_phy_test_pattern(struct dp_ctrl_private *ctrl) ctrl->link->send_test_response(ctrl->link); pattern_sent = ctrl->catalog->read_phy_pattern(ctrl->catalog); pr_debug("pattern_request: %s. pattern_sent: 0x%x\n", dp_link_get_phy_test_pattern(pattern_requested), pattern_sent); switch (pattern_sent) { case MR_LINK_TRAINING1: Loading @@ -1238,7 +1239,7 @@ static void dp_ctrl_send_phy_test_pattern(struct dp_ctrl_private *ctrl) if ((pattern_requested == DP_TEST_PHY_PATTERN_SYMBOL_ERR_MEASUREMENT_CNT) || (pattern_requested == DP_TEST_PHY_PATTERN_HBR2_CTS_EYE_PATTERN)) DP_TEST_PHY_PATTERN_CP2520_PATTERN_1)) success = true; break; case MR_LINK_PRBS7: Loading @@ -1250,9 +1251,14 @@ static void dp_ctrl_send_phy_test_pattern(struct dp_ctrl_private *ctrl) DP_TEST_PHY_PATTERN_80_BIT_CUSTOM_PATTERN) success = true; break; case MR_LINK_TRAINING4: if (pattern_requested == DP_TEST_PHY_PATTERN_CP2520_PATTERN_3) success = true; break; default: success = false; return; break; } pr_debug("%s: %s\n", success ? "success" : "failed", Loading
drivers/gpu/drm/msm/dp/dp_link.c +2 −1 Original line number Diff line number Diff line Loading @@ -680,7 +680,8 @@ static bool dp_link_is_phy_test_pattern_supported(u32 phy_test_pattern_sel) case DP_TEST_PHY_PATTERN_SYMBOL_ERR_MEASUREMENT_CNT: case DP_TEST_PHY_PATTERN_PRBS7: case DP_TEST_PHY_PATTERN_80_BIT_CUSTOM_PATTERN: case DP_TEST_PHY_PATTERN_HBR2_CTS_EYE_PATTERN: case DP_TEST_PHY_PATTERN_CP2520_PATTERN_1: case DP_TEST_PHY_PATTERN_CP2520_PATTERN_3: return true; default: return false; Loading
drivers/gpu/drm/msm/dp/dp_link.h +6 −3 Original line number Diff line number Diff line Loading @@ -121,9 +121,12 @@ static inline char *dp_link_get_phy_test_pattern(u32 phy_test_pattern_sel) case DP_TEST_PHY_PATTERN_80_BIT_CUSTOM_PATTERN: return DP_LINK_ENUM_STR( DP_TEST_PHY_PATTERN_80_BIT_CUSTOM_PATTERN); case DP_TEST_PHY_PATTERN_HBR2_CTS_EYE_PATTERN: return DP_LINK_ENUM_STR( DP_TEST_PHY_PATTERN_HBR2_CTS_EYE_PATTERN); case DP_TEST_PHY_PATTERN_CP2520_PATTERN_1: return DP_LINK_ENUM_STR(DP_TEST_PHY_PATTERN_CP2520_PATTERN_1); case DP_TEST_PHY_PATTERN_CP2520_PATTERN_2: return DP_LINK_ENUM_STR(DP_TEST_PHY_PATTERN_CP2520_PATTERN_2); case DP_TEST_PHY_PATTERN_CP2520_PATTERN_3: return DP_LINK_ENUM_STR(DP_TEST_PHY_PATTERN_CP2520_PATTERN_3); default: return "unknown"; } Loading
include/drm/drm_dp_helper.h +3 −1 Original line number Diff line number Diff line Loading @@ -491,7 +491,9 @@ # define DP_TEST_PHY_PATTERN_SYMBOL_ERR_MEASUREMENT_CNT 0x2 # define DP_TEST_PHY_PATTERN_PRBS7 0x3 # define DP_TEST_PHY_PATTERN_80_BIT_CUSTOM_PATTERN 0x4 # define DP_TEST_PHY_PATTERN_HBR2_CTS_EYE_PATTERN 0x5 # define DP_TEST_PHY_PATTERN_CP2520_PATTERN_1 0x5 # define DP_TEST_PHY_PATTERN_CP2520_PATTERN_2 0x6 # define DP_TEST_PHY_PATTERN_CP2520_PATTERN_3 0x7 #define DP_TEST_RESPONSE 0x260 # define DP_TEST_ACK (1 << 0) Loading