fixed coldstart RAM test exec failures on high-voltage AGP1.0 slots (confirmed a NV11 now working OK there). Bumped version to 0.70.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16109 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -91,7 +91,7 @@ status_t nv_general_powerup()
|
||||
{
|
||||
status_t status;
|
||||
|
||||
LOG(1,("POWERUP: Haiku nVidia Accelerant 0.69 running.\n"));
|
||||
LOG(1,("POWERUP: Haiku nVidia Accelerant 0.70 running.\n"));
|
||||
|
||||
/* log VBLANK INT usability status */
|
||||
if (si->ps.int_assigned)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* Read initialisation information from card */
|
||||
/* some bits are hacks, where PINS is not known */
|
||||
/* Author:
|
||||
Rudolf Cornelissen 7/2003-11/2005
|
||||
Rudolf Cornelissen 7/2003-1/2006
|
||||
*/
|
||||
|
||||
#define MODULE_BIT 0x00002000
|
||||
@@ -1857,6 +1857,12 @@ static void exec_cmd_39_type2(uint8* rom, uint32 data, PinsTables tabs, bool* ex
|
||||
|
||||
static void setup_ram_config_nv10_up(uint8* rom)
|
||||
{
|
||||
/* note:
|
||||
* After writing data to RAM a snooze is required to make the test work.
|
||||
* Confirmed a NV11: without snooze it worked OK on a low-voltage AGP2.0 slot,
|
||||
* but on a higher-voltage AGP 1.0 slot it failed to identify errors correctly!!
|
||||
* Adding the snooze fixed that. */
|
||||
|
||||
uint32 data, dummy;
|
||||
uint8 cnt = 0;
|
||||
status_t stat = B_ERROR;
|
||||
@@ -1869,13 +1875,19 @@ static void setup_ram_config_nv10_up(uint8* rom)
|
||||
{
|
||||
/* reset RAM bits at offset 224-255 bits four times */
|
||||
((uint32 *)si->framebuffer)[0x07] = 0x00000000;
|
||||
snooze(10);
|
||||
((uint32 *)si->framebuffer)[0x07] = 0x00000000;
|
||||
snooze(10);
|
||||
((uint32 *)si->framebuffer)[0x07] = 0x00000000;
|
||||
snooze(10);
|
||||
((uint32 *)si->framebuffer)[0x07] = 0x00000000;
|
||||
snooze(10);
|
||||
/* write testpattern */
|
||||
((uint32 *)si->framebuffer)[0x07] = 0x4e563131;
|
||||
snooze(10);
|
||||
/* reset RAM bits at offset 480-511 bits */
|
||||
((uint32 *)si->framebuffer)[0x0f] = 0x00000000;
|
||||
snooze(10);
|
||||
/* check testpattern to have survived */
|
||||
if (((uint32 *)si->framebuffer)[0x07] == 0x4e563131) stat = B_OK;
|
||||
cnt++;
|
||||
@@ -1913,8 +1925,10 @@ static void setup_ram_config_nv10_up(uint8* rom)
|
||||
data -= 0x00100000;
|
||||
/* write testpattern at generated RAM adress */
|
||||
((uint32 *)si->framebuffer)[(data >> 2)] = 0x4e564441;
|
||||
snooze(10);
|
||||
/* reset first RAM adress */
|
||||
((uint32 *)si->framebuffer)[0x00] = 0x00000000;
|
||||
snooze(10);
|
||||
/* dummyread first RAM adress four times */
|
||||
dummy = ((volatile uint32 *)si->framebuffer)[0x00];
|
||||
dummy = ((volatile uint32 *)si->framebuffer)[0x00];
|
||||
@@ -1941,6 +1955,12 @@ static void setup_ram_config_nv10_up(uint8* rom)
|
||||
* It doesn't matter if the card actually _has_ this amount of RAM or not(!) */
|
||||
static void setup_ram_config_nv28(uint8* rom)
|
||||
{
|
||||
/* note:
|
||||
* After writing data to RAM a snooze is required to make the test work.
|
||||
* Confirmed a NV11: without snooze it worked OK on a low-voltage AGP2.0 slot,
|
||||
* but on a higher-voltage AGP 1.0 slot it failed to identify errors correctly!!
|
||||
* Adding the snooze fixed that. */
|
||||
|
||||
uint32 dummy;
|
||||
uint8 cnt = 0;
|
||||
status_t stat = B_ERROR;
|
||||
@@ -1955,8 +1975,10 @@ static void setup_ram_config_nv28(uint8* rom)
|
||||
NV_REG32(NV32_PFB_CONFIG_0) |= 0x00000800;
|
||||
/* write testpattern to RAM adress 127Mb */
|
||||
((uint32 *)si->framebuffer)[0x01fc0000] = 0x4e564441;
|
||||
snooze(10);
|
||||
/* reset first RAM adress */
|
||||
((uint32 *)si->framebuffer)[0x00000000] = 0x00000000;
|
||||
snooze(10);
|
||||
/* dummyread first RAM adress four times */
|
||||
dummy = ((volatile uint32 *)si->framebuffer)[0x00000000];
|
||||
LOG(8,("INFO: (#%d) dummy1 = $%08x, ", cnt, dummy));
|
||||
|
||||
Reference in New Issue
Block a user