mirror of https://gitee.com/openkylin/linux.git
drm/amd/display: Fix DP HBR2 Eye Diagram Pattern on Carrizo
[why] dp hbr2 eye diagram pattern for raven asic is not stabled. workaround is to use tp4 pattern. But this should not be applied to asic before raven. [how] add new bool varilable in asic caps. for raven asic, use the workaround. for carrizo, vega, do not use workaround. Signed-off-by: Hersen Wu <hersenxs.wu@amd.com> Reviewed-by: Harry Wentland <Harry.Wentland@amd.com> Acked-by: Leo Li <sunpeng.li@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
5ae6fe5729
commit
9315e2399a
|
@ -1784,12 +1784,10 @@ static void dp_test_send_link_training(struct dc_link *link)
|
||||||
dp_retrain_link_dp_test(link, &link_settings, false);
|
dp_retrain_link_dp_test(link, &link_settings, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TODO hbr2 compliance eye output is unstable
|
/* TODO Raven hbr2 compliance eye output is unstable
|
||||||
* (toggling on and off) with debugger break
|
* (toggling on and off) with debugger break
|
||||||
* This caueses intermittent PHY automation failure
|
* This caueses intermittent PHY automation failure
|
||||||
* Need to look into the root cause */
|
* Need to look into the root cause */
|
||||||
static uint8_t force_tps4_for_cp2520 = 1;
|
|
||||||
|
|
||||||
static void dp_test_send_phy_test_pattern(struct dc_link *link)
|
static void dp_test_send_phy_test_pattern(struct dc_link *link)
|
||||||
{
|
{
|
||||||
union phy_test_pattern dpcd_test_pattern;
|
union phy_test_pattern dpcd_test_pattern;
|
||||||
|
@ -1849,13 +1847,13 @@ static void dp_test_send_phy_test_pattern(struct dc_link *link)
|
||||||
break;
|
break;
|
||||||
case PHY_TEST_PATTERN_CP2520_1:
|
case PHY_TEST_PATTERN_CP2520_1:
|
||||||
/* CP2520 pattern is unstable, temporarily use TPS4 instead */
|
/* CP2520 pattern is unstable, temporarily use TPS4 instead */
|
||||||
test_pattern = (force_tps4_for_cp2520 == 1) ?
|
test_pattern = (link->dc->caps.force_dp_tps4_for_cp2520 == 1) ?
|
||||||
DP_TEST_PATTERN_TRAINING_PATTERN4 :
|
DP_TEST_PATTERN_TRAINING_PATTERN4 :
|
||||||
DP_TEST_PATTERN_HBR2_COMPLIANCE_EYE;
|
DP_TEST_PATTERN_HBR2_COMPLIANCE_EYE;
|
||||||
break;
|
break;
|
||||||
case PHY_TEST_PATTERN_CP2520_2:
|
case PHY_TEST_PATTERN_CP2520_2:
|
||||||
/* CP2520 pattern is unstable, temporarily use TPS4 instead */
|
/* CP2520 pattern is unstable, temporarily use TPS4 instead */
|
||||||
test_pattern = (force_tps4_for_cp2520 == 1) ?
|
test_pattern = (link->dc->caps.force_dp_tps4_for_cp2520 == 1) ?
|
||||||
DP_TEST_PATTERN_TRAINING_PATTERN4 :
|
DP_TEST_PATTERN_TRAINING_PATTERN4 :
|
||||||
DP_TEST_PATTERN_HBR2_COMPLIANCE_EYE;
|
DP_TEST_PATTERN_HBR2_COMPLIANCE_EYE;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -77,6 +77,7 @@ struct dc_caps {
|
||||||
bool is_apu;
|
bool is_apu;
|
||||||
bool dual_link_dvi;
|
bool dual_link_dvi;
|
||||||
bool post_blend_color_processing;
|
bool post_blend_color_processing;
|
||||||
|
bool force_dp_tps4_for_cp2520;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct dc_dcc_surface_param {
|
struct dc_dcc_surface_param {
|
||||||
|
|
|
@ -1127,6 +1127,8 @@ static bool construct(
|
||||||
dc->caps.max_slave_planes = 1;
|
dc->caps.max_slave_planes = 1;
|
||||||
dc->caps.is_apu = true;
|
dc->caps.is_apu = true;
|
||||||
dc->caps.post_blend_color_processing = false;
|
dc->caps.post_blend_color_processing = false;
|
||||||
|
/* Raven DP PHY HBR2 eye diagram pattern is not stable. Use TP4 */
|
||||||
|
dc->caps.force_dp_tps4_for_cp2520 = true;
|
||||||
|
|
||||||
if (dc->ctx->dce_environment == DCE_ENV_PRODUCTION_DRV)
|
if (dc->ctx->dce_environment == DCE_ENV_PRODUCTION_DRV)
|
||||||
dc->debug = debug_defaults_drv;
|
dc->debug = debug_defaults_drv;
|
||||||
|
|
Loading…
Reference in New Issue