Lines Matching refs:dev_priv
58 int mga_do_wait_for_idle(drm_mga_private_t * dev_priv) in mga_do_wait_for_idle() argument
64 for (i = 0; i < dev_priv->usec_timeout; i++) { in mga_do_wait_for_idle()
80 static int mga_do_dma_reset(drm_mga_private_t * dev_priv) in mga_do_dma_reset() argument
82 drm_mga_sarea_t *sarea_priv = dev_priv->sarea_priv; in mga_do_dma_reset()
83 drm_mga_primary_buffer_t *primary = &dev_priv->prim; in mga_do_dma_reset()
108 void mga_do_dma_flush(drm_mga_private_t * dev_priv) in mga_do_dma_flush() argument
110 drm_mga_primary_buffer_t *primary = &dev_priv->prim; in mga_do_dma_flush()
118 for (i = 0; i < dev_priv->usec_timeout; i++) { in mga_do_dma_flush()
130 tail = primary->tail + dev_priv->primary->offset; in mga_do_dma_flush()
154 DRM_DEBUG(" head = 0x%06lx\n", head - dev_priv->primary->offset); in mga_do_dma_flush()
155 DRM_DEBUG(" tail = 0x%06lx\n", tail - dev_priv->primary->offset); in mga_do_dma_flush()
159 MGA_WRITE(MGA_PRIMEND, tail | dev_priv->dma_access); in mga_do_dma_flush()
164 void mga_do_dma_wrap_start(drm_mga_private_t * dev_priv) in mga_do_dma_wrap_start() argument
166 drm_mga_primary_buffer_t *primary = &dev_priv->prim; in mga_do_dma_wrap_start()
179 tail = primary->tail + dev_priv->primary->offset; in mga_do_dma_wrap_start()
187 if (head == dev_priv->primary->offset) { in mga_do_dma_wrap_start()
190 primary->space = head - dev_priv->primary->offset; in mga_do_dma_wrap_start()
193 DRM_DEBUG(" head = 0x%06lx\n", head - dev_priv->primary->offset); in mga_do_dma_wrap_start()
199 MGA_WRITE(MGA_PRIMEND, tail | dev_priv->dma_access); in mga_do_dma_wrap_start()
205 void mga_do_dma_wrap_end(drm_mga_private_t * dev_priv) in mga_do_dma_wrap_end() argument
207 drm_mga_primary_buffer_t *primary = &dev_priv->prim; in mga_do_dma_wrap_end()
208 drm_mga_sarea_t *sarea_priv = dev_priv->sarea_priv; in mga_do_dma_wrap_end()
209 u32 head = dev_priv->primary->offset; in mga_do_dma_wrap_end()
232 drm_mga_private_t *dev_priv = dev->dev_private; in mga_freelist_print() local
237 dev_priv->sarea_priv->last_dispatch, in mga_freelist_print()
239 dev_priv->primary->offset)); in mga_freelist_print()
242 for (entry = dev_priv->head->next; entry; entry = entry->next) { in mga_freelist_print()
245 entry->age.head - dev_priv->primary->offset); in mga_freelist_print()
251 static int mga_freelist_init(struct drm_device * dev, drm_mga_private_t * dev_priv) in mga_freelist_init() argument
260 dev_priv->head = drm_alloc(sizeof(drm_mga_freelist_t), DRM_MEM_DRIVER); in mga_freelist_init()
261 if (dev_priv->head == NULL) in mga_freelist_init()
264 memset(dev_priv->head, 0, sizeof(drm_mga_freelist_t)); in mga_freelist_init()
265 SET_AGE(&dev_priv->head->age, MGA_BUFFER_USED, 0); in mga_freelist_init()
277 entry->next = dev_priv->head->next; in mga_freelist_init()
278 entry->prev = dev_priv->head; in mga_freelist_init()
282 if (dev_priv->head->next != NULL) in mga_freelist_init()
283 dev_priv->head->next->prev = entry; in mga_freelist_init()
285 dev_priv->tail = entry; in mga_freelist_init()
291 dev_priv->head->next = entry; in mga_freelist_init()
299 drm_mga_private_t *dev_priv = dev->dev_private; in mga_freelist_cleanup() local
304 entry = dev_priv->head; in mga_freelist_cleanup()
311 dev_priv->head = dev_priv->tail = NULL; in mga_freelist_cleanup()
334 drm_mga_private_t *dev_priv = dev->dev_private; in mga_freelist_get() local
337 drm_mga_freelist_t *tail = dev_priv->tail; in mga_freelist_get()
342 wrap = dev_priv->sarea_priv->last_wrap; in mga_freelist_get()
346 tail->age.head - dev_priv->primary->offset : 0, in mga_freelist_get()
349 head - dev_priv->primary->offset, wrap); in mga_freelist_get()
352 prev = dev_priv->tail->prev; in mga_freelist_get()
353 next = dev_priv->tail; in mga_freelist_get()
356 dev_priv->tail = prev; in mga_freelist_get()
367 drm_mga_private_t *dev_priv = dev->dev_private; in mga_freelist_put() local
373 dev_priv->primary->offset, buf_priv->list_entry->age.wrap); in mga_freelist_put()
376 head = dev_priv->head; in mga_freelist_put()
380 prev = dev_priv->tail; in mga_freelist_put()
401 drm_mga_private_t *dev_priv; in mga_driver_load() local
404 dev_priv = drm_alloc(sizeof(drm_mga_private_t), DRM_MEM_DRIVER); in mga_driver_load()
405 if (!dev_priv) in mga_driver_load()
408 dev->dev_private = (void *)dev_priv; in mga_driver_load()
409 memset(dev_priv, 0, sizeof(drm_mga_private_t)); in mga_driver_load()
411 dev_priv->usec_timeout = MGA_DEFAULT_USEC_TIMEOUT; in mga_driver_load()
412 dev_priv->chipset = flags; in mga_driver_load()
414 dev_priv->mmio_base = drm_get_resource_start(dev, 1); in mga_driver_load()
415 dev_priv->mmio_size = drm_get_resource_len(dev, 1); in mga_driver_load()
450 drm_mga_private_t *const dev_priv = in mga_do_agp_dma_bootstrap() local
452 unsigned int warp_size = mga_warp_microcode_size(dev_priv); in mga_do_agp_dma_bootstrap()
488 if (dev_priv->chipset == MGA_CARD_TYPE_G200) { in mga_do_agp_dma_bootstrap()
501 dev_priv->agp_size = 0; in mga_do_agp_dma_bootstrap()
507 dev_priv->agp_size = agp_size; in mga_do_agp_dma_bootstrap()
508 dev_priv->agp_handle = agp_req.handle; in mga_do_agp_dma_bootstrap()
526 _DRM_AGP, _DRM_READ_ONLY, &dev_priv->warp); in mga_do_agp_dma_bootstrap()
534 _DRM_AGP, _DRM_READ_ONLY, & dev_priv->primary); in mga_do_agp_dma_bootstrap()
578 _DRM_AGP, 0, & dev_priv->agp_textures); in mga_do_agp_dma_bootstrap()
584 drm_core_ioremap(dev_priv->warp, dev); in mga_do_agp_dma_bootstrap()
585 drm_core_ioremap(dev_priv->primary, dev); in mga_do_agp_dma_bootstrap()
588 if (!dev_priv->warp->virtual || in mga_do_agp_dma_bootstrap()
589 !dev_priv->primary->virtual || !dev->agp_buffer_map->virtual) { in mga_do_agp_dma_bootstrap()
591 dev_priv->warp->virtual, dev_priv->primary->virtual, in mga_do_agp_dma_bootstrap()
596 dev_priv->dma_access = MGA_PAGPXFER; in mga_do_agp_dma_bootstrap()
597 dev_priv->wagp_enable = MGA_WAGP_ENABLE; in mga_do_agp_dma_bootstrap()
620 drm_mga_private_t *const dev_priv = in mga_do_pci_dma_bootstrap() local
622 unsigned int warp_size = mga_warp_microcode_size(dev_priv); in mga_do_pci_dma_bootstrap()
642 _DRM_READ_ONLY, &dev_priv->warp); in mga_do_pci_dma_bootstrap()
658 _DRM_READ_ONLY, &dev_priv->primary); in mga_do_pci_dma_bootstrap()
668 if (dev_priv->primary->size != dma_bs->primary_size) { in mga_do_pci_dma_bootstrap()
671 (unsigned)dev_priv->primary->size); in mga_do_pci_dma_bootstrap()
672 dma_bs->primary_size = dev_priv->primary->size; in mga_do_pci_dma_bootstrap()
699 dev_priv->dma_access = 0; in mga_do_pci_dma_bootstrap()
700 dev_priv->wagp_enable = 0; in mga_do_pci_dma_bootstrap()
714 drm_mga_private_t *const dev_priv = in mga_do_dma_bootstrap() local
718 dev_priv->used_new_dma_init = 1; in mga_do_dma_bootstrap()
723 err = drm_addmap(dev, dev_priv->mmio_base, dev_priv->mmio_size, in mga_do_dma_bootstrap()
724 _DRM_REGISTERS, _DRM_READ_ONLY, & dev_priv->mmio); in mga_do_dma_bootstrap()
733 & dev_priv->status); in mga_do_dma_bootstrap()
781 const drm_mga_private_t *const dev_priv = in mga_dma_bootstrap() local
791 if (dev_priv->agp_textures != NULL) { in mga_dma_bootstrap()
792 bootstrap->texture_handle = dev_priv->agp_textures->offset; in mga_dma_bootstrap()
793 bootstrap->texture_size = dev_priv->agp_textures->size; in mga_dma_bootstrap()
807 drm_mga_private_t *dev_priv; in mga_do_init_dma() local
812 dev_priv = dev->dev_private; in mga_do_init_dma()
815 dev_priv->clear_cmd = MGA_DWGCTL_CLEAR | MGA_ATYPE_BLK; in mga_do_init_dma()
817 dev_priv->clear_cmd = MGA_DWGCTL_CLEAR | MGA_ATYPE_RSTR; in mga_do_init_dma()
819 dev_priv->maccess = init->maccess; in mga_do_init_dma()
821 dev_priv->fb_cpp = init->fb_cpp; in mga_do_init_dma()
822 dev_priv->front_offset = init->front_offset; in mga_do_init_dma()
823 dev_priv->front_pitch = init->front_pitch; in mga_do_init_dma()
824 dev_priv->back_offset = init->back_offset; in mga_do_init_dma()
825 dev_priv->back_pitch = init->back_pitch; in mga_do_init_dma()
827 dev_priv->depth_cpp = init->depth_cpp; in mga_do_init_dma()
828 dev_priv->depth_offset = init->depth_offset; in mga_do_init_dma()
829 dev_priv->depth_pitch = init->depth_pitch; in mga_do_init_dma()
833 dev_priv->texture_offset = init->texture_offset[0]; in mga_do_init_dma()
834 dev_priv->texture_size = init->texture_size[0]; in mga_do_init_dma()
836 dev_priv->sarea = drm_getsarea(dev); in mga_do_init_dma()
837 if (!dev_priv->sarea) { in mga_do_init_dma()
842 if (!dev_priv->used_new_dma_init) { in mga_do_init_dma()
844 dev_priv->dma_access = MGA_PAGPXFER; in mga_do_init_dma()
845 dev_priv->wagp_enable = MGA_WAGP_ENABLE; in mga_do_init_dma()
847 dev_priv->status = drm_core_findmap(dev, init->status_offset); in mga_do_init_dma()
848 if (!dev_priv->status) { in mga_do_init_dma()
852 dev_priv->mmio = drm_core_findmap(dev, init->mmio_offset); in mga_do_init_dma()
853 if (!dev_priv->mmio) { in mga_do_init_dma()
857 dev_priv->warp = drm_core_findmap(dev, init->warp_offset); in mga_do_init_dma()
858 if (!dev_priv->warp) { in mga_do_init_dma()
862 dev_priv->primary = drm_core_findmap(dev, init->primary_offset); in mga_do_init_dma()
863 if (!dev_priv->primary) { in mga_do_init_dma()
875 drm_core_ioremap(dev_priv->warp, dev); in mga_do_init_dma()
876 drm_core_ioremap(dev_priv->primary, dev); in mga_do_init_dma()
880 dev_priv->sarea_priv = in mga_do_init_dma()
881 (drm_mga_sarea_t *) ((u8 *) dev_priv->sarea->virtual + in mga_do_init_dma()
884 if (!dev_priv->warp->virtual || in mga_do_init_dma()
885 !dev_priv->primary->virtual || in mga_do_init_dma()
886 ((dev_priv->dma_access != 0) && in mga_do_init_dma()
893 ret = mga_warp_install_microcode(dev_priv); in mga_do_init_dma()
899 ret = mga_warp_init(dev_priv); in mga_do_init_dma()
905 dev_priv->prim.status = (u32 *) dev_priv->status->virtual; in mga_do_init_dma()
907 mga_do_wait_for_idle(dev_priv); in mga_do_init_dma()
911 MGA_WRITE(MGA_PRIMADDRESS, dev_priv->primary->offset | MGA_DMA_GENERAL); in mga_do_init_dma()
913 dev_priv->prim.start = (u8 *) dev_priv->primary->virtual; in mga_do_init_dma()
914 dev_priv->prim.end = ((u8 *) dev_priv->primary->virtual in mga_do_init_dma()
915 + dev_priv->primary->size); in mga_do_init_dma()
916 dev_priv->prim.size = dev_priv->primary->size; in mga_do_init_dma()
918 dev_priv->prim.tail = 0; in mga_do_init_dma()
919 dev_priv->prim.space = dev_priv->prim.size; in mga_do_init_dma()
920 dev_priv->prim.wrapped = 0; in mga_do_init_dma()
922 dev_priv->prim.last_flush = 0; in mga_do_init_dma()
923 dev_priv->prim.last_wrap = 0; in mga_do_init_dma()
925 dev_priv->prim.high_mark = 256 * DMA_BLOCK_SIZE; in mga_do_init_dma()
927 dev_priv->prim.status[0] = dev_priv->primary->offset; in mga_do_init_dma()
928 dev_priv->prim.status[1] = 0; in mga_do_init_dma()
930 dev_priv->sarea_priv->last_wrap = 0; in mga_do_init_dma()
931 dev_priv->sarea_priv->last_frame.head = 0; in mga_do_init_dma()
932 dev_priv->sarea_priv->last_frame.wrap = 0; in mga_do_init_dma()
934 if (mga_freelist_init(dev, dev_priv) < 0) { in mga_do_init_dma()
955 drm_mga_private_t *dev_priv = dev->dev_private; in mga_do_cleanup_dma() local
957 if ((dev_priv->warp != NULL) in mga_do_cleanup_dma()
958 && (dev_priv->warp->type != _DRM_CONSISTENT)) in mga_do_cleanup_dma()
959 drm_core_ioremapfree(dev_priv->warp, dev); in mga_do_cleanup_dma()
961 if ((dev_priv->primary != NULL) in mga_do_cleanup_dma()
962 && (dev_priv->primary->type != _DRM_CONSISTENT)) in mga_do_cleanup_dma()
963 drm_core_ioremapfree(dev_priv->primary, dev); in mga_do_cleanup_dma()
968 if (dev_priv->used_new_dma_init) { in mga_do_cleanup_dma()
969 if (dev_priv->agp_handle != 0) { in mga_do_cleanup_dma()
973 unbind_req.handle = dev_priv->agp_handle; in mga_do_cleanup_dma()
976 free_req.handle = dev_priv->agp_handle; in mga_do_cleanup_dma()
979 dev_priv->agp_textures = NULL; in mga_do_cleanup_dma()
980 dev_priv->agp_size = 0; in mga_do_cleanup_dma()
981 dev_priv->agp_handle = 0; in mga_do_cleanup_dma()
989 dev_priv->warp = NULL; in mga_do_cleanup_dma()
990 dev_priv->primary = NULL; in mga_do_cleanup_dma()
991 dev_priv->sarea = NULL; in mga_do_cleanup_dma()
992 dev_priv->sarea_priv = NULL; in mga_do_cleanup_dma()
996 dev_priv->mmio = NULL; in mga_do_cleanup_dma()
997 dev_priv->status = NULL; in mga_do_cleanup_dma()
998 dev_priv->used_new_dma_init = 0; in mga_do_cleanup_dma()
1001 memset(&dev_priv->prim, 0, sizeof(dev_priv->prim)); in mga_do_cleanup_dma()
1002 dev_priv->warp_pipe = 0; in mga_do_cleanup_dma()
1003 memset(dev_priv->warp_pipe_phys, 0, in mga_do_cleanup_dma()
1004 sizeof(dev_priv->warp_pipe_phys)); in mga_do_cleanup_dma()
1006 if (dev_priv->head != NULL) { in mga_do_cleanup_dma()
1043 drm_mga_private_t *dev_priv = (drm_mga_private_t *) dev->dev_private; in mga_dma_flush() local
1053 WRAP_WAIT_WITH_RETURN(dev_priv); in mga_dma_flush()
1056 mga_do_dma_flush(dev_priv); in mga_dma_flush()
1061 int ret = mga_do_wait_for_idle(dev_priv); in mga_dma_flush()
1066 return mga_do_wait_for_idle(dev_priv); in mga_dma_flush()
1076 drm_mga_private_t *dev_priv = (drm_mga_private_t *) dev->dev_private; in mga_dma_reset() local
1080 return mga_do_dma_reset(dev_priv); in mga_dma_reset()
1116 drm_mga_private_t *dev_priv = (drm_mga_private_t *) dev->dev_private; in mga_dma_buffers() local
1138 WRAP_TEST_WITH_RETURN(dev_priv); in mga_dma_buffers()
1170 drm_mga_private_t *dev_priv = dev->dev_private; in mga_driver_dma_quiescent() local
1171 return mga_do_wait_for_idle(dev_priv); in mga_driver_dma_quiescent()