Merge branch 'drm-armada-devel' of git://ftp.arm.linux.org.uk/~rmk/linux-arm into...
[cascardo/linux.git] / drivers / gpu / drm / armada / armada_crtc.c
index 4123680..0293eb7 100644 (file)
@@ -928,11 +928,10 @@ static int armada_drm_crtc_cursor_set(struct drm_crtc *crtc,
                }
        }
 
-       mutex_lock(&dev->struct_mutex);
        if (dcrtc->cursor_obj) {
                dcrtc->cursor_obj->update = NULL;
                dcrtc->cursor_obj->update_data = NULL;
-               drm_gem_object_unreference(&dcrtc->cursor_obj->obj);
+               drm_gem_object_unreference_unlocked(&dcrtc->cursor_obj->obj);
        }
        dcrtc->cursor_obj = obj;
        dcrtc->cursor_w = w;
@@ -942,14 +941,12 @@ static int armada_drm_crtc_cursor_set(struct drm_crtc *crtc,
                obj->update_data = dcrtc;
                obj->update = cursor_update;
        }
-       mutex_unlock(&dev->struct_mutex);
 
        return ret;
 }
 
 static int armada_drm_crtc_cursor_move(struct drm_crtc *crtc, int x, int y)
 {
-       struct drm_device *dev = crtc->dev;
        struct armada_crtc *dcrtc = drm_to_armada_crtc(crtc);
        int ret;
 
@@ -957,11 +954,9 @@ static int armada_drm_crtc_cursor_move(struct drm_crtc *crtc, int x, int y)
        if (!dcrtc->variant->has_spu_adv_reg)
                return -EFAULT;
 
-       mutex_lock(&dev->struct_mutex);
        dcrtc->cursor_x = x;
        dcrtc->cursor_y = y;
        ret = armada_drm_crtc_cursor_update(dcrtc, false);
-       mutex_unlock(&dev->struct_mutex);
 
        return ret;
 }
@@ -972,7 +967,7 @@ static void armada_drm_crtc_destroy(struct drm_crtc *crtc)
        struct armada_private *priv = crtc->dev->dev_private;
 
        if (dcrtc->cursor_obj)
-               drm_gem_object_unreference(&dcrtc->cursor_obj->obj);
+               drm_gem_object_unreference_unlocked(&dcrtc->cursor_obj->obj);
 
        priv->dcrtc[dcrtc->num] = NULL;
        drm_crtc_cleanup(&dcrtc->crtc);