From 7a0db1a3bc258439aff557868b5fa7ec5abc3ce7 Mon Sep 17 00:00:00 2001
From: Rudolf Cornelissen
Date: Thu, 5 Feb 2004 16:26:47 +0000
Subject: [PATCH] fixed NV11 repeating screens trouble
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6506 a95241bf-73f2-0310-859d-f6bbb57e9c96
---
.../accelerants/nvidia/engine/nv_general.c | 24 +++++++++++++++----
.../drivers/graphics/nvidia/UPDATE.html | 4 ++++
2 files changed, 23 insertions(+), 5 deletions(-)
diff --git a/src/add-ons/accelerants/nvidia/engine/nv_general.c b/src/add-ons/accelerants/nvidia/engine/nv_general.c
index b08e7ade26..8552997ed5 100644
--- a/src/add-ons/accelerants/nvidia/engine/nv_general.c
+++ b/src/add-ons/accelerants/nvidia/engine/nv_general.c
@@ -80,7 +80,7 @@ status_t nv_general_powerup()
{
status_t status;
- LOG(1,("POWERUP: nVidia (open)BeOS Accelerant 0.08-final running.\n"));
+ LOG(1,("POWERUP: nVidia (open)BeOS Accelerant 0.09-1 running.\n"));
/* preset no laptop */
si->ps.laptop = false;
@@ -891,8 +891,15 @@ status_t nv_general_bios_to_powergraphics()
/* enable 'enhanced' mode on primary head: */
/* enable access to primary head */
if (si->ps.secondary_head) CRTCW(OWNER, 0x00);
- /* don't doublebuffer CRTC access: set programmed values immediately;
- * keep fine pitched CRTC granularity on > NV4 cards (b2 = 0) */
+ /* note: 'BUFFER' is a non-standard register in behaviour(!) on most
+ * NV11's like the GeForce2 MX200, while the MX400 and non-NV11 cards
+ * behave normally.
+ * Also readback is not nessesarily what was written before!
+ *
+ * Double-write action needed on those strange NV11 cards: */
+ /* RESET: don't doublebuffer CRTC access: set programmed values immediately... */
+ CRTCW(BUFFER, 0xff);
+ /* ... and keep fine pitched CRTC granularity on > NV4 cards (b2 = 0) */
CRTCW(BUFFER, 0xfb);
/* select VGA mode (old VGA register) */
CRTCW(MODECTL, 0xc3);
@@ -917,8 +924,15 @@ status_t nv_general_bios_to_powergraphics()
CRTC2W(OWNER, 0x03);
/* select colormode CRTC2 registers base adresses */
NV_REG8(NV8_MISCW) = 0xcb;
- /* don't doublebuffer CRTC2 access: set programmed values immediately;
- * keep fine pitched CRTC2 granularity (b2 = 0) */
+ /* note: 'BUFFER' is a non-standard register in behaviour(!) on most
+ * NV11's like the GeForce2 MX200, while the MX400 and non-NV11 cards
+ * behave normally.
+ * Also readback is not nessesarily what was written before!
+ *
+ * Double-write action needed on those strange NV11 cards: */
+ /* RESET: don't doublebuffer CRTC2 access: set programmed values immediately... */
+ CRTC2W(BUFFER, 0xff);
+ /* ... and keep fine pitched CRTC2 granularity (b2 = 0) */
CRTC2W(BUFFER, 0xfb);
/* select VGA mode (old VGA register) */
CRTC2W(MODECTL, 0xc3);
diff --git a/src/add-ons/kernel/drivers/graphics/nvidia/UPDATE.html b/src/add-ons/kernel/drivers/graphics/nvidia/UPDATE.html
index 4696bf16c2..de7d4e4f49 100644
--- a/src/add-ons/kernel/drivers/graphics/nvidia/UPDATE.html
+++ b/src/add-ons/kernel/drivers/graphics/nvidia/UPDATE.html
@@ -4,6 +4,10 @@
Changes done for each driverversion:
+head: nv_driver 0.09-1, (Rudolf)
+
+ - Fixed NV11 trouble with repeating screen(s) on the right side of the monitor.
+
nv_driver 0.08, (Rudolf)
- Fixed GeForceFX 5600 and FX 5700 monitor 'refresh out of range' / shutoff fault. nVidia changed the pixelPLL for the NV31 and NV36;