aboutsummaryrefslogtreecommitdiff
path: root/hw/pci-host
diff options
context:
space:
mode:
authorMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>2020-10-13 12:49:21 +0100
committerMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>2020-10-18 16:21:42 +0100
commitb950914df3a2a936d4eca00eeb4ca0254423d265 (patch)
tree442c4eab6849e00adbd935796b42556d119332fd /hw/pci-host
parent348b8d1a76b4ab4b5a9ec756500547c5f2756d9c (diff)
downloadqemu-b950914df3a2a936d4eca00eeb4ca0254423d265.zip
qemu-b950914df3a2a936d4eca00eeb4ca0254423d265.tar.gz
qemu-b950914df3a2a936d4eca00eeb4ca0254423d265.tar.bz2
grackle: use qdev gpios for PCI IRQs
Currently an object link property is used to pass a reference to the Heathrow PIC into the PCI host bridge so that grackle_init_irqs() can connect the PCI IRQs to the PIC itself. This can be simplified by defining the PCI IRQs as qdev gpios and then wiring up the PCI IRQs to the PIC in the Old World machine init function. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-Id: <20201013114922.2946-3-mark.cave-ayland@ilande.co.uk> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Diffstat (limited to 'hw/pci-host')
-rw-r--r--hw/pci-host/grackle.c19
1 files changed, 2 insertions, 17 deletions
diff --git a/hw/pci-host/grackle.c b/hw/pci-host/grackle.c
index 57c29b2..b05facf 100644
--- a/hw/pci-host/grackle.c
+++ b/hw/pci-host/grackle.c
@@ -28,7 +28,6 @@
#include "hw/ppc/mac.h"
#include "hw/qdev-properties.h"
#include "hw/pci/pci.h"
-#include "hw/intc/heathrow_pic.h"
#include "hw/irq.h"
#include "qapi/error.h"
#include "qemu/module.h"
@@ -41,7 +40,6 @@ struct GrackleState {
PCIHostState parent_obj;
uint32_t ofw_addr;
- HeathrowState *pic;
qemu_irq irqs[4];
MemoryRegion pci_mmio;
MemoryRegion pci_hole;
@@ -62,15 +60,6 @@ static void pci_grackle_set_irq(void *opaque, int irq_num, int level)
qemu_set_irq(s->irqs[irq_num], level);
}
-static void grackle_init_irqs(GrackleState *s)
-{
- int i;
-
- for (i = 0; i < ARRAY_SIZE(s->irqs); i++) {
- s->irqs[i] = qdev_get_gpio_in(DEVICE(s->pic), 0x15 + i);
- }
-}
-
static void grackle_realize(DeviceState *dev, Error **errp)
{
GrackleState *s = GRACKLE_PCI_HOST_BRIDGE(dev);
@@ -85,7 +74,6 @@ static void grackle_realize(DeviceState *dev, Error **errp)
0, 4, TYPE_PCI_BUS);
pci_create_simple(phb->bus, 0, "grackle");
- grackle_init_irqs(s);
}
static void grackle_init(Object *obj)
@@ -106,15 +94,12 @@ static void grackle_init(Object *obj)
memory_region_init_io(&phb->data_mem, obj, &pci_host_data_le_ops,
DEVICE(obj), "pci-data-idx", 0x1000);
- object_property_add_link(obj, "pic", TYPE_HEATHROW,
- (Object **) &s->pic,
- qdev_prop_allow_set_link_before_realize,
- 0);
-
sysbus_init_mmio(sbd, &phb->conf_mem);
sysbus_init_mmio(sbd, &phb->data_mem);
sysbus_init_mmio(sbd, &s->pci_hole);
sysbus_init_mmio(sbd, &s->pci_io);
+
+ qdev_init_gpio_out(DEVICE(obj), s->irqs, ARRAY_SIZE(s->irqs));
}
static void grackle_pci_realize(PCIDevice *d, Error **errp)