updated AGP shutoff to be temporary during coldstarts: finally NV28 cooperates IF card is primary, fake_agp driver is installed and FW is enabled!! Apparantly something messes up PCI/AGP comms that does not get restored within the normal coldstart operating procedure. PCI mode is NOT operational when coldstarting(!)
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9352 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -225,6 +225,7 @@ static status_t coldstart_card(uint8* rom, uint16 init1, uint16 init2, uint16 in
|
|||||||
{
|
{
|
||||||
status_t result = B_OK;
|
status_t result = B_OK;
|
||||||
int16 size = init_size;
|
int16 size = init_size;
|
||||||
|
uint32 agp_mode;
|
||||||
|
|
||||||
LOG(8,("INFO: now executing coldstart...\n"));
|
LOG(8,("INFO: now executing coldstart...\n"));
|
||||||
|
|
||||||
@@ -266,6 +267,7 @@ static status_t coldstart_card(uint8* rom, uint16 init1, uint16 init2, uint16 in
|
|||||||
/* note:
|
/* note:
|
||||||
* this _must_ be done _after_ the screens where shut-off as no
|
* this _must_ be done _after_ the screens where shut-off as no
|
||||||
* (memory) transactions may be in progress during this command. */
|
* (memory) transactions may be in progress during this command. */
|
||||||
|
agp_mode = CFGR(AGPCMD);
|
||||||
CFGW(AGPCMD, 0x00000000);
|
CFGW(AGPCMD, 0x00000000);
|
||||||
|
|
||||||
/* execute BIOS coldstart script(s) */
|
/* execute BIOS coldstart script(s) */
|
||||||
@@ -276,6 +278,9 @@ static status_t coldstart_card(uint8* rom, uint16 init1, uint16 init2, uint16 in
|
|||||||
if (init2 && (result == B_OK))
|
if (init2 && (result == B_OK))
|
||||||
if (exec_type1_script(rom, init2, &size, ram_tab) != B_OK) result = B_ERROR;
|
if (exec_type1_script(rom, init2, &size, ram_tab) != B_OK) result = B_ERROR;
|
||||||
|
|
||||||
|
/* reset bus mode to wat it was before */
|
||||||
|
CFGW(AGPCMD, agp_mode);
|
||||||
|
|
||||||
/* now enable ROM shadow or the card will remain shut-off! */
|
/* now enable ROM shadow or the card will remain shut-off! */
|
||||||
CFGW(ROMSHADOW, (CFGR(ROMSHADOW) |= 0x00000001));
|
CFGW(ROMSHADOW, (CFGR(ROMSHADOW) |= 0x00000001));
|
||||||
|
|
||||||
@@ -299,6 +304,7 @@ static status_t coldstart_card_516_up(uint8* rom, PinsTables tabs, uint16 ram_ta
|
|||||||
{
|
{
|
||||||
status_t result = B_OK;
|
status_t result = B_OK;
|
||||||
uint16 adress;
|
uint16 adress;
|
||||||
|
uint32 agp_mode;
|
||||||
|
|
||||||
LOG(8,("INFO: now executing coldstart...\n"));
|
LOG(8,("INFO: now executing coldstart...\n"));
|
||||||
|
|
||||||
@@ -348,6 +354,7 @@ static status_t coldstart_card_516_up(uint8* rom, PinsTables tabs, uint16 ram_ta
|
|||||||
/* note:
|
/* note:
|
||||||
* this _must_ be done _after_ the screens where shut-off as no
|
* this _must_ be done _after_ the screens where shut-off as no
|
||||||
* (memory) transactions may be in progress during this command. */
|
* (memory) transactions may be in progress during this command. */
|
||||||
|
agp_mode = CFGR(AGPCMD);
|
||||||
CFGW(AGPCMD, 0x00000000);
|
CFGW(AGPCMD, 0x00000000);
|
||||||
|
|
||||||
/* execute all BIOS coldstart script(s) */
|
/* execute all BIOS coldstart script(s) */
|
||||||
@@ -372,6 +379,9 @@ static status_t coldstart_card_516_up(uint8* rom, PinsTables tabs, uint16 ram_ta
|
|||||||
adress = *((uint16*)(&(rom[index])));
|
adress = *((uint16*)(&(rom[index])));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* reset bus mode to wat it was before */
|
||||||
|
CFGW(AGPCMD, agp_mode);
|
||||||
|
|
||||||
/* now enable ROM shadow or the card will remain shut-off! */
|
/* now enable ROM shadow or the card will remain shut-off! */
|
||||||
CFGW(ROMSHADOW, (CFGR(ROMSHADOW) |= 0x00000001));
|
CFGW(ROMSHADOW, (CFGR(ROMSHADOW) |= 0x00000001));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user