fixed (at least NV34) card hanging after failed boot-time kernel VESA modeswitch. Updated docs. Bumped version to 0.87.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30531 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Rudolf Cornelissen
2009-05-01 10:09:22 +00:00
parent 7a282f3b28
commit a6cde944e6
4 changed files with 22 additions and 12 deletions
@@ -92,7 +92,7 @@ status_t nv_general_powerup()
{ {
status_t status; status_t status;
LOG(1,("POWERUP: Haiku nVidia Accelerant 0.86 running.\n")); LOG(1,("POWERUP: Haiku nVidia Accelerant 0.87 running.\n"));
/* log VBLANK INT usability status */ /* log VBLANK INT usability status */
if (si->ps.int_assigned) if (si->ps.int_assigned)
@@ -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-3/2006 Rudolf Cornelissen 7/2003-5/2009
*/ */
#define MODULE_BIT 0x00002000 #define MODULE_BIT 0x00002000
@@ -2517,11 +2517,13 @@ static void detect_panels()
/* determine flatpanel type(s) */ /* determine flatpanel type(s) */
/* note: /* note:
* on NV11 accessing registerset(s) hangs card. */ * - on NV11 accessing registerset(s) hangs card.
//fixme: how about NV11's with panels? * - the same applies for NV34.
//fixme?: linux checks on (only and) all dualhead cards, and only on DAC1... * Confirmed for DAC2 access on ID 0x0322,
//fixme: testing... * but only after a failed VESA modeswitch by the HAIKU kernel
if (/*si->ps.tmds1_active && */(si->ps.card_type != NV11)) * at boot time caused by a BIOS fault inside the gfx card: it says
* it can do VESA 1280x1024x32 on CRTC1/DAC1 but it fails: no signal. */
if (si->ps.tmds1_active && (si->ps.card_type != NV11))
{ {
/* Read a indexed register to see if it indicates LVDS or TMDS panel presence. /* Read a indexed register to see if it indicates LVDS or TMDS panel presence.
* b0-7 = adress, b16 = 1 = write_enable */ * b0-7 = adress, b16 = 1 = write_enable */
@@ -2532,9 +2534,7 @@ static void detect_panels()
else else
LOG(2,("INFO: Flatpanel on head 1 is TMDS type\n")); LOG(2,("INFO: Flatpanel on head 1 is TMDS type\n"));
} }
//fixme: testing... if (si->ps.tmds2_active && (si->ps.card_type != NV11))
// if (si->ps.tmds2_active && (si->ps.card_type != NV11))
if (si->ps.secondary_head && (si->ps.card_type != NV11))
{ {
/* Read a indexed register to see if it indicates LVDS or TMDS panel presence. /* Read a indexed register to see if it indicates LVDS or TMDS panel presence.
* b0-7 = adress, b16 = 1 = write_enable */ * b0-7 = adress, b16 = 1 = write_enable */
@@ -243,10 +243,18 @@ Primary lets you force a certain card to be used as primary card in your system
<li>Coldstarting doesn't work on TNT1 and GeForce 6xxx/7xxx cards yet. <li>Coldstarting doesn't work on TNT1 and GeForce 6xxx/7xxx cards yet.
<li>Primary forces the primary card by preceding the exported name by a minus-sign (-) for the selected device. This ensures that this device will be listed at the top in the /dev/graphics/ folder, which is alphabetically ordered. Please make sure you enable the 'primary' feature on just one graphics driver, otherwise it's effect isn't 'guaranteed'. <li>Primary forces the primary card by preceding the exported name by a minus-sign (-) for the selected device. This ensures that this device will be listed at the top in the /dev/graphics/ folder, which is alphabetically ordered. Please make sure you enable the 'primary' feature on just one graphics driver, otherwise it's effect isn't 'guaranteed'.
</ul> </ul>
<li><strong>block_acc:</strong><br>
This option lets you disable the acceleration engine all together if enabled. Use this as a workaround if you encounter acceleration engine trouble.
<ul>
<li><strong>false:</strong> (default setting)<br>
The acceleration engine is enabled.
<li><strong>true:</strong><br>
The acceleration engine is disabled.
</ul>
</ul> </ul>
<hr> <hr>
<br> <br>
<a href="mailto:[email protected]">Rudolf Cornelissen.</a> <a href="mailto:[email protected]">Rudolf Cornelissen.</a>
<p>(Page last updated on June 10, 2008)</p> <p>(Page last updated on May 1, 2009)</p>
</body> </body>
</html> </html>
@@ -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 0.85, Rudolf)</h1></p> <p><h1>head (SVN 0.87, 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.
@@ -14,6 +14,8 @@
<li>'pgm_panel' is now preset to 'false' since this will probably increase chances of a good picture on panels outthere. <li>'pgm_panel' is now preset to 'false' since this will probably increase chances of a good picture on panels outthere.
<li>'force_ws' is now (re-enabled but) preset to 'true' since the number of widescreen monitors outthere is rapidly becoming mainstream.<br> <strong>Note please:</strong><br> <li>'force_ws' is now (re-enabled but) preset to 'true' since the number of widescreen monitors outthere is rapidly becoming mainstream.<br> <strong>Note please:</strong><br>
'force_ws' was hardcoded to setting 'true' some time ago by the Haiku team because of these monitors. 'force_ws' was hardcoded to setting 'true' some time ago by the Haiku team because of these monitors.
<li>Added 'block_acc' option in nvidia.settings to completely disable the acceleration engine. Use this as a work-around if the acceleration engine misbehaves.
<li>Fixed card/system hanging after trying to log LVDS/TMDS distinction info. This (at least) fixes one NV34 trying to startup after a failed kernel VESA modeswitch without using the driver's coldstart option. Might very well help on other type cards too.
</ul> </ul>
</ul> </ul>
</ul> </ul>