summaryrefslogtreecommitdiffstats
path: root/sys/dev/pci/drm/i915_irq.c
diff options
context:
space:
mode:
authoroga <oga@openbsd.org>2009-04-03 11:31:36 +0000
committeroga <oga@openbsd.org>2009-04-03 11:31:36 +0000
commit7434f19cfe22da47bc22b8770ea1c524b8deae8c (patch)
tree4673d264e0240552f82ef27dbdceb64ece7eed23 /sys/dev/pci/drm/i915_irq.c
parentMake sure that sys_reboot runs on the primary cpu. Won't hurt when not (diff)
downloadwireguard-openbsd-7434f19cfe22da47bc22b8770ea1c524b8deae8c.tar.xz
wireguard-openbsd-7434f19cfe22da47bc22b8770ea1c524b8deae8c.zip
Convert DRM_WAIT_ON to take additional parameters, the wmsg for msleep,
and the lock to manipulate. first step of removing drm_irq_handler_wrap which just grabs the irq_lock, and eventually irq_lock. drivers should manage their own.
Diffstat (limited to 'sys/dev/pci/drm/i915_irq.c')
-rw-r--r--sys/dev/pci/drm/i915_irq.c36
1 files changed, 18 insertions, 18 deletions
diff --git a/sys/dev/pci/drm/i915_irq.c b/sys/dev/pci/drm/i915_irq.c
index 71bc282cbd0..6aa8541d9f0 100644
--- a/sys/dev/pci/drm/i915_irq.c
+++ b/sys/dev/pci/drm/i915_irq.c
@@ -159,13 +159,13 @@ i915_pipe_enabled(struct drm_device *dev, int pipe)
return 0;
}
-u32 i915_get_vblank_counter(struct drm_device *dev, int plane)
+u_int32_t
+i915_get_vblank_counter(struct drm_device *dev, int plane)
{
- drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
- unsigned long high_frame;
- unsigned long low_frame;
- u32 high1, high2, low, count;
- int pipe;
+ drm_i915_private_t *dev_priv = dev->dev_private;
+ bus_size_t high_frame, low_frame;
+ u_int32_t high1, high2, low;
+ int pipe;
pipe = i915_get_pipe(dev, plane);
high_frame = pipe ? PIPEBFRAMEHIGH : PIPEAFRAMEHIGH;
@@ -174,7 +174,7 @@ u32 i915_get_vblank_counter(struct drm_device *dev, int plane)
if (!i915_pipe_enabled(dev, pipe)) {
DRM_DEBUG("trying to get vblank count for disabled pipe %d\n",
pipe);
- return 0;
+ return (0);
}
/*
@@ -191,12 +191,11 @@ u32 i915_get_vblank_counter(struct drm_device *dev, int plane)
PIPE_FRAME_HIGH_SHIFT);
} while (high1 != high2);
- count = (high1 << 8) | low;
-
- return count;
+ return ((high1 << 8) | low);
}
-irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS)
+irqreturn_t
+i915_driver_irq_handler(DRM_IRQ_ARGS)
{
struct drm_device *dev = (struct drm_device *)arg;
drm_i915_private_t *dev_priv = (drm_i915_private_t *)dev->dev_private;
@@ -281,10 +280,11 @@ void i915_user_irq_put(struct drm_device *dev)
}
-int i915_wait_irq(struct drm_device * dev, int irq_nr)
+int
+i915_wait_irq(struct drm_device *dev, int irq_nr)
{
- drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private;
- int ret = 0;
+ drm_i915_private_t *dev_priv = dev->dev_private;
+ int ret = 0;
DRM_DEBUG("irq_nr=%d breadcrumb=%d\n", irq_nr,
READ_BREADCRUMB(dev_priv));
@@ -294,12 +294,12 @@ int i915_wait_irq(struct drm_device * dev, int irq_nr)
dev_priv->sarea_priv->last_dispatch =
READ_BREADCRUMB(dev_priv);
}
- return 0;
+ return (0);
}
i915_user_irq_get(dev);
- DRM_WAIT_ON(ret, dev_priv, 3 * DRM_HZ,
- READ_BREADCRUMB(dev_priv) >= irq_nr);
+ DRM_WAIT_ON(ret, dev_priv, &dev->irq_lock, 3 * hz, "i915wt",
+ READ_BREADCRUMB(dev_priv) >= irq_nr);
i915_user_irq_put(dev);
if (ret == EBUSY) {
@@ -309,7 +309,7 @@ int i915_wait_irq(struct drm_device * dev, int irq_nr)
if (dev_priv->sarea_priv != NULL)
dev_priv->sarea_priv->last_dispatch = READ_BREADCRUMB(dev_priv);
- return ret;
+ return (ret);
}
/* Needs the lock as it touches the ring.