Skip site navigation (1)Skip section navigation (2)
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>