Super I/O chip fixes.

This commit is contained in:
OBattler
2022-07-18 23:53:05 +02:00
parent 25783f137d
commit 5dc9b4a7fc
2 changed files with 46 additions and 8 deletions

View File

@@ -125,11 +125,13 @@ serial_handler(i82091aa_t *dev, int uart)
static void
ide_handler(i82091aa_t *dev)
{
ide_sec_disable();
ide_set_base(1, (dev->regs[0x50] & 0x02) ? 0x170 : 0x1f0);
ide_set_side(1, (dev->regs[0x50] & 0x02) ? 0x376 : 0x3f6);
int board = dev->has_ide - 1;
ide_remove_handlers(board);
ide_set_base(board, (dev->regs[0x50] & 0x02) ? 0x170 : 0x1f0);
ide_set_side(board, (dev->regs[0x50] & 0x02) ? 0x376 : 0x3f6);
if (dev->regs[0x50] & 0x01)
ide_sec_enable();
ide_set_handlers(board);
}
@@ -258,7 +260,7 @@ i82091aa_init(const device_t *info)
dev->uart[0] = device_add_inst(&ns16550_device, 1);
dev->uart[1] = device_add_inst(&ns16550_device, 2);
dev->has_ide = !!(info->local & 0x200);
dev->has_ide = (info->local >> 9) & 0x03;
i82091aa_reset(dev);
@@ -303,8 +305,8 @@ const device_t i82091aa_398_device = {
.config = NULL
};
const device_t i82091aa_ide_device = {
.name = "Intel 82091AA Super I/O (With IDE)",
const device_t i82091aa_ide_pri_device = {
.name = "Intel 82091AA Super I/O (With Primary IDE)",
.internal_name = "i82091aa_ide",
.flags = 0,
.local = 0x240,
@@ -316,3 +318,17 @@ const device_t i82091aa_ide_device = {
.force_redraw = NULL,
.config = NULL
};
const device_t i82091aa_ide_device = {
.name = "Intel 82091AA Super I/O (With IDE)",
.internal_name = "i82091aa_ide",
.flags = 0,
.local = 0x440,
.init = i82091aa_init,
.close = i82091aa_close,
.reset = NULL,
{ .available = NULL },
.speed_changed = NULL,
.force_redraw = NULL,
.config = NULL
};