aboutsummaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>2018-09-19 18:21:01 +0100
committerDavid Gibson <david@gibson.dropbear.id.au>2018-09-25 11:12:25 +1000
commit0358687b16407670f09649dfdc079c04a3522493 (patch)
tree527dd981d80f96772d770fb99932da19ff62577e /hw
parent3cc1b9cba915c4adfa73d68e344677574a5a5267 (diff)
downloadqemu-0358687b16407670f09649dfdc079c04a3522493.zip
qemu-0358687b16407670f09649dfdc079c04a3522493.tar.gz
qemu-0358687b16407670f09649dfdc079c04a3522493.tar.bz2
40p: add fixed IRQ routing for LSI SCSI device
Whilst the PReP specification describes how all PCI IRQs are routed via IRQ 15 on the interrupt controller, the real 40p machine has a routing quirk in that the LSI SCSI device is routed directly to IRQ 13. Enable the external IRQ for the LSI SCSI device by wiring up the IRQ with qdev to the relevant interrupt controller gpio. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Acked-by: David Gibson <david@gibson.dropbear.id.au> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Hervé Poussineau <hpoussin@reactos.org> Tested-by: Hervé Poussineau <hpoussin@reactos.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'hw')
-rw-r--r--hw/ppc/prep.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c
index 7e2c70b..2afb7f4 100644
--- a/hw/ppc/prep.c
+++ b/hw/ppc/prep.c
@@ -621,7 +621,7 @@ static void ibm_40p_init(MachineState *machine)
CPUPPCState *env = NULL;
uint16_t cmos_checksum;
PowerPCCPU *cpu;
- DeviceState *dev;
+ DeviceState *dev, *i82378_dev;
SysBusDevice *pcihost, *s;
Nvram *m48t59 = NULL;
PCIBus *pci_bus;
@@ -666,11 +666,11 @@ static void ibm_40p_init(MachineState *machine)
}
/* PCI -> ISA bridge */
- dev = DEVICE(pci_create_simple(pci_bus, PCI_DEVFN(11, 0), "i82378"));
- qdev_connect_gpio_out(dev, 0,
+ i82378_dev = DEVICE(pci_create_simple(pci_bus, PCI_DEVFN(11, 0), "i82378"));
+ qdev_connect_gpio_out(i82378_dev, 0,
cpu->env.irq_inputs[PPC6xx_INPUT_INT]);
- sysbus_connect_irq(pcihost, 0, qdev_get_gpio_in(dev, 15));
- isa_bus = ISA_BUS(qdev_get_child_bus(dev, "isa.0"));
+ sysbus_connect_irq(pcihost, 0, qdev_get_gpio_in(i82378_dev, 15));
+ isa_bus = ISA_BUS(qdev_get_child_bus(i82378_dev, "isa.0"));
/* Memory controller */
dev = DEVICE(isa_create(isa_bus, "rs6000-mc"));
@@ -703,6 +703,7 @@ static void ibm_40p_init(MachineState *machine)
dev = DEVICE(pci_create_simple(pci_bus, PCI_DEVFN(1, 0),
"lsi53c810"));
lsi53c8xx_handle_legacy_cmdline(dev);
+ qdev_connect_gpio_out(dev, 0, qdev_get_gpio_in(i82378_dev, 13));
/* XXX: s3-trio at PCI_DEVFN(2, 0) */
pci_vga_init(pci_bus);