Added the NCR 53c815 and 53c820, and made sure the 53c810 and the 53c820 do not have the BIOS option as real ones do not have a BIOS BAR, while the 53c815 and 53c825 do (they are basically 53c810 and 53c820, respectively, with own BIOS support);

Roughly implemented the SCSI IDENTIFY message LUN operation, fixes some SCSI controller drivers in some situations;
Added an undocumented CMD640 IDE controller register required by Linux and by a DOS driver.
This commit is contained in:
OBattler
2021-03-23 06:32:18 +01:00
parent cc3129dc3c
commit bd792b8e7a
18 changed files with 107 additions and 54 deletions

View File

@@ -130,8 +130,8 @@ typedef struct {
uint8_t status, phase,
error, id,
features, pad0,
pad1, pad2;
features, cur_lun,
pad0, pad1;
uint16_t request_length, max_transfer_len;

View File

@@ -36,8 +36,8 @@ typedef struct {
uint8_t status, phase,
error, id,
features, pad0,
pad1, pad2;
features, cur_lun,
pad0, pad1;
uint16_t request_length, max_transfer_len;

View File

@@ -24,6 +24,8 @@
#define SCSI_ID_MAX 16 /* 16 on wide buses */
#define SCSI_LUN_MAX 8 /* always 8 */
#define SCSI_LUN_USE_CDB 0xff
#ifdef WALTJE
#define SCSI_TIME 50.0
#else
@@ -320,7 +322,7 @@ typedef struct scsi_common_s {
uint8_t status, phase,
error, id,
features, pad,
features, cur_lun,
pad0, pad1;
uint16_t request_length, max_transfer_len;
@@ -378,6 +380,7 @@ extern int scsi_device_cdb_length(scsi_device_t *dev);
extern void scsi_device_command_phase0(scsi_device_t *dev, uint8_t *cdb);
extern void scsi_device_command_phase1(scsi_device_t *dev);
extern void scsi_device_command_stop(scsi_device_t *dev);
extern void scsi_device_identify(scsi_device_t *dev, uint8_t lun);
extern void scsi_device_close_all(void);
extern void scsi_device_init(void);

View File

@@ -26,8 +26,8 @@ typedef struct {
uint8_t status, phase,
error, id,
pad0, pad1,
pad2, pad3;
pad0, cur_lun,
pad1, pad2;
uint16_t request_length, pad4;

View File

@@ -27,6 +27,8 @@
extern const device_t ncr53c810_pci_device;
extern const device_t ncr53c810_onboard_pci_device;
extern const device_t ncr53c815_pci_device;
extern const device_t ncr53c820_pci_device;
extern const device_t ncr53c825a_pci_device;
extern const device_t ncr53c860_pci_device;
extern const device_t ncr53c875_pci_device;

View File

@@ -76,8 +76,8 @@ typedef struct {
uint8_t status, phase,
error, id,
features, pad0,
pad1, pad2;
features, cur_lun,
pad0, pad1;
uint16_t request_length, max_transfer_len;