|
|
@@ -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;
|
|
|
}
|