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>