From 30acb90a6077798b1e0c4927273067500905d6d1 Mon Sep 17 00:00:00 2001 From: Stephane Marchesin Date: Sun, 3 Dec 2006 10:02:54 +0100 Subject: Merge the pciid work. Add getparams for AGP and FB physical adresses. Fix the MEM_ALLOC issue properly. Fix context switches for nv44. Change the DRM version to 0.0.1. --- shared-core/drm_pciids.txt | 371 +++++++++++++++++++++++--------------------- shared-core/nouveau_drm.h | 18 ++- shared-core/nouveau_drv.h | 8 +- shared-core/nouveau_fifo.c | 41 +++-- shared-core/nouveau_mem.c | 16 +- shared-core/nouveau_state.c | 7 + 6 files changed, 260 insertions(+), 201 deletions(-) diff --git a/shared-core/drm_pciids.txt b/shared-core/drm_pciids.txt index f1d8731e..b6dfe400 100644 --- a/shared-core/drm_pciids.txt +++ b/shared-core/drm_pciids.txt @@ -464,210 +464,231 @@ 0x10DE 0x009E NV40 "NVidia 0x009E" [nouveau] -0x12d2 0x0008 NV_01 "NV1" -0x12d2 0x0009 NV_01 "DAC64" -0x12d2 0x0018 NV_03 "Riva128" -0x12d2 0x0019 NV_03 "Riva128ZX" -0x12d2 0x0020 NV_04 "TNT" -0x12d2 0x0028 NV_05 "TNT2" -0x12d2 0x0029 NV_05 "UTNT2" -0x12d2 0x002c NV_05 "VTNT2" -0x12d2 0x00a0 NV_05 "ITNT2" +0x10de 0x0008 NV_03 "EDGE 3D" +0x10de 0x0009 NV_03 "EDGE 3D" +0x10de 0x0010 NV_03 "Mutara V08" 0x10de 0x0020 NV_04 "RIVA TNT" -0x10de 0x0028 NV_05 "RIVA TNT2/TNT2 Pro" -0x10de 0x00a0 NV_05 "Aladdin TNT2" -0x10de 0x002c NV_05 "Vanta/Vanta LT" -0x10de 0x0029 NV_05 "RIVA TNT2 Ultra" -0x10de 0x002d NV_05 "RIVA TNT2 Model 64/Model 64 Pro" -0x10de 0x0100 NV_10 "GeForce 256" -0x10de 0x0101 NV_10 "GeForce DDR" -0x10de 0x0103 NV_10 "Quadro" -0x10de 0x0110 NV_10 "GeForce2 MX/MX 400" -0x10de 0x0111 NV_10 "GeForce2 MX 100/200" -0x10de 0x0113 NV_10 "Quadro2 MXR/EX/Go" -0x10de 0x01a0 NV_10|NV_NFORCE "GeForce2 Integrated GPU" -0x10de 0x0150 NV_10 "GeForce2 GTS/GeForce2 Pro" -0x10de 0x0151 NV_10 "GeForce2 Ti" -0x10de 0x0152 NV_10 "GeForce2 Ultra" -0x10de 0x0153 NV_10 "Quadro2 Pro" -0x10de 0x0170 NV_10 "GeForce4 MX 460" -0x10de 0x0171 NV_10 "GeForce4 MX 440" -0x10de 0x0172 NV_10 "GeForce4 MX 420" -0x10de 0x0173 NV_10 "GeForce4 MX 440-SE" -0x10de 0x0178 NV_10 "Quadro4 550 XGL" -0x10de 0x017a NV_10 "Quadro NVS" -0x10de 0x0181 NV_10 "GeForce4 MX 440 with AGP8X" -0x10de 0x0182 NV_10 "GeForce4 MX 440SE with AGP8X" -0x10de 0x0183 NV_10 "GeForce4 MX 420 with AGP8X" -0x10de 0x0185 NV_10 "GeForce4 MX 4000" -0x10de 0x0188 NV_10 "Quadro4 580 XGL" -0x10de 0x018a NV_10 "Quadro NVS with AGP8X" -0x10de 0x018b NV_10 "Quadro4 380 XGL" -0x10de 0x018c NV_10 "Quadro NVS 50 PCI" -0x10de 0x01f0 NV_10|NV_NFORCE2 "GeForce4 MX Integrated GPU" -0x10de 0x0200 NV_20 "GeForce3" -0x10de 0x0201 NV_20 "GeForce3 Ti 200" -0x10de 0x0202 NV_20 "GeForce3 Ti 500" -0x10de 0x0203 NV_20 "Quadro DCC" -0x10de 0x0250 NV_20 "GeForce4 Ti 4600" -0x10de 0x0251 NV_20 "GeForce4 Ti 4400" -0x10de 0x0252 NV_20 "NV25" -0x10de 0x0253 NV_20 "GeForce4 Ti 4200" -0x10de 0x0258 NV_20 "Quadro4 900 XGL" -0x10de 0x0259 NV_20 "Quadro4 750 XGL" -0x10de 0x025b NV_20 "Quadro4 700 XGL" -0x10de 0x0280 NV_20 "GeForce4 Ti 4800" -0x10de 0x0281 NV_20 "GeForce4 Ti 4200 with AGP8X" -0x10de 0x0282 NV_20 "GeForce4 Ti 4800 SE" -0x10de 0x0288 NV_20 "Quadro4 980 XGL" -0x10de 0x0289 NV_20 "Quadro4 780 XGL" -0x10de 0x0301 NV_30 "GeForce FX 5800 Ultra" -0x10de 0x0302 NV_30 "GeForce FX 5800" -0x10de 0x0308 NV_30 "Quadro FX 2000" -0x10de 0x0309 NV_30 "Quadro FX 1000" -0x10de 0x0311 NV_30 "GeForce FX 5600 Ultra" -0x10de 0x0312 NV_30 "GeForce FX 5600" -0x10de 0x0313 NV_30 "NV31" -0x10de 0x0314 NV_30 "GeForce FX 5600XT" -0x10de 0x0320 NV_30 "GeForce FX 5200" -0x10de 0x0321 NV_30 "GeForce FX 5200 Ultra" -0x10de 0x0322 NV_30 "GeForce FX 5200" -0x10de 0x0323 NV_30 "GeForce FX 5200LE" -0x10de 0x0326 NV_30 "GeForce FX 5500" -0x10de 0x0327 NV_30 "GeForce FX 5100" -0x10de 0x032a NV_30 "Quadro NVS 280 PCI" -0x10de 0x032b NV_30 "Quadro FX 500/FX 600" -0x10de 0x032f NV_30 "NV34GL" -0x10de 0x0330 NV_30 "GeForce FX 5900 Ultra" -0x10de 0x0331 NV_30 "GeForce FX 5900" -0x10de 0x0332 NV_30 "GeForce FX 5900XT" -0x10de 0x0333 NV_30 "GeForce FX 5950 Ultra" -0x10de 0x0334 NV_30 "GeForce FX 5900ZT" -0x10de 0x0338 NV_30 "Quadro FX 3000" -0x10de 0x033f NV_30 "Quadro FX 700" -0x10de 0x0341 NV_30 "GeForce FX 5700 Ultra" -0x10de 0x0342 NV_30 "GeForce FX 5700" -0x10de 0x0343 NV_30 "GeForce FX 5700LE" -0x10de 0x0344 NV_30 "GeForce FX 5700VE" -0x10de 0x0345 NV_30 "NV36" -0x10de 0x034e NV_30 "Quadro FX 1100" -0x10de 0x034f NV_30 "NV36GL" +0x10de 0x0028 NV_04 "RIVA TNT2/TNT2 Pro" +0x10de 0x0029 NV_04 "RIVA TNT2 Ultra" +0x10de 0x002a NV_04 "Riva TnT2" +0x10de 0x002b NV_04 "Riva TnT2" +0x10de 0x002c NV_04 "Vanta/Vanta LT" +0x10de 0x002d NV_04 "RIVA TNT2 Model 64/Model 64 Pro" +0x10de 0x002e NV_04 "Vanta" +0x10de 0x002f NV_04 "Vanta" 0x10de 0x0040 NV_40 "GeForce 6800 Ultra" 0x10de 0x0041 NV_40 "GeForce 6800" 0x10de 0x0042 NV_40 "GeForce 6800 LE" -0x10de 0x0043 NV_40 "NV40" +0x10de 0x0043 NV_40 "NV40.3" +0x10de 0x0044 NV_40 "GeForce 6800 XT" 0x10de 0x0045 NV_40 "GeForce 6800 GT" +0x10de 0x0046 NV_40 "GeForce 6800 GT" +0x10de 0x0047 NV_40 "GeForce 6800 GS" +0x10de 0x0048 NV_40 "GeForce 6800 XT" 0x10de 0x0049 NV_40 "NV40GL" +0x10de 0x004d NV_40 "Quadro FX 4000" 0x10de 0x004e NV_40 "Quadro FX 4000" -0x10de 0x00c0 NV_40 "NV41" +0x10de 0x0090 NV_40 "GeForce 7800 GTX" +0x10de 0x0091 NV_40 "GeForce 7800 GTX" +0x10de 0x0092 NV_40 "GeForce 7800 GT" +0x10de 0x0093 NV_40 "GeForce 7800 GS" +0x10de 0x0098 NV_40 "GeForce Go 7800" +0x10de 0x0099 NV_40 "GE Force Go 7800 GTX" +0x10de 0x009d NV_40 "Quadro FX4500" +0x10de 0x00a0 NV_04 "Aladdin TNT2" +0x10de 0x00c0 NV_40 "GeForce 6800 GS" 0x10de 0x00c1 NV_40 "GeForce 6800" 0x10de 0x00c2 NV_40 "GeForce 6800 LE" +0x10de 0x00c3 NV_40 "Geforce 6800 XT" +0x10de 0x00c8 NV_40 "GeForce Go 6800" +0x10de 0x00c9 NV_40 "GeForce Go 6800 Ultra" 0x10de 0x00cc NV_40 "Quadro FX Go1400" 0x10de 0x00cd NV_40 "Quadro FX 3450/4000 SDI" 0x10de 0x00ce NV_40 "Quadro FX 1400" +0x10de 0x00f0 NV_40 "GeForce 6800/GeForce 6800 Ultra" +0x10de 0x00f1 NV_40 "GeForce 6600/GeForce 6600 GT" +0x10de 0x00f2 NV_40 "GeForce 6600/GeForce 6600 GT" +0x10de 0x00f3 NV_40 "GeForce 6200" +0x10de 0x00f4 NV_40 "GeForce 6600 LE" +0x10de 0x00f5 NV_40 "GeForce 7800 GS" +0x10de 0x00f6 NV_40 "GeForce 6600 GS" +0x10de 0x00f8 NV_40 "Quadro FX 3400/4400" +0x10de 0x00f9 NV_40 "GeForce 6800 Ultra/GeForce 6800 GT" +0x10de 0x00fa NV_30 "GeForce PCX 5750" +0x10de 0x00fb NV_30 "GeForce PCX 5900" +0x10de 0x00fc NV_30 "Quadro FX 330/GeForce PCX 5300" +0x10de 0x00fd NV_30 "Quadro FX 330/Quadro NVS280" +0x10de 0x00fe NV_30 "Quadro FX 1300" +0x10de 0x00ff NV_17 "GeForce PCX 4300" +0x10de 0x0100 NV_10 "GeForce 256 SDR" +0x10de 0x0101 NV_10 "GeForce 256 DDR" +0x10de 0x0103 NV_10 "Quadro" +0x10de 0x0110 NV_11 "GeForce2 MX/MX 400" +0x10de 0x0111 NV_11 "GeForce2 MX 100 DDR/200 DDR" +0x10de 0x0112 NV_11 "GeForce2 Go" +0x10de 0x0113 NV_11 "Quadro2 MXR/EX/Go" 0x10de 0x0140 NV_40 "GeForce 6600 GT" 0x10de 0x0141 NV_40 "GeForce 6600" -0x10de 0x0142 NV_40 "NV43" -0x10de 0x0143 NV_40 "NV43" +0x10de 0x0142 NV_40 "GeForce 6600 PCIe" +0x10de 0x0144 NV_40 "GeForce Go 6600" 0x10de 0x0145 NV_40 "GeForce 6610 XL" -0x10de 0x014b NV_40 "NV43" -0x10de 0x014c NV_40 "NV43GL" -0x10de 0x014d NV_40 "NV43GL" +0x10de 0x0146 NV_40 "Geforce Go 6600TE/6200TE" +0x10de 0x0148 NV_40 "GeForce Go 6600" +0x10de 0x0149 NV_40 "GeForce Go 6600 GT" +0x10de 0x014a NV_40 "Quadro NVS 440" +0x10de 0x014d NV_17 "Quadro FX 550" 0x10de 0x014e NV_40 "Quadro FX 540" 0x10de 0x014f NV_40 "GeForce 6200" -0x10de 0x0160 NV_40 "NV44" -0x10de 0x0161 NV_40 "GeForce 6200 TurboCache(TM)" -0x10de 0x0162 NV_40 "NV44" -0x10de 0x0163 NV_40 "NV44" -0x10de 0x0165 NV_40 "Quadro NVS 285" -0x10de 0x016e NV_40 "NV44GL" -0x10de 0x0220 NV_40 "NV44" -0x10de 0x0221 NV_40 "NV44" -0x10de 0x0222 NV_40 "NV44" +0x10de 0x0150 NV_15 "GeForce2 GTS/Pro" +0x10de 0x0151 NV_15 "GeForce2 Ti" +0x10de 0x0152 NV_15 "GeForce2 Ultra, Bladerunner" +0x10de 0x0153 NV_15 "Quadro2 Pro" +0x10de 0x0161 NV_44 "GeForce 6200 TurboCache(TM)" +0x10de 0x0162 NV_44 "GeForce 6200 SE TurboCache (TM)" +0x10de 0x0163 NV_44 "GeForce 6200 LE" +0x10de 0x0164 NV_44 "GeForce Go 6200" +0x10de 0x0165 NV_44 "Quadro NVS 285" +0x10de 0x0166 NV_44 "GeForce Go 6400" +0x10de 0x0167 NV_44 "GeForce Go 6200 TurboCache" +0x10de 0x0168 NV_44 "GeForce Go 6200 TurboCache" +0x10de 0x0170 NV_17 "GeForce4 MX 460" +0x10de 0x0171 NV_17 "GeForce4 MX 440" +0x10de 0x0172 NV_17 "GeForce4 MX 420" +0x10de 0x0173 NV_17 "GeForce4 MX 440-SE" +0x10de 0x0174 NV_17 "GeForce4 440 Go" +0x10de 0x0175 NV_17 "GeForce4 420 Go" +0x10de 0x0176 NV_17 "GeForce4 420 Go 32M" +0x10de 0x0177 NV_17 "GeForce4 460 Go" +0x10de 0x0178 NV_17 "Quadro4 550 XGL" +0x10de 0x0179 NV_17 "GeForce4 420 Go 32M" +0x10de 0x017a NV_17 "Quadro4 200/400 NVS" +0x10de 0x017b NV_17 "Quadro4 550 XGL" +0x10de 0x017c NV_17 "Quadro4 500 GoGL" +0x10de 0x017d NV_17 "GeForce4 410 Go 16M" +0x10de 0x0181 NV_17 "GeForce4 MX 440 AGP 8x" +0x10de 0x0182 NV_17 "GeForce4 MX 440SE AGP 8x" +0x10de 0x0183 NV_17 "GeForce4 MX 420 AGP 8x" +0x10de 0x0185 NV_17 "GeForce4 MX 4000 AGP 8x" +0x10de 0x0186 NV_17 "GeForce4 448 Go" +0x10de 0x0187 NV_17 "GeForce4 488 Go" +0x10de 0x0188 NV_17 "Quadro4 580 XGL" +0x10de 0x018a NV_17 "Quadro4 NVS AGP 8x" +0x10de 0x018b NV_17 "Quadro4 380 XGL" +0x10de 0x018c NV_17 "Quadro NVS 50 PCI" +0x10de 0x018d NV_17 "GeForce4 448 Go" +0x10de 0x0191 NV_50 "GeForce 8800 GTX" +0x10de 0x0193 NV_50 "GeForce 8800 GTS" +0x10de 0x01a0 NV_11|NV_NFORCE "GeForce2 MX Integrated Graphics" +0x10de 0x01d1 NV_44 "GeForce 7300 LE" +0x10de 0x01d6 NV_44 "GeForce Go 7200" +0x10de 0x01d7 NV_44 "Quadro NVS 110M / GeForce Go 7300" +0x10de 0x01d8 NV_44 "GeForce Go 7400" +0x10de 0x01da NV_44 "Quadro NVS 110M" +0x10de 0x01df NV_44 "GeForce 7300 GS" +0x10de 0x01f0 NV_17|NV_NFORCE2 "GeForce4 MX - nForce GPU" +0x10de 0x0200 NV_20 "GeForce3" +0x10de 0x0201 NV_20 "GeForce3 Ti 200" +0x10de 0x0202 NV_20 "GeForce3 Ti 500" +0x10de 0x0203 NV_20 "Quadro DCC" 0x10de 0x0211 NV_40 "GeForce 6800" 0x10de 0x0212 NV_40 "GeForce 6800 LE" 0x10de 0x0215 NV_40 "GeForce 6800 GT" -0x10de 0x00f0 NV_40 "GeForce 6800 Ultra" -0x10de 0x00f0 NV_40 "GeForce 6800" -0x10de 0x00f1 NV_40 "GeForce 6600 GT" -0x10de 0x00f1 NV_40 "GeForce 6600 GT" -0x10de 0x00f2 NV_40 "GeForce 6600" -0x10de 0x00f2 NV_40 "GeForce 6600" -0x10de 0x00f3 NV_40 "GeForce 6200" -0x10de 0x00f3 NV_40 "GeForce 6200" -0x10de 0x00f8 NV_30 "Quadro FX 4400" -0x10de 0x00f8 NV_30 "Quadro FX 3400" -0x10de 0x00f8 NV_30 "Quadro FX 3400/4400" -0x10de 0x00f9 NV_40 "GeForce 6800 Ultra" -0x10de 0x00f9 NV_40 "GeForce 6800 GT" -0x10de 0x00f9 NV_40 "GeForce 6800 Series GPU" -0x10de 0x0091 G_70 "GeForce 7800 GTX" -0x10de 0x00fa NV_30 "GeForce PCX 5750" -0x10de 0x00fa NV_30 "GeForce PCX 5750" -0x10de 0x00fb NV_30 "GeForce PCX 5900" -0x10de 0x00fb NV_30 "GeForce PCX 5900" -0x10de 0x00fc NV_30 "GeForce PCX 5300" -0x10de 0x00fc NV_30 "Quadro FX 330" -0x10de 0x00fc NV_30 "GeForce PCX 5300" -0x10de 0x00fd NV_30 "Quadro NVS 280 PCI-E" -0x10de 0x00fd NV_30 "Quadro FX 330" -0x10de 0x00fd NV_10 "Quadro PCI-E Series" -0x10de 0x00fe NV_30 "Quadro FX 1300" -0x10de 0x00fe NV_30 "Quadro FX 1300" -0x10de 0x00ff NV_10 "GeForce PCX 4300" -0x10de 0x00ff NV_10 "GeForce PCX 4300" -0x10de 0x0112 NV_10 "GeForce2 Go" -0x10de 0x0174 NV_20 "GeForce4 440 Go" -0x10de 0x0175 NV_20 "GeForce4 420 Go" -0x10de 0x0176 NV_20 "GeForce4 420 Go 32M" -0x10de 0x0177 NV_20 "GeForce4 460 Go" -0x10de 0x0179 NV_20 "GeForce4 440 Go 64M" -0x10de 0x017d NV_20 "GeForce4 410 Go 16M" -0x10de 0x017c NV_20 "Quadro4 500 GoGL" -0x10de 0x0186 NV_20 "GeForce4 448 Go" -0x10de 0x0187 NV_20 "GeForce4 488 Go" -0x10de 0x018d NV_20 "GeForce4 448 Go" -0x10de 0x0286 NV_20 "GeForce4 4200 Go" -0x10de 0x028c NV_20 "Quadro4 700 GoGL" +0x10de 0x0218 NV_40 "GeForce 6800 XT" +0x10de 0x0221 NV_44 "GeForce 6200" +0x10de 0x0240 NV_44 "GeForce 6150" +0x10de 0x0242 NV_44 "GeForce 6100" +0x10de 0x0250 NV_25 "GeForce4 Ti 4600" +0x10de 0x0251 NV_25 "GeForce4 Ti 4400" +0x10de 0x0252 NV_25 "GeForce4 Ti" +0x10de 0x0253 NV_25 "GeForce4 Ti 4200" +0x10de 0x0258 NV_25 "Quadro4 900 XGL" +0x10de 0x0259 NV_25 "Quadro4 750 XGL" +0x10de 0x025b NV_25 "Quadro4 700 XGL" +0x10de 0x0280 NV_25 "GeForce4 Ti 4800" +0x10de 0x0281 NV_25 "GeForce4 Ti 4200 AGP 8x" +0x10de 0x0282 NV_25 "GeForce4 Ti 4800 SE" +0x10de 0x0286 NV_25 "GeForce4 Ti 4200 Go AGP 8x" +0x10de 0x0288 NV_25 "Quadro4 980 XGL" +0x10de 0x0289 NV_25 "Quadro4 780 XGL" +0x10de 0x028c NV_25 "Quadro4 700 GoGL" +0x10de 0x0290 NV_40 "GeForce 7900 GTX" +0x10de 0x0291 NV_40 "GeForce 7900 GT" +0x10de 0x0292 NV_40 "GeForce 7900 GS" +0x10de 0x0298 NV_40 "GeForce Go 7900 GS" +0x10de 0x0299 NV_40 "GeForce Go 7900 GTX" +0x10de 0x029a NV_40 "Quadro FX 2500M" +0x10de 0x029b NV_40 "Quadro FX 1500M" +0x10de 0x029c NV_40 "Quadro FX 5500" +0x10de 0x029d NV_40 "Quadro FX 3500" +0x10de 0x029e NV_40 "Quadro FX 1500" +0x10de 0x029f NV_40 "Quadro FX 4500 X2" +0x10de 0x02a0 NV_20 "XGPU" +0x10de 0x02e1 NV_40 "GeForce 7600 GS" +0x10de 0x0300 NV_30 "GeForce FX" +0x10de 0x0301 NV_30 "GeForce FX 5800 Ultra" +0x10de 0x0302 NV_30 "GeForce FX 5800" +0x10de 0x0308 NV_30 "Quadro FX 2000" +0x10de 0x0309 NV_30 "Quadro FX 1000" +0x10de 0x0311 NV_30 "GeForce FX 5600 Ultra" +0x10de 0x0312 NV_30 "GeForce FX 5600" +0x10de 0x0313 NV_30 "NV31" +0x10de 0x0314 NV_30 "GeForce FX 5600XT" 0x10de 0x0316 NV_30 "NV31M" 0x10de 0x0317 NV_30 "NV31M Pro" 0x10de 0x031a NV_30 "GeForce FX Go5600" 0x10de 0x031b NV_30 "GeForce FX Go5650" -0x10de 0x031c NV_30 "Quadro FX Go700" 0x10de 0x031d NV_30 "NV31GLM" 0x10de 0x031e NV_30 "NV31GLM Pro" 0x10de 0x031f NV_30 "NV31GLM Pro" -0x10de 0x0324 NV_30 "GeForce FX Go5200" -0x10de 0x0325 NV_30 "GeForce FX Go5250" -0x10de 0x0328 NV_30 "GeForce FX Go5200 32M/64M" -0x10de 0x0329 NV_30 "NV34MAP" -0x10de 0x032c NV_30 "GeForce FX Go53xx" -0x10de 0x032d NV_30 "GeForce FX Go5100" +0x10de 0x0320 NV_34 "GeForce FX 5200" +0x10de 0x0321 NV_34 "GeForce FX 5200 Ultra" +0x10de 0x0322 NV_34 "GeForce FX 5200" +0x10de 0x0323 NV_34 "GeForce FX 5200LE" +0x10de 0x0324 NV_34 "GeForce FX Go5200" +0x10de 0x0325 NV_34 "GeForce FX Go5250" +0x10de 0x0326 NV_34 "GeForce FX 5500" +0x10de 0x0327 NV_34 "GeForce FX 5100" +0x10de 0x0328 NV_34 "GeForce FX Go5200 32M/64M" +0x10de 0x0329 NV_34 "GeForce FX Go5200" +0x10de 0x032a NV_34 "Quadro NVS 280 PCI" +0x10de 0x032b NV_34 "Quadro FX 500/600 PCI" +0x10de 0x032c NV_34 "GeForce FX Go 5300" +0x10de 0x032d NV_34 "GeForce FX Go5100" +0x10de 0x032f NV_34 "NV34GL" +0x10de 0x0330 NV_30 "GeForce FX 5900 Ultra" +0x10de 0x0331 NV_30 "GeForce FX 5900" +0x10de 0x0332 NV_30 "GeForce FX 5900XT" +0x10de 0x0333 NV_30 "GeForce FX 5950 Ultra" +0x10de 0x0334 NV_30 "GeForce FX 5900ZT" +0x10de 0x0338 NV_30 "Quadro FX 3000" +0x10de 0x033f NV_30 "Quadro FX 700" +0x10de 0x0341 NV_30 "GeForce FX 5700 Ultra" +0x10de 0x0342 NV_30 "GeForce FX 5700" +0x10de 0x0343 NV_30 "GeForce FX 5700LE" +0x10de 0x0344 NV_30 "GeForce FX 5700VE" +0x10de 0x0345 NV_30 "NV36.5" 0x10de 0x0347 NV_30 "GeForce FX Go5700" 0x10de 0x0348 NV_30 "GeForce FX Go5700" 0x10de 0x0349 NV_30 "NV36M Pro" 0x10de 0x034b NV_30 "NV36MAP" 0x10de 0x034c NV_30 "Quadro FX Go1000" -0x10de 0x00c8 NV_30 "GeForce Go 6800" -0x10de 0x00c9 NV_30 "GeForce Go 6800 Ultra" -0x10de 0x00cc NV_30 "Quadro FX Go1400" -0x10de 0x0140 NV_40 "NV43" -0x10de 0x0144 NV_40 "GeForce Go 6600" -0x10de 0x0147 NV_40 "NV43" -0x10de 0x0148 NV_40 "GeForce Go 6600" -0x10de 0x0149 NV_40 "NV43" -0x10de 0x014c NV_40 "NV43GL" -0x10de 0x0164 NV_40 "GeForce Go 6200" -0x10de 0x0167 NV_40 "GeForce Go 6200" -0x10de 0x0169 NV_40 "NV44M" -0x10de 0x016b NV_40 "NV44GLM" -0x10de 0x016c NV_40 "NV44GLM" -0x10de 0x016d NV_40 "NV44GLM" -0x10de 0x0228 NV_40 "NV44M" -0x10de 0x0091 G_70 "NVIDIA GeForce 7800 GTX" -0x10de 0x0092 G_70 "NVIDIA GeForce 7800 GT" -0x10de 0x009d G_70 "NVIDIA Quadro FX 4500" -0x10de 0x0240 NV_40 "NVIDIA GeForce 6150" -0x10de 0x0241 NV_40 "NVIDIA GeForce 6150 LE" -0x10de 0x0242 NV_40 "NVIDIA GeForce 6100" -0x10de 0x0244 NV_40 "NVIDIA GeForce 6150 Go" +0x10de 0x034e NV_30 "Quadro FX 1100" +0x10de 0x034f NV_30 "NV36GL" +0x10de 0x0391 NV_40 "GeForce 7600 GT" +0x10de 0x0392 NV_40 "GeForce 7600 GS" +0x10de 0x0393 NV_40 "GeForce 7300 GT" +0x10de 0x0398 NV_40 "GeForce Go 7600" +0x10de 0x03d0 NV_44 "GeForce 6100 nForce 430" +0x10de 0x03d1 NV_44 "GeForce 6100 nForce 405" +0x10de 0x03d2 NV_44 "GeForce 6100 nForce 400" +0x10de 0x03d5 NV_44 "GeForce 6100 nForce 420" +0x12d2 0x0008 NV_03 "NV1" +0x12d2 0x0009 NV_03 "DAC64" +0x12d2 0x0018 NV_03 "Riva128" +0x12d2 0x0019 NV_03 "Riva128ZX" +0x12d2 0x0020 NV_04 "TNT" +0x12d2 0x0028 NV_04 "TNT2" +0x12d2 0x0029 NV_04 "UTNT2" +0x12d2 0x002c NV_04 "VTNT2" +0x12d2 0x00a0 NV_04 "ITNT2" + diff --git a/shared-core/nouveau_drm.h b/shared-core/nouveau_drm.h index 2874d36a..3f363192 100644 --- a/shared-core/nouveau_drm.h +++ b/shared-core/nouveau_drm.h @@ -86,12 +86,14 @@ typedef struct drm_nouveau_mem_free { drm_nouveau_mem_free_t; /* FIXME : maybe unify {GET,SET}PARAMs */ -#define NOUVEAU_GETPARAM_PCI_VENDOR 3 -#define NOUVEAU_GETPARAM_PCI_DEVICE 4 -#define NOUVEAU_GETPARAM_BUS_TYPE 5 +#define NOUVEAU_GETPARAM_PCI_VENDOR 3 +#define NOUVEAU_GETPARAM_PCI_DEVICE 4 +#define NOUVEAU_GETPARAM_BUS_TYPE 5 +#define NOUVEAU_GETPARAM_FB_PHYSICAL 6 +#define NOUVEAU_GETPARAM_AGP_PHYSICAL 7 typedef struct drm_nouveau_getparam { unsigned int param; - unsigned int value; + uint64_t value; } drm_nouveau_getparam_t; @@ -110,10 +112,16 @@ enum nouveau_card_type { NV_04 =4, NV_05 =5, NV_10 =10, + NV_11 =10, + NV_15 =10, + NV_17 =10, NV_20 =20, + NV_25 =20, NV_30 =30, + NV_34 =30, NV_40 =40, - G_70 =50, + NV_44 =44, + NV_50 =50, NV_LAST =0xffff, }; diff --git a/shared-core/nouveau_drv.h b/shared-core/nouveau_drv.h index be8f4cf4..4dff0c59 100644 --- a/shared-core/nouveau_drv.h +++ b/shared-core/nouveau_drv.h @@ -32,9 +32,9 @@ #define DRIVER_DESC "nVidia Riva/TNT/GeForce" #define DRIVER_DATE "20060213" -#define DRIVER_MAJOR 1 +#define DRIVER_MAJOR 0 #define DRIVER_MINOR 0 -#define DRIVER_PATCHLEVEL 0 +#define DRIVER_PATCHLEVEL 1 #define NOUVEAU_FAMILY 0x0000FFFF #define NOUVEAU_FLAGS 0xFFFF0000 @@ -122,6 +122,10 @@ typedef struct drm_nouveau_private { uint32_t ramro_offset; uint32_t ramro_size; + /* base physical adresses */ + uint64_t fb_phys; + uint64_t agp_phys; + struct mem_block *agp_heap; struct mem_block *fb_heap; struct mem_block *fb_nomap_heap; diff --git a/shared-core/nouveau_fifo.c b/shared-core/nouveau_fifo.c index 94762139..67c790b4 100644 --- a/shared-core/nouveau_fifo.c +++ b/shared-core/nouveau_fifo.c @@ -106,19 +106,34 @@ static int nouveau_fifo_instmem_configure(drm_device_t *dev) * cards. RAMFC is 4kb (32 fifos, 128byte entries). * Others: Position RAMFC at RAMIN+0x11400 */ - if (dev_priv->card_type >= NV_40) { - dev_priv->ramfc_offset = 0x20000; - dev_priv->ramfc_size = nouveau_fifo_number(dev) * 128; - NV_WRITE(NV40_PFIFO_RAMFC, 0x30002); - } else if (dev_priv->card_type >= NV_10) { - dev_priv->ramfc_offset = 0x11400; - dev_priv->ramfc_size = nouveau_fifo_number(dev) * 64; - NV_WRITE(NV_PFIFO_RAMFC, (dev_priv->ramfc_offset>>8) | - (1 << 16) /* 64 Bytes entry*/); - } else { - dev_priv->ramfc_offset = 0x11400; - dev_priv->ramfc_size = nouveau_fifo_number(dev) * 32; - NV_WRITE(NV_PFIFO_RAMFC, dev_priv->ramfc_offset>>8); + switch(dev_priv->card_type) + { + case NV_50: + case NV_40: + dev_priv->ramfc_offset = 0x20000; + dev_priv->ramfc_size = nouveau_fifo_number(dev) * nouveau_fifo_ctx_size(dev); + NV_WRITE(NV40_PFIFO_RAMFC, 0x30002); + break; + case NV_44: + dev_priv->ramfc_offset = 0x20000; + dev_priv->ramfc_size = nouveau_fifo_number(dev) * nouveau_fifo_ctx_size(dev); + NV_WRITE(NV40_PFIFO_RAMFC, ((nouveau_mem_fb_amount(dev)-512*1024+dev_priv->ramfc_offset)>>16) | + (2 << 16)); + break; + case NV_30: + case NV_20: + case NV_10: + dev_priv->ramfc_offset = 0x11400; + dev_priv->ramfc_size = nouveau_fifo_number(dev) * nouveau_fifo_ctx_size(dev); + NV_WRITE(NV_PFIFO_RAMFC, (dev_priv->ramfc_offset>>8) | + (1 << 16) /* 64 Bytes entry*/); + break; + case NV_04: + case NV_03: + dev_priv->ramfc_offset = 0x11400; + dev_priv->ramfc_size = nouveau_fifo_number(dev) * nouveau_fifo_ctx_size(dev); + NV_WRITE(NV_PFIFO_RAMFC, dev_priv->ramfc_offset>>8); + break; } DRM_DEBUG("RAMFC offset=0x%x, size=%d\n", dev_priv->ramfc_offset, diff --git a/shared-core/nouveau_mem.c b/shared-core/nouveau_mem.c index 93b9c869..82221c8f 100644 --- a/shared-core/nouveau_mem.c +++ b/shared-core/nouveau_mem.c @@ -253,7 +253,8 @@ uint64_t nouveau_mem_fb_amount(struct drm_device *dev) case NV_20: case NV_30: case NV_40: - case G_70: + case NV_44: + case NV_50: default: // XXX won't work on BSD because of pci_read_config_dword if (dev_priv->flags&NV_NFORCE) { @@ -281,6 +282,8 @@ uint64_t nouveau_mem_fb_amount(struct drm_device *dev) int nouveau_mem_init(struct drm_device *dev) { drm_nouveau_private_t *dev_priv = dev->dev_private; + dev_priv->agp_phys=0; + dev_priv->fb_phys=0; /* init AGP */ dev_priv->agp_heap=NULL; @@ -330,10 +333,13 @@ int nouveau_mem_init(struct drm_device *dev) if (init_heap(&dev_priv->agp_heap, info.aperture_base, info.aperture_size)) goto no_agp; + + dev_priv->agp_phys=info.aperture_base; } no_agp: /* Init FB */ + dev_priv->fb_phys=drm_get_resource_start(dev,1); if (nouveau_mem_fb_amount(dev)>256*1024*1024) { /* On cards with > 256Mb, you can't map everything. * So we create a second FB heap for that type of memory */ @@ -473,7 +479,7 @@ struct mem_block *nouveau_instmem_alloc(struct drm_device *dev, if (block) { block->flags = NOUVEAU_MEM_INSTANCE; DRM_DEBUG("instance(size=%d, align=%d) alloc'd at 0x%08x\n", - size, (1<start); + size, (1<start); } return block; @@ -508,11 +514,9 @@ int nouveau_ioctl_mem_alloc(DRM_IOCTL_ARGS) block=nouveau_mem_alloc(dev, alloc.alignment, alloc.size, alloc.flags, filp); if (!block) return DRM_ERR(ENOMEM); + alloc.region_offset=block->start; - if (DRM_COPY_TO_USER(alloc.region_offset, &block->start, sizeof(uint64_t))) { - DRM_ERROR("copy_to_user\n"); - return DRM_ERR(EFAULT); - } + DRM_COPY_TO_USER_IOCTL((drm_nouveau_mem_alloc_t __user *) data, alloc, sizeof(alloc)); return 0; } diff --git a/shared-core/nouveau_state.c b/shared-core/nouveau_state.c index b2934b43..914d1453 100644 --- a/shared-core/nouveau_state.c +++ b/shared-core/nouveau_state.c @@ -117,6 +117,7 @@ int nouveau_unload(struct drm_device *dev) int nouveau_ioctl_getparam(DRM_IOCTL_ARGS) { DRM_DEVICE; + drm_nouveau_private_t *dev_priv = dev->dev_private; drm_nouveau_getparam_t getparam; DRM_COPY_FROM_USER_IOCTL(getparam, (drm_nouveau_getparam_t __user *)data, @@ -137,6 +138,12 @@ int nouveau_ioctl_getparam(DRM_IOCTL_ARGS) else getparam.value=NV_PCI; break; + case NOUVEAU_GETPARAM_FB_PHYSICAL: + getparam.value=dev_priv->fb_phys; + break; + case NOUVEAU_GETPARAM_AGP_PHYSICAL: + getparam.value=dev_priv->agp_phys; + break; default: DRM_ERROR("unknown parameter %d\n", getparam.param); return DRM_ERR(EINVAL); -- cgit v1.2.3