@@ -137,7 +137,12 @@ enum dc_edid_status dm_helpers_parse_edid_caps(
137137 edid_caps -> display_name ,
138138 AUDIO_INFO_DISPLAY_NAME_SIZE_IN_CHARS );
139139
140- edid_caps -> edid_hdmi = connector -> display_info .is_hdmi ;
140+ if (connector -> display_info .is_hdmi ) {
141+ edid_caps -> edid_hdmi = true;
142+ edid_caps -> allm = connector -> display_info .hdmi .allm ;
143+ edid_caps -> fva = connector -> display_info .hdmi .vrr_cap .fva ;
144+ edid_caps -> hdmi_vrr = connector -> display_info .hdmi .vrr_cap .supported ;
145+ }
141146
142147 if (edid_caps -> edid_hdmi )
143148 populate_hdmi_info_from_connector (& connector -> display_info .hdmi , edid_caps );
@@ -1389,40 +1394,32 @@ void dm_helpers_dp_mst_update_branch_bandwidth(
13891394 // TODO
13901395}
13911396
1392- static bool dm_is_freesync_pcon_whitelist (const uint32_t branch_dev_id )
1397+ bool dm_helpers_is_vrr_pcon_allowed (const struct dc_link * link , const struct drm_device * dev )
13931398{
1394- bool ret_val = false;
1399+ if (link -> dpcd_caps .dongle_type != DISPLAY_DONGLE_DP_HDMI_CONVERTER )
1400+ return false;
13951401
1396- switch (branch_dev_id ) {
1402+ if (!link -> dpcd_caps .allow_invalid_MSA_timing_param )
1403+ return false;
1404+
1405+ if (!link -> dpcd_caps .adaptive_sync_caps .dp_adap_sync_caps .bits .ADAPTIVE_SYNC_SDP_SUPPORT )
1406+ return false;
1407+
1408+ switch (link -> dpcd_caps .branch_dev_id ) {
13971409 case DP_BRANCH_DEVICE_ID_0060AD :
13981410 case DP_BRANCH_DEVICE_ID_00E04C :
13991411 case DP_BRANCH_DEVICE_ID_90CC24 :
1400- ret_val = true;
1401- break ;
1402- default :
1403- break ;
1412+ case DP_BRANCH_DEVICE_ID_2B02F0 :
1413+ return true;
14041414 }
14051415
1406- return ret_val ;
1407- }
1408-
1409- enum adaptive_sync_type dm_get_adaptive_sync_support_type (struct dc_link * link )
1410- {
1411- struct dpcd_caps * dpcd_caps = & link -> dpcd_caps ;
1412- enum adaptive_sync_type as_type = ADAPTIVE_SYNC_TYPE_NONE ;
1413-
1414- switch (dpcd_caps -> dongle_type ) {
1415- case DISPLAY_DONGLE_DP_HDMI_CONVERTER :
1416- if (dpcd_caps -> adaptive_sync_caps .dp_adap_sync_caps .bits .ADAPTIVE_SYNC_SDP_SUPPORT == true &&
1417- dpcd_caps -> allow_invalid_MSA_timing_param == true &&
1418- dm_is_freesync_pcon_whitelist (dpcd_caps -> branch_dev_id ))
1419- as_type = FREESYNC_TYPE_PCON_IN_WHITELIST ;
1420- break ;
1421- default :
1422- break ;
1416+ if (link -> dc -> debug .override_pcon_vrr_id_check ) {
1417+ drm_info (dev , "Overriding VRR PCON check for ID: 0x%06x\n" ,
1418+ link -> dpcd_caps .branch_dev_id );
1419+ return true;
14231420 }
14241421
1425- return as_type ;
1422+ return false ;
14261423}
14271424
14281425bool dm_helpers_is_fullscreen (struct dc_context * ctx , struct dc_stream_state * stream )
0 commit comments