drm/amdgpu: Iterate through DRM connectors correctly
[sfrench/cifs-2.6.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_connectors.c
index ece55c8fa67333267f75dd41baaa70a3906e287b..bd31bb595c04a8e840caa7c68f8e690dc817a3d4 100644 (file)
@@ -1022,8 +1022,12 @@ amdgpu_connector_dvi_detect(struct drm_connector *connector, bool force)
                         */
                        if (amdgpu_connector->shared_ddc && (ret == connector_status_connected)) {
                                struct drm_connector *list_connector;
+                               struct drm_connector_list_iter iter;
                                struct amdgpu_connector *list_amdgpu_connector;
-                               list_for_each_entry(list_connector, &dev->mode_config.connector_list, head) {
+
+                               drm_connector_list_iter_begin(dev, &iter);
+                               drm_for_each_connector_iter(list_connector,
+                                                           &iter) {
                                        if (connector == list_connector)
                                                continue;
                                        list_amdgpu_connector = to_amdgpu_connector(list_connector);
@@ -1040,6 +1044,7 @@ amdgpu_connector_dvi_detect(struct drm_connector *connector, bool force)
                                                }
                                        }
                                }
+                               drm_connector_list_iter_end(&iter);
                        }
                }
        }
@@ -1501,6 +1506,7 @@ amdgpu_connector_add(struct amdgpu_device *adev,
 {
        struct drm_device *dev = adev->ddev;
        struct drm_connector *connector;
+       struct drm_connector_list_iter iter;
        struct amdgpu_connector *amdgpu_connector;
        struct amdgpu_connector_atom_dig *amdgpu_dig_connector;
        struct drm_encoder *encoder;
@@ -1515,10 +1521,12 @@ amdgpu_connector_add(struct amdgpu_device *adev,
                return;
 
        /* see if we already added it */
-       list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
+       drm_connector_list_iter_begin(dev, &iter);
+       drm_for_each_connector_iter(connector, &iter) {
                amdgpu_connector = to_amdgpu_connector(connector);
                if (amdgpu_connector->connector_id == connector_id) {
                        amdgpu_connector->devices |= supported_device;
+                       drm_connector_list_iter_end(&iter);
                        return;
                }
                if (amdgpu_connector->ddc_bus && i2c_bus->valid) {
@@ -1533,6 +1541,7 @@ amdgpu_connector_add(struct amdgpu_device *adev,
                        }
                }
        }
+       drm_connector_list_iter_end(&iter);
 
        /* check if it's a dp bridge */
        list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {