From 6a2443fd04ec5439669b5b5fc22497d0ca11812f Mon Sep 17 00:00:00 2001 From: Rudolf Cornelissen Date: Sun, 8 May 2005 10:30:14 +0000 Subject: [PATCH] fixed NV15 RAM access/distortions trouble introduced in V0.10 of this drivercd obos_svn/trunk/src/add-ons/accelerants/nvidia/ Might fix other singlehead card likewise trouble as well. Bumped driver version to 0.44. Note: for 3D NV15 is the fastest currently supported card ;-) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12597 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/accelerants/nvidia/engine/nv_dac.c | 16 ++++++++++++++-- src/add-ons/accelerants/nvidia/engine/nv_dac2.c | 2 +- .../accelerants/nvidia/engine/nv_general.c | 2 +- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/add-ons/accelerants/nvidia/engine/nv_dac.c b/src/add-ons/accelerants/nvidia/engine/nv_dac.c index d19b25d4e1..7ac741ef68 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_dac.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_dac.c @@ -23,8 +23,20 @@ bool nv_dac_crt_connected(void) /* turn on DAC */ DACW(TSTCTRL, (DACR(TSTCTRL) & 0xfffeffff)); - /* select primary head and turn off CRT (and DVI?) outputs */ - DACW(OUTPUT, (output & 0x0000feee)); + if (si->ps.secondary_head) + { + /* select primary CRTC (head) and turn off CRT (and DVI?) outputs */ + DACW(OUTPUT, (output & 0x0000feee)); + } + else + { + /* turn off CRT (and DVI?) outputs */ + /* note: + * Don't touch the CRTC (head) assignment bit, as that would have undefined + * results. Confirmed NV15 cards getting into lasting RAM access trouble + * otherwise!! (goes for both system gfx RAM access and CRTC/DAC RAM access.) */ + DACW(OUTPUT, (output & 0x0000ffee)); + } /* wait for signal lines to stabilize */ snooze(1000); /* re-enable CRT output */ diff --git a/src/add-ons/accelerants/nvidia/engine/nv_dac2.c b/src/add-ons/accelerants/nvidia/engine/nv_dac2.c index 7e0f0e5a23..72df7b6c3e 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_dac2.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_dac2.c @@ -29,7 +29,7 @@ bool nv_dac2_crt_connected() /* turn on DAC2 */ DAC2W(TSTCTRL, (DAC2R(TSTCTRL) & 0xfffeffff)); - /* select primary head and turn off CRT (and DVI?) outputs */ + /* select primary CRTC (head) and turn off CRT (and DVI?) outputs */ DAC2W(OUTPUT, (output & 0x0000feee)); /* wait for signal lines to stabilize */ snooze(1000); diff --git a/src/add-ons/accelerants/nvidia/engine/nv_general.c b/src/add-ons/accelerants/nvidia/engine/nv_general.c index e348777168..4d653da707 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_general.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_general.c @@ -90,7 +90,7 @@ status_t nv_general_powerup() { status_t status; - LOG(1,("POWERUP: Haiku nVidia Accelerant 0.43 running.\n")); + LOG(1,("POWERUP: Haiku nVidia Accelerant 0.44 running.\n")); /* preset no laptop */ si->ps.laptop = false;