When updating connector under drm_edid infrastructure, many calculations
and validations are already done and become redundant inside AMD driver.
Remove those driver-specific code in favor of the DRM common code.

Signed-off-by: Melissa Wen <m...@igalia.com>
---
 .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 86 +------------------
 1 file changed, 4 insertions(+), 82 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index b3c396d626e9..7e0f93de27e6 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -10994,24 +10994,6 @@ static int amdgpu_dm_atomic_check(struct drm_device 
*dev,
        return ret;
 }
 
-static bool is_dp_capable_without_timing_msa(struct dc *dc,
-                                            struct amdgpu_dm_connector 
*amdgpu_dm_connector)
-{
-       u8 dpcd_data;
-       bool capable = false;
-
-       if (amdgpu_dm_connector->dc_link &&
-               dm_helpers_dp_read_dpcd(
-                               NULL,
-                               amdgpu_dm_connector->dc_link,
-                               DP_DOWN_STREAM_PORT_COUNT,
-                               &dpcd_data,
-                               sizeof(dpcd_data))) {
-               capable = (dpcd_data & DP_MSA_TIMING_PAR_IGNORED) ? true:false;
-       }
-
-       return capable;
-}
 
 static bool dm_edid_parser_send_cea(struct amdgpu_display_manager *dm,
                unsigned int offset,
@@ -11225,9 +11207,6 @@ void amdgpu_dm_update_freesync_caps(struct 
drm_connector *connector,
                                    const struct drm_edid *drm_edid)
 {
        int i = 0;
-       const struct detailed_timing *timing;
-       const struct detailed_non_pixel *data;
-       const struct detailed_data_monitor_range *range;
        struct amdgpu_dm_connector *amdgpu_dm_connector =
                        to_amdgpu_dm_connector(connector);
        struct dm_connector_state *dm_con_state = NULL;
@@ -11254,8 +11233,6 @@ void amdgpu_dm_update_freesync_caps(struct 
drm_connector *connector,
 
                amdgpu_dm_connector->min_vfreq = 0;
                amdgpu_dm_connector->max_vfreq = 0;
-               connector->display_info.monitor_range.min_vfreq = 0;
-               connector->display_info.monitor_range.max_vfreq = 0;
                freesync_capable = false;
 
                goto update;
@@ -11269,65 +11246,11 @@ void amdgpu_dm_update_freesync_caps(struct 
drm_connector *connector,
        edid = drm_edid_raw(drm_edid); // FIXME: Get rid of drm_edid_raw()
        if (edid && (sink->sink_signal == SIGNAL_TYPE_DISPLAY_PORT ||
                     sink->sink_signal == SIGNAL_TYPE_EDP)) {
-               bool edid_check_required = false;
+               amdgpu_dm_connector->min_vfreq = 
connector->display_info.monitor_range.min_vfreq;
+               amdgpu_dm_connector->max_vfreq = 
connector->display_info.monitor_range.max_vfreq;
+               if (amdgpu_dm_connector->max_vfreq - 
amdgpu_dm_connector->min_vfreq > 10)
+                       freesync_capable = true;
 
-               if (is_dp_capable_without_timing_msa(adev->dm.dc,
-                                                    amdgpu_dm_connector)) {
-                       if (edid->features & DRM_EDID_FEATURE_CONTINUOUS_FREQ) {
-                               freesync_capable = true;
-                               amdgpu_dm_connector->min_vfreq = 
connector->display_info.monitor_range.min_vfreq;
-                               amdgpu_dm_connector->max_vfreq = 
connector->display_info.monitor_range.max_vfreq;
-                       } else {
-                               edid_check_required = edid->version > 1 ||
-                                                     (edid->version == 1 &&
-                                                      edid->revision > 1);
-                       }
-               }
-
-               if (edid_check_required) {
-                       for (i = 0; i < 4; i++) {
-
-                               timing  = &edid->detailed_timings[i];
-                               data    = &timing->data.other_data;
-                               range   = &data->data.range;
-                               /*
-                                * Check if monitor has continuous frequency 
mode
-                                */
-                               if (data->type != EDID_DETAIL_MONITOR_RANGE)
-                                       continue;
-                               /*
-                                * Check for flag range limits only. If flag == 
1 then
-                                * no additional timing information provided.
-                                * Default GTF, GTF Secondary curve and CVT are 
not
-                                * supported
-                                */
-                               if (range->flags != 1)
-                                       continue;
-
-                               connector->display_info.monitor_range.min_vfreq 
= range->min_vfreq;
-                               connector->display_info.monitor_range.max_vfreq 
= range->max_vfreq;
-
-                               if (edid->revision >= 4) {
-                                       if (data->pad2 & 
DRM_EDID_RANGE_OFFSET_MIN_VFREQ)
-                                               
connector->display_info.monitor_range.min_vfreq += 255;
-                                       if (data->pad2 & 
DRM_EDID_RANGE_OFFSET_MAX_VFREQ)
-                                               
connector->display_info.monitor_range.max_vfreq += 255;
-                               }
-
-                               amdgpu_dm_connector->min_vfreq =
-                                       
connector->display_info.monitor_range.min_vfreq;
-                               amdgpu_dm_connector->max_vfreq =
-                                       
connector->display_info.monitor_range.max_vfreq;
-
-                               break;
-                       }
-
-                       if (amdgpu_dm_connector->max_vfreq -
-                           amdgpu_dm_connector->min_vfreq > 10) {
-
-                               freesync_capable = true;
-                       }
-               }
                parse_amd_vsdb(amdgpu_dm_connector, edid, &vsdb_info);
 
                if (vsdb_info.replay_mode) {
@@ -11335,7 +11258,6 @@ void amdgpu_dm_update_freesync_caps(struct 
drm_connector *connector,
                        amdgpu_dm_connector->vsdb_info.amd_vsdb_version = 
vsdb_info.amd_vsdb_version;
                        amdgpu_dm_connector->as_type = ADAPTIVE_SYNC_TYPE_EDP;
                }
-
        } else if (drm_edid && sink->sink_signal == SIGNAL_TYPE_HDMI_TYPE_A) {
                i = parse_hdmi_amd_vsdb(amdgpu_dm_connector, edid, &vsdb_info);
                if (i >= 0 && vsdb_info.freesync_supported) {
-- 
2.43.0

Reply via email to