Lines Matching refs:dev_priv

95 	drm_via_private_t *dev_priv = dev->dev_private;  in via_get_vblank_counter()  local
100 return atomic_read(&dev_priv->vbl_received); in via_get_vblank_counter()
106 drm_via_private_t *dev_priv = (drm_via_private_t *) dev->dev_private; in via_driver_irq_handler() local
110 drm_via_irq_t *cur_irq = dev_priv->via_irqs; in via_driver_irq_handler()
113 status = via_read(dev_priv, VIA_REG_INTERRUPT); in via_driver_irq_handler()
115 atomic_inc(&dev_priv->vbl_received); in via_driver_irq_handler()
116 if (!(atomic_read(&dev_priv->vbl_received) & 0x0F)) { in via_driver_irq_handler()
118 if (dev_priv->last_vblank_valid) { in via_driver_irq_handler()
119 dev_priv->nsec_per_vblank = in via_driver_irq_handler()
121 dev_priv->last_vblank) >> 4; in via_driver_irq_handler()
123 dev_priv->last_vblank = cur_vblank; in via_driver_irq_handler()
124 dev_priv->last_vblank_valid = 1; in via_driver_irq_handler()
126 if (!(atomic_read(&dev_priv->vbl_received) & 0xFF)) { in via_driver_irq_handler()
128 ktime_to_ns(dev_priv->nsec_per_vblank)); in via_driver_irq_handler()
134 for (i = 0; i < dev_priv->num_irqs; ++i) { in via_driver_irq_handler()
139 if (dev_priv->irq_map[drm_via_irq_dma0_td] == i) in via_driver_irq_handler()
141 else if (dev_priv->irq_map[drm_via_irq_dma1_td] == i) in via_driver_irq_handler()
148 via_write(dev_priv, VIA_REG_INTERRUPT, status); in via_driver_irq_handler()
157 static __inline__ void viadrv_acknowledge_irqs(drm_via_private_t *dev_priv) in viadrv_acknowledge_irqs() argument
161 if (dev_priv) { in viadrv_acknowledge_irqs()
163 status = via_read(dev_priv, VIA_REG_INTERRUPT); in viadrv_acknowledge_irqs()
164 via_write(dev_priv, VIA_REG_INTERRUPT, status | in viadrv_acknowledge_irqs()
165 dev_priv->irq_pending_mask); in viadrv_acknowledge_irqs()
171 drm_via_private_t *dev_priv = dev->dev_private; in via_enable_vblank() local
179 status = via_read(dev_priv, VIA_REG_INTERRUPT); in via_enable_vblank()
180 via_write(dev_priv, VIA_REG_INTERRUPT, status | VIA_IRQ_VBLANK_ENABLE); in via_enable_vblank()
182 via_write8(dev_priv, 0x83d4, 0x11); in via_enable_vblank()
183 via_write8_mask(dev_priv, 0x83d5, 0x30, 0x30); in via_enable_vblank()
190 drm_via_private_t *dev_priv = dev->dev_private; in via_disable_vblank() local
193 status = via_read(dev_priv, VIA_REG_INTERRUPT); in via_disable_vblank()
194 via_write(dev_priv, VIA_REG_INTERRUPT, status & ~VIA_IRQ_VBLANK_ENABLE); in via_disable_vblank()
196 via_write8(dev_priv, 0x83d4, 0x11); in via_disable_vblank()
197 via_write8_mask(dev_priv, 0x83d5, 0x30, 0); in via_disable_vblank()
207 drm_via_private_t *dev_priv = (drm_via_private_t *) dev->dev_private; in via_driver_irq_wait() local
216 if (!dev_priv) { in via_driver_irq_wait()
226 real_irq = dev_priv->irq_map[irq]; in via_driver_irq_wait()
234 masks = dev_priv->irq_masks; in via_driver_irq_wait()
235 cur_irq = dev_priv->via_irqs + real_irq; in via_driver_irq_wait()
239 ((via_read(dev_priv, masks[irq][2]) & masks[irq][3]) == in via_driver_irq_wait()
259 drm_via_private_t *dev_priv = (drm_via_private_t *) dev->dev_private; in via_driver_irq_preinstall() local
264 DRM_DEBUG("dev_priv: %p\n", dev_priv); in via_driver_irq_preinstall()
265 if (dev_priv) { in via_driver_irq_preinstall()
266 cur_irq = dev_priv->via_irqs; in via_driver_irq_preinstall()
268 dev_priv->irq_enable_mask = VIA_IRQ_VBLANK_ENABLE; in via_driver_irq_preinstall()
269 dev_priv->irq_pending_mask = VIA_IRQ_VBLANK_PENDING; in via_driver_irq_preinstall()
271 if (dev_priv->chipset == VIA_PRO_GROUP_A || in via_driver_irq_preinstall()
272 dev_priv->chipset == VIA_DX9_0) { in via_driver_irq_preinstall()
273 dev_priv->irq_masks = via_pro_group_a_irqs; in via_driver_irq_preinstall()
274 dev_priv->num_irqs = via_num_pro_group_a; in via_driver_irq_preinstall()
275 dev_priv->irq_map = via_irqmap_pro_group_a; in via_driver_irq_preinstall()
277 dev_priv->irq_masks = via_unichrome_irqs; in via_driver_irq_preinstall()
278 dev_priv->num_irqs = via_num_unichrome; in via_driver_irq_preinstall()
279 dev_priv->irq_map = via_irqmap_unichrome; in via_driver_irq_preinstall()
282 for (i = 0; i < dev_priv->num_irqs; ++i) { in via_driver_irq_preinstall()
284 cur_irq->enable_mask = dev_priv->irq_masks[i][0]; in via_driver_irq_preinstall()
285 cur_irq->pending_mask = dev_priv->irq_masks[i][1]; in via_driver_irq_preinstall()
287 dev_priv->irq_enable_mask |= cur_irq->enable_mask; in via_driver_irq_preinstall()
288 dev_priv->irq_pending_mask |= cur_irq->pending_mask; in via_driver_irq_preinstall()
294 dev_priv->last_vblank_valid = 0; in via_driver_irq_preinstall()
297 status = via_read(dev_priv, VIA_REG_INTERRUPT); in via_driver_irq_preinstall()
298 via_write(dev_priv, VIA_REG_INTERRUPT, status & in via_driver_irq_preinstall()
299 ~(dev_priv->irq_enable_mask)); in via_driver_irq_preinstall()
302 viadrv_acknowledge_irqs(dev_priv); in via_driver_irq_preinstall()
308 drm_via_private_t *dev_priv = (drm_via_private_t *) dev->dev_private; in via_driver_irq_postinstall() local
312 if (!dev_priv) in via_driver_irq_postinstall()
315 status = via_read(dev_priv, VIA_REG_INTERRUPT); in via_driver_irq_postinstall()
316 via_write(dev_priv, VIA_REG_INTERRUPT, status | VIA_IRQ_GLOBAL in via_driver_irq_postinstall()
317 | dev_priv->irq_enable_mask); in via_driver_irq_postinstall()
320 via_write8(dev_priv, 0x83d4, 0x11); in via_driver_irq_postinstall()
321 via_write8_mask(dev_priv, 0x83d5, 0x30, 0x30); in via_driver_irq_postinstall()
328 drm_via_private_t *dev_priv = (drm_via_private_t *) dev->dev_private; in via_driver_irq_uninstall() local
332 if (dev_priv) { in via_driver_irq_uninstall()
336 via_write8(dev_priv, 0x83d4, 0x11); in via_driver_irq_uninstall()
337 via_write8_mask(dev_priv, 0x83d5, 0x30, 0); in via_driver_irq_uninstall()
339 status = via_read(dev_priv, VIA_REG_INTERRUPT); in via_driver_irq_uninstall()
340 via_write(dev_priv, VIA_REG_INTERRUPT, status & in via_driver_irq_uninstall()
341 ~(VIA_IRQ_VBLANK_ENABLE | dev_priv->irq_enable_mask)); in via_driver_irq_uninstall()
350 drm_via_private_t *dev_priv = (drm_via_private_t *) dev->dev_private; in via_wait_irq() local
351 drm_via_irq_t *cur_irq = dev_priv->via_irqs; in via_wait_irq()
354 if (irqwait->request.irq >= dev_priv->num_irqs) { in via_wait_irq()