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:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user