Date: Tue, 25 Feb 2003 19:28:09 +0100 From: Maxime Henrion <mux@freebsd.org> To: current@freebsd.org Subject: patch for the nVidia driver and -CURRENT Message-ID: <20030225182809.GA18565@elvis.mu.org>
next in thread | raw e-mail | index | archive | help
--X1bOJ3K7DJ5YkBrT
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Hi all,
Recent interface changes made the nVidia driver unbuildable on -CURRENT.
The attached patch should make it work as it used to. Please let me
know if it doesn't.
Cheers,
Maxime
--X1bOJ3K7DJ5YkBrT
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="nvidia.patch"
diff -u NVIDIA_FreeBSD-1.0-3203/src/nv-freebsd.h nvidia/src/nv-freebsd.h
--- NVIDIA_FreeBSD-1.0-3203/src/nv-freebsd.h Wed Oct 30 15:30:58 2002
+++ nvidia/src/nv-freebsd.h Tue Feb 25 00:00:48 2003
@@ -86,6 +83,7 @@
#if __FreeBSD_version >= 500000
#include <sys/mutex.h>
+#include <sys/filedesc.h>
#include <dev/pci/pcireg.h>
#include <dev/pci/pcivar.h>
@@ -306,7 +304,8 @@
int nvidia_open_dev (struct nvidia_softc *);
int nvidia_close_ctl (dev_t, d_thread_t *);
int nvidia_close_dev (struct nvidia_softc *, dev_t, d_thread_t *);
-int nvidia_mmap_dev (struct nvidia_softc *, vm_offset_t);
+int nvidia_mmap_dev (struct nvidia_softc *, vm_offset_t,
+ vm_offset_t *);
#endif /* __NV_FREEBSD_H__ */
diff -u NVIDIA_FreeBSD-1.0-3203/src/nvidia_dev.c nvidia/src/nvidia_dev.c
--- NVIDIA_FreeBSD-1.0-3203/src/nvidia_dev.c Wed Oct 30 15:30:58 2002
+++ nvidia/src/nvidia_dev.c Mon Feb 24 23:59:21 2003
@@ -135,6 +135,7 @@
int nvidia_dev_mmap(
dev_t dev,
vm_offset_t offset,
+ vm_offset_t *paddr,
int nprot
)
{
@@ -148,7 +149,7 @@
nv = sc->nv_state;
nv_lock_api(nv);
- status = nvidia_mmap_dev(sc, offset);
+ status = nvidia_mmap_dev(sc, offset, paddr);
nv_unlock_api(nv);
return status;
diff -u NVIDIA_FreeBSD-1.0-3203/src/nvidia_subr.c nvidia/src/nvidia_subr.c
--- NVIDIA_FreeBSD-1.0-3203/src/nvidia_subr.c Wed Oct 30 15:30:58 2002
+++ nvidia/src/nvidia_subr.c Tue Feb 25 00:00:14 2003
@@ -1401,7 +1405,8 @@
int nvidia_mmap_dev(
struct nvidia_softc *sc,
- vm_offset_t offset
+ vm_offset_t offset,
+ vm_offset_t *paddr
)
{
nv_alloc_t *at;
@@ -1412,14 +1417,20 @@
* are physical addresses and mapped into user-space directly. We can
* only do some basic sanity checking here.
*/
- if (IS_FB_OFFSET(nv, offset, PAGE_SIZE))
- return atop(offset);
+ if (IS_FB_OFFSET(nv, offset, PAGE_SIZE)) {
+ *paddr = offset;
+ return 0;
+ }
- if (IS_REG_OFFSET(nv, offset, PAGE_SIZE))
- return atop(offset);
+ if (IS_REG_OFFSET(nv, offset, PAGE_SIZE)) {
+ *paddr = offset;
+ return 0;
+ }
- if (IS_AGP_OFFSET(nv, offset, PAGE_SIZE))
- return atop(offset);
+ if (IS_AGP_OFFSET(nv, offset, PAGE_SIZE)) {
+ *paddr = offset;
+ return 0;
+ }
/*
* If the offset does not fall into any of the relevant apertures, we
@@ -1431,7 +1442,8 @@
SLIST_FOREACH(at, &sc->alloc_list, list) {
if (offset >= at->address &&
offset < at->address + at->size)
- return atop(vtophys(offset));
+ *paddr = vtophys(offset);
+ return 0;
}
return -1;
--X1bOJ3K7DJ5YkBrT--
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030225182809.GA18565>
