Skip to content

Commit

Permalink
Merge remote-tracking branch 'pfdo/drm-fixes' into drm-next
Browse files Browse the repository at this point in the history
Pull the vblank event changes into a Linus master tree to make merging
easier.
  • Loading branch information
Dave Airlie committed May 24, 2013
2 parents b91fd4d + 0eca56f commit c313d56
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 55 deletions.
13 changes: 2 additions & 11 deletions drivers/gpu/drm/nouveau/nouveau_display.c
Original file line number Diff line number Diff line change
Expand Up @@ -638,17 +638,8 @@ nouveau_finish_page_flip(struct nouveau_channel *chan,
}

s = list_first_entry(&fctx->flip, struct nouveau_page_flip_state, head);
if (s->event) {
struct drm_pending_vblank_event *e = s->event;
struct timeval now;

do_gettimeofday(&now);
e->event.sequence = 0;
e->event.tv_sec = now.tv_sec;
e->event.tv_usec = now.tv_usec;
list_add_tail(&e->base.link, &e->base.file_priv->event_list);
wake_up_interruptible(&e->base.file_priv->event_wait);
}
if (s->event)
drm_send_vblank_event(dev, -1, s->event);

list_del(&s->head);
if (ps)
Expand Down
13 changes: 3 additions & 10 deletions drivers/gpu/drm/radeon/radeon_display.c
Original file line number Diff line number Diff line change
Expand Up @@ -271,8 +271,6 @@ void radeon_crtc_handle_flip(struct radeon_device *rdev, int crtc_id)
{
struct radeon_crtc *radeon_crtc = rdev->mode_info.crtcs[crtc_id];
struct radeon_unpin_work *work;
struct drm_pending_vblank_event *e;
struct timeval now;
unsigned long flags;
u32 update_pending;
int vpos, hpos;
Expand Down Expand Up @@ -328,14 +326,9 @@ void radeon_crtc_handle_flip(struct radeon_device *rdev, int crtc_id)
radeon_crtc->unpin_work = NULL;

/* wakeup userspace */
if (work->event) {
e = work->event;
e->event.sequence = drm_vblank_count_and_time(rdev->ddev, crtc_id, &now);
e->event.tv_sec = now.tv_sec;
e->event.tv_usec = now.tv_usec;
list_add_tail(&e->base.link, &e->base.file_priv->event_list);
wake_up_interruptible(&e->base.file_priv->event_wait);
}
if (work->event)
drm_send_vblank_event(rdev->ddev, crtc_id, work->event);

spin_unlock_irqrestore(&rdev->ddev->event_lock, flags);

drm_vblank_put(rdev->ddev, radeon_crtc->crtc_id);
Expand Down
19 changes: 4 additions & 15 deletions drivers/gpu/drm/shmobile/shmob_drm_crtc.c
Original file line number Diff line number Diff line change
Expand Up @@ -451,27 +451,16 @@ void shmob_drm_crtc_finish_page_flip(struct shmob_drm_crtc *scrtc)
{
struct drm_pending_vblank_event *event;
struct drm_device *dev = scrtc->crtc.dev;
struct timeval vblanktime;
unsigned long flags;

spin_lock_irqsave(&dev->event_lock, flags);
event = scrtc->event;
scrtc->event = NULL;
if (event) {
drm_send_vblank_event(dev, 0, event);
drm_vblank_put(dev, 0);
}
spin_unlock_irqrestore(&dev->event_lock, flags);

if (event == NULL)
return;

event->event.sequence = drm_vblank_count_and_time(dev, 0, &vblanktime);
event->event.tv_sec = vblanktime.tv_sec;
event->event.tv_usec = vblanktime.tv_usec;

spin_lock_irqsave(&dev->event_lock, flags);
list_add_tail(&event->base.link, &event->base.file_priv->event_list);
wake_up_interruptible(&event->base.file_priv->event_wait);
spin_unlock_irqrestore(&dev->event_lock, flags);

drm_vblank_put(dev, 0);
}

static int shmob_drm_crtc_page_flip(struct drm_crtc *crtc,
Expand Down
21 changes: 2 additions & 19 deletions drivers/staging/imx-drm/ipuv3-crtc.c
Original file line number Diff line number Diff line change
Expand Up @@ -316,31 +316,14 @@ static int ipu_crtc_mode_set(struct drm_crtc *crtc,

static void ipu_crtc_handle_pageflip(struct ipu_crtc *ipu_crtc)
{
struct drm_pending_vblank_event *e;
struct timeval now;
unsigned long flags;
struct drm_device *drm = ipu_crtc->base.dev;

spin_lock_irqsave(&drm->event_lock, flags);

e = ipu_crtc->page_flip_event;
if (!e) {
spin_unlock_irqrestore(&drm->event_lock, flags);
return;
}

do_gettimeofday(&now);
e->event.sequence = 0;
e->event.tv_sec = now.tv_sec;
e->event.tv_usec = now.tv_usec;
if (ipu_crtc->page_flip_event)
drm_send_vblank_event(drm, -1, ipu_crtc->page_flip_event);
ipu_crtc->page_flip_event = NULL;

imx_drm_crtc_vblank_put(ipu_crtc->imx_crtc);

list_add_tail(&e->base.link, &e->base.file_priv->event_list);

wake_up_interruptible(&e->base.file_priv->event_wait);

spin_unlock_irqrestore(&drm->event_lock, flags);
}

Expand Down

0 comments on commit c313d56

Please sign in to comment.