ACPI: Rework suspend types and remove bogus PMCNTRL mirrors (those are SMI traps instead)

This commit is contained in:
RichardG867
2021-10-18 15:05:38 -03:00
parent 6bf299cd41
commit 878c92bf7f
4 changed files with 86 additions and 40 deletions

View File

@@ -813,13 +813,11 @@ piix_write(int func, int addr, uint8_t val, void *priv)
fregs[0x40] = (val & 0xc0) | 1;
dev->acpi_io_base = (dev->regs[3][0x41] << 8) | (dev->regs[3][0x40] & 0xc0);
acpi_update_io_mapping(dev->acpi, dev->acpi_io_base, (dev->regs[3][0x80] & 0x01));
acpi_update_aux_io_mapping(dev->acpi, dev->acpi_io_base + 0x40, (dev->regs[3][0x80] & 0x01));
break;
case 0x41:
fregs[0x41] = val;
dev->acpi_io_base = (dev->regs[3][0x41] << 8) | (dev->regs[3][0x40] & 0xc0);
acpi_update_io_mapping(dev->acpi, dev->acpi_io_base, (dev->regs[3][0x80] & 0x01));
acpi_update_aux_io_mapping(dev->acpi, dev->acpi_io_base + 0x40, (dev->regs[3][0x80] & 0x01));
break;
case 0x44: case 0x45: case 0x46: case 0x47:
case 0x48: case 0x49:
@@ -846,12 +844,10 @@ piix_write(int func, int addr, uint8_t val, void *priv)
break;
case 0x4f: case 0x80: case 0xd2:
fregs[addr] = val & 0x0f;
if (addr == 0x80) {
if (addr == 0x80)
acpi_update_io_mapping(dev->acpi, dev->acpi_io_base, (dev->regs[3][0x80] & 0x01));
acpi_update_aux_io_mapping(dev->acpi, dev->acpi_io_base + 0x40, (dev->regs[3][0x80] & 0x01));
} else if (addr == 0xd2) {
else if (addr == 0xd2)
smbus_update_io_mapping(dev);
}
break;
case 0x50:
fregs[addr] = val & 0x3f;

View File

@@ -1128,7 +1128,6 @@ pipc_write(int func, int addr, uint8_t val, void *priv)
c -= 0x400;
acpi_set_timer32(dev->acpi, dev->power_regs[0x41] & 0x08);
acpi_update_io_mapping(dev->acpi, c, dev->power_regs[0x41] & 0x80);
acpi_update_aux_io_mapping(dev->acpi, c + 0xf0, dev->power_regs[0x41] & 0x80);
break;
case 0x42: