summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorbjs <bjs@NetBSD.org>2008-06-20 05:53:46 +0000
committerbjs <bjs@NetBSD.org>2008-06-20 05:53:46 +0000
commit16e84d5575df7d0ababe2892eea06b9b6ec2a487 (patch)
tree50421a88b16f879a94f6011b53289ca81f5aae98 /sys/dev
parent0814e53527e69429f2fb94d2709c8c5879fd876f (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.c6
-rw-r--r--sys/dev/drm/drm_pci.c7
-rw-r--r--sys/dev/drm/drm_vm.c18
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. */
}