Skeleton nv drm driver, to enable DMA in EXA. (Lars Knoll, minor updates by

me)
main
Adam Jackson 2005-10-06 23:31:29 +00:00
parent 908ad0ed96
commit 62a4673034
5 changed files with 339 additions and 2 deletions

View File

@ -50,7 +50,8 @@ endif
MACHINE := $(shell uname -m)
# Modules for all architectures
MODULE_LIST := drm.o tdfx.o r128.o radeon.o mga.o sis.o savage.o via.o mach64.o
MODULE_LIST := drm.o tdfx.o r128.o radeon.o mga.o sis.o savage.o via.o \
mach64.o nv.o
# Modules only for ix86 architectures
ifneq (,$(findstring 86,$(MACHINE)))
@ -97,11 +98,13 @@ VIASHARED = via_drm.h via_drv.h via_mm.h via_ds.h \
MACH64HEADERS = mach64_drv.h mach64_drm.h $(DRMHEADERS)
MACH64SHARED = mach64_drv.h mach64_drm.h mach64_dma.c \
mach64_irq.c mach64_state.c
NVHEADERS = nv_drv.h $(DRMHEADERS)
NVSHARED = nv_drv.h
FFBHEADERS = ffb_drv.h $(DRMHEADERS)
SHAREDSRC = $(DRMSHARED) $(MGASHARED) $(R128SHARED) $(RADEONSHARED) \
$(SISSHARED) $(TDFXSHARED) $(VIASHARED) $(MACH64SHARED) \
$(I915SHARED) $(SAVAGESHARED)
$(I915SHARED) $(SAVAGESHARED) $(NVSHARED)
PROGS = dristat drmstat
@ -330,6 +333,7 @@ CONFIG_DRM_FFB := n
CONFIG_DRM_SAVAGE := n
CONFIG_DRM_VIA := n
CONFIG_DRM_MACH64 := n
CONFIG_DRM_NV := n
# Enable module builds for the modules requested/supported.
@ -360,6 +364,9 @@ endif
ifneq (,$(findstring mga,$(DRM_MODULES)))
CONFIG_DRM_MGA := m
endif
ifneq (,$(findstring nv,$(DRM_MODULES)))
CONFIG_DRM_NV := m
endif
# These require AGP support
@ -391,6 +398,7 @@ $(ffb-objs): $(FFBHEADERS)
$(savage-objs): $(SAVAGEHEADERS)
$(via-objs): $(VIAHEADERS)
$(mach64-objs): $(MACH64HEADERS)
$(nv-objs): $(NVHEADERS)
endif

View File

@ -25,6 +25,7 @@ savage-objs := savage_drv.o savage_bci.o savage_state.o
via-objs := via_irq.o via_drv.o via_ds.o via_map.o via_mm.o via_dma.o via_verifier.o \
via_video.o via_dmablit.o
mach64-objs := mach64_drv.o mach64_dma.o mach64_irq.o mach64_state.o
nv-objs := nv_drv.o
ifeq ($(CONFIG_COMPAT),y)
drm-objs += drm_ioc32.o
@ -47,3 +48,4 @@ obj-$(CONFIG_DRM_FFB) += ffb.o
obj-$(CONFIG_DRM_SAVAGE)+= savage.o
obj-$(CONFIG_DRM_VIA) += via.o
obj-$(CONFIG_DRM_MACH64)+= mach64.o
obj-$(CONFIG_DRM_NV) += nv.o

95
linux-core/nv_drv.c Normal file
View File

