Lines Matching refs:dev_priv
53 int mga_do_wait_for_idle(drm_mga_private_t *dev_priv) in mga_do_wait_for_idle() argument
59 for (i = 0; i < dev_priv->usec_timeout; i++) { in mga_do_wait_for_idle()
75 static int mga_do_dma_reset(drm_mga_private_t *dev_priv) in mga_do_dma_reset() argument
77 drm_mga_sarea_t *sarea_priv = dev_priv->sarea_priv; in mga_do_dma_reset()
78 drm_mga_primary_buffer_t *primary = &dev_priv->prim; in mga_do_dma_reset()
103 void mga_do_dma_flush(drm_mga_private_t *dev_priv) in mga_do_dma_flush() argument
105 drm_mga_primary_buffer_t *primary = &dev_priv->prim; in mga_do_dma_flush()
113 for (i = 0; i < dev_priv->usec_timeout; i++) { in mga_do_dma_flush()
125 tail = primary->tail + dev_priv->primary->offset; in mga_do_dma_flush()
148 DRM_DEBUG(" head = 0x%06lx\n", (unsigned long)(head - dev_priv->primary->offset)); in mga_do_dma_flush()
149 DRM_DEBUG(" tail = 0x%06lx\n", (unsigned long)(tail - dev_priv->primary->offset)); in mga_do_dma_flush()
153 MGA_WRITE(MGA_PRIMEND, tail | dev_priv->dma_access); in mga_do_dma_flush()
158 void mga_do_dma_wrap_start(drm_mga_private_t *dev_priv) in mga_do_dma_wrap_start() argument
160 drm_mga_primary_buffer_t *primary = &dev_priv->prim; in mga_do_dma_wrap_start()
173 tail = primary->tail + dev_priv->primary->offset; in mga_do_dma_wrap_start()
181 if (head == dev_priv->primary->offset) in mga_do_dma_wrap_start()
184 primary->space = head - dev_priv->primary->offset; in mga_do_dma_wrap_start()
186 DRM_DEBUG(" head = 0x%06lx\n", (unsigned long)(head - dev_priv->primary->offset)); in mga_do_dma_wrap_start()
192 MGA_WRITE(MGA_PRIMEND, tail | dev_priv->dma_access); in mga_do_dma_wrap_start()
198 void mga_do_dma_wrap_end(drm_mga_private_t *dev_priv) in mga_do_dma_wrap_end() argument
200 drm_mga_primary_buffer_t *primary = &dev_priv->prim; in mga_do_dma_wrap_end()
201 drm_mga_sarea_t *sarea_priv = dev_priv->sarea_priv; in mga_do_dma_wrap_end()
202 u32 head = dev_priv->primary->offset; in mga_do_dma_wrap_end()
225 drm_mga_private_t *dev_priv = dev->dev_private; in mga_freelist_print() local
230 dev_priv->sarea_priv->last_dispatch, in mga_freelist_print()
232 dev_priv->primary->offset)); in mga_freelist_print()
235 for (entry = dev_priv->head->next; entry; entry = entry->next) { in mga_freelist_print()
238 (unsigned long)(entry->age.head - dev_priv->primary->offset)); in mga_freelist_print()
244 static int mga_freelist_init(struct drm_device *dev, drm_mga_private_t *dev_priv) in mga_freelist_init() argument
253 dev_priv->head = kzalloc(sizeof(drm_mga_freelist_t), GFP_KERNEL); in mga_freelist_init()
254 if (dev_priv->head == NULL) in mga_freelist_init()
257 SET_AGE(&dev_priv->head->age, MGA_BUFFER_USED, 0); in mga_freelist_init()
267 entry->next = dev_priv->head->next; in mga_freelist_init()
268 entry->prev = dev_priv->head; in mga_freelist_init()
272 if (dev_priv->head->next != NULL) in mga_freelist_init()
273 dev_priv->head->next->prev = entry; in mga_freelist_init()
275 dev_priv->tail = entry; in mga_freelist_init()
281 dev_priv->head->next = entry; in mga_freelist_init()
289 drm_mga_private_t *dev_priv = dev->dev_private; in mga_freelist_cleanup() local
294 entry = dev_priv->head; in mga_freelist_cleanup()
301 dev_priv->head = dev_priv->tail = NULL; in mga_freelist_cleanup()
324 drm_mga_private_t *dev_priv = dev->dev_private; in mga_freelist_get() local
327 drm_mga_freelist_t *tail = dev_priv->tail; in mga_freelist_get()
332 wrap = dev_priv->sarea_priv->last_wrap; in mga_freelist_get()
336 (unsigned long)(tail->age.head - dev_priv->primary->offset) : 0, in mga_freelist_get()
339 (unsigned long)(head - dev_priv->primary->offset), wrap); in mga_freelist_get()
342 prev = dev_priv->tail->prev; in mga_freelist_get()
343 next = dev_priv->tail; in mga_freelist_get()
346 dev_priv->tail = prev; in mga_freelist_get()
357 drm_mga_private_t *dev_priv = dev->dev_private; in mga_freelist_put() local
363 dev_priv->primary->offset), in mga_freelist_put()
367 head = dev_priv->head; in mga_freelist_put()
371 prev = dev_priv->tail; in mga_freelist_put()
393 drm_mga_private_t *dev_priv; in mga_driver_load() local
414 dev_priv = kzalloc(sizeof(drm_mga_private_t), GFP_KERNEL); in mga_driver_load()
415 if (!dev_priv) in mga_driver_load()
418 dev->dev_private = (void *)dev_priv; in mga_driver_load()
420 dev_priv->usec_timeout = MGA_DEFAULT_USEC_TIMEOUT; in mga_driver_load()
421 dev_priv->chipset = flags; in mga_driver_load()
425 dev_priv->mmio_base = pci_resource_start(pdev, 1); in mga_driver_load()
426 dev_priv->mmio_size = pci_resource_len(pdev, 1); in mga_driver_load()
457 drm_mga_private_t *const dev_priv = in mga_do_agp_dma_bootstrap() local
495 if (dev_priv->chipset == MGA_CARD_TYPE_G200) { in mga_do_agp_dma_bootstrap()
507 dev_priv->agp_size = 0; in mga_do_agp_dma_bootstrap()
513 dev_priv->agp_size = agp_size; in mga_do_agp_dma_bootstrap()
514 dev_priv->agp_handle = agp_req.handle; in mga_do_agp_dma_bootstrap()
532 _DRM_AGP, _DRM_READ_ONLY, &dev_priv->warp); in mga_do_agp_dma_bootstrap()
540 _DRM_AGP, _DRM_READ_ONLY, &dev_priv->primary); in mga_do_agp_dma_bootstrap()
582 _DRM_AGP, 0, &dev_priv->agp_textures); in mga_do_agp_dma_bootstrap()
588 drm_legacy_ioremap(dev_priv->warp, dev); in mga_do_agp_dma_bootstrap()
589 drm_legacy_ioremap(dev_priv->primary, dev); in mga_do_agp_dma_bootstrap()
592 if (!dev_priv->warp->handle || in mga_do_agp_dma_bootstrap()
593 !dev_priv->primary->handle || !dev->agp_buffer_map->handle) { in mga_do_agp_dma_bootstrap()
595 dev_priv->warp->handle, dev_priv->primary->handle, in mga_do_agp_dma_bootstrap()
600 dev_priv->dma_access = MGA_PAGPXFER; in mga_do_agp_dma_bootstrap()
601 dev_priv->wagp_enable = MGA_WAGP_ENABLE; in mga_do_agp_dma_bootstrap()
631 drm_mga_private_t *const dev_priv = in mga_do_pci_dma_bootstrap() local
652 _DRM_READ_ONLY, &dev_priv->warp); in mga_do_pci_dma_bootstrap()
668 _DRM_READ_ONLY, &dev_priv->primary); in mga_do_pci_dma_bootstrap()
678 if (dev_priv->primary->size != dma_bs->primary_size) { in mga_do_pci_dma_bootstrap()
681 (unsigned)dev_priv->primary->size); in mga_do_pci_dma_bootstrap()
682 dma_bs->primary_size = dev_priv->primary->size; in mga_do_pci_dma_bootstrap()
708 dev_priv->dma_access = 0; in mga_do_pci_dma_bootstrap()
709 dev_priv->wagp_enable = 0; in mga_do_pci_dma_bootstrap()
722 drm_mga_private_t *const dev_priv = in mga_do_dma_bootstrap() local
725 dev_priv->used_new_dma_init = 1; in mga_do_dma_bootstrap()
730 err = drm_legacy_addmap(dev, dev_priv->mmio_base, dev_priv->mmio_size, in mga_do_dma_bootstrap()
732 &dev_priv->mmio); in mga_do_dma_bootstrap()
740 &dev_priv->status); in mga_do_dma_bootstrap()
781 const drm_mga_private_t *const dev_priv = in mga_dma_bootstrap() local
790 if (dev_priv->agp_textures != NULL) { in mga_dma_bootstrap()
791 bootstrap->texture_handle = dev_priv->agp_textures->offset; in mga_dma_bootstrap()
792 bootstrap->texture_size = dev_priv->agp_textures->size; in mga_dma_bootstrap()
805 drm_mga_private_t *dev_priv; in mga_do_init_dma() local
809 dev_priv = dev->dev_private; in mga_do_init_dma()
812 dev_priv->clear_cmd = MGA_DWGCTL_CLEAR | MGA_ATYPE_BLK; in mga_do_init_dma()
814 dev_priv->clear_cmd = MGA_DWGCTL_CLEAR | MGA_ATYPE_RSTR; in mga_do_init_dma()
815 dev_priv->maccess = init->maccess; in mga_do_init_dma()
817 dev_priv->fb_cpp = init->fb_cpp; in mga_do_init_dma()
818 dev_priv->front_offset = init->front_offset; in mga_do_init_dma()
819 dev_priv->front_pitch = init->front_pitch; in mga_do_init_dma()
820 dev_priv->back_offset = init->back_offset; in mga_do_init_dma()
821 dev_priv->back_pitch = init->back_pitch; in mga_do_init_dma()
823 dev_priv->depth_cpp = init->depth_cpp; in mga_do_init_dma()
824 dev_priv->depth_offset = init->depth_offset; in mga_do_init_dma()
825 dev_priv->depth_pitch = init->depth_pitch; in mga_do_init_dma()
829 dev_priv->texture_offset = init->texture_offset[0]; in mga_do_init_dma()
830 dev_priv->texture_size = init->texture_size[0]; in mga_do_init_dma()
832 dev_priv->sarea = drm_legacy_getsarea(dev); in mga_do_init_dma()
833 if (!dev_priv->sarea) { in mga_do_init_dma()
838 if (!dev_priv->used_new_dma_init) { in mga_do_init_dma()
840 dev_priv->dma_access = MGA_PAGPXFER; in mga_do_init_dma()
841 dev_priv->wagp_enable = MGA_WAGP_ENABLE; in mga_do_init_dma()
843 dev_priv->status = drm_legacy_findmap(dev, init->status_offset); in mga_do_init_dma()
844 if (!dev_priv->status) { in mga_do_init_dma()
848 dev_priv->mmio = drm_legacy_findmap(dev, init->mmio_offset); in mga_do_init_dma()
849 if (!dev_priv->mmio) { in mga_do_init_dma()
853 dev_priv->warp = drm_legacy_findmap(dev, init->warp_offset); in mga_do_init_dma()
854 if (!dev_priv->warp) { in mga_do_init_dma()
858 dev_priv->primary = drm_legacy_findmap(dev, init->primary_offset); in mga_do_init_dma()
859 if (!dev_priv->primary) { in mga_do_init_dma()
871 drm_legacy_ioremap(dev_priv->warp, dev); in mga_do_init_dma()
872 drm_legacy_ioremap(dev_priv->primary, dev); in mga_do_init_dma()
876 dev_priv->sarea_priv = in mga_do_init_dma()
877 (drm_mga_sarea_t *) ((u8 *) dev_priv->sarea->handle + in mga_do_init_dma()
880 if (!dev_priv->warp->handle || in mga_do_init_dma()
881 !dev_priv->primary->handle || in mga_do_init_dma()
882 ((dev_priv->dma_access != 0) && in mga_do_init_dma()
889 ret = mga_warp_install_microcode(dev_priv); in mga_do_init_dma()
895 ret = mga_warp_init(dev_priv); in mga_do_init_dma()
901 dev_priv->prim.status = (u32 *) dev_priv->status->handle; in mga_do_init_dma()
903 mga_do_wait_for_idle(dev_priv); in mga_do_init_dma()
907 MGA_WRITE(MGA_PRIMADDRESS, dev_priv->primary->offset | MGA_DMA_GENERAL); in mga_do_init_dma()
909 …MGA_WRITE(MGA_PRIMPTR, virt_to_bus((void *)dev_priv->prim.status) | MGA_PRIMPTREN0 | /* Soft trap,… in mga_do_init_dma()
913 dev_priv->prim.start = (u8 *) dev_priv->primary->handle; in mga_do_init_dma()
914 dev_priv->prim.end = ((u8 *) dev_priv->primary->handle 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_legacy_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_legacy_ioremapfree(dev_priv->primary, dev); in mga_do_cleanup_dma()
968 if (dev_priv->used_new_dma_init) { in mga_do_cleanup_dma()
970 if (dev_priv->agp_handle != 0) { in mga_do_cleanup_dma()
974 unbind_req.handle = dev_priv->agp_handle; in mga_do_cleanup_dma()
977 free_req.handle = dev_priv->agp_handle; in mga_do_cleanup_dma()
980 dev_priv->agp_textures = NULL; in mga_do_cleanup_dma()
981 dev_priv->agp_size = 0; in mga_do_cleanup_dma()
982 dev_priv->agp_handle = 0; in mga_do_cleanup_dma()
990 dev_priv->warp = NULL; in mga_do_cleanup_dma()
991 dev_priv->primary = NULL; in mga_do_cleanup_dma()
992 dev_priv->sarea = NULL; in mga_do_cleanup_dma()
993 dev_priv->sarea_priv = NULL; in mga_do_cleanup_dma()
997 dev_priv->mmio = NULL; in mga_do_cleanup_dma()
998 dev_priv->status = NULL; in mga_do_cleanup_dma()
999 dev_priv->used_new_dma_init = 0; in mga_do_cleanup_dma()
1002 memset(&dev_priv->prim, 0, sizeof(dev_priv->prim)); in mga_do_cleanup_dma()
1003 dev_priv->warp_pipe = 0; in mga_do_cleanup_dma()
1004 memset(dev_priv->warp_pipe_phys, 0, in mga_do_cleanup_dma()
1005 sizeof(dev_priv->warp_pipe_phys)); in mga_do_cleanup_dma()
1007 if (dev_priv->head != NULL) in mga_do_cleanup_dma()
1042 drm_mga_private_t *dev_priv = (drm_mga_private_t *) dev->dev_private; in mga_dma_flush() local
1052 WRAP_WAIT_WITH_RETURN(dev_priv); in mga_dma_flush()
1055 mga_do_dma_flush(dev_priv); in mga_dma_flush()
1059 int ret = mga_do_wait_for_idle(dev_priv); in mga_dma_flush()
1064 return mga_do_wait_for_idle(dev_priv); in mga_dma_flush()
1074 drm_mga_private_t *dev_priv = (drm_mga_private_t *) dev->dev_private; in mga_dma_reset() local
1078 return mga_do_dma_reset(dev_priv); in mga_dma_reset()
1114 drm_mga_private_t *dev_priv = (drm_mga_private_t *) dev->dev_private; in mga_dma_buffers() local
1137 WRAP_TEST_WITH_RETURN(dev_priv); in mga_dma_buffers()
1166 drm_mga_private_t *dev_priv = dev->dev_private; in mga_driver_dma_quiescent() local
1167 return mga_do_wait_for_idle(dev_priv); in mga_driver_dma_quiescent()