Added the BusLogic BT-445S VLB.

This commit is contained in:
OBattler
2017-10-17 03:00:09 +02:00
parent ca39d3a4c9
commit 95ef5eda3d
7 changed files with 47 additions and 27 deletions

View File

@@ -73,6 +73,7 @@ static SCSI_CARD scsi_cards[] = {
{ "[MCA] Adaptec AHA-1640", "aha1640", &aha1640_device, x54x_device_reset },
{ "[MCA] BusLogic BT-640A", "bt640a", &buslogic_640a_device,BuslogicDeviceReset },
{ "[PCI] BusLogic BT-958D", "bt958d", &buslogic_pci_device, BuslogicDeviceReset },
{ "[VLB] BusLogic BT-445S", "bt445s", &buslogic_445s_device,BuslogicDeviceReset },
{ "", "", NULL, NULL },
};

View File

@@ -760,6 +760,7 @@ aha_init(device_t *info)
dev->max_id = 7;
dev->int_geom_writable = 0;
dev->cdrom_boot = 0;
dev->bit32 = 0;
dev->ven_thread = aha_thread;
dev->ven_cmd_is_fast = aha_cmd_is_fast;

View File

@@ -267,10 +267,8 @@ BuslogicGetNVRFileName(buslogic_data_t *bl)
return L"bt545s.nvr";
case CHIP_BUSLOGIC_MCA:
return L"bt640a.nvr";
#ifdef BUSLOGIC_NOT_WORKING
case CHIP_BUSLOGIC_VLB:
return L"bt445s.nvr";
#endif
case CHIP_BUSLOGIC_PCI:
return L"bt958d.nvr";
default:
@@ -305,11 +303,9 @@ BuslogicAutoSCSIRamSetDefaults(x54x_t *dev, uint8_t safe)
case CHIP_BUSLOGIC_MCA:
memcpy(&(HALR->structured.autoSCSIData.aHostAdaptertype[1]), "640A", 4);
break;
#ifdef BUSLOGIC_NOT_WORKING
case CHIP_BUSLOGIC_VLB:
memcpy(&(HALR->structured.autoSCSIData.aHostAdaptertype[1]), "445S", 4);
break;
#endif
case CHIP_BUSLOGIC_PCI:
memcpy(&(HALR->structured.autoSCSIData.aHostAdaptertype[1]), "958D", 4);
break;
@@ -794,9 +790,7 @@ buslogic_cmds(void *p)
switch (bl->chip) {
case CHIP_BUSLOGIC_ISA_542:
case CHIP_BUSLOGIC_ISA:
#ifdef BUSLOGIC_NOT_WORKING
case CHIP_BUSLOGIC_VLB:
#endif
ReplyIESI->uBusType = 'A'; /* ISA style */
break;
case CHIP_BUSLOGIC_MCA:
@@ -993,11 +987,9 @@ buslogic_setup_data(void *p)
case CHIP_BUSLOGIC_MCA:
bl_setup->uHostBusType = 'B';
break;
#ifdef BUSLOGIC_NOT_WORKING
case CHIP_BUSLOGIC_VLB:
bl_setup->uHostBusType = 'E';
break;
#endif
case CHIP_BUSLOGIC_PCI:
bl_setup->uHostBusType = 'F';
break;
@@ -1434,7 +1426,7 @@ buslogic_init(device_t *info)
dev->max_id = 7;
dev->int_geom_writable = 1;
dev->cdrom_boot = 0;
dev->mca32 = 0;
dev->bit32 = 0;
bl->chip = info->local;
bl->PCIBase = 0;
@@ -1499,12 +1491,24 @@ buslogic_init(device_t *info)
has_autoscsi_rom = 0;
has_scam_rom = 0;
dev->fw_rev = "BA150";
dev->mca32 = 1;
dev->bit32 = 1;
bl->fAggressiveRoundRobinMode = 1;
dev->pos_regs[0] = 0x08; /* MCA board ID */
dev->pos_regs[1] = 0x07;
mca_add(buslogic_mca_read, buslogic_mca_write, dev);
break;
case CHIP_BUSLOGIC_VLB:
strcpy(dev->name, "BT-445S");
bios_rom_name = L"roms/scsi/buslogic/BT-445S_BIOS.rom";
bios_rom_size = 0x4000;
bios_rom_mask = 0x3fff;
has_autoscsi_rom = 1;
autoscsi_rom_name = L"roms/scsi/buslogic/BT-445S_AutoSCSI.rom";
autoscsi_rom_size = 0x4000;
has_scam_rom = 0;
dev->fw_rev = "AA421E";
dev->bit32 = 1;
break;
case CHIP_BUSLOGIC_PCI:
strcpy(dev->name, "BT-958D");
bios_rom_name = L"roms/scsi/buslogic/BT-958D_BIOS.rom";
@@ -1518,6 +1522,7 @@ buslogic_init(device_t *info)
scam_rom_size = 0x0200;
dev->fw_rev = "AA507B";
dev->cdrom_boot = 1;
dev->bit32 = 1;
break;
}
@@ -1753,6 +1758,15 @@ device_t buslogic_640a_device = {
NULL
};
device_t buslogic_445s_device = {
"Buslogic BT-445S ISA",
DEVICE_VLB,
CHIP_BUSLOGIC_ISA,
buslogic_init, x54x_close, NULL,
NULL, NULL, NULL, NULL,
BT_ISA_Config
};
device_t buslogic_pci_device = {
"Buslogic BT-958D PCI",
DEVICE_PCI,

View File

@@ -23,6 +23,7 @@
extern device_t buslogic_device;
extern device_t buslogic_545s_device;
extern device_t buslogic_640a_device;
extern device_t buslogic_445s_device;
extern device_t buslogic_pci_device;
extern void BuslogicDeviceReset(void *p);

View File

@@ -1472,6 +1472,9 @@ x54x_reset(x54x_t *dev)
dev->MailboxInPosCur = 0;
dev->MailboxOutInterrupts = 0;
dev->PendingInterrupt = 0;
dev->IrqEnabled = 1;
dev->MailboxCount = 0;
dev->MailboxOutPosCur = 0;
if (dev->ven_reset) {
dev->ven_reset(dev);
@@ -1864,7 +1867,7 @@ x54x_io_set(x54x_t *dev, uint32_t base)
if (dev->bus & DEVICE_PCI)
bit32 = 1;
else if ((dev->bus & DEVICE_MCA) && dev->mca32)
else if ((dev->bus & DEVICE_MCA) && dev->bit32)
bit32 = 1;
if (bit32) {
@@ -1888,7 +1891,7 @@ x54x_io_remove(x54x_t *dev, uint32_t base)
if (dev->bus & DEVICE_PCI)
bit32 = 1;
else if ((dev->bus & DEVICE_MCA) && dev->mca32)
else if ((dev->bus & DEVICE_MCA) && dev->bit32)
bit32 = 1;
x54x_log("x54x: Removing I/O handler at %04X\n", base);
@@ -1912,7 +1915,7 @@ x54x_mem_init(x54x_t *dev, uint32_t addr)
if (dev->bus & DEVICE_PCI)
bit32 = 1;
else if ((dev->bus & DEVICE_MCA) && dev->mca32)
else if ((dev->bus & DEVICE_MCA) && dev->bit32)
bit32 = 1;
if (bit32) {

View File

@@ -423,7 +423,7 @@ typedef struct {
uint8_t setup_info_len;
uint8_t max_id;
uint8_t pci_slot;
uint8_t mca32;
uint8_t bit32;
mem_mapping_t mmio_mapping;

View File

@@ -103,19 +103,6 @@ video_cards[] = {
{"[ISA] Tseng ET4000AX", "et4000ax", &et4000_device, GFX_ET4000 },
{"[ISA] VGA", "vga", &vga_device, GFX_VGA },
{"[ISA] Wyse 700", "wy700", &wy700_device, GFX_WY700 },
{"[VLB] ATI Graphics Pro Turbo (Mach64 GX)", "mach64x_vlb", &mach64gx_vlb_device, GFX_MACH64GX_VLB },
{"[VLB] Diamond Stealth 32 (Tseng ET4000/w32p)","stealth32_vlb", &et4000w32p_vlb_device, GFX_ET4000W32_VLB },
{"[VLB] Diamond Stealth 3D 2000 (S3 ViRGE)", "stealth3d_2000_vlb", &s3_virge_vlb_device, GFX_VIRGE_VLB },
{"[VLB] Diamond Stealth 3D 3000 (S3 ViRGE/VX)", "stealth3d_3000_vlb", &s3_virge_988_vlb_device, GFX_VIRGEVX_VLB },
{"[VLB] Diamond Stealth 64 DRAM (S3 Trio64)", "stealth64d_vlb", &s3_diamond_stealth64_vlb_device, GFX_STEALTH64_VLB },
{"[VLB] Number Nine 9FX (S3 Trio64)", "n9_9fx_vlb", &s3_9fx_vlb_device, GFX_N9_9FX_VLB },
{"[VLB] Paradise Bahamas 64 (S3 Vision864)", "bahamas64_vlb", &s3_bahamas64_vlb_device, GFX_BAHAMAS64_VLB },
{"[VLB] Phoenix S3 Vision864", "px_vision864_vlb", &s3_phoenix_vision864_vlb_device, GFX_PHOENIX_VISION864_VLB },
{"[VLB] Phoenix S3 Trio32", "px_trio32_vlb", &s3_phoenix_trio32_vlb_device, GFX_PHOENIX_TRIO32_VLB },
{"[VLB] Phoenix S3 Trio64", "px_trio64_vlb", &s3_phoenix_trio64_vlb_device, GFX_PHOENIX_TRIO64_VLB },
{"[VLB] S3 ViRGE/DX", "virge375_vlb", &s3_virge_375_vlb_device, GFX_VIRGEDX_VLB },
{"[VLB] S3 ViRGE/DX (VBE 2.0)", "virge375_vbe20_vlb", &s3_virge_375_4_vlb_device, GFX_VIRGEDX4_VLB },
{"[VLB] Trident TGUI9440", "tgui9440_vlb", &tgui9440_vlb_device, GFX_TGUI9440_VLB },
{"[PCI] ATI Graphics Pro Turbo (Mach64 GX)", "mach64x_pci", &mach64gx_pci_device, GFX_MACH64GX_PCI },
{"[PCI] ATI Video Xpression (Mach64 VT2)", "mach64vt2", &mach64vt2_device, GFX_MACH64VT2 },
{"[PCI] Diamond Stealth 32 (Tseng ET4000/w32p)","stealth32_pci", &et4000w32p_pci_device, GFX_ET4000W32_PCI },
@@ -135,6 +122,19 @@ video_cards[] = {
{"[PCI] S3 ViRGE/DX", "virge375_pci", &s3_virge_375_pci_device, GFX_VIRGEDX_PCI },
{"[PCI] S3 ViRGE/DX (VBE 2.0)", "virge375_vbe20_pci", &s3_virge_375_4_pci_device, GFX_VIRGEDX4_PCI },
{"[PCI] Trident TGUI9440", "tgui9440_pci", &tgui9440_pci_device, GFX_TGUI9440_PCI },
{"[VLB] ATI Graphics Pro Turbo (Mach64 GX)", "mach64x_vlb", &mach64gx_vlb_device, GFX_MACH64GX_VLB },
{"[VLB] Diamond Stealth 32 (Tseng ET4000/w32p)","stealth32_vlb", &et4000w32p_vlb_device, GFX_ET4000W32_VLB },
{"[VLB] Diamond Stealth 3D 2000 (S3 ViRGE)", "stealth3d_2000_vlb", &s3_virge_vlb_device, GFX_VIRGE_VLB },
{"[VLB] Diamond Stealth 3D 3000 (S3 ViRGE/VX)", "stealth3d_3000_vlb", &s3_virge_988_vlb_device, GFX_VIRGEVX_VLB },
{"[VLB] Diamond Stealth 64 DRAM (S3 Trio64)", "stealth64d_vlb", &s3_diamond_stealth64_vlb_device, GFX_STEALTH64_VLB },
{"[VLB] Number Nine 9FX (S3 Trio64)", "n9_9fx_vlb", &s3_9fx_vlb_device, GFX_N9_9FX_VLB },
{"[VLB] Paradise Bahamas 64 (S3 Vision864)", "bahamas64_vlb", &s3_bahamas64_vlb_device, GFX_BAHAMAS64_VLB },
{"[VLB] Phoenix S3 Vision864", "px_vision864_vlb", &s3_phoenix_vision864_vlb_device, GFX_PHOENIX_VISION864_VLB },
{"[VLB] Phoenix S3 Trio32", "px_trio32_vlb", &s3_phoenix_trio32_vlb_device, GFX_PHOENIX_TRIO32_VLB },
{"[VLB] Phoenix S3 Trio64", "px_trio64_vlb", &s3_phoenix_trio64_vlb_device, GFX_PHOENIX_TRIO64_VLB },
{"[VLB] S3 ViRGE/DX", "virge375_vlb", &s3_virge_375_vlb_device, GFX_VIRGEDX_VLB },
{"[VLB] S3 ViRGE/DX (VBE 2.0)", "virge375_vbe20_vlb", &s3_virge_375_4_vlb_device, GFX_VIRGEDX4_VLB },
{"[VLB] Trident TGUI9440", "tgui9440_vlb", &tgui9440_vlb_device, GFX_TGUI9440_VLB },
{"", "", NULL, -1 }
};