hopefully fixed NV44 (geforce 6100, 6150 and 6200) displaying trouble on analog VGA connected screens on one output by using a workaround for a new unknown register bit. Verified OK on a geforce 6200LE. Bumped version to 1.07.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33966 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Rudolf Cornelissen 2009-11-09 21:26:24 +00:00
parent 7249de5e61
commit f982813b1e
4 changed files with 21 additions and 6 deletions

View File

@ -24,6 +24,7 @@ bool nv_dac2_crt_connected()
/* (It DOES have a secondary palette RAM and pixelclock PLL though.) */ /* (It DOES have a secondary palette RAM and pixelclock PLL though.) */
case NV11: case NV11:
/* on NV40 arch (confirmed NV43, G71, G73) this routine doesn't work. */ /* on NV40 arch (confirmed NV43, G71, G73) this routine doesn't work. */
/* (on NV44 (confirmed Geforce 6200LE) this routine *does* work.) */
case NV43: case NV43:
case G71: case G71:
case G73: case G73:

View File

@ -1,7 +1,7 @@
/* Authors: /* Authors:
Mark Watson 12/1999, Mark Watson 12/1999,
Apsed, Apsed,
Rudolf Cornelissen 10/2002-10/2009 Rudolf Cornelissen 10/2002-11/2009
tst.. tst..
*/ */
@ -92,7 +92,7 @@ status_t nv_general_powerup()
{ {
status_t status; status_t status;
LOG(1,("POWERUP: Haiku nVidia Accelerant 1.06 running.\n")); LOG(1,("POWERUP: Haiku nVidia Accelerant 1.07 running.\n"));
/* log VBLANK INT usability status */ /* log VBLANK INT usability status */
if (si->ps.int_assigned) if (si->ps.int_assigned)

View File

@ -1,7 +1,7 @@
/* Read initialisation information from card */ /* Read initialisation information from card */
/* some bits are hacks, where PINS is not known */ /* some bits are hacks, where PINS is not known */
/* Author: /* Author:
Rudolf Cornelissen 7/2003-9/2009 Rudolf Cornelissen 7/2003-11/2009
*/ */
#define MODULE_BIT 0x00002000 #define MODULE_BIT 0x00002000
@ -2783,13 +2783,26 @@ static void setup_output_matrix()
LOG(2,("INFO: defaulting to head 2 for primary use.\n")); LOG(2,("INFO: defaulting to head 2 for primary use.\n"));
si->ps.crtc2_prim = true; si->ps.crtc2_prim = true;
break; break;
case NV44:
/* NV44 is a special case in this situation (confirmed Geforce 6200LE):
* It's hardware behaves as a NV40/41/45 but there's some unknown extra bit
* which needs to be programmed now to get CRTC2/DAC2 displaying anything
* else than blackness (with monitor ON @ correct refresh and resolution).
* We are therefore forced to use CRTC1/DAC1 instead (as these are presetup
* fully by the card's BIOS at POST in this situation). */
LOG(2,("INFO: head 1 has nothing connected;\n"));
LOG(2,("INFO: head 2 has an analog panel or CRT:\n"));
LOG(2,("INFO: cross-switching outputs for NV44!\n"));
nv_general_output_select(true);
LOG(2,("INFO: defaulting to head 1 for primary use.\n"));
break;
default: default:
/* newer NV40 architecture cards contains (an) additional switch(es) /* newer NV40 architecture cards contains (an) additional switch(es)
* to connect a CRTC/DAC combination to a connector. The BIOSes of * to connect a CRTC/DAC combination to a connector. The BIOSes of
* these cards connect head1 to connectors 1 and 2 simultaneously if * these cards connect head1 to connectors 1 and 2 simultaneously if
* only one VGA screen is found being on connector 2. Which is the * only one VGA screen is found being on connector 2. Which is the
* case here. * case here.
* Confirmed on NV43, NV44, G71 and G73. */ * Confirmed on NV43, G71 and G73. */
LOG(2,("INFO: Both card outputs are connected to head 1;\n")); LOG(2,("INFO: Both card outputs are connected to head 1;\n"));
LOG(2,("INFO: defaulting to head 1 for primary use.\n")); LOG(2,("INFO: defaulting to head 1 for primary use.\n"));
break; break;

View File

@ -4,7 +4,7 @@
</head> </head>
<body> <body>
<p><h2>Changes done for each driverversion:</h2></p> <p><h2>Changes done for each driverversion:</h2></p>
<p><h1>head (SVN 1.06, Rudolf)</h1></p> <p><h1>head (SVN 1.07, Rudolf)</h1></p>
<ul> <ul>
<li>Fixed driver assuming enabling AGP mode succeeded on some occasions if it did not block it itself. Blocking AGP mode completely via the AGP busmanager (option 'block_agp') resulted in a crashing acceleration engine because it was setup for AGP transfers instead of using PCI transfers. Error was solved with help from user kraton. <li>Fixed driver assuming enabling AGP mode succeeded on some occasions if it did not block it itself. Blocking AGP mode completely via the AGP busmanager (option 'block_agp') resulted in a crashing acceleration engine because it was setup for AGP transfers instead of using PCI transfers. Error was solved with help from user kraton.
<li>Fixed shared_info struct problem occuring when 3D 'accelerant' is used (tested Alpha 4.1): the TVencoder type definition list apparantly gets some memory assigned these days when done inside the definition of shared_info. Moved encoder list outside the shared_info definition. <li>Fixed shared_info struct problem occuring when 3D 'accelerant' is used (tested Alpha 4.1): the TVencoder type definition list apparantly gets some memory assigned these days when done inside the definition of shared_info. Moved encoder list outside the shared_info definition.
@ -31,7 +31,8 @@
<li>Added full HDTV mode (1920x1080p) to exported modelist: Haiku's Screen preflet allows you to set this mode now if your screen supports it; <li>Added full HDTV mode (1920x1080p) to exported modelist: Haiku's Screen preflet allows you to set this mode now if your screen supports it;
<li>Improved modeline scaling for digitally connected screens: this fixes missing SYNC pulses on some setups. The screen nolonger shows shifted pictures (this happened mostly on 640x480 resolution); <li>Improved modeline scaling for digitally connected screens: this fixes missing SYNC pulses on some setups. The screen nolonger shows shifted pictures (this happened mostly on 640x480 resolution);
<li>Modified head selection code on NV40 architecture cards except for NV40, NV41 and NV45. The cards affected have differently behaving BIOSes. This should fix black or disabled screens if the secondary connector was used for VGA while the first one was not connected; <li>Modified head selection code on NV40 architecture cards except for NV40, NV41 and NV45. The cards affected have differently behaving BIOSes. This should fix black or disabled screens if the secondary connector was used for VGA while the first one was not connected;
<li>Added dithering for laptop panels (if they are connected to DAC1 only for now). Gradients should now display much more fluently on 18bit depth panels (no more 'colorbands'). <li>Added dithering for laptop panels (if they are connected to DAC1 only for now). Gradients should now display much more fluently on 18bit depth panels (no more 'colorbands');
<li>Fixed black screen on (some?) NV44 cards like Geforce 6100, 6150 and 6200 types.
</ul> </ul>
<p><h1>nv_driver 0.80 (Rudolf)</h1></p> <p><h1>nv_driver 0.80 (Rudolf)</h1></p>
<ul> <ul>