diff options
Diffstat (limited to 'sys/dev/pci/drm/drm_vm.c')
-rw-r--r-- | sys/dev/pci/drm/drm_vm.c | 67 |
1 files changed, 13 insertions, 54 deletions
diff --git a/sys/dev/pci/drm/drm_vm.c b/sys/dev/pci/drm/drm_vm.c index 3e03157c537..be64d78b8c6 100644 --- a/sys/dev/pci/drm/drm_vm.c +++ b/sys/dev/pci/drm/drm_vm.c @@ -28,42 +28,25 @@ #include "drmP.h" #include "drm.h" -#if defined(__FreeBSD__) && __FreeBSD_version >= 500102 -int -drm_mmap(struct cdev *kdev, vm_offset_t offset, vm_paddr_t *paddr, - int prot) -#elif defined(__FreeBSD__) -int -drm_mmap(dev_t kdev, vm_offset_t offset, int prot) -#elif defined(__NetBSD__) || defined(__OpenBSD__) paddr_t drm_mmap(dev_t kdev, off_t offset, int prot) -#endif { drm_device_t *dev = drm_get_device_from_kdev(kdev); drm_local_map_t *map; drm_file_t *priv; drm_map_type_t type; -#ifdef __FreeBSD__ - vm_paddr_t phys; -#else paddr_t phys; -#endif DRM_LOCK(); -#ifdef __OpenBSD__ priv = drm_find_file_by_minor(dev, minor(kdev)); -#else - priv = drm_find_file_by_proc(dev, DRM_CURPROC); -#endif DRM_UNLOCK(); if (priv == NULL) { DRM_ERROR("can't find authenticator\n"); - return EINVAL; + return (EINVAL); } if (!priv->authenticated) - return EACCES; + return (EACCES); if (dev->dma && offset >= 0 && offset < ptoa(dev->dma->page_count)) { drm_device_dma_t *dma = dev->dma; @@ -75,15 +58,10 @@ drm_mmap(dev_t kdev, off_t offset, int prot) unsigned long phys = dma->pagelist[page]; DRM_SPINUNLOCK(&dev->dma_lock); -#if defined(__FreeBSD__) && __FreeBSD_version >= 500102 - *paddr = phys; - return 0; -#else - return atop(phys); -#endif + return (atop(phys)); } else { DRM_SPINUNLOCK(&dev->dma_lock); - return -1; + return (-1); } } @@ -108,16 +86,12 @@ drm_mmap(dev_t kdev, off_t offset, int prot) if (map == NULL) { DRM_UNLOCK(); DRM_DEBUG("can't find map\n"); - return -1; + return (-1); } -#ifdef __OpenBSD__ - if (((map->flags&_DRM_RESTRICTED) && priv->master == 0)) { -#else - if (((map->flags&_DRM_RESTRICTED) && !DRM_SUSER(DRM_CURPROC))) { -#endif + if (((map->flags & _DRM_RESTRICTED) && priv->master == 0)) { DRM_UNLOCK(); DRM_DEBUG("restricted map\n"); - return -1; + return (-1); } type = map->type; DRM_UNLOCK(); @@ -128,35 +102,20 @@ drm_mmap(dev_t kdev, off_t offset, int prot) case _DRM_AGP: phys = offset + map->offset; break; -#ifdef __FreeBSD__ - case _DRM_CONSISTENT: - phys = vtophys((char *)map->handle + (offset - map->offset)); - break; - case _DRM_SCATTER_GATHER: - case _DRM_SHM: - phys = vtophys(offset); - break; -#else /* XXX unify all the bus_dmamem_mmap bits */ case _DRM_SCATTER_GATHER: - return bus_dmamem_mmap(dev->pa.pa_dmat, dev->sg->mem->sg_segs, + return (bus_dmamem_mmap(dev->pa.pa_dmat, dev->sg->mem->sg_segs, dev->sg->mem->sg_nsegs, map->offset - dev->sg->handle + - offset, prot, BUS_DMA_NOWAIT); + offset, prot, BUS_DMA_NOWAIT)); case _DRM_SHM: case _DRM_CONSISTENT: - return bus_dmamem_mmap(dev->pa.pa_dmat, &map->dmah->seg, 1, - offset, prot, BUS_DMA_NOWAIT); -#endif + return (bus_dmamem_mmap(dev->pa.pa_dmat, &map->dmah->seg, 1, + offset, prot, BUS_DMA_NOWAIT)); default: DRM_ERROR("bad map type %d\n", type); - return -1; /* This should never happen. */ + return (-1); /* This should never happen. */ } -#if defined(__FreeBSD__) && __FreeBSD_version >= 500102 - *paddr = phys; - return 0; -#else - return atop(phys); -#endif + return (atop(phys)); } |