Some minor fixes in the AHA/BusLogic code;

Added the Cirrus Logic CL-GD 5428 ISA, 5430 VLB, and 5430 PCI;
The makefile now makes the compiler use the -flto flag only if OPTIM=y.
This commit is contained in:
OBattler
2018-02-19 12:32:54 +01:00
parent 1405d9b10b
commit e441601cd9
9 changed files with 459 additions and 81 deletions

View File

@@ -10,7 +10,7 @@
* made by Adaptec, Inc. These controllers were designed for
* the ISA bus.
*
* Version: @(#)scsi_aha154x.c 1.0.37 2018/02/17
* Version: @(#)scsi_aha154x.c 1.0.38 2018/02/19
*
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
* Original Buslogic version by SA1988 and Miran Grca.
@@ -784,7 +784,7 @@ aha_init(device_t *info)
switch(dev->Base) {
case 0x0330:
dev->bios_path =
L"roms/scsi/adaptec/aha1540b310.bin";
L"roms/scsi/adaptec/aha1540b320_330.bin";
break;
case 0x0334:
@@ -795,7 +795,6 @@ aha_init(device_t *info)
dev->fw_rev = "A005"; /* The 3.2 microcode says A012. */
/* This is configurable from the configuration for the 154xB, the rest of the controllers read it from the EEPROM. */
dev->HostID = device_get_config_int("hostid");
dev->int_geom_writable = 2;
dev->rom_shram = 0x3F80; /* shadow RAM address base */
dev->rom_shramsz = 128; /* size of shadow RAM */
break;

View File

@@ -11,14 +11,14 @@
* series of SCSI Host Adapters made by Mylex.
* These controllers were designed for various buses.
*
* Version: @(#)scsi_x54x.c 1.0.13 2018/02/17
* Version: @(#)scsi_x54x.c 1.0.14 2018/02/19
*
* Authors: TheCollector1995, <mariogplayer@gmail.com>
* Miran Grca, <mgrca8@gmail.com>
* Fred N. van Kempen, <decwiz@yahoo.com>
*
* Copyright 2016,2018 Miran Grca.
* Copyright 2018 Fred N. van Kempen.
* Copyright 2016-2018 Miran Grca.
* Copyright 2017,2018 Fred N. van Kempen.
*/
#include <stdio.h>
#include <stdint.h>
@@ -1350,6 +1350,14 @@ x54x_in(uint16_t port, void *priv)
{
x54x_t *dev = (x54x_t *)priv;
uint8_t ret;
#if 0
char geom_ret[28] = " ADAPTEC AHA1542B ";
geom_ret[0] = geom_ret[1] = 0x00;
geom_ret[2] = 0x18;
#else
char geom_ret[26] = " ADAPTEC AHA1542B ";
geom_ret[0] = 0x18;
#endif
switch (port & 3) {
case 0:
@@ -1372,16 +1380,30 @@ x54x_in(uint16_t port, void *priv)
break;
case 3:
/* Bits according to ASPI4DOS.SYS v3.36:
0 Not checked
1 Must be 0
2 Must be 0-0-0-1
3 Must be 0
4 Must be 0-1-0-0
5 Must be 0
6 Not checked
7 Not checked
*/
if (dev->int_geom_writable)
ret = dev->Geometry;
else {
dev->Geometry++;
switch(dev->Geometry & 3) {
switch(dev->Geometry) {
case 0: ret = 'A'; break;
case 1: ret = 'D'; break;
case 2: ret = 'A'; break;
case 3: ret = 'P'; break;
}
ret ^= 1;
dev->Geometry++;
if (dev->Geometry == 4)
dev->Geometry = 0;
break;
}
break;
}
@@ -1443,7 +1465,7 @@ static void
x54x_reset(x54x_t *dev)
{
clear_irq(dev);
if (dev->int_geom_writable == 1)
if (dev->int_geom_writable)
dev->Geometry = 0x80;
else
dev->Geometry = 0x00;
@@ -1799,7 +1821,7 @@ x54x_out(uint16_t port, uint8_t val, void *priv)
break;
case 3:
if (dev->int_geom_writable == 1)
if (dev->int_geom_writable)
dev->Geometry = val;
break;
}