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: Anthony Koo <Anthony.Koo@amd.com> Acked-by: Solomon Chiu <solomon.chiu@amd.com> Signed-off-by: Robin Chen <po-tchen@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
922e7ee31d
commit
e2facd575f
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user