[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 4/5] hw/pci-host/raven: Manually reset the OR_IRQ device
From: |
Philippe Mathieu-Daudé |
Subject: |
[PATCH 4/5] hw/pci-host/raven: Manually reset the OR_IRQ device |
Date: |
Sat, 24 Apr 2021 18:22:28 +0200 |
The OR_IRQ device is bus-less, thus isn't reset automatically.
Add the raven_pcihost_reset() handler to manually reset the OR IRQ.
Fixes: f40b83a4e31 ("40p: use OR gate to wire up raven PCI interrupts")
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
hw/pci-host/prep.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/hw/pci-host/prep.c b/hw/pci-host/prep.c
index 0a9162fba97..275379e4c78 100644
--- a/hw/pci-host/prep.c
+++ b/hw/pci-host/prep.c
@@ -230,6 +230,15 @@ static void raven_change_gpio(void *opaque, int n, int
level)
s->contiguous_map = level;
}
+static void raven_pcihost_reset(DeviceState *dev)
+{
+ PREPPCIState *s = RAVEN_PCI_HOST_BRIDGE(dev);
+
+ if (!s->is_legacy_prep) {
+ device_legacy_reset(DEVICE(&s->or_irq));
+ }
+}
+
static void raven_pcihost_realizefn(DeviceState *d, Error **errp)
{
SysBusDevice *dev = SYS_BUS_DEVICE(d);
@@ -422,6 +431,7 @@ static void raven_pcihost_class_init(ObjectClass *klass,
void *data)
set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories);
dc->realize = raven_pcihost_realizefn;
+ dc->reset = raven_pcihost_reset;
device_class_set_props(dc, raven_pcihost_properties);
dc->fw_name = "pci";
}
--
2.26.3