Lines Matching refs:dev_priv
57 drm_r128_private_t *dev_priv = dev->dev_private; in R128_READ_PLL() local
64 static void r128_status(drm_r128_private_t *dev_priv) in r128_status() argument
85 static int r128_do_pixcache_flush(drm_r128_private_t *dev_priv) in r128_do_pixcache_flush() argument
93 for (i = 0; i < dev_priv->usec_timeout; i++) { in r128_do_pixcache_flush()
105 static int r128_do_wait_for_fifo(drm_r128_private_t *dev_priv, int entries) in r128_do_wait_for_fifo() argument
109 for (i = 0; i < dev_priv->usec_timeout; i++) { in r128_do_wait_for_fifo()
122 static int r128_do_wait_for_idle(drm_r128_private_t *dev_priv) in r128_do_wait_for_idle() argument
126 ret = r128_do_wait_for_fifo(dev_priv, 64); in r128_do_wait_for_idle()
130 for (i = 0; i < dev_priv->usec_timeout; i++) { in r128_do_wait_for_idle()
132 r128_do_pixcache_flush(dev_priv); in r128_do_wait_for_idle()
149 static int r128_cce_load_microcode(drm_r128_private_t *dev_priv) in r128_cce_load_microcode() argument
178 r128_do_wait_for_idle(dev_priv); in r128_cce_load_microcode()
198 static void r128_do_cce_flush(drm_r128_private_t *dev_priv) in r128_do_cce_flush() argument
208 int r128_do_cce_idle(drm_r128_private_t *dev_priv) in r128_do_cce_idle() argument
212 for (i = 0; i < dev_priv->usec_timeout; i++) { in r128_do_cce_idle()
213 if (GET_RING_HEAD(dev_priv) == dev_priv->ring.tail) { in r128_do_cce_idle()
216 dev_priv->cce_fifo_size) && in r128_do_cce_idle()
219 return r128_do_pixcache_flush(dev_priv); in r128_do_cce_idle()
227 r128_status(dev_priv); in r128_do_cce_idle()
234 static void r128_do_cce_start(drm_r128_private_t *dev_priv) in r128_do_cce_start() argument
236 r128_do_wait_for_idle(dev_priv); in r128_do_cce_start()
239 dev_priv->cce_mode | dev_priv->ring.size_l2qw in r128_do_cce_start()
244 dev_priv->cce_running = 1; in r128_do_cce_start()
251 static void r128_do_cce_reset(drm_r128_private_t *dev_priv) in r128_do_cce_reset() argument
255 dev_priv->ring.tail = 0; in r128_do_cce_reset()
262 static void r128_do_cce_stop(drm_r128_private_t *dev_priv) in r128_do_cce_stop() argument
268 dev_priv->cce_running = 0; in r128_do_cce_stop()
275 drm_r128_private_t *dev_priv = dev->dev_private; in r128_do_engine_reset() local
278 r128_do_pixcache_flush(dev_priv); in r128_do_engine_reset()
299 r128_do_cce_reset(dev_priv); in r128_do_engine_reset()
302 dev_priv->cce_running = 0; in r128_do_engine_reset()
311 drm_r128_private_t *dev_priv) in r128_cce_init_ring_buffer() argument
322 if (!dev_priv->is_pci) in r128_cce_init_ring_buffer()
323 ring_start = dev_priv->cce_ring->offset - dev->agp->base; in r128_cce_init_ring_buffer()
326 ring_start = dev_priv->cce_ring->offset - in r128_cce_init_ring_buffer()
351 drm_r128_private_t *dev_priv; in r128_do_init_cce() local
361 dev_priv = kzalloc(sizeof(drm_r128_private_t), GFP_KERNEL); in r128_do_init_cce()
362 if (dev_priv == NULL) in r128_do_init_cce()
365 dev_priv->is_pci = init->is_pci; in r128_do_init_cce()
367 if (dev_priv->is_pci && !dev->sg) { in r128_do_init_cce()
369 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
374 dev_priv->usec_timeout = init->usec_timeout; in r128_do_init_cce()
375 if (dev_priv->usec_timeout < 1 || in r128_do_init_cce()
376 dev_priv->usec_timeout > R128_MAX_USEC_TIMEOUT) { in r128_do_init_cce()
378 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
383 dev_priv->cce_mode = init->cce_mode; in r128_do_init_cce()
387 atomic_set(&dev_priv->idle_count, 0); in r128_do_init_cce()
398 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
405 dev_priv->cce_fifo_size = 0; in r128_do_init_cce()
409 dev_priv->cce_fifo_size = 192; in r128_do_init_cce()
413 dev_priv->cce_fifo_size = 128; in r128_do_init_cce()
420 dev_priv->cce_fifo_size = 64; in r128_do_init_cce()
426 dev_priv->color_fmt = R128_DATATYPE_RGB565; in r128_do_init_cce()
430 dev_priv->color_fmt = R128_DATATYPE_ARGB8888; in r128_do_init_cce()
433 dev_priv->front_offset = init->front_offset; in r128_do_init_cce()
434 dev_priv->front_pitch = init->front_pitch; in r128_do_init_cce()
435 dev_priv->back_offset = init->back_offset; in r128_do_init_cce()
436 dev_priv->back_pitch = init->back_pitch; in r128_do_init_cce()
440 dev_priv->depth_fmt = R128_DATATYPE_RGB565; in r128_do_init_cce()
445 dev_priv->depth_fmt = R128_DATATYPE_ARGB8888; in r128_do_init_cce()
448 dev_priv->depth_offset = init->depth_offset; in r128_do_init_cce()
449 dev_priv->depth_pitch = init->depth_pitch; in r128_do_init_cce()
450 dev_priv->span_offset = init->span_offset; in r128_do_init_cce()
452 dev_priv->front_pitch_offset_c = (((dev_priv->front_pitch / 8) << 21) | in r128_do_init_cce()
453 (dev_priv->front_offset >> 5)); in r128_do_init_cce()
454 dev_priv->back_pitch_offset_c = (((dev_priv->back_pitch / 8) << 21) | in r128_do_init_cce()
455 (dev_priv->back_offset >> 5)); in r128_do_init_cce()
456 dev_priv->depth_pitch_offset_c = (((dev_priv->depth_pitch / 8) << 21) | in r128_do_init_cce()
457 (dev_priv->depth_offset >> 5) | in r128_do_init_cce()
459 dev_priv->span_pitch_offset_c = (((dev_priv->depth_pitch / 8) << 21) | in r128_do_init_cce()
460 (dev_priv->span_offset >> 5)); in r128_do_init_cce()
462 dev_priv->sarea = drm_legacy_getsarea(dev); in r128_do_init_cce()
463 if (!dev_priv->sarea) { in r128_do_init_cce()
465 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
470 dev_priv->mmio = drm_legacy_findmap(dev, init->mmio_offset); in r128_do_init_cce()
471 if (!dev_priv->mmio) { in r128_do_init_cce()
473 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
477 dev_priv->cce_ring = drm_legacy_findmap(dev, init->ring_offset); in r128_do_init_cce()
478 if (!dev_priv->cce_ring) { in r128_do_init_cce()
480 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
484 dev_priv->ring_rptr = drm_legacy_findmap(dev, init->ring_rptr_offset); in r128_do_init_cce()
485 if (!dev_priv->ring_rptr) { in r128_do_init_cce()
487 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
495 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
500 if (!dev_priv->is_pci) { in r128_do_init_cce()
501 dev_priv->agp_textures = in r128_do_init_cce()
503 if (!dev_priv->agp_textures) { in r128_do_init_cce()
505 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
511 dev_priv->sarea_priv = in r128_do_init_cce()
512 (drm_r128_sarea_t *) ((u8 *) dev_priv->sarea->handle + in r128_do_init_cce()
516 if (!dev_priv->is_pci) { in r128_do_init_cce()
517 drm_legacy_ioremap_wc(dev_priv->cce_ring, dev); in r128_do_init_cce()
518 drm_legacy_ioremap_wc(dev_priv->ring_rptr, dev); in r128_do_init_cce()
520 if (!dev_priv->cce_ring->handle || in r128_do_init_cce()
521 !dev_priv->ring_rptr->handle || in r128_do_init_cce()
524 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
531 dev_priv->cce_ring->handle = in r128_do_init_cce()
532 (void *)(unsigned long)dev_priv->cce_ring->offset; in r128_do_init_cce()
533 dev_priv->ring_rptr->handle = in r128_do_init_cce()
534 (void *)(unsigned long)dev_priv->ring_rptr->offset; in r128_do_init_cce()
540 if (!dev_priv->is_pci) in r128_do_init_cce()
541 dev_priv->cce_buffers_offset = dev->agp->base; in r128_do_init_cce()
544 dev_priv->cce_buffers_offset = (unsigned long)dev->sg->virtual; in r128_do_init_cce()
546 dev_priv->ring.start = (u32 *) dev_priv->cce_ring->handle; in r128_do_init_cce()
547 dev_priv->ring.end = ((u32 *) dev_priv->cce_ring->handle in r128_do_init_cce()
549 dev_priv->ring.size = init->ring_size; in r128_do_init_cce()
550 dev_priv->ring.size_l2qw = order_base_2(init->ring_size / 8); in r128_do_init_cce()
552 dev_priv->ring.tail_mask = (dev_priv->ring.size / sizeof(u32)) - 1; in r128_do_init_cce()
554 dev_priv->ring.high_mark = 128; in r128_do_init_cce()
556 dev_priv->sarea_priv->last_frame = 0; in r128_do_init_cce()
557 R128_WRITE(R128_LAST_FRAME_REG, dev_priv->sarea_priv->last_frame); in r128_do_init_cce()
559 dev_priv->sarea_priv->last_dispatch = 0; in r128_do_init_cce()
560 R128_WRITE(R128_LAST_DISPATCH_REG, dev_priv->sarea_priv->last_dispatch); in r128_do_init_cce()
563 if (dev_priv->is_pci) { in r128_do_init_cce()
565 dev_priv->gart_info.table_mask = DMA_BIT_MASK(32); in r128_do_init_cce()
566 dev_priv->gart_info.gart_table_location = DRM_ATI_GART_MAIN; in r128_do_init_cce()
567 dev_priv->gart_info.table_size = R128_PCIGART_TABLE_SIZE; in r128_do_init_cce()
568 dev_priv->gart_info.addr = NULL; in r128_do_init_cce()
569 dev_priv->gart_info.bus_addr = 0; in r128_do_init_cce()
570 dev_priv->gart_info.gart_reg_if = DRM_ATI_GART_PCI; in r128_do_init_cce()
571 rc = drm_ati_pcigart_init(dev, &dev_priv->gart_info); in r128_do_init_cce()
574 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
578 R128_WRITE(R128_PCI_GART_PAGE, dev_priv->gart_info.bus_addr); in r128_do_init_cce()
583 r128_cce_init_ring_buffer(dev, dev_priv); in r128_do_init_cce()
584 rc = r128_cce_load_microcode(dev_priv); in r128_do_init_cce()
586 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
609 drm_r128_private_t *dev_priv = dev->dev_private; in r128_do_cleanup_cce() local
612 if (!dev_priv->is_pci) { in r128_do_cleanup_cce()
613 if (dev_priv->cce_ring != NULL) in r128_do_cleanup_cce()
614 drm_legacy_ioremapfree(dev_priv->cce_ring, dev); in r128_do_cleanup_cce()
615 if (dev_priv->ring_rptr != NULL) in r128_do_cleanup_cce()
616 drm_legacy_ioremapfree(dev_priv->ring_rptr, dev); in r128_do_cleanup_cce()
624 if (dev_priv->gart_info.bus_addr) in r128_do_cleanup_cce()
626 &dev_priv->gart_info)) in r128_do_cleanup_cce()
658 drm_r128_private_t *dev_priv = dev->dev_private; in r128_cce_start() local
663 DEV_INIT_TEST_WITH_RETURN(dev_priv); in r128_cce_start()
665 if (dev_priv->cce_running || dev_priv->cce_mode == R128_PM4_NONPM4) { in r128_cce_start()
670 r128_do_cce_start(dev_priv); in r128_cce_start()
680 drm_r128_private_t *dev_priv = dev->dev_private; in r128_cce_stop() local
687 DEV_INIT_TEST_WITH_RETURN(dev_priv); in r128_cce_stop()
693 r128_do_cce_flush(dev_priv); in r128_cce_stop()
699 ret = r128_do_cce_idle(dev_priv); in r128_cce_stop()
708 r128_do_cce_stop(dev_priv); in r128_cce_stop()
720 drm_r128_private_t *dev_priv = dev->dev_private; in r128_cce_reset() local
725 DEV_INIT_TEST_WITH_RETURN(dev_priv); in r128_cce_reset()
727 r128_do_cce_reset(dev_priv); in r128_cce_reset()
730 dev_priv->cce_running = 0; in r128_cce_reset()
737 drm_r128_private_t *dev_priv = dev->dev_private; in r128_cce_idle() local
742 DEV_INIT_TEST_WITH_RETURN(dev_priv); in r128_cce_idle()
744 if (dev_priv->cce_running) in r128_cce_idle()
745 r128_do_cce_flush(dev_priv); in r128_cce_idle()
747 return r128_do_cce_idle(dev_priv); in r128_cce_idle()
776 drm_r128_private_t *dev_priv = dev->dev_private;
782 dev_priv->head = kzalloc(sizeof(drm_r128_freelist_t), GFP_KERNEL);
783 if (dev_priv->head == NULL)
786 dev_priv->head->age = R128_BUFFER_USED;
798 entry->prev = dev_priv->head;
799 entry->next = dev_priv->head->next;
801 dev_priv->tail = entry;
807 dev_priv->head->next = entry;
809 if (dev_priv->head->next)
810 dev_priv->head->next->prev = entry;
821 drm_r128_private_t *dev_priv = dev->dev_private; in r128_freelist_get() local
835 for (t = 0; t < dev_priv->usec_timeout; t++) { in r128_freelist_get()
872 int r128_wait_ring(drm_r128_private_t *dev_priv, int n) in r128_wait_ring() argument
874 drm_r128_ring_buffer_t *ring = &dev_priv->ring; in r128_wait_ring()
877 for (i = 0; i < dev_priv->usec_timeout; i++) { in r128_wait_ring()
878 r128_update_ring_snapshot(dev_priv); in r128_wait_ring()