Lines Matching refs:dev_priv

89 	drm_r128_private_t *dev_priv = dev->dev_private;  in R128_READ_PLL()  local
96 static void r128_status(drm_r128_private_t * dev_priv) in r128_status() argument
117 static int r128_do_pixcache_flush(drm_r128_private_t * dev_priv) in r128_do_pixcache_flush() argument
125 for (i = 0; i < dev_priv->usec_timeout; i++) { in r128_do_pixcache_flush()
138 static int r128_do_wait_for_fifo(drm_r128_private_t * dev_priv, int entries) in r128_do_wait_for_fifo() argument
142 for (i = 0; i < dev_priv->usec_timeout; i++) { in r128_do_wait_for_fifo()
155 static int r128_do_wait_for_idle(drm_r128_private_t * dev_priv) in r128_do_wait_for_idle() argument
159 ret = r128_do_wait_for_fifo(dev_priv, 64); in r128_do_wait_for_idle()
163 for (i = 0; i < dev_priv->usec_timeout; i++) { in r128_do_wait_for_idle()
165 r128_do_pixcache_flush(dev_priv); in r128_do_wait_for_idle()
182 static void r128_cce_load_microcode(drm_r128_private_t * dev_priv) in r128_cce_load_microcode() argument
188 r128_do_wait_for_idle(dev_priv); in r128_cce_load_microcode()
202 static void r128_do_cce_flush(drm_r128_private_t * dev_priv) in r128_do_cce_flush() argument
212 int r128_do_cce_idle(drm_r128_private_t * dev_priv) in r128_do_cce_idle() argument
216 for (i = 0; i < dev_priv->usec_timeout; i++) { in r128_do_cce_idle()
217 if (GET_RING_HEAD(dev_priv) == dev_priv->ring.tail) { in r128_do_cce_idle()
220 dev_priv->cce_fifo_size) && in r128_do_cce_idle()
223 return r128_do_pixcache_flush(dev_priv); in r128_do_cce_idle()
231 r128_status(dev_priv); in r128_do_cce_idle()
238 static void r128_do_cce_start(drm_r128_private_t * dev_priv) in r128_do_cce_start() argument
240 r128_do_wait_for_idle(dev_priv); in r128_do_cce_start()
243 dev_priv->cce_mode | dev_priv->ring.size_l2qw in r128_do_cce_start()
248 dev_priv->cce_running = 1; in r128_do_cce_start()
255 static void r128_do_cce_reset(drm_r128_private_t * dev_priv) in r128_do_cce_reset() argument
259 dev_priv->ring.tail = 0; in r128_do_cce_reset()
266 static void r128_do_cce_stop(drm_r128_private_t * dev_priv) in r128_do_cce_stop() argument
272 dev_priv->cce_running = 0; in r128_do_cce_stop()
279 drm_r128_private_t *dev_priv = dev->dev_private; in r128_do_engine_reset() local
282 r128_do_pixcache_flush(dev_priv); in r128_do_engine_reset()
303 r128_do_cce_reset(dev_priv); in r128_do_engine_reset()
306 dev_priv->cce_running = 0; in r128_do_engine_reset()
315 drm_r128_private_t * dev_priv) in r128_cce_init_ring_buffer() argument
326 if (!dev_priv->is_pci) in r128_cce_init_ring_buffer()
327 ring_start = dev_priv->cce_ring->offset - dev->agp->base; in r128_cce_init_ring_buffer()
330 ring_start = dev_priv->cce_ring->offset - dev->sg->vaddr; in r128_cce_init_ring_buffer()
354 drm_r128_private_t *dev_priv; in r128_do_init_cce() local
358 dev_priv = drm_alloc(sizeof(drm_r128_private_t), DRM_MEM_DRIVER); in r128_do_init_cce()
359 if (dev_priv == NULL) in r128_do_init_cce()
362 memset(dev_priv, 0, sizeof(drm_r128_private_t)); in r128_do_init_cce()
364 dev_priv->is_pci = init->is_pci; in r128_do_init_cce()
366 if (dev_priv->is_pci && !dev->sg) { in r128_do_init_cce()
368 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
373 dev_priv->usec_timeout = init->usec_timeout; in r128_do_init_cce()
374 if (dev_priv->usec_timeout < 1 || in r128_do_init_cce()
375 dev_priv->usec_timeout > R128_MAX_USEC_TIMEOUT) { in r128_do_init_cce()
377 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
382 dev_priv->cce_mode = init->cce_mode; in r128_do_init_cce()
386 atomic_set(&dev_priv->idle_count, 0); in r128_do_init_cce()
397 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
404 dev_priv->cce_fifo_size = 0; in r128_do_init_cce()
408 dev_priv->cce_fifo_size = 192; in r128_do_init_cce()
412 dev_priv->cce_fifo_size = 128; in r128_do_init_cce()
419 dev_priv->cce_fifo_size = 64; in r128_do_init_cce()
425 dev_priv->color_fmt = R128_DATATYPE_RGB565; in r128_do_init_cce()
429 dev_priv->color_fmt = R128_DATATYPE_ARGB8888; in r128_do_init_cce()
432 dev_priv->front_offset = init->front_offset; in r128_do_init_cce()
433 dev_priv->front_pitch = init->front_pitch; in r128_do_init_cce()
434 dev_priv->back_offset = init->back_offset; in r128_do_init_cce()
435 dev_priv->back_pitch = init->back_pitch; in r128_do_init_cce()
439 dev_priv->depth_fmt = R128_DATATYPE_RGB565; in r128_do_init_cce()
444 dev_priv->depth_fmt = R128_DATATYPE_ARGB8888; in r128_do_init_cce()
447 dev_priv->depth_offset = init->depth_offset; in r128_do_init_cce()
448 dev_priv->depth_pitch = init->depth_pitch; in r128_do_init_cce()
449 dev_priv->span_offset = init->span_offset; in r128_do_init_cce()
451 dev_priv->front_pitch_offset_c = (((dev_priv->front_pitch / 8) << 21) | in r128_do_init_cce()
452 (dev_priv->front_offset >> 5)); in r128_do_init_cce()
453 dev_priv->back_pitch_offset_c = (((dev_priv->back_pitch / 8) << 21) | in r128_do_init_cce()
454 (dev_priv->back_offset >> 5)); in r128_do_init_cce()
455 dev_priv->depth_pitch_offset_c = (((dev_priv->depth_pitch / 8) << 21) | in r128_do_init_cce()
456 (dev_priv->depth_offset >> 5) | in r128_do_init_cce()
458 dev_priv->span_pitch_offset_c = (((dev_priv->depth_pitch / 8) << 21) | in r128_do_init_cce()
459 (dev_priv->span_offset >> 5)); in r128_do_init_cce()
461 dev_priv->sarea = drm_getsarea(dev); in r128_do_init_cce()
462 if (!dev_priv->sarea) { in r128_do_init_cce()
464 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
469 dev_priv->mmio = drm_core_findmap(dev, init->mmio_offset); in r128_do_init_cce()
470 if (!dev_priv->mmio) { in r128_do_init_cce()
472 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
476 dev_priv->cce_ring = drm_core_findmap(dev, init->ring_offset); in r128_do_init_cce()
477 if (!dev_priv->cce_ring) { in r128_do_init_cce()
479 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
483 dev_priv->ring_rptr = drm_core_findmap(dev, init->ring_rptr_offset); in r128_do_init_cce()
484 if (!dev_priv->ring_rptr) { in r128_do_init_cce()
486 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
494 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
499 if (!dev_priv->is_pci) { in r128_do_init_cce()
500 dev_priv->agp_textures = in r128_do_init_cce()
502 if (!dev_priv->agp_textures) { in r128_do_init_cce()
504 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
510 dev_priv->sarea_priv = in r128_do_init_cce()
511 (drm_r128_sarea_t *) ((u8 *) dev_priv->sarea->virtual + in r128_do_init_cce()
515 if (!dev_priv->is_pci) { in r128_do_init_cce()
516 drm_core_ioremap(dev_priv->cce_ring, dev); in r128_do_init_cce()
517 drm_core_ioremap(dev_priv->ring_rptr, dev); in r128_do_init_cce()
519 if (!dev_priv->cce_ring->virtual || in r128_do_init_cce()
520 !dev_priv->ring_rptr->virtual || in r128_do_init_cce()
523 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
530 dev_priv->cce_ring->virtual = in r128_do_init_cce()
531 (void *)dev_priv->cce_ring->offset; in r128_do_init_cce()
532 dev_priv->ring_rptr->virtual = in r128_do_init_cce()
533 (void *)dev_priv->ring_rptr->offset; in r128_do_init_cce()
539 if (!dev_priv->is_pci) in r128_do_init_cce()
540 dev_priv->cce_buffers_offset = dev->agp->base; in r128_do_init_cce()
543 dev_priv->cce_buffers_offset = dev->sg->vaddr; in r128_do_init_cce()
545 dev_priv->ring.start = (u32 *) dev_priv->cce_ring->virtual; in r128_do_init_cce()
546 dev_priv->ring.end = ((u32 *) dev_priv->cce_ring->virtual in r128_do_init_cce()
548 dev_priv->ring.size = init->ring_size; in r128_do_init_cce()
549 dev_priv->ring.size_l2qw = drm_order(init->ring_size / 8); in r128_do_init_cce()
551 dev_priv->ring.tail_mask = (dev_priv->ring.size / sizeof(u32)) - 1; in r128_do_init_cce()
553 dev_priv->ring.high_mark = 128; in r128_do_init_cce()
555 dev_priv->sarea_priv->last_frame = 0; in r128_do_init_cce()
556 R128_WRITE(R128_LAST_FRAME_REG, dev_priv->sarea_priv->last_frame); in r128_do_init_cce()
558 dev_priv->sarea_priv->last_dispatch = 0; in r128_do_init_cce()
559 R128_WRITE(R128_LAST_DISPATCH_REG, dev_priv->sarea_priv->last_dispatch); in r128_do_init_cce()
562 if (dev_priv->is_pci) { in r128_do_init_cce()
564 dev_priv->gart_info.table_mask = DMA_BIT_MASK(32); in r128_do_init_cce()
565 dev_priv->gart_info.gart_table_location = DRM_ATI_GART_MAIN; in r128_do_init_cce()
566 dev_priv->gart_info.table_size = R128_PCIGART_TABLE_SIZE; in r128_do_init_cce()
567 dev_priv->gart_info.addr = NULL; in r128_do_init_cce()
568 dev_priv->gart_info.bus_addr = 0; in r128_do_init_cce()
569 dev_priv->gart_info.gart_reg_if = DRM_ATI_GART_PCI; in r128_do_init_cce()
570 if (!drm_ati_pcigart_init(dev, &dev_priv->gart_info)) { in r128_do_init_cce()
572 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
576 R128_WRITE(R128_PCI_GART_PAGE, dev_priv->gart_info.bus_addr); in r128_do_init_cce()
581 r128_cce_init_ring_buffer(dev, dev_priv); in r128_do_init_cce()
582 r128_cce_load_microcode(dev_priv); in r128_do_init_cce()
584 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
602 drm_r128_private_t *dev_priv = dev->dev_private; in r128_do_cleanup_cce() local
605 if (!dev_priv->is_pci) { in r128_do_cleanup_cce()
606 if (dev_priv->cce_ring != NULL) in r128_do_cleanup_cce()
607 drm_core_ioremapfree(dev_priv->cce_ring, dev); in r128_do_cleanup_cce()
608 if (dev_priv->ring_rptr != NULL) in r128_do_cleanup_cce()
609 drm_core_ioremapfree(dev_priv->ring_rptr, dev); in r128_do_cleanup_cce()
617 if (dev_priv->gart_info.bus_addr) in r128_do_cleanup_cce()
618 if (!drm_ati_pcigart_cleanup(dev, &dev_priv->gart_info)) in r128_do_cleanup_cce()
650 drm_r128_private_t *dev_priv = dev->dev_private; in r128_cce_start() local
655 if (dev_priv->cce_running || dev_priv->cce_mode == R128_PM4_NONPM4) { in r128_cce_start()
660 r128_do_cce_start(dev_priv); in r128_cce_start()
670 drm_r128_private_t *dev_priv = dev->dev_private; in r128_cce_stop() local
681 r128_do_cce_flush(dev_priv); in r128_cce_stop()
688 ret = r128_do_cce_idle(dev_priv); in r128_cce_stop()
697 r128_do_cce_stop(dev_priv); in r128_cce_stop()
709 drm_r128_private_t *dev_priv = dev->dev_private; in r128_cce_reset() local
714 if (!dev_priv) { in r128_cce_reset()
719 r128_do_cce_reset(dev_priv); in r128_cce_reset()
722 dev_priv->cce_running = 0; in r128_cce_reset()
729 drm_r128_private_t *dev_priv = dev->dev_private; in r128_cce_idle() local
734 if (dev_priv->cce_running) { in r128_cce_idle()
735 r128_do_cce_flush(dev_priv); in r128_cce_idle()
738 return r128_do_cce_idle(dev_priv); in r128_cce_idle()
765 drm_r128_private_t *dev_priv = dev->dev_private;
771 dev_priv->head = drm_alloc(sizeof(drm_r128_freelist_t), DRM_MEM_DRIVER);
772 if (dev_priv->head == NULL)
775 memset(dev_priv->head, 0, sizeof(drm_r128_freelist_t));
776 dev_priv->head->age = R128_BUFFER_USED;
788 entry->prev = dev_priv->head;
789 entry->next = dev_priv->head->next;
791 dev_priv->tail = entry;
797 dev_priv->head->next = entry;
799 if (dev_priv->head->next)
800 dev_priv->head->next->prev = entry;
811 drm_r128_private_t *dev_priv = dev->dev_private; in r128_freelist_get() local
825 for (t = 0; t < dev_priv->usec_timeout; t++) { in r128_freelist_get()
862 int r128_wait_ring(drm_r128_private_t * dev_priv, int n) in r128_wait_ring() argument
864 drm_r128_ring_buffer_t *ring = &dev_priv->ring; in r128_wait_ring()
867 for (i = 0; i < dev_priv->usec_timeout; i++) { in r128_wait_ring()
868 r128_update_ring_snapshot(dev_priv); in r128_wait_ring()