diff --git a/hw/mips_fulong2e.c b/hw/mips_fulong2e.c index e6e120cb80..5e87665188 100644 --- a/hw/mips_fulong2e.c +++ b/hw/mips_fulong2e.c @@ -264,7 +264,6 @@ static void mips_fulong2e_init(ram_addr_t ram_size, const char *boot_device, int64_t kernel_entry; qemu_irq *i8259; qemu_irq *cpu_exit_irq; - int via_devfn; PCIBus *pci_bus; ISABus *isa_bus; i2c_bus *smbus; @@ -338,12 +337,11 @@ static void mips_fulong2e_init(ram_addr_t ram_size, const char *boot_device, /* South bridge */ ide_drive_get(hd, MAX_IDE_BUS); - via_devfn = vt82c686b_init(pci_bus, PCI_DEVFN(FULONG2E_VIA_SLOT, 0)); - if (via_devfn < 0) { + isa_bus = vt82c686b_init(pci_bus, PCI_DEVFN(FULONG2E_VIA_SLOT, 0)); + if (!isa_bus) { fprintf(stderr, "vt82c686b_init error\n"); exit(1); } - isa_bus = NULL; /* Interrupt controller */ /* The 8259 -> IP5 */ diff --git a/hw/vt82c686.c b/hw/vt82c686.c index 284595905d..038128b84c 100644 --- a/hw/vt82c686.c +++ b/hw/vt82c686.c @@ -507,13 +507,13 @@ static int vt82c686b_initfn(PCIDevice *d) return 0; } -int vt82c686b_init(PCIBus *bus, int devfn) +ISABus *vt82c686b_init(PCIBus *bus, int devfn) { PCIDevice *d; d = pci_create_simple_multifunction(bus, devfn, true, "VT82C686B"); - return d->devfn; + return DO_UPCAST(ISABus, qbus, qdev_get_child_bus(&d->qdev, "isa.0")); } static PCIDeviceInfo via_info = { diff --git a/hw/vt82c686.h b/hw/vt82c686.h index e3270cafd7..6ef876d260 100644 --- a/hw/vt82c686.h +++ b/hw/vt82c686.h @@ -2,7 +2,7 @@ #define HW_VT82C686_H /* vt82c686.c */ -int vt82c686b_init(PCIBus * bus, int devfn); +ISABus *vt82c686b_init(PCIBus * bus, int devfn); void vt82c686b_ac97_init(PCIBus *bus, int devfn); void vt82c686b_mc97_init(PCIBus *bus, int devfn); i2c_bus *vt82c686b_pm_init(PCIBus *bus, int devfn, uint32_t smb_io_base,