From 8c21b783c3e38aa2c2d16e11ec01cf695f8e7f8a Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Mon, 15 Aug 2005 18:07:12 +0000 Subject: Port the VIA DRM to FreeBSD. Original patch by Jake, with some cleanup by me to match other drivers and avoid ifdeffing. The linux via_drv.c will be moved from shared-core to linux-core soon by repocopy. Submitted by: Jake Burkholder Tested by: unichrome --- shared-core/via_irq.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'shared-core/via_irq.c') diff --git a/shared-core/via_irq.c b/shared-core/via_irq.c index e8027f3a..f87b2f2c 100644 --- a/shared-core/via_irq.c +++ b/shared-core/via_irq.c @@ -87,7 +87,11 @@ irqreturn_t via_driver_irq_handler(DRM_IRQ_ARGS) if (status & VIA_IRQ_VBLANK_PENDING) { atomic_inc(&dev->vbl_received); if (!(atomic_read(&dev->vbl_received) & 0x0F)) { +#ifdef __linux__ do_gettimeofday(&cur_vblank); +#else + microtime(&cur_vblank); +#endif if (dev_priv->last_vblank_valid) { dev_priv->usec_per_vblank = time_diff( &cur_vblank,&dev_priv->last_vblank) >> 4; @@ -237,7 +241,7 @@ void via_driver_irq_preinstall(drm_device_t * dev) dev_priv->last_vblank_valid = 0; - // Clear VSync interrupt regs + /* Clear VSync interrupt regs */ status = VIA_READ(VIA_REG_INTERRUPT); VIA_WRITE(VIA_REG_INTERRUPT, status & ~(dev_priv->irq_enable_mask)); @@ -287,8 +291,7 @@ void via_driver_irq_uninstall(drm_device_t * dev) int via_wait_irq(DRM_IOCTL_ARGS) { - drm_file_t *priv = filp->private_data; - drm_device_t *dev = priv->head->dev; + DRM_DEVICE; drm_via_irqwait_t __user *argp = (void __user *)data; drm_via_irqwait_t irqwait; struct timeval now; @@ -329,7 +332,11 @@ int via_wait_irq(DRM_IOCTL_ARGS) ret = via_driver_irq_wait(dev, irqwait.request.irq, force_sequence, &irqwait.request.sequence); +#ifdef __linux__ do_gettimeofday(&now); +#else + microtime(&now); +#endif irqwait.reply.tval_sec = now.tv_sec; irqwait.reply.tval_usec = now.tv_usec; -- cgit v1.2.3