VIA Apollo VPX: Fix SMRAM handling.
This commit is contained in:
@@ -444,7 +444,7 @@ via_apollo_host_bridge_write(int func, int addr, uint8_t val, void *priv)
|
|||||||
apollo_smram_map(dev, 0, 0x000a0000, 0x00020000, 0);
|
apollo_smram_map(dev, 0, 0x000a0000, 0x00020000, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else
|
else if (dev->id == VIA_595)
|
||||||
switch (val & 0x03) {
|
switch (val & 0x03) {
|
||||||
case 0x00:
|
case 0x00:
|
||||||
apollo_smram_map(dev, 1, 0x000a0000, 0x00020000, 0);
|
apollo_smram_map(dev, 1, 0x000a0000, 0x00020000, 0);
|
||||||
@@ -468,6 +468,12 @@ via_apollo_host_bridge_write(int func, int addr, uint8_t val, void *priv)
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
smram_enable(dev->smram, 0x000a0000, 0x000a0000, 0x00020000,
|
||||||
|
(dev->pci_conf[0x6d] & 0x10) && (dev->pci_conf[0x63] & 0x01),
|
||||||
|
dev->pci_conf[0x63] & 0x01);
|
||||||
|
flushmmucache();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x65:
|
case 0x65:
|
||||||
if (dev->id == VIA_585)
|
if (dev->id == VIA_585)
|
||||||
@@ -532,6 +538,13 @@ via_apollo_host_bridge_write(int func, int addr, uint8_t val, void *priv)
|
|||||||
dev->pci_conf[0x6d] = (dev->pci_conf[0x6d] & ~0x7f) | (val & 0x7f);
|
dev->pci_conf[0x6d] = (dev->pci_conf[0x6d] & ~0x7f) | (val & 0x7f);
|
||||||
else
|
else
|
||||||
dev->pci_conf[0x6d] = val;
|
dev->pci_conf[0x6d] = val;
|
||||||
|
if (dev->id == VIA_585) {
|
||||||
|
smram_disable_all();
|
||||||
|
smram_enable(dev->smram, 0x000a0000, 0x000a0000, 0x00020000,
|
||||||
|
(dev->pci_conf[0x6d] & 0x10) && (dev->pci_conf[0x63] & 0x01),
|
||||||
|
dev->pci_conf[0x63] & 0x01);
|
||||||
|
flushmmucache();
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 0x6e:
|
case 0x6e:
|
||||||
if ((dev->id == VIA_595) || (dev->id == VIA_694))
|
if ((dev->id == VIA_595) || (dev->id == VIA_694))
|
||||||
|
Reference in New Issue
Block a user