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()
392 drm_mga_private_t *dev_priv; in mga_driver_load() local
413 dev_priv = kzalloc(sizeof(drm_mga_private_t), GFP_KERNEL); in mga_driver_load()
414 if (!dev_priv) in mga_driver_load()
417 dev->dev_private = (void *)dev_priv; in mga_driver_load()
419 dev_priv->usec_timeout = MGA_DEFAULT_USEC_TIMEOUT; in mga_driver_load()
420 dev_priv->chipset = flags; in mga_driver_load()
424 dev_priv->mmio_base = pci_resource_start(dev->pdev, 1); in mga_driver_load()
425 dev_priv->mmio_size = pci_resource_len(dev->pdev, 1); in mga_driver_load()
456 drm_mga_private_t *const dev_priv = in mga_do_agp_dma_bootstrap() local
494 if (dev_priv->chipset == MGA_CARD_TYPE_G200) { in mga_do_agp_dma_bootstrap()
506 dev_priv->agp_size = 0; in mga_do_agp_dma_bootstrap()
512 dev_priv->agp_size = agp_size; in mga_do_agp_dma_bootstrap()
513 dev_priv->agp_handle = agp_req.handle; in mga_do_agp_dma_bootstrap()
531 _DRM_AGP, _DRM_READ_ONLY, &dev_priv->warp); in mga_do_agp_dma_bootstrap()
539 _DRM_AGP, _DRM_READ_ONLY, &dev_priv->primary); in mga_do_agp_dma_bootstrap()
581 _DRM_AGP, 0, &dev_priv->agp_textures); in mga_do_agp_dma_bootstrap()
587 drm_legacy_ioremap(dev_priv->warp, dev); in mga_do_agp_dma_bootstrap()
588 drm_legacy_ioremap(dev_priv->primary, dev); in mga_do_agp_dma_bootstrap()
591 if (!dev_priv->warp->handle || in mga_do_agp_dma_bootstrap()
592 !dev_priv->primary->handle || !dev->agp_buffer_map->handle) { in mga_do_agp_dma_bootstrap()
594 dev_priv->warp->handle, dev_priv->primary->handle, in mga_do_agp_dma_bootstrap()
599 dev_priv->dma_access = MGA_PAGPXFER; in mga_do_agp_dma_bootstrap()
600 dev_priv->wagp_enable = MGA_WAGP_ENABLE; in mga_do_agp_dma_bootstrap()
630 drm_mga_private_t *const dev_priv = in mga_do_pci_dma_bootstrap() local
651 _DRM_READ_ONLY, &dev_priv->warp); in mga_do_pci_dma_bootstrap()
667 _DRM_READ_ONLY, &dev_priv->primary); in mga_do_pci_dma_bootstrap()
677 if (dev_priv->primary->size != dma_bs->primary_size) { in mga_do_pci_dma_bootstrap()
680 (unsigned)dev_priv->primary->size); in mga_do_pci_dma_bootstrap()
681 dma_bs->primary_size = dev_priv->primary->size; in mga_do_pci_dma_bootstrap()
707 dev_priv->dma_access = 0; in mga_do_pci_dma_bootstrap()
708 dev_priv->wagp_enable = 0; in mga_do_pci_dma_bootstrap()
721 drm_mga_private_t *const dev_priv = in mga_do_dma_bootstrap() local
724 dev_priv->used_new_dma_init = 1; in mga_do_dma_bootstrap()
729 err = drm_legacy_addmap(dev, dev_priv->mmio_base, dev_priv->mmio_size, in mga_do_dma_bootstrap()
731 &dev_priv->mmio); in mga_do_dma_bootstrap()
739 &dev_priv->status); in mga_do_dma_bootstrap()
780 const drm_mga_private_t *const dev_priv = in mga_dma_bootstrap() local
789 if (dev_priv->agp_textures != NULL) { in mga_dma_bootstrap()
790 bootstrap->texture_handle = dev_priv->agp_textures->offset; in mga_dma_bootstrap()
791 bootstrap->texture_size = dev_priv->agp_textures->size; in mga_dma_bootstrap()
804 drm_mga_private_t *dev_priv; in mga_do_init_dma() local
808 dev_priv = dev->dev_private; in mga_do_init_dma()
811 dev_priv->clear_cmd = MGA_DWGCTL_CLEAR | MGA_ATYPE_BLK; in mga_do_init_dma()
813 dev_priv->clear_cmd = MGA_DWGCTL_CLEAR | MGA_ATYPE_RSTR; in mga_do_init_dma()
814 dev_priv->maccess = init->maccess; in mga_do_init_dma()
816 dev_priv->fb_cpp = init->fb_cpp; in mga_do_init_dma()
817 dev_priv->front_offset = init->front_offset; in mga_do_init_dma()
818 dev_priv->front_pitch = init->front_pitch; in mga_do_init_dma()
819 dev_priv->back_offset = init->back_offset; in mga_do_init_dma()
820 dev_priv->back_pitch = init->back_pitch; in mga_do_init_dma()
822 dev_priv->depth_cpp = init->depth_cpp; in mga_do_init_dma()
823 dev_priv->depth_offset = init->depth_offset; in mga_do_init_dma()
824 dev_priv->depth_pitch = init->depth_pitch; in mga_do_init_dma()
828 dev_priv->texture_offset = init->texture_offset[0]; in mga_do_init_dma()
829 dev_priv->texture_size = init->texture_size[0]; in mga_do_init_dma()
831 dev_priv->sarea = drm_legacy_getsarea(dev); in mga_do_init_dma()
832 if (!dev_priv->sarea) { in mga_do_init_dma()
837 if (!dev_priv->used_new_dma_init) { in mga_do_init_dma()
839 dev_priv->dma_access = MGA_PAGPXFER; in mga_do_init_dma()
840 dev_priv->wagp_enable = MGA_WAGP_ENABLE; in mga_do_init_dma()
842 dev_priv->status = drm_legacy_findmap(dev, init->status_offset); in mga_do_init_dma()
843 if (!dev_priv->status) { in mga_do_init_dma()
847 dev_priv->mmio = drm_legacy_findmap(dev, init->mmio_offset); in mga_do_init_dma()
848 if (!dev_priv->mmio) { in mga_do_init_dma()
852 dev_priv->warp = drm_legacy_findmap(dev, init->warp_offset); in mga_do_init_dma()
853 if (!dev_priv->warp) { in mga_do_init_dma()
857 dev_priv->primary = drm_legacy_findmap(dev, init->primary_offset); in mga_do_init_dma()
858 if (!dev_priv->primary) { in mga_do_init_dma()
870 drm_legacy_ioremap(dev_priv->warp, dev); in mga_do_init_dma()
871 drm_legacy_ioremap(dev_priv->primary, dev); in mga_do_init_dma()
875 dev_priv->sarea_priv = in mga_do_init_dma()
876 (drm_mga_sarea_t *) ((u8 *) dev_priv->sarea->handle + in mga_do_init_dma()
879 if (!dev_priv->warp->handle || in mga_do_init_dma()
880 !dev_priv->primary->handle || in mga_do_init_dma()
881 ((dev_priv->dma_access != 0) && in mga_do_init_dma()
888 ret = mga_warp_install_microcode(dev_priv); in mga_do_init_dma()
894 ret = mga_warp_init(dev_priv); in mga_do_init_dma()
900 dev_priv->prim.status = (u32 *) dev_priv->status->handle; in mga_do_init_dma()
902 mga_do_wait_for_idle(dev_priv); in mga_do_init_dma()
906 MGA_WRITE(MGA_PRIMADDRESS, dev_priv->primary->offset | MGA_DMA_GENERAL); in mga_do_init_dma()
908 …MGA_WRITE(MGA_PRIMPTR, virt_to_bus((void *)dev_priv->prim.status) | MGA_PRIMPTREN0 | /* Soft trap,… in mga_do_init_dma()
912 dev_priv->prim.start = (u8 *) dev_priv->primary->handle; in mga_do_init_dma()
913 dev_priv->prim.end = ((u8 *) dev_priv->primary->handle in mga_do_init_dma()
914 + dev_priv->primary->size); in mga_do_init_dma()
915 dev_priv->prim.size = dev_priv->primary->size; in mga_do_init_dma()
917 dev_priv->prim.tail = 0; in mga_do_init_dma()
918 dev_priv->prim.space = dev_priv->prim.size; in mga_do_init_dma()
919 dev_priv->prim.wrapped = 0; in mga_do_init_dma()
921 dev_priv->prim.last_flush = 0; in mga_do_init_dma()
922 dev_priv->prim.last_wrap = 0; in mga_do_init_dma()
924 dev_priv->prim.high_mark = 256 * DMA_BLOCK_SIZE; in mga_do_init_dma()
926 dev_priv->prim.status[0] = dev_priv->primary->offset; in mga_do_init_dma()
927 dev_priv->prim.status[1] = 0; in mga_do_init_dma()
929 dev_priv->sarea_priv->last_wrap = 0; in mga_do_init_dma()
930 dev_priv->sarea_priv->last_frame.head = 0; in mga_do_init_dma()
931 dev_priv->sarea_priv->last_frame.wrap = 0; in mga_do_init_dma()
933 if (mga_freelist_init(dev, dev_priv) < 0) { in mga_do_init_dma()
954 drm_mga_private_t *dev_priv = dev->dev_private; in mga_do_cleanup_dma() local
956 if ((dev_priv->warp != NULL) in mga_do_cleanup_dma()
957 && (dev_priv->warp->type != _DRM_CONSISTENT)) in mga_do_cleanup_dma()
958 drm_legacy_ioremapfree(dev_priv->warp, dev); in mga_do_cleanup_dma()
960 if ((dev_priv->primary != NULL) in mga_do_cleanup_dma()
961 && (dev_priv->primary->type != _DRM_CONSISTENT)) in mga_do_cleanup_dma()
962 drm_legacy_ioremapfree(dev_priv->primary, dev); in mga_do_cleanup_dma()
967 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()
1041 drm_mga_private_t *dev_priv = (drm_mga_private_t *) dev->dev_private; in mga_dma_flush() local
1051 WRAP_WAIT_WITH_RETURN(dev_priv); in mga_dma_flush()
1054 mga_do_dma_flush(dev_priv); in mga_dma_flush()
1058 int ret = mga_do_wait_for_idle(dev_priv); in mga_dma_flush()
1063 return mga_do_wait_for_idle(dev_priv); in mga_dma_flush()
1073 drm_mga_private_t *dev_priv = (drm_mga_private_t *) dev->dev_private; in mga_dma_reset() local
1077 return mga_do_dma_reset(dev_priv); in mga_dma_reset()
1113 drm_mga_private_t *dev_priv = (drm_mga_private_t *) dev->dev_private; in mga_dma_buffers() local
1136 WRAP_TEST_WITH_RETURN(dev_priv); in mga_dma_buffers()
1165 drm_mga_private_t *dev_priv = dev->dev_private; in mga_driver_dma_quiescent() local
1166 return mga_do_wait_for_idle(dev_priv); in mga_driver_dma_quiescent()