Fixed the VIA machines.

This commit is contained in:
OBattler
2020-11-18 03:30:13 +01:00
parent bbf08e258d
commit 607230ae18
4 changed files with 17 additions and 12 deletions

View File

@@ -363,20 +363,16 @@ via_apollo_host_bridge_write(int func, int addr, uint8_t val, void *priv)
apollo_smram_map(dev, 1, 0x000a0000, 0x00020000, 1); /* SMM: Code DRAM, Data DRAM */ apollo_smram_map(dev, 1, 0x000a0000, 0x00020000, 1); /* SMM: Code DRAM, Data DRAM */
apollo_smram_map(dev, 0, 0x000a0000, 0x00020000, 3); /* Non-SMM: Code Invalid, Data Invalid */ apollo_smram_map(dev, 0, 0x000a0000, 0x00020000, 3); /* Non-SMM: Code Invalid, Data Invalid */
break; break;
} else if(dev->id >= VIA_597) switch (val & 0x03) { } else if (dev->id >= VIA_597) switch (val & 0x03) {
case 0x00: case 0x00:
default: default:
/* Disable SMI Address Redirection (default) */ /* Disable SMI Address Redirection (default) */
apollo_smram_map(dev, 1, 0x000a0000, 0x00020000, 0); apollo_smram_map(dev, 1, 0x000a0000, 0x00020000, 0);
if (dev->id == VIA_597)
apollo_smram_map(dev, 1, 0x00030000, 0x00020000, 1);
apollo_smram_map(dev, 0, 0x000a0000, 0x00020000, 0); apollo_smram_map(dev, 0, 0x000a0000, 0x00020000, 0);
break; break;
case 0x01: case 0x01:
/* Allow access to DRAM Axxxx-Bxxxx for both normal and SMI cycles */ /* Allow access to DRAM Axxxx-Bxxxx for both normal and SMI cycles */
apollo_smram_map(dev, 1, 0x000a0000, 0x00020000, 1); apollo_smram_map(dev, 1, 0x000a0000, 0x00020000, 1);
if (dev->id == VIA_597)
apollo_smram_map(dev, 1, 0x00030000, 0x00020000, 1);
apollo_smram_map(dev, 0, 0x000a0000, 0x00020000, 1); apollo_smram_map(dev, 0, 0x000a0000, 0x00020000, 1);
break; break;
case 0x02: case 0x02:
@@ -391,8 +387,6 @@ via_apollo_host_bridge_write(int func, int addr, uint8_t val, void *priv)
case 0x03: case 0x03:
/* Allow SMI Axxxx-Bxxxx DRAM access */ /* Allow SMI Axxxx-Bxxxx DRAM access */
apollo_smram_map(dev, 1, 0x000a0000, 0x00020000, 1); apollo_smram_map(dev, 1, 0x000a0000, 0x00020000, 1);
if (dev->id == VIA_597)
apollo_smram_map(dev, 1, 0x00030000, 0x00020000, 1);
apollo_smram_map(dev, 0, 0x000a0000, 0x00020000, 0); apollo_smram_map(dev, 0, 0x000a0000, 0x00020000, 0);
break; break;
} else switch(val & 0x03) { } else switch(val & 0x03) {
@@ -711,7 +705,7 @@ const device_t via_vpx_device =
{ {
"VIA Apollo VPX", "VIA Apollo VPX",
DEVICE_PCI, DEVICE_PCI,
VIA_597, /*VT82C585*/ VIA_585, /*VT82C585*/
via_apollo_init, via_apollo_init,
via_apollo_close, via_apollo_close,
via_apollo_reset, via_apollo_reset,
@@ -725,7 +719,7 @@ const device_t amd640_device =
{ {
"AMD 640 System Controller", "AMD 640 System Controller",
DEVICE_PCI, DEVICE_PCI,
VIA_597, /*VT82C595*/ VIA_595, /*VT82C595*/
via_apollo_init, via_apollo_init,
via_apollo_close, via_apollo_close,
via_apollo_reset, via_apollo_reset,

View File

@@ -25,6 +25,7 @@ extern const device_t fdc37c663_device;
extern const device_t fdc37c665_device; extern const device_t fdc37c665_device;
extern const device_t fdc37c666_device; extern const device_t fdc37c666_device;
extern const device_t fdc37c669_device; extern const device_t fdc37c669_device;
extern const device_t fdc37c669_370_device;
extern const device_t fdc37c931apm_device; extern const device_t fdc37c931apm_device;
extern const device_t fdc37c931apm_compaq_device; extern const device_t fdc37c931apm_compaq_device;
extern const device_t fdc37c932fr_device; extern const device_t fdc37c932fr_device;

View File

@@ -1028,7 +1028,7 @@ machine_at_ficva502_init(const machine_t *model)
device_add(&via_vpx_device); device_add(&via_vpx_device);
device_add(&via_vt82c586b_device); device_add(&via_vt82c586b_device);
device_add(&keyboard_ps2_pci_device); device_add(&keyboard_ps2_pci_device);
device_add(&fdc37c669_device); device_add(&fdc37c669_370_device);
device_add(&sst_flash_29ee010_device); device_add(&sst_flash_29ee010_device);
spd_register(SPD_TYPE_SDRAM, 0x3, 256); spd_register(SPD_TYPE_SDRAM, 0x3, 256);
@@ -1062,7 +1062,7 @@ machine_at_ficpa2012_init(const machine_t *model)
device_add(&via_vt82c586b_device); device_add(&via_vt82c586b_device);
device_add(&keyboard_ps2_pci_device); device_add(&keyboard_ps2_pci_device);
device_add(&w83877f_device); device_add(&w83877f_device);
device_add(&sst_flash_39sf010_device); device_add(&sst_flash_29ee010_device);
spd_register(SPD_TYPE_SDRAM, 0x7, 512); spd_register(SPD_TYPE_SDRAM, 0x7, 512);
return ret; return ret;

View File

@@ -281,7 +281,7 @@ fdc37c669_init(const device_t *info)
dev->uart[0] = device_add_inst(&ns16550_device, 1); dev->uart[0] = device_add_inst(&ns16550_device, 1);
dev->uart[1] = device_add_inst(&ns16550_device, 2); dev->uart[1] = device_add_inst(&ns16550_device, 2);
io_sethandler(0x3f0, 0x0002, io_sethandler(info->local ? 0x370 : 0x3f0, 0x0002,
fdc37c669_read, NULL, NULL, fdc37c669_write, NULL, NULL, dev); fdc37c669_read, NULL, NULL, fdc37c669_write, NULL, NULL, dev);
fdc37c669_reset(dev); fdc37c669_reset(dev);
@@ -298,3 +298,13 @@ const device_t fdc37c669_device = {
{ NULL }, NULL, NULL, { NULL }, NULL, NULL,
NULL NULL
}; };
const device_t fdc37c669_370_device = {
"SMC FDC37C669 Super I/O (Port 370h)",
0,
1,
fdc37c669_init, fdc37c669_close, NULL,
{ NULL }, NULL, NULL,
NULL
};