Lines Matching refs:dev_priv
56 drm_r128_private_t *dev_priv = dev->dev_private; in R128_READ_PLL() local
63 static void r128_status(drm_r128_private_t *dev_priv) in r128_status() argument
84 static int r128_do_pixcache_flush(drm_r128_private_t *dev_priv) in r128_do_pixcache_flush() argument
92 for (i = 0; i < dev_priv->usec_timeout; i++) { in r128_do_pixcache_flush()
104 static int r128_do_wait_for_fifo(drm_r128_private_t *dev_priv, int entries) in r128_do_wait_for_fifo() argument
108 for (i = 0; i < dev_priv->usec_timeout; i++) { in r128_do_wait_for_fifo()
121 static int r128_do_wait_for_idle(drm_r128_private_t *dev_priv) in r128_do_wait_for_idle() argument
125 ret = r128_do_wait_for_fifo(dev_priv, 64); in r128_do_wait_for_idle()
129 for (i = 0; i < dev_priv->usec_timeout; i++) { in r128_do_wait_for_idle()
131 r128_do_pixcache_flush(dev_priv); in r128_do_wait_for_idle()
148 static int r128_cce_load_microcode(drm_r128_private_t *dev_priv) in r128_cce_load_microcode() argument
177 r128_do_wait_for_idle(dev_priv); in r128_cce_load_microcode()
197 static void r128_do_cce_flush(drm_r128_private_t *dev_priv) in r128_do_cce_flush() argument
207 int r128_do_cce_idle(drm_r128_private_t *dev_priv) in r128_do_cce_idle() argument
211 for (i = 0; i < dev_priv->usec_timeout; i++) { in r128_do_cce_idle()
212 if (GET_RING_HEAD(dev_priv) == dev_priv->ring.tail) { in r128_do_cce_idle()
215 dev_priv->cce_fifo_size) && in r128_do_cce_idle()
218 return r128_do_pixcache_flush(dev_priv); in r128_do_cce_idle()
226 r128_status(dev_priv); in r128_do_cce_idle()
233 static void r128_do_cce_start(drm_r128_private_t *dev_priv) in r128_do_cce_start() argument
235 r128_do_wait_for_idle(dev_priv); in r128_do_cce_start()
238 dev_priv->cce_mode | dev_priv->ring.size_l2qw in r128_do_cce_start()
243 dev_priv->cce_running = 1; in r128_do_cce_start()
250 static void r128_do_cce_reset(drm_r128_private_t *dev_priv) in r128_do_cce_reset() argument
254 dev_priv->ring.tail = 0; in r128_do_cce_reset()
261 static void r128_do_cce_stop(drm_r128_private_t *dev_priv) in r128_do_cce_stop() argument
267 dev_priv->cce_running = 0; in r128_do_cce_stop()
274 drm_r128_private_t *dev_priv = dev->dev_private; in r128_do_engine_reset() local
277 r128_do_pixcache_flush(dev_priv); in r128_do_engine_reset()
298 r128_do_cce_reset(dev_priv); in r128_do_engine_reset()
301 dev_priv->cce_running = 0; in r128_do_engine_reset()
310 drm_r128_private_t *dev_priv) in r128_cce_init_ring_buffer() argument
321 if (!dev_priv->is_pci) in r128_cce_init_ring_buffer()
322 ring_start = dev_priv->cce_ring->offset - dev->agp->base; in r128_cce_init_ring_buffer()
325 ring_start = dev_priv->cce_ring->offset - in r128_cce_init_ring_buffer()
350 drm_r128_private_t *dev_priv; in r128_do_init_cce() local
360 dev_priv = kzalloc(sizeof(drm_r128_private_t), GFP_KERNEL); in r128_do_init_cce()
361 if (dev_priv == NULL) 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_legacy_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_legacy_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_legacy_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_legacy_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->handle + in r128_do_init_cce()
515 if (!dev_priv->is_pci) { in r128_do_init_cce()
516 drm_legacy_ioremap_wc(dev_priv->cce_ring, dev); in r128_do_init_cce()
517 drm_legacy_ioremap_wc(dev_priv->ring_rptr, dev); in r128_do_init_cce()
519 if (!dev_priv->cce_ring->handle || in r128_do_init_cce()
520 !dev_priv->ring_rptr->handle || in r128_do_init_cce()
523 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
530 dev_priv->cce_ring->handle = in r128_do_init_cce()
531 (void *)(unsigned long)dev_priv->cce_ring->offset; in r128_do_init_cce()
532 dev_priv->ring_rptr->handle = in r128_do_init_cce()
533 (void *)(unsigned long)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 = (unsigned long)dev->sg->virtual; in r128_do_init_cce()
545 dev_priv->ring.start = (u32 *) dev_priv->cce_ring->handle; in r128_do_init_cce()
546 dev_priv->ring.end = ((u32 *) dev_priv->cce_ring->handle in r128_do_init_cce()
548 dev_priv->ring.size = init->ring_size; in r128_do_init_cce()
549 dev_priv->ring.size_l2qw = order_base_2(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 rc = drm_ati_pcigart_init(dev, &dev_priv->gart_info); in r128_do_init_cce()
573 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
577 R128_WRITE(R128_PCI_GART_PAGE, dev_priv->gart_info.bus_addr); in r128_do_init_cce()
582 r128_cce_init_ring_buffer(dev, dev_priv); in r128_do_init_cce()
583 rc = r128_cce_load_microcode(dev_priv); in r128_do_init_cce()
585 dev->dev_private = (void *)dev_priv; in r128_do_init_cce()
608 drm_r128_private_t *dev_priv = dev->dev_private; in r128_do_cleanup_cce() local
611 if (!dev_priv->is_pci) { in r128_do_cleanup_cce()
612 if (dev_priv->cce_ring != NULL) in r128_do_cleanup_cce()
613 drm_legacy_ioremapfree(dev_priv->cce_ring, dev); in r128_do_cleanup_cce()
614 if (dev_priv->ring_rptr != NULL) in r128_do_cleanup_cce()
615 drm_legacy_ioremapfree(dev_priv->ring_rptr, dev); in r128_do_cleanup_cce()
623 if (dev_priv->gart_info.bus_addr) in r128_do_cleanup_cce()
625 &dev_priv->gart_info)) in r128_do_cleanup_cce()
657 drm_r128_private_t *dev_priv = dev->dev_private; in r128_cce_start() local
662 DEV_INIT_TEST_WITH_RETURN(dev_priv); in r128_cce_start()
664 if (dev_priv->cce_running || dev_priv->cce_mode == R128_PM4_NONPM4) { in r128_cce_start()
669 r128_do_cce_start(dev_priv); in r128_cce_start()
679 drm_r128_private_t *dev_priv = dev->dev_private; in r128_cce_stop() local
686 DEV_INIT_TEST_WITH_RETURN(dev_priv); in r128_cce_stop()
692 r128_do_cce_flush(dev_priv); in r128_cce_stop()
698 ret = r128_do_cce_idle(dev_priv); in r128_cce_stop()
707 r128_do_cce_stop(dev_priv); in r128_cce_stop()
719 drm_r128_private_t *dev_priv = dev->dev_private; in r128_cce_reset() local
724 DEV_INIT_TEST_WITH_RETURN(dev_priv); in r128_cce_reset()
726 r128_do_cce_reset(dev_priv); in r128_cce_reset()
729 dev_priv->cce_running = 0; in r128_cce_reset()
736 drm_r128_private_t *dev_priv = dev->dev_private; in r128_cce_idle() local
741 DEV_INIT_TEST_WITH_RETURN(dev_priv); in r128_cce_idle()
743 if (dev_priv->cce_running) in r128_cce_idle()
744 r128_do_cce_flush(dev_priv); in r128_cce_idle()
746 return r128_do_cce_idle(dev_priv); in r128_cce_idle()
775 drm_r128_private_t *dev_priv = dev->dev_private;
781 dev_priv->head = kzalloc(sizeof(drm_r128_freelist_t), GFP_KERNEL);
782 if (dev_priv->head == NULL)
785 dev_priv->head->age = R128_BUFFER_USED;
797 entry->prev = dev_priv->head;
798 entry->next = dev_priv->head->next;
800 dev_priv->tail = entry;
806 dev_priv->head->next = entry;
808 if (dev_priv->head->next)
809 dev_priv->head->next->prev = entry;
820 drm_r128_private_t *dev_priv = dev->dev_private; in r128_freelist_get() local
834 for (t = 0; t < dev_priv->usec_timeout; t++) { in r128_freelist_get()
871 int r128_wait_ring(drm_r128_private_t *dev_priv, int n) in r128_wait_ring() argument
873 drm_r128_ring_buffer_t *ring = &dev_priv->ring; in r128_wait_ring()
876 for (i = 0; i < dev_priv->usec_timeout; i++) { in r128_wait_ring()
877 r128_update_ring_snapshot(dev_priv); in r128_wait_ring()