Lines Matching refs:dev_priv

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