From b22b2af411b63fa93523debfc6a47038058a43fc Mon Sep 17 00:00:00 2001 From: OBattler Date: Fri, 10 May 2024 00:29:35 +0200 Subject: [PATCH] ALi M1543(C) and SiS 551x IDE fixes. --- src/chipset/ali1543.c | 4 ++-- src/chipset/sis_5513_ide.c | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/chipset/ali1543.c b/src/chipset/ali1543.c index 6f080b15b..5598f30fb 100644 --- a/src/chipset/ali1543.c +++ b/src/chipset/ali1543.c @@ -782,9 +782,9 @@ ali5229_write(int func, int addr, uint8_t val, void *priv) /* Datasheet erratum: the PCI BAR's actually have different sizes. */ if (addr == 0x20) dev->ide_conf[addr] = (val & 0xe0) | 0x01; - else if ((addr & 0x43) == 0x00) + else if ((addr & 0x07) == 0x00) dev->ide_conf[addr] = (val & 0xf8) | 0x01; - else if ((addr & 0x43) == 0x40) + else if ((addr & 0x07) == 0x04) dev->ide_conf[addr] = (val & 0xfc) | 0x01; else dev->ide_conf[addr] = val; diff --git a/src/chipset/sis_5513_ide.c b/src/chipset/sis_5513_ide.c index 130f2abd5..5cbfbdea8 100644 --- a/src/chipset/sis_5513_ide.c +++ b/src/chipset/sis_5513_ide.c @@ -224,6 +224,10 @@ sis_5513_ide_write(int addr, uint8_t val, void *priv) case 0x20 ... 0x21: if (addr == 0x20) dev->pci_conf[addr] = (val & 0xe0) | 0x01; + else if ((addr & 0x07) == 0x00) + dev->pci_conf[addr] = (val & 0xf8) | 0x01; + else if ((addr & 0x07) == 0x04) + dev->pci_conf[addr] = (val & 0xfc) | 0x01; else dev->pci_conf[addr] = val; sis_5513_ide_handler(dev);