omapdrm: use modeset_lock_all
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Sun, 20 Jan 2013 14:50:41 +0000 (15:50 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Sun, 20 Jan 2013 21:16:53 +0000 (22:16 +0100)
I've left the locking in the debugfs code as-is, it's essentially just
used to keep the framebuffer object alive (which won't be necessary
any more later on). We don't need fb refcounting either, since the new
mode_config.fb_lock ensures that the framebuffers can't disappear
(once mode_config.mutex doesn't guarantee this any more later on in
the series).

The fbcon restore needs all modeset locks. The crtc callbacks seem to
only need the crtc locks, but I've quickly discussed things with Rob
Clark and he's fine with just using modeset_lock_all for those, too.
He'll look into converting things over later.

Reviewed-by: Rob Clark <rob@ti.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/staging/omapdrm/omap_crtc.c
drivers/staging/omapdrm/omap_drv.c

index 5c6ed6040eff572a384659561e1fdbaf427c883c..510942e67020390ee82f3eed16912953840b6f72 100644 (file)
@@ -278,13 +278,13 @@ static void page_flip_worker(struct work_struct *work)
        struct drm_display_mode *mode = &crtc->mode;
        struct drm_gem_object *bo;
 
-       mutex_lock(&dev->mode_config.mutex);
+       drm_modeset_lock_all(dev);
        omap_plane_mode_set(omap_crtc->plane, crtc, crtc->fb,
                        0, 0, mode->hdisplay, mode->vdisplay,
                        crtc->x << 16, crtc->y << 16,
                        mode->hdisplay << 16, mode->vdisplay << 16,
                        vblank_cb, crtc);
-       mutex_unlock(&dev->mode_config.mutex);
+       drm_modeset_unlock_all(dev);
 
        bo = omap_framebuffer_bo(crtc->fb, 0);
        drm_gem_object_unreference_unlocked(bo);
@@ -417,7 +417,7 @@ static void apply_worker(struct work_struct *work)
         * the callbacks and list modification all serialized
         * with respect to modesetting ioctls from userspace.
         */
-       mutex_lock(&dev->mode_config.mutex);
+       drm_modeset_lock_all(dev);
        dispc_runtime_get();
 
        /*
@@ -462,7 +462,7 @@ static void apply_worker(struct work_struct *work)
 
 out:
        dispc_runtime_put();
-       mutex_unlock(&dev->mode_config.mutex);
+       drm_modeset_unlock_all(dev);
 }
 
 int omap_crtc_apply(struct drm_crtc *crtc,
index ae5ecc2efbc758268d692d732482d1f49f13c352..dfdb4ba1e7c6d20339e5404e2bdb2a44f7c5305e 100644 (file)
@@ -449,9 +449,9 @@ static void dev_lastclose(struct drm_device *dev)
                }
        }
 
-       mutex_lock(&dev->mode_config.mutex);
+       drm_modeset_lock_all(dev);
        ret = drm_fb_helper_restore_fbdev_mode(priv->fbdev);
-       mutex_unlock(&dev->mode_config.mutex);
+       drm_modeset_unlock_all(dev);
        if (ret)
                DBG("failed to restore crtc mode");
 }