@ -0,0 +1,95 @@
/* nv_drv.c -- nv driver -*- linux-c -*-
* Created: Thu Oct 7 10:38:32 1999 by faith@precisioninsight.com
*
* Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
* Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
* Copyright 2005 Lars Knoll <lars@trolltech.com>
* All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* DEALINGS IN THE SOFTWARE.
*
* Authors:
* Rickard E. (Rik) Faith <faith@valinux.com>
* Daryll Strauss <daryll@valinux.com>
* Gareth Hughes <gareth@valinux.com>
* Lars Knoll <lars@trolltech.com>
*/
#include <linux/config.h>
#include "drmP.h"
#include "nv_drv.h"
#include "drm_pciids.h"
static struct pci_device_id pciidlist[] = {
nv_PCI_IDS
};
static int probe(struct pci_dev *pdev, const struct pci_device_id *ent);
static struct drm_driver driver = {
.driver_features = DRIVER_USE_MTRR | DRIVER_USE_AGP,
.reclaim_buffers = drm_core_reclaim_buffers,
.get_map_ofs = drm_core_get_map_ofs,
.get_reg_ofs = drm_core_get_reg_ofs,
.fops = {
.owner = THIS_MODULE,
.open = drm_open,
.release = drm_release,
.ioctl = drm_ioctl,
.mmap = drm_mmap,
.poll = drm_poll,
.fasync = drm_fasync,
},
.pci_driver = {
.name = DRIVER_NAME,
.id_table = pciidlist,
.probe = probe,
.remove = __devexit_p(drm_cleanup_pci),
},
.name = DRIVER_NAME,
.desc = DRIVER_DESC,
.date = DRIVER_DATE,
.major = DRIVER_MAJOR,
.minor = DRIVER_MINOR,
.patchlevel = DRIVER_PATCHLEVEL,
};
static int probe(struct pci_dev *pdev, const struct pci_device_id *ent)
{
return drm_get_dev(pdev, ent, &driver);
}
static int __init nv_init(void)
{
return drm_init(&driver, pciidlist);
}
static void __exit nv_exit(void)
{
drm_exit(&driver);
}
module_init(nv_init);
module_exit(nv_exit);
MODULE_AUTHOR(DRIVER_AUTHOR);
MODULE_DESCRIPTION(DRIVER_DESC);
MODULE_LICENSE("GPL and additional rights");

View File

