BLOOOOOOPP!! Erazor 3 TNT2 coldstart is operational!! Wow! Small note: I probably need to really setup FIFO watermarks now, can't deny it anymore. Cards works beautifully as full secondary card in system in 640x480 8-32bit color, 800x600 8-16 bit color, and 1024x768 in 8 bit color (60Hz tested).

Go above that and you'll probably witness CRTC memory fetch errors (distortions, maybe like snow ;-)


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8727 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Rudolf Cornelissen
2004-08-30 13:46:47 +00:00
parent ce35f051d5
commit 502f746720
2 changed files with 24 additions and 4 deletions
@@ -782,7 +782,6 @@ void set_crtc_owner(bool head)
static status_t nvxx_general_powerup()
{
LOG(4, ("INIT: NV powerup\n"));
if (si->settings.logmask & 0x80000000) nv_dump_configuration_space();
/* fill-in the cardspecs in the shared_info PINS struct */
fake_pins();
@@ -802,6 +801,10 @@ static status_t nvxx_general_powerup()
{
LOG(2, ("INIT: Skipping card coldstart!\n"));
}
/* dump config space as it is after a possible coldstart attempt */
if (si->settings.logmask & 0x80000000) nv_dump_configuration_space();
/* log the final PINS struct settings */
dump_pins();
@@ -174,7 +174,22 @@ static status_t coldstart_card(uint8* rom, uint16 init1, uint16 init2, uint16 in
LOG(8,("INFO: executing coldstart...\n"));
//fixme: unlock regs etc...(!)
/* select colormode CRTC registers base adresses */
NV_REG8(NV8_MISCW) = 0xcb;
/* enable access to primary head */
set_crtc_owner(0);
/* unlock head's registers for R/W access */
CRTCW(LOCK, 0x57);
CRTCW(VSYNCE ,(CRTCR(VSYNCE) & 0x7f));
if (si->ps.secondary_head)
{
/* enable access to secondary head */
set_crtc_owner(1);
/* unlock head's registers for R/W access */
CRTC2W(LOCK, 0x57);
CRTC2W(VSYNCE ,(CRTCR(VSYNCE) & 0x7f));
}
/* turn off both displays and the hardcursors (also disables transfers) */
nv_crtc_dpms(false, false, false);
@@ -192,6 +207,9 @@ static status_t coldstart_card(uint8* rom, uint16 init1, uint16 init2, uint16 in
if (exec_type1_script(rom, init1, &size) != B_OK) result = B_ERROR;
if (init2 && (result == B_OK))
if (exec_type1_script(rom, init2, &size) != B_OK) result = B_ERROR;
/* now enable ROM shadow or the card will remain shut-off! */
NV_REG32(0x00001800 + NVCFG_ROMSHADOW) |= 0x00000001;
}
else
{
@@ -320,8 +338,7 @@ static status_t exec_type1_script(uint8* rom, uint16 adress, int16* size)
NV_REG32(reg) = data;
NV_REG32(reg) = data2;
NV_REG32(0x00001800 + NVCFG_AGPCMD) = safe32;
//don't touch!
//NV_REG32(0x00001800 + NVCFG_ROMSHADOW) &= 0xfffffffe;
NV_REG32(0x00001800 + NVCFG_ROMSHADOW) &= 0xfffffffe;
}
break;
case 0x66: /* new on NV11 */