Commit e2facd57 authored by Robin Chen's avatar Robin Chen Committed by Alex Deucher

drm/amd/display: Disable PSRSU when DSC enabled on the specific sink

[Why]
Some specific sink is not able to support PSRSU when DSC is turned on.
For this case, fall-back to use PSR1.
Reviewed-by: default avatarAnthony Koo <Anthony.Koo@amd.com>
Acked-by: default avatarSolomon Chiu <solomon.chiu@amd.com>
Signed-off-by: default avatarRobin Chen <po-tchen@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 922e7ee3
...@@ -794,33 +794,34 @@ bool dmcu_load_iram(struct dmcu *dmcu, ...@@ -794,33 +794,34 @@ bool dmcu_load_iram(struct dmcu *dmcu,
*/ */
bool is_psr_su_specific_panel(struct dc_link *link) bool is_psr_su_specific_panel(struct dc_link *link)
{ {
if (link->dpcd_caps.edp_rev >= DP_EDP_14) { bool isPSRSUSupported = false;
if (link->dpcd_caps.psr_info.psr_version >= DP_PSR2_WITH_Y_COORD_ET_SUPPORTED) struct dpcd_caps *dpcd_caps = &link->dpcd_caps;
return true;
if (dpcd_caps->edp_rev >= DP_EDP_14) {
if (dpcd_caps->psr_info.psr_version >= DP_PSR2_WITH_Y_COORD_ET_SUPPORTED)
isPSRSUSupported = true;
/* /*
* Some panels will report PSR capabilities over additional DPCD bits. * Some panels will report PSR capabilities over additional DPCD bits.
* Such panels are approved despite reporting only PSR v3, as long as * Such panels are approved despite reporting only PSR v3, as long as
* the additional bits are reported. * the additional bits are reported.
*/ */
if (link->dpcd_caps.psr_info.psr_version < DP_PSR2_WITH_Y_COORD_IS_SUPPORTED) if (dpcd_caps->sink_dev_id == DP_BRANCH_DEVICE_ID_001CF8) {
return false;
if (link->dpcd_caps.sink_dev_id == DP_BRANCH_DEVICE_ID_001CF8) {
/* /*
* FIXME:
* This is the temporary workaround to disable PSRSU when system turned on * This is the temporary workaround to disable PSRSU when system turned on
* DSC function on the sepcific sink. Once the PSRSU + DSC is fixed, this * DSC function on the sepcific sink.
* condition should be removed.
*/ */
if (link->dpcd_caps.dsc_caps.dsc_basic_caps.fields.dsc_support.DSC_SUPPORT) if (dpcd_caps->psr_info.psr_version < DP_PSR2_WITH_Y_COORD_IS_SUPPORTED)
return false; isPSRSUSupported = false;
else if (dpcd_caps->dsc_caps.dsc_basic_caps.fields.dsc_support.DSC_SUPPORT &&
if (link->dpcd_caps.psr_info.force_psrsu_cap == 0x1) ((dpcd_caps->sink_dev_id_str[1] == 0x08 && dpcd_caps->sink_dev_id_str[0] == 0x08) ||
return true; (dpcd_caps->sink_dev_id_str[1] == 0x08 && dpcd_caps->sink_dev_id_str[0] == 0x07)))
isPSRSUSupported = false;
else if (dpcd_caps->psr_info.force_psrsu_cap == 0x1)
isPSRSUSupported = true;
} }
} }
return false; return isPSRSUSupported;
} }
/** /**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment