ACPI: Do not raise or lower IRQ if IRQ line is set to IRQ 0.

This commit is contained in:
OBattler
2025-03-09 02:18:18 +01:00
parent 64864b65a6
commit 0c7c85e663
2 changed files with 10 additions and 2 deletions

View File

@@ -211,7 +211,10 @@ acpi_update_irq(acpi_t *dev)
if ((dev->regs.pmcntrl & 0x01) && sci_level) switch (dev->irq_mode) { if ((dev->regs.pmcntrl & 0x01) && sci_level) switch (dev->irq_mode) {
default: default:
picintlevel(1 << dev->irq_line, &dev->irq_state); if (dev->irq_line != 0)
picintlevel(1 << dev->irq_line, &dev->irq_state);
else
dev->irq_state = 1;
break; break;
case 1: case 1:
pci_set_irq(dev->slot, dev->irq_pin, &dev->irq_state); pci_set_irq(dev->slot, dev->irq_pin, &dev->irq_state);
@@ -223,7 +226,10 @@ acpi_update_irq(acpi_t *dev)
break; break;
} else switch (dev->irq_mode) { } else switch (dev->irq_mode) {
default: default:
picintclevel(1 << dev->irq_line, &dev->irq_state); if (dev->irq_line != 0)
picintclevel(1 << dev->irq_line, &dev->irq_state);
else
dev->irq_state = 0;
break; break;
case 1: case 1:
pci_clear_irq(dev->slot, dev->irq_pin, &dev->irq_state); pci_clear_irq(dev->slot, dev->irq_pin, &dev->irq_state);

View File

@@ -1699,6 +1699,8 @@ pipc_init(const device_t *info)
acpi_set_nvr(dev->acpi, dev->nvr); acpi_set_nvr(dev->acpi, dev->nvr);
acpi_init_gporeg(dev->acpi, 0xff, 0xbf, 0xff, 0x7f); acpi_init_gporeg(dev->acpi, 0xff, 0xbf, 0xff, 0x7f);
acpi_set_irq_mode(dev->acpi, 0);
} }
return dev; return dev;