[haiku-commits] r33966 - in haiku/trunk/src/add-ons: accelerants/nvidia/engine kernel/drivers/graphics/nvidia

  • From: rudolf.cornelissen@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 9 Nov 2009 22:26:25 +0100 (CET)

Author: rudolfc
Date: 2009-11-09 22:26:24 +0100 (Mon, 09 Nov 2009)
New Revision: 33966
Changeset: http://dev.haiku-os.org/changeset/33966/haiku

Modified:
   haiku/trunk/src/add-ons/accelerants/nvidia/engine/nv_dac2.c
   haiku/trunk/src/add-ons/accelerants/nvidia/engine/nv_general.c
   haiku/trunk/src/add-ons/accelerants/nvidia/engine/nv_info.c
   haiku/trunk/src/add-ons/kernel/drivers/graphics/nvidia/UPDATE.html
Log:
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.

Modified: haiku/trunk/src/add-ons/accelerants/nvidia/engine/nv_dac2.c
===================================================================
--- haiku/trunk/src/add-ons/accelerants/nvidia/engine/nv_dac2.c 2009-11-09 
19:00:42 UTC (rev 33965)
+++ haiku/trunk/src/add-ons/accelerants/nvidia/engine/nv_dac2.c 2009-11-09 
21:26:24 UTC (rev 33966)
@@ -24,6 +24,7 @@
        /* (It DOES have a secondary palette RAM and pixelclock PLL though.) */
        case NV11:
        /* on NV40 arch (confirmed NV43, G71, G73) this routine doesn't work. */
+       /* (on NV44 (confirmed Geforce 6200LE) this routine *does* work.) */
        case NV43:
        case G71:
        case G73:

Modified: haiku/trunk/src/add-ons/accelerants/nvidia/engine/nv_general.c
===================================================================
--- haiku/trunk/src/add-ons/accelerants/nvidia/engine/nv_general.c      
2009-11-09 19:00:42 UTC (rev 33965)
+++ haiku/trunk/src/add-ons/accelerants/nvidia/engine/nv_general.c      
2009-11-09 21:26:24 UTC (rev 33966)
@@ -1,7 +1,7 @@
 /* Authors:
    Mark Watson 12/1999,
    Apsed,
-   Rudolf Cornelissen 10/2002-10/2009
+   Rudolf Cornelissen 10/2002-11/2009
    tst..
 */
 
@@ -92,7 +92,7 @@
 {
        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 */
        if (si->ps.int_assigned)

Modified: haiku/trunk/src/add-ons/accelerants/nvidia/engine/nv_info.c
===================================================================
--- haiku/trunk/src/add-ons/accelerants/nvidia/engine/nv_info.c 2009-11-09 
19:00:42 UTC (rev 33965)
+++ haiku/trunk/src/add-ons/accelerants/nvidia/engine/nv_info.c 2009-11-09 
21:26:24 UTC (rev 33966)
@@ -1,7 +1,7 @@
 /* Read initialisation information from card */
 /* some bits are hacks, where PINS is not known */
 /* Author:
-   Rudolf Cornelissen 7/2003-9/2009
+   Rudolf Cornelissen 7/2003-11/2009
 */
 
 #define MODULE_BIT 0x00002000
@@ -2783,13 +2783,26 @@
                                                LOG(2,("INFO: defaulting to 
head 2 for primary use.\n"));
                                                si->ps.crtc2_prim = true;
                                                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:
                                                /* newer NV40 architecture 
cards contains (an) additional switch(es)
                                                 * to connect a CRTC/DAC 
combination to a connector. The BIOSes of
                                                 * these cards connect head1 to 
connectors 1 and 2 simultaneously if
                                                 * only one VGA screen is found 
being on connector 2. Which is the
                                                 * 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: defaulting to 
head 1 for primary use.\n"));
                                                break;

Modified: haiku/trunk/src/add-ons/kernel/drivers/graphics/nvidia/UPDATE.html
===================================================================
--- haiku/trunk/src/add-ons/kernel/drivers/graphics/nvidia/UPDATE.html  
2009-11-09 19:00:42 UTC (rev 33965)
+++ haiku/trunk/src/add-ons/kernel/drivers/graphics/nvidia/UPDATE.html  
2009-11-09 21:26:24 UTC (rev 33966)
@@ -4,7 +4,7 @@
 </head>
 <body>
 <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>
 <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.
@@ -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>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>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>
 <p><h1>nv_driver 0.80 (Rudolf)</h1></p>
 <ul>


Other related posts:

  • » [haiku-commits] r33966 - in haiku/trunk/src/add-ons: accelerants/nvidia/engine kernel/drivers/graphics/nvidia - rudolf . cornelissen