diff --git a/packages/x11/xserver/xorg-server/patches/75_nvidia-drv.diff b/packages/x11/xserver/xorg-server/patches/75_nvidia-drv.diff index c5dde6f915..a8c0cfbbf1 100644 --- a/packages/x11/xserver/xorg-server/patches/75_nvidia-drv.diff +++ b/packages/x11/xserver/xorg-server/patches/75_nvidia-drv.diff @@ -1,12 +1,39 @@ -diff -Naur a/hw/xfree86/common/xf86AutoConfig.c b/hw/xfree86/common/xf86AutoConfig.c ---- a/hw/xfree86/common/xf86AutoConfig.c 2009-09-04 13:53:31.000000000 +0200 -+++ b/hw/xfree86/common/xf86AutoConfig.c 2009-09-04 05:15:54.000000000 +0200 -@@ -192,7 +192,7 @@ +diff -Naur xorg-server-1.6.99.902.orig/hw/xfree86/common/xf86AutoConfig.c xorg-server-1.6.99.902/hw/xfree86/common/xf86AutoConfig.c +--- xorg-server-1.6.99.902.orig/hw/xfree86/common/xf86AutoConfig.c 2009-09-26 14:12:03.000000000 +0200 ++++ xorg-server-1.6.99.902/hw/xfree86/common/xf86AutoConfig.c 2009-09-26 14:14:04.000000000 +0200 +@@ -192,7 +192,34 @@ break; case 0x102b: driverList[0] = "mga"; break; case 0x10c8: driverList[0] = "neomagic"; break; - case 0x10de: case 0x12d2: driverList[0] = "nv"; break; -+ case 0x10de: case 0x12d2: driverList[0] = "nvidia"; driverList[1] = "nv"; break; ++ case 0x10de: case 0x12d2: ++ switch (dev->device_id) { ++ /* NV1 */ ++ case 0x0008: ++ case 0x0009: ++ driverList[0] = "vesa"; ++ break; ++ /* NV3 */ ++ case 0x0018: ++ case 0x0019: ++ driverList[0] = "nv"; ++ break; ++ default: ++ switch (dev->device_id & 0xfff0) { ++ /* Non-functional with both nouveau and nv */ ++ case 0x0840: ++ case 0x0860: ++ driverList[0] = "nvidia"; ++ driverList[1] = "vesa"; ++ break; ++ default: ++ driverList[0] = "nvidia"; ++ driverList[1] = "nouveau"; ++ driverList[2] = "nv"; ++ break; ++ } ++ break; ++ } case 0x1106: driverList[0] = "openchrome"; break; case 0x1163: driverList[0] = "rendition"; break; case 0x5333: