diff options
| author | bjs <bjs@NetBSD.org> | 2008-06-20 05:53:46 +0000 |
|---|---|---|
| committer | bjs <bjs@NetBSD.org> | 2008-06-20 05:53:46 +0000 |
| commit | 16e84d5575df7d0ababe2892eea06b9b6ec2a487 (patch) | |
| tree | 50421a88b16f879a94f6011b53289ca81f5aae98 /sys/dev | |
| parent | 0814e53527e69429f2fb94d2709c8c5879fd876f (diff) | |
- Don't use btop, as only three (?) platforms define this macro; use
round_page(x) >> PAGE_SHIFT instead.
- Add bus_space_mmap() in drm_vm.c to give a proper cookie to the device pager;
this gets rid of one of the two #ifdef macppc conditionals.
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/drm/drm_bufs.c | 6 | ||||
| -rw-r--r-- | sys/dev/drm/drm_pci.c | 7 | ||||
| -rw-r--r-- | sys/dev/drm/drm_vm.c | 18 |
3 files changed, 15 insertions, 16 deletions
diff --git a/sys/dev/drm/drm_bufs.c b/sys/dev/drm/drm_bufs.c index 1eb4be15cfc..2646be3aedb 100644 --- a/sys/dev/drm/drm_bufs.c +++ b/sys/dev/drm/drm_bufs.c @@ -1,4 +1,4 @@ -/* $NetBSD: drm_bufs.c,v 1.8 2008/06/20 00:14:28 bjs Exp $ */ +/* $NetBSD: drm_bufs.c,v 1.9 2008/06/20 05:53:46 bjs Exp $ */ /* drm_bufs.h -- Generic buffer template -*- linux-c -*- * Created: Thu Nov 23 03:10:50 2000 by gareth@valinux.com @@ -34,7 +34,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: drm_bufs.c,v 1.8 2008/06/20 00:14:28 bjs Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_bufs.c,v 1.9 2008/06/20 05:53:46 bjs Exp $"); /* __FBSDID("$FreeBSD: src/sys/dev/drm/drm_bufs.c,v 1.3 2005/11/28 23:13:52 anholt Exp $"); */ @@ -178,7 +178,7 @@ int drm_addmap(drm_device_t * dev, unsigned long offset, unsigned long size, #endif break; case _DRM_SHM: - map->mem = drm_dmamem_pgalloc(dev, btop(map->size)); + map->mem = drm_dmamem_pgalloc(dev, round_page(map->size) >> PAGE_SHIFT); DRM_DEBUG( "%lu %d %p\n", map->size, drm_order(map->size), map->handle ); if ( map->mem == NULL ) { diff --git a/sys/dev/drm/drm_pci.c b/sys/dev/drm/drm_pci.c index 8e8129a8ded..f59f73a114f 100644 --- a/sys/dev/drm/drm_pci.c +++ b/sys/dev/drm/drm_pci.c @@ -1,4 +1,4 @@ -/* $NetBSD: drm_pci.c,v 1.11 2008/06/20 00:14:28 bjs Exp $ */ +/* $NetBSD: drm_pci.c,v 1.12 2008/06/20 05:53:46 bjs Exp $ */ /* * Copyright 2003 Eric Anholt. @@ -24,7 +24,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: drm_pci.c,v 1.11 2008/06/20 00:14:28 bjs Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_pci.c,v 1.12 2008/06/20 05:53:46 bjs Exp $"); /* __FBSDID("$FreeBSD: src/sys/dev/drm/drm_pci.c,v 1.2 2005/11/28 23:13:52 anholt Exp $"); */ @@ -41,7 +41,7 @@ drm_pci_alloc(drm_device_t *dev, size_t size, size_t align, dma_addr_t maxaddr) if (h == NULL) return NULL; - h->mem = drm_dmamem_pgalloc(dev, round_page(btop(size))); + h->mem = drm_dmamem_pgalloc(dev, round_page(size) >> PAGE_SHIFT); if (h->mem == NULL) { free(h, M_DRM); return NULL; @@ -49,6 +49,7 @@ drm_pci_alloc(drm_device_t *dev, size_t size, size_t align, dma_addr_t maxaddr) h->busaddr = DRM_DMAMEM_BUSADDR(h->mem); h->vaddr = DRM_DMAMEM_KERNADDR(h->mem); + h->size = h->mem->dd_dmam->dm_mapsize; return h; diff --git a/sys/dev/drm/drm_vm.c b/sys/dev/drm/drm_vm.c index ad879d15093..d19d8615eed 100644 --- a/sys/dev/drm/drm_vm.c +++ b/sys/dev/drm/drm_vm.c @@ -1,4 +1,4 @@ -/* $NetBSD: drm_vm.c,v 1.11 2008/06/20 00:14:28 bjs Exp $ */ +/* $NetBSD: drm_vm.c,v 1.12 2008/06/20 05:53:46 bjs Exp $ */ /*- * Copyright 2003 Eric Anholt @@ -24,7 +24,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: drm_vm.c,v 1.11 2008/06/20 00:14:28 bjs Exp $"); +__KERNEL_RCSID(0, "$NetBSD: drm_vm.c,v 1.12 2008/06/20 05:53:46 bjs Exp $"); /* __FBSDID("$FreeBSD: src/sys/dev/drm/drm_vm.c,v 1.2 2005/11/28 23:13:53 anholt Exp $"); */ @@ -40,7 +40,7 @@ paddr_t drm_mmap(dev_t kdev, off_t offset, int prot) drm_local_map_t *map; drm_file_t *priv; drm_map_type_t type; - paddr_t phys; + /* paddr_t phys; */ uintptr_t roffset; DRM_LOCK(); @@ -63,6 +63,7 @@ paddr_t drm_mmap(dev_t kdev, off_t offset, int prot) unsigned long page = offset >> PAGE_SHIFT; unsigned long pphys = dma->pagelist[page]; +/* XXX fixme */ #ifdef macppc return pphys; #else @@ -118,7 +119,8 @@ paddr_t drm_mmap(dev_t kdev, off_t offset, int prot) case _DRM_FRAME_BUFFER: case _DRM_REGISTERS: case _DRM_AGP: - phys = offset + map->offset; + return bus_space_mmap(map->bst, offset + map->offset, 0, prot, + BUS_SPACE_MAP_LINEAR); break; /* All _DRM_CONSISTENT and _DRM_SHM mappings have a 0 offset */ case _DRM_CONSISTENT: @@ -137,12 +139,8 @@ paddr_t drm_mmap(dev_t kdev, off_t offset, int prot) break; default: DRM_ERROR("bad map type %d\n", type); - return -1; /* This should never happen. */ + break; } -#ifdef macppc - return phys; -#else - return atop(phys); -#endif + return -1; /* This should never happen. */ } |
