|
@@ -142,7 +142,6 @@ static int omap_atomic_commit(struct drm_device *dev,
|
|
{
|
|
{
|
|
struct omap_drm_private *priv = dev->dev_private;
|
|
struct omap_drm_private *priv = dev->dev_private;
|
|
struct omap_atomic_state_commit *commit;
|
|
struct omap_atomic_state_commit *commit;
|
|
- unsigned long flags;
|
|
|
|
unsigned int i;
|
|
unsigned int i;
|
|
int ret;
|
|
int ret;
|
|
|
|
|
|
@@ -175,17 +174,6 @@ static int omap_atomic_commit(struct drm_device *dev,
|
|
priv->commit.pending |= commit->crtcs;
|
|
priv->commit.pending |= commit->crtcs;
|
|
spin_unlock(&priv->commit.lock);
|
|
spin_unlock(&priv->commit.lock);
|
|
|
|
|
|
- /* Keep track of all CRTC events to unlink them in preclose(). */
|
|
|
|
- spin_lock_irqsave(&dev->event_lock, flags);
|
|
|
|
- for (i = 0; i < dev->mode_config.num_crtc; ++i) {
|
|
|
|
- struct drm_crtc_state *cstate = state->crtc_states[i];
|
|
|
|
-
|
|
|
|
- if (cstate && cstate->event)
|
|
|
|
- list_add_tail(&cstate->event->base.link,
|
|
|
|
- &priv->commit.events);
|
|
|
|
- }
|
|
|
|
- spin_unlock_irqrestore(&dev->event_lock, flags);
|
|
|
|
-
|
|
|
|
/* Swap the state, this is the point of no return. */
|
|
/* Swap the state, this is the point of no return. */
|
|
drm_atomic_helper_swap_state(dev, state);
|
|
drm_atomic_helper_swap_state(dev, state);
|
|
|
|
|
|
@@ -673,7 +661,6 @@ static int dev_load(struct drm_device *dev, unsigned long flags)
|
|
priv->wq = alloc_ordered_workqueue("omapdrm", 0);
|
|
priv->wq = alloc_ordered_workqueue("omapdrm", 0);
|
|
init_waitqueue_head(&priv->commit.wait);
|
|
init_waitqueue_head(&priv->commit.wait);
|
|
spin_lock_init(&priv->commit.lock);
|
|
spin_lock_init(&priv->commit.lock);
|
|
- INIT_LIST_HEAD(&priv->commit.events);
|
|
|
|
|
|
|
|
spin_lock_init(&priv->list_lock);
|
|
spin_lock_init(&priv->list_lock);
|
|
INIT_LIST_HEAD(&priv->obj_list);
|
|
INIT_LIST_HEAD(&priv->obj_list);
|
|
@@ -787,33 +774,6 @@ static void dev_lastclose(struct drm_device *dev)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-static void dev_preclose(struct drm_device *dev, struct drm_file *file)
|
|
|
|
-{
|
|
|
|
- struct omap_drm_private *priv = dev->dev_private;
|
|
|
|
- struct drm_pending_event *event;
|
|
|
|
- unsigned long flags;
|
|
|
|
-
|
|
|
|
- DBG("preclose: dev=%p", dev);
|
|
|
|
-
|
|
|
|
- /*
|
|
|
|
- * Unlink all pending CRTC events to make sure they won't be queued up
|
|
|
|
- * by a pending asynchronous commit.
|
|
|
|
- */
|
|
|
|
- spin_lock_irqsave(&dev->event_lock, flags);
|
|
|
|
- list_for_each_entry(event, &priv->commit.events, link) {
|
|
|
|
- if (event->file_priv == file) {
|
|
|
|
- file->event_space += event->event->length;
|
|
|
|
- event->file_priv = NULL;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- spin_unlock_irqrestore(&dev->event_lock, flags);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static void dev_postclose(struct drm_device *dev, struct drm_file *file)
|
|
|
|
-{
|
|
|
|
- DBG("postclose: dev=%p, file=%p", dev, file);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
static const struct vm_operations_struct omap_gem_vm_ops = {
|
|
static const struct vm_operations_struct omap_gem_vm_ops = {
|
|
.fault = omap_gem_fault,
|
|
.fault = omap_gem_fault,
|
|
.open = drm_gem_vm_open,
|
|
.open = drm_gem_vm_open,
|
|
@@ -838,8 +798,6 @@ static struct drm_driver omap_drm_driver = {
|
|
.unload = dev_unload,
|
|
.unload = dev_unload,
|
|
.open = dev_open,
|
|
.open = dev_open,
|
|
.lastclose = dev_lastclose,
|
|
.lastclose = dev_lastclose,
|
|
- .preclose = dev_preclose,
|
|
|
|
- .postclose = dev_postclose,
|
|
|
|
.set_busid = drm_platform_set_busid,
|
|
.set_busid = drm_platform_set_busid,
|
|
.get_vblank_counter = drm_vblank_no_hw_counter,
|
|
.get_vblank_counter = drm_vblank_no_hw_counter,
|
|
.enable_vblank = omap_irq_enable_vblank,
|
|
.enable_vblank = omap_irq_enable_vblank,
|