[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 2/6] hw/ide/via: Wire up IDE legacy interrupts in host device
From: |
Bernhard Beschow |
Subject: |
[PATCH 2/6] hw/ide/via: Wire up IDE legacy interrupts in host device |
Date: |
Sun, 21 May 2023 13:15:30 +0200 |
Resolves circular depencency between IDE function and south bridge.
Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
---
hw/ide/via.c | 6 ++++--
hw/isa/vt82c686.c | 5 +++++
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/hw/ide/via.c b/hw/ide/via.c
index 177baea9a7..0caae52276 100644
--- a/hw/ide/via.c
+++ b/hw/ide/via.c
@@ -31,6 +31,7 @@
#include "sysemu/dma.h"
#include "hw/isa/vt82c686.h"
#include "hw/ide/pci.h"
+#include "hw/irq.h"
#include "trace.h"
static uint64_t bmdma_read(void *opaque, hwaddr addr,
@@ -104,7 +105,8 @@ static void bmdma_setup_bar(PCIIDEState *d)
static void via_ide_set_irq(void *opaque, int n, int level)
{
- PCIDevice *d = PCI_DEVICE(opaque);
+ PCIIDEState *s = opaque;
+ PCIDevice *d = PCI_DEVICE(s);
if (level) {
d->config[0x70 + n * 8] |= 0x80;
@@ -112,7 +114,7 @@ static void via_ide_set_irq(void *opaque, int n, int level)
d->config[0x70 + n * 8] &= ~0x80;
}
- via_isa_set_irq(pci_get_function_0(d), 14 + n, level);
+ qemu_set_irq(s->isa_irq[n], level);
}
static void via_ide_reset(DeviceState *dev)
diff --git a/hw/isa/vt82c686.c b/hw/isa/vt82c686.c
index ca89119ce0..8016c71315 100644
--- a/hw/isa/vt82c686.c
+++ b/hw/isa/vt82c686.c
@@ -692,6 +692,10 @@ static void via_isa_realize(PCIDevice *d, Error **errp)
if (!qdev_realize(DEVICE(&s->ide), BUS(pci_bus), errp)) {
return;
}
+ for (i = 0; i < 2; i++) {
+ qdev_connect_gpio_out_named(DEVICE(&s->ide), "isa-irq", i,
+ s->isa_irqs_in[14 + i]);
+ }
/* Functions 2-3: USB Ports */
for (i = 0; i < ARRAY_SIZE(s->uhci); i++) {
@@ -814,6 +818,7 @@ static void vt8231_isa_reset(DeviceState *dev)
PCI_COMMAND_MASTER | PCI_COMMAND_SPECIAL);
pci_set_word(pci_conf + PCI_STATUS, PCI_STATUS_DEVSEL_MEDIUM);
+ pci_conf[0x4c] = 0x04; /* IDE interrupt Routing */
pci_conf[0x58] = 0x40; /* Miscellaneous Control 0 */
pci_conf[0x67] = 0x08; /* Fast IR Config */
pci_conf[0x6b] = 0x01; /* Fast IR I/O Base */
--
2.40.1
- [PATCH 0/6] VIA and general PCI IDE cleanup, Bernhard Beschow, 2023/05/21
- [PATCH 1/6] hw/ide/pci: Expose legacy interrupts as named GPIOs, Bernhard Beschow, 2023/05/21
- [PATCH 2/6] hw/ide/via: Wire up IDE legacy interrupts in host device,
Bernhard Beschow <=
- [PATCH 3/6] hw/isa/vt82c686: Remove via_isa_set_irq(), Bernhard Beschow, 2023/05/21
- [PATCH 4/6] hw/ide: Extract IDEBus assignment into bmdma_init(), Bernhard Beschow, 2023/05/21
- [PATCH 5/6] hw/ide: Extract bmdma_status_writeb(), Bernhard Beschow, 2023/05/21
- [PATCH 6/6] hw/ide/piix: Move registration of VMStateDescription to DeviceClass, Bernhard Beschow, 2023/05/21