Work around ATI expansion ROM problem on IA64 caused by prototype HP
McKinley systems. (Bdale Garbee)
This commit is contained in:
parent
40374d1149
commit
53e489c0e3
|
@ -1091,14 +1091,30 @@ handlePciBIOS(PCITAG Tag, int basereg,
|
||||||
for (i = ROM_BASE_PRESET; i <= ROM_BASE_FIND; i++) {
|
for (i = ROM_BASE_PRESET; i <= ROM_BASE_FIND; i++) {
|
||||||
memType savebase = 0, newbase, romaddr;
|
memType savebase = 0, newbase, romaddr;
|
||||||
|
|
||||||
if (i == ROM_BASE_PRESET) {
|
switch (i) {
|
||||||
|
case ROM_BASE_PRESET:
|
||||||
/* Does the driver have a preference? */
|
/* Does the driver have a preference? */
|
||||||
if (basereg > ROM_BASE_PRESET && basereg <= ROM_BASE_FIND)
|
if (basereg > ROM_BASE_PRESET && basereg <= ROM_BASE_FIND)
|
||||||
b_reg = basereg;
|
b_reg = basereg;
|
||||||
else
|
else
|
||||||
b_reg = ++i;
|
b_reg = ++i;
|
||||||
} else
|
break;
|
||||||
|
case ROM_BASE_FIND:
|
||||||
|
/*
|
||||||
|
* If we have something that looks like a valid address
|
||||||
|
* in romsave, it's probably not going to help to try
|
||||||
|
* to guess a new address and reprogram it.
|
||||||
|
*/
|
||||||
|
if (PCIGETROM(romsave)) {
|
||||||
|
pciWriteLong(Tag, PCI_MAP_ROM_REG, PCI_MAP_ROM_ADDRESS_MASK);
|
||||||
|
if (romsave != pciReadLong(Tag, PCI_MAP_ROM_REG)) {
|
||||||
|
pciWriteLong(Tag, PCI_MAP_ROM_REG, romsave);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
default:
|
||||||
b_reg = i;
|
b_reg = i;
|
||||||
|
}
|
||||||
|
|
||||||
if (!(newbase = getValidBIOSBase(Tag, b_reg)))
|
if (!(newbase = getValidBIOSBase(Tag, b_reg)))
|
||||||
continue; /* no valid address found */
|
continue; /* no valid address found */
|
||||||
|
|
Loading…
Reference in New Issue