@ -230,3 +230,183 @@
0x105d 0x2339 IMAGINE_128_2 "Imagine 128-II"
0x105d 0x493d IMAGINE_T2R "Ticket to Ride"
0x105d 0x5348 IMAGINE_REV4 "Revolution IV"
[nv]
0x10DE 0x0020 NV04 "NVidia RIVA TNT"
0x10DE 0x0028 NV04 "NVidia RIVA TNT2"
0x10DE 0x002A NV04 "NVidia Unknown TNT2"
0x10DE 0x002C NV04 "NVidia Vanta"
0x10DE 0x0029 NV04 "NVidia RIVA TNT2 Ultra"
0x10DE 0x002D NV04 "NVidia RIVA TNT2 Model 64"
0x10DE 0x00A0 NV04 "NVidia Aladdin TNT2"
0x10DE 0x0100 NV10 "NVidia GeForce 256"
0x10DE 0x0101 NV10 "NVidia GeForce DDR"
0x10DE 0x0103 NV10 "NVidia Quadro"
0x10DE 0x0110 NV10 "NVidia GeForce2 MX/MX 400"
0x10DE 0x0111 NV10 "NVidia GeForce2 MX 100/200"
0x10DE 0x0112 NV10 "NVidia GeForce2 Go"
0x10DE 0x0113 NV10 "NVidia Quadro2 MXR/EX/Go"
0x10DE 0x0150 NV10 "NVidia GeForce2 GTS"
0x10DE 0x0151 NV10 "NVidia GeForce2 Ti"
0x10DE 0x0152 NV10 "NVidia GeForce2 Ultra"
0x10DE 0x0153 NV10 "NVidia Quadro2 Pro"
0x10DE 0x0170 NV10 "NVidia GeForce4 MX 460"
0x10DE 0x0171 NV10 "NVidia GeForce4 MX 440"
0x10DE 0x0172 NV10 "NVidia GeForce4 MX 420"
0x10DE 0x0173 NV10 "NVidia GeForce4 MX 440-SE"
0x10DE 0x0174 NV10 "NVidia GeForce4 440 Go"
0x10DE 0x0175 NV10 "NVidia GeForce4 420 Go"
0x10DE 0x0176 NV10 "NVidia GeForce4 420 Go 32M"
0x10DE 0x0177 NV10 "NVidia GeForce4 460 Go"
0x10DE 0x0178 NV10 "NVidia Quadro4 550 XGL"
0x10DE 0x0179 NV10 "NVidia GeForce4"
0x10DE 0x017A NV10 "NVidia Quadro4 NVS"
0x10DE 0x017C NV10 "NVidia Quadro4 500 GoGL"
0x10DE 0x017D NV10 "NVidia GeForce4 410 Go 16M"
0x10DE 0x0181 NV10 "NVidia GeForce4 MX 440 with AGP8X"
0x10DE 0x0182 NV10 "NVidia GeForce4 MX 440SE with AGP8X"
0x10DE 0x0183 NV10 "NVidia GeForce4 MX 420 with AGP8X"
0x10DE 0x0185 NV10 "NVidia GeForce4 MX 4000"
0x10DE 0x0186 NV10 "NVidia GeForce4 448 Go"
0x10DE 0x0187 NV10 "NVidia GeForce4 488 Go"
0x10DE 0x0188 NV10 "NVidia Quadro4 580 XGL"
0x10DE 0x0189 NV10 "NVidia GeForce4 MX with AGP8X (Mac)"
0x10DE 0x018A NV10 "NVidia Quadro4 280 NVS"
0x10DE 0x018B NV10 "NVidia Quadro4 380 XGL"
0x10DE 0x018C NV10 "NVidia Quadro NVS 50 PCI"
0x10DE 0x018D NV10 "NVidia GeForce4 448 Go"
0x10DE 0x01A0 NV10 "NVidia GeForce2 Integrated GPU"
0x10DE 0x01F0 NV10 "NVidia GeForce4 MX Integrated GPU"
0x10DE 0x0200 NV20 "NVidia GeForce3"
0x10DE 0x0201 NV20 "NVidia GeForce3 Ti 200"
0x10DE 0x0202 NV20 "NVidia GeForce3 Ti 500"
0x10DE 0x0203 NV20 "NVidia Quadro DCC"
0x10DE 0x0250 NV20 "NVidia GeForce4 Ti 4600"
0x10DE 0x0251 NV20 "NVidia GeForce4 Ti 4400"
0x10DE 0x0252 NV20 "NVidia 0x0252"
0x10DE 0x0253 NV20 "NVidia GeForce4 Ti 4200"
0x10DE 0x0258 NV20 "NVidia Quadro4 900 XGL"
0x10DE 0x0259 NV20 "NVidia Quadro4 750 XGL"
0x10DE 0x025B NV20 "NVidia Quadro4 700 XGL"
0x10DE 0x0280 NV20 "NVidia GeForce4 Ti 4800"
0x10DE 0x0281 NV20 "NVidia GeForce4 Ti 4200 with AGP8X"
0x10DE 0x0282 NV20 "NVidia GeForce4 Ti 4800 SE"
0x10DE 0x0286 NV20 "NVidia GeForce4 4200 Go"
0x10DE 0x028C NV20 "NVidia Quadro4 700 GoGL"
0x10DE 0x0288 NV20 "NVidia Quadro4 980 XGL"
0x10DE 0x0289 NV20 "NVidia Quadro4 780 XGL"
0x10DE 0x0301 NV30 "NVidia GeForce FX 5800 Ultra"
0x10DE 0x0302 NV30 "NVidia GeForce FX 5800"
0x10DE 0x0308 NV30 "NVidia Quadro FX 2000"
0x10DE 0x0309 NV30 "NVidia Quadro FX 1000"
0x10DE 0x0311 NV30 "NVidia GeForce FX 5600 Ultra"
0x10DE 0x0312 NV30 "NVidia GeForce FX 5600"
0x10DE 0x0313 NV30 "NVidia 0x0313"},
0x10DE 0x0314 NV30 "NVidia GeForce FX 5600SE"
0x10DE 0x0316 NV30 "NVidia 0x0316"
0x10DE 0x0317 NV30 "NVidia 0x0317"
0x10DE 0x031A NV30 "NVidia GeForce FX Go5600"
0x10DE 0x031B NV30 "NVidia GeForce FX Go5650"
0x10DE 0x031C NV30 "NVidia Quadro FX Go700"
0x10DE 0x031D NV30 "NVidia 0x031D"
0x10DE 0x031E NV30 "NVidia 0x031E"
0x10DE 0x031F NV30 "NVidia 0x031F"
0x10DE 0x0320 NV30 "NVidia GeForce FX 5200"
0x10DE 0x0321 NV30 "NVidia GeForce FX 5200 Ultra"
0x10DE 0x0322 NV30 "NVidia GeForce FX 5200"
0x10DE 0x0323 NV30 "NVidia GeForce FX 5200SE"
0x10DE 0x0324 NV30 "NVidia GeForce FX Go5200"
0x10DE 0x0325 NV30 "NVidia GeForce FX Go5250"
0x10DE 0x0326 NV30 "NVidia GeForce FX 5500"
0x10DE 0x0327 NV30 "NVidia GeForce FX 5100"
0x10DE 0x0328 NV30 "NVidia GeForce FX Go5200 32M/64M"
0x10DE 0x0329 NV30 "NVidia GeForce FX 5200 (Mac)"
0x10DE 0x032A NV30 "NVidia Quadro NVS 280 PCI"
0x10DE 0x032B NV30 "NVidia Quadro FX 500/600 PCI"
0x10DE 0x032C NV30 "NVidia GeForce FX Go53xx Series"
0x10DE 0x032D NV30 "NVidia GeForce FX Go5100"
0x10DE 0x032F NV30 "NVidia 0x032F"
0x10DE 0x0330 NV30 "NVidia GeForce FX 5900 Ultra"
0x10DE 0x0331 NV30 "NVidia GeForce FX 5900"
0x10DE 0x0332 NV30 "NVidia GeForce FX 5900XT"
0x10DE 0x0333 NV30 "NVidia GeForce FX 5950 Ultra"
0x10DE 0x033F NV30 "NVidia Quadro FX 700"
0x10DE 0x0334 NV30 "NVidia GeForce FX 5900ZT"
0x10DE 0x0338 NV30 "NVidia Quadro FX 3000"
0x10DE 0x0341 NV30 "NVidia GeForce FX 5700 Ultra"
0x10DE 0x0342 NV30 "NVidia GeForce FX 5700"
0x10DE 0x0343 NV30 "NVidia GeForce FX 5700LE"
0x10DE 0x0344 NV30 "NVidia GeForce FX 5700VE"
0x10DE 0x0345 NV30 "NVidia 0x0345"
0x10DE 0x0347 NV30 "NVidia GeForce FX Go5700"
0x10DE 0x0348 NV30 "NVidia GeForce FX Go5700"
0x10DE 0x0349 NV30 "NVidia 0x0349"
0x10DE 0x034B NV30 "NVidia 0x034B"
0x10DE 0x034C NV30 "NVidia Quadro FX Go1000"
0x10DE 0x034E NV30 "NVidia Quadro FX 1100"
0x10DE 0x034F NV30 "NVidia 0x034F"
0x10DE 0x0040 NV40 "NVidia GeForce 6800 Ultra"
0x10DE 0x0041 NV40 "NVidia GeForce 6800"
0x10DE 0x0042 NV40 "NVidia GeForce 6800 LE"
0x10DE 0x0043 NV40 "NVidia 0x0043"
0x10DE 0x0045 NV40 "NVidia GeForce 6800 GT"
0x10DE 0x0046 NV40 "NVidia GeForce 6800 GT"
0x10DE 0x0049 NV40 "NVidia 0x0049"
0x10DE 0x004E NV40 "NVidia Quadro FX 4000"
0x10DE 0x00C0 NV40 "NVidia 0x00C0"
0x10DE 0x00C1 NV40 "NVidia GeForce 6800"
0x10DE 0x00C2 NV40 "NVidia GeForce 6800 LE"
0x10DE 0x00C8 NV40 "NVidia GeForce Go 6800"
0x10DE 0x00C9 NV40 "NVidia GeForce Go 6800 Ultra"
0x10DE 0x00CC NV40 "NVidia Quadro FX Go1400"
0x10DE 0x00CD NV40 "NVidia Quadro FX 3450/4000 SDI"
0x10DE 0x00CE NV40 "NVidia Quadro FX 1400"
0x10de 0x00f0 NV40 "Nvidia GeForce 6600 GT"
0x10de 0x00f1 NV40 "Nvidia GeForce 6600 GT"
0x10DE 0x0140 NV40 "NVidia GeForce 6600 GT"
0x10DE 0x0141 NV40 "NVidia GeForce 6600"
0x10DE 0x0142 NV40 "NVidia GeForce 6600 LE"
0x10DE 0x0143 NV40 "NVidia 0x0143"
0x10DE 0x0144 NV40 "NVidia GeForce Go 6600"
0x10DE 0x0145 NV40 "NVidia GeForce 6610 XL"
0x10DE 0x0146 NV40 "NVidia GeForce Go 6600 TE/6200 TE"
0x10DE 0x0147 NV40 "NVidia GeForce 6700 XL"
0x10DE 0x0148 NV40 "NVidia GeForce Go 6600"
0x10DE 0x0149 NV40 "NVidia GeForce Go 6600 GT"
0x10DE 0x014B NV40 "NVidia 0x014B"
0x10DE 0x014C NV40 "NVidia 0x014C"
0x10DE 0x014D NV40 "NVidia 0x014D"
0x10DE 0x014E NV40 "NVidia Quadro FX 540"
0x10DE 0x014F NV40 "NVidia GeForce 6200"
0x10DE 0x0160 NV40 "NVidia 0x0160"
0x10DE 0x0161 NV40 "NVidia GeForce 6200 TurboCache(TM)"
0x10DE 0x0162 NV40 "NVidia GeForce 6200SE TurboCache(TM)"
0x10DE 0x0163 NV40 "NVidia 0x0163"
0x10DE 0x0164 NV40 "NVidia GeForce Go 6200"
0x10DE 0x0165 NV40 "NVidia Quadro NVS 285"
0x10DE 0x0166 NV40 "NVidia GeForce Go 6400"
0x10DE 0x0167 NV40 "NVidia GeForce Go 6200"
0x10DE 0x0168 NV40 "NVidia GeForce Go 6400"
0x10DE 0x0169 NV40 "NVidia 0x0169"
0x10DE 0x016B NV40 "NVidia 0x016B"
0x10DE 0x016C NV40 "NVidia 0x016C"
0x10DE 0x016D NV40 "NVidia 0x016D"
0x10DE 0x016E NV40 "NVidia 0x016E"
0x10DE 0x0210 NV40 "NVidia 0x0210"
0x10DE 0x0211 NV40 "NVidia GeForce 6800"
0x10DE 0x0212 NV40 "NVidia GeForce 6800 LE"
0x10DE 0x0215 NV40 "NVidia GeForce 6800 GT"
0x10DE 0x0220 NV40 "NVidia 0x0220"
0x10DE 0x0221 NV40 "NVidia GeForce 6200"
0x10DE 0x0222 NV40 "NVidia 0x0222"
0x10DE 0x0228 NV40 "NVidia 0x0228"
0x10DE 0x0090 NV40 "NVidia 0x0090"
0x10DE 0x0091 NV40 "NVidia GeForce 7800 GTX"
0x10DE 0x0092 NV40 "NVidia 0x0092"
0x10DE 0x0093 NV40 "NVidia 0x0093"
0x10DE 0x0094 NV40 "NVidia 0x0094"
0x10DE 0x0098 NV40 "NVidia 0x0098"
0x10DE 0x0099 NV40 "NVidia GeForce Go 7800 GTX"
0x10DE 0x009C NV40 "NVidia 0x009C"
0x10DE 0x009D NV40 "NVidia Quadro FX 4500"
0x10DE 0x009E NV40 "NVidia 0x009E"

52
shared-core/nv_drv.h Normal file
View File

@ -0,0 +1,52 @@
/* nv_drv.h -- NV DRM template customization -*- linux-c -*-
* Created: Wed Feb 14 12:32:32 2001 by gareth@valinux.com
*
* Copyright 2005 Lars Knoll <lars@trolltech.com>
* All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice (including the next
* paragraph) shall be included in all copies or substantial portions of the
* Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* THE AUTHORS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
* Authors:
* Lars Knoll <lars@trolltech.com>
*/
#ifndef __NV_H__
#define __NV_H__
/* General customization:
*/
#define DRIVER_AUTHOR "Lars Knoll"
#define DRIVER_NAME "nv"
#define DRIVER_DESC "NV"
#define DRIVER_DATE "20051006"
#define DRIVER_MAJOR 0
#define DRIVER_MINOR 0
#define DRIVER_PATCHLEVEL 1
#define NV04 04
#define NV10 10
#define NV20 20
#define NV30 30
#define NV40 40
#endif