drm/exynos: use drm_for_each_connector_iter()
authorGustavo Padovan <gustavo.padovan@collabora.com>
Thu, 11 May 2017 19:10:42 +0000 (16:10 -0300)
committerGustavo Padovan <gustavo.padovan@collabora.com>
Fri, 26 May 2017 05:04:47 +0000 (02:04 -0300)
Drop legacy drm_for_each_connector() in favor of the race-free
drm_for_each_connector_iter()

Cc: Inki Dae <inki.dae@samsung.com>
Cc: Joonyoung Shim <jy0922.shim@samsung.com>
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/20170511191049.28944-2-gustavo@padovan.org
drivers/gpu/drm/exynos/exynos_drm_drv.c

index 50294a7..99f0e67 100644 (file)
@@ -171,12 +171,13 @@ static int exynos_drm_suspend(struct device *dev)
 {
        struct drm_device *drm_dev = dev_get_drvdata(dev);
        struct drm_connector *connector;
+       struct drm_connector_list_iter conn_iter;
 
        if (pm_runtime_suspended(dev) || !drm_dev)
                return 0;
 
-       drm_modeset_lock_all(drm_dev);
-       drm_for_each_connector(connector, drm_dev) {
+       drm_connector_list_iter_begin(drm_dev, &conn_iter);
+       drm_for_each_connector_iter(connector, &conn_iter) {
                int old_dpms = connector->dpms;
 
                if (connector->funcs->dpms)
@@ -185,7 +186,7 @@ static int exynos_drm_suspend(struct device *dev)
                /* Set the old mode back to the connector for resume */
                connector->dpms = old_dpms;
        }
-       drm_modeset_unlock_all(drm_dev);
+       drm_connector_list_iter_end(&conn_iter);
 
        return 0;
 }
@@ -194,12 +195,13 @@ static int exynos_drm_resume(struct device *dev)
 {
        struct drm_device *drm_dev = dev_get_drvdata(dev);
        struct drm_connector *connector;
+       struct drm_connector_list_iter conn_iter;
 
        if (pm_runtime_suspended(dev) || !drm_dev)
                return 0;
 
-       drm_modeset_lock_all(drm_dev);
-       drm_for_each_connector(connector, drm_dev) {
+       drm_connector_list_iter_begin(drm_dev, &conn_iter);
+       drm_for_each_connector_iter(connector, &conn_iter) {
                if (connector->funcs->dpms) {
                        int dpms = connector->dpms;
 
@@ -207,7 +209,7 @@ static int exynos_drm_resume(struct device *dev)
                        connector->funcs->dpms(connector, dpms);
                }
        }
-       drm_modeset_unlock_all(drm_dev);
+       drm_connector_list_iter_end(&conn_iter);
 
        return 0;
 }