diff options
author | anholt <anholt@FreeBSD.org> | 2003-08-19 02:57:31 +0000 |
---|---|---|
committer | anholt <anholt@FreeBSD.org> | 2003-08-19 02:57:31 +0000 |
commit | 55fc74037ce1fed2313813918c5380b1c642828e (patch) | |
tree | e45c260fa868be8644bf3d316e3c7cc3cdc5a0eb /sys/dev/drm/drm_dma.h | |
parent | f9627255eea8f589c728f37d9a3a6e0040a24291 (diff) | |
download | FreeBSD-src-55fc74037ce1fed2313813918c5380b1c642828e.zip FreeBSD-src-55fc74037ce1fed2313813918c5380b1c642828e.tar.gz |
Update DRM from DRI CVS as of today. Notable changes include Radeon
suspend/resume support and Rage 128 pageflipping support (both of which require
XFree86 from CVS), along with miscellaneous cleanups.
Diffstat (limited to 'sys/dev/drm/drm_dma.h')
-rw-r--r-- | sys/dev/drm/drm_dma.h | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/sys/dev/drm/drm_dma.h b/sys/dev/drm/drm_dma.h index 99cabba..b4bf9e4 100644 --- a/sys/dev/drm/drm_dma.h +++ b/sys/dev/drm/drm_dma.h @@ -70,6 +70,7 @@ void DRM(dma_takedown)(drm_device_t *dev) /* Clear dma buffers */ for (i = 0; i <= DRM_MAX_ORDER; i++) { +#if __HAVE_PCI_DMA if (dma->bufs[i].seg_count) { DRM_DEBUG("order %d: buf_count = %d," " seg_count = %d\n", @@ -77,22 +78,27 @@ void DRM(dma_takedown)(drm_device_t *dev) dma->bufs[i].buf_count, dma->bufs[i].seg_count); for (j = 0; j < dma->bufs[i].seg_count; j++) { - DRM(free)((void *)dma->bufs[i].seglist[j], - dma->bufs[i].buf_size, - DRM_MEM_DMA); + if (dma->bufs[i].seglist[j] != NULL) + DRM(pci_free)(dev, dma->bufs[i].buf_size, + (void *)dma->bufs[i].seglist[j], + dma->bufs[i].seglist_bus[j]); } DRM(free)(dma->bufs[i].seglist, dma->bufs[i].seg_count * sizeof(*dma->bufs[0].seglist), DRM_MEM_SEGS); + DRM(free)(dma->bufs[i].seglist_bus, + dma->bufs[i].seg_count + * sizeof(*dma->bufs[0].seglist_bus), + DRM_MEM_SEGS); } - if(dma->bufs[i].buf_count) { - for(j = 0; j < dma->bufs[i].buf_count; j++) { - if(dma->bufs[i].buflist[j].dev_private) { - DRM(free)(dma->bufs[i].buflist[j].dev_private, +#endif /* __HAVE_PCI_DMA */ + + if (dma->bufs[i].buf_count) { + for (j = 0; j < dma->bufs[i].buf_count; j++) { + DRM(free)(dma->bufs[i].buflist[j].dev_private, dma->bufs[i].buflist[j].dev_priv_size, DRM_MEM_BUFS); - } } DRM(free)(dma->bufs[i].buflist, dma->bufs[i].buf_count * @@ -101,17 +107,10 @@ void DRM(dma_takedown)(drm_device_t *dev) } } - if (dma->buflist) { - DRM(free)(dma->buflist, - dma->buf_count * sizeof(*dma->buflist), - DRM_MEM_BUFS); - } - - if (dma->pagelist) { - DRM(free)(dma->pagelist, - dma->page_count * sizeof(*dma->pagelist), - DRM_MEM_PAGES); - } + DRM(free)(dma->buflist, dma->buf_count * sizeof(*dma->buflist), + DRM_MEM_BUFS); + DRM(free)(dma->pagelist, dma->page_count * sizeof(*dma->pagelist), + DRM_MEM_PAGES); DRM(free)(dev->dma, sizeof(*dev->dma), DRM_MEM_DRIVER); dev->dma = NULL; } @@ -161,6 +160,9 @@ int DRM(irq_install)( drm_device_t *dev, int irq ) if ( !irq ) return DRM_ERR(EINVAL); + if (dev->dev_private == NULL) + return DRM_ERR(EINVAL); + DRM_LOCK; if ( dev->irq ) { DRM_UNLOCK; @@ -215,7 +217,7 @@ int DRM(irq_install)( drm_device_t *dev, int irq ) if ( retcode ) { #elif defined(__NetBSD__) dev->irqh = pci_intr_establish(&dev->pa.pa_pc, dev->ih, IPL_TTY, - (int (*)(DRM_IRQ_ARGS))DRM(dma_service), dev); + (irqreturn_t (*)(DRM_IRQ_ARGS))DRM(dma_service), dev); if ( !dev->irqh ) { #endif DRM_LOCK; |