mirror of https://github.com/xemu-project/xemu.git
hw/isa/piix4: Move piix4_create() to hw/isa/piix4.c
Now that we properly refactored the piix4_create() function, let's move it to hw/isa/piix4.c where it belongs, so it can be reused on other places. Reviewed-by: Aleksandar Markovic <amarkovic@wavecomp.com> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
This commit is contained in:
parent
c74d2c047e
commit
e29f237996
|
@ -27,12 +27,14 @@
|
||||||
#include "qapi/error.h"
|
#include "qapi/error.h"
|
||||||
#include "hw/irq.h"
|
#include "hw/irq.h"
|
||||||
#include "hw/i386/pc.h"
|
#include "hw/i386/pc.h"
|
||||||
|
#include "hw/southbridge/piix.h"
|
||||||
#include "hw/pci/pci.h"
|
#include "hw/pci/pci.h"
|
||||||
#include "hw/isa/isa.h"
|
#include "hw/isa/isa.h"
|
||||||
#include "hw/sysbus.h"
|
#include "hw/sysbus.h"
|
||||||
#include "hw/dma/i8257.h"
|
#include "hw/dma/i8257.h"
|
||||||
#include "hw/timer/i8254.h"
|
#include "hw/timer/i8254.h"
|
||||||
#include "hw/rtc/mc146818rtc.h"
|
#include "hw/rtc/mc146818rtc.h"
|
||||||
|
#include "hw/ide.h"
|
||||||
#include "migration/vmstate.h"
|
#include "migration/vmstate.h"
|
||||||
#include "sysemu/reset.h"
|
#include "sysemu/reset.h"
|
||||||
#include "sysemu/runstate.h"
|
#include "sysemu/runstate.h"
|
||||||
|
@ -237,3 +239,31 @@ static void piix4_register_types(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
type_init(piix4_register_types)
|
type_init(piix4_register_types)
|
||||||
|
|
||||||
|
DeviceState *piix4_create(PCIBus *pci_bus, ISABus **isa_bus,
|
||||||
|
I2CBus **smbus, size_t ide_buses)
|
||||||
|
{
|
||||||
|
size_t ide_drives = ide_buses * MAX_IDE_DEVS;
|
||||||
|
DriveInfo **hd;
|
||||||
|
PCIDevice *pci;
|
||||||
|
DeviceState *dev;
|
||||||
|
|
||||||
|
pci = pci_create_simple_multifunction(pci_bus, PCI_DEVFN(10, 0),
|
||||||
|
true, TYPE_PIIX4_PCI_DEVICE);
|
||||||
|
dev = DEVICE(pci);
|
||||||
|
if (isa_bus) {
|
||||||
|
*isa_bus = ISA_BUS(qdev_get_child_bus(dev, "isa.0"));
|
||||||
|
}
|
||||||
|
|
||||||
|
hd = g_new(DriveInfo *, ide_drives);
|
||||||
|
ide_drive_get(hd, ide_drives);
|
||||||
|
pci_piix4_ide_init(pci_bus, hd, pci->devfn + 1);
|
||||||
|
g_free(hd);
|
||||||
|
pci_create_simple(pci_bus, pci->devfn + 2, "piix4-usb-uhci");
|
||||||
|
if (smbus) {
|
||||||
|
*smbus = piix4_pm_init(pci_bus, pci->devfn + 3, 0x1100,
|
||||||
|
isa_get_irq(NULL, 9), NULL, 0, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
return dev;
|
||||||
|
}
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include "hw/mips/mips.h"
|
#include "hw/mips/mips.h"
|
||||||
#include "hw/pci/pci.h"
|
#include "hw/pci/pci.h"
|
||||||
#include "hw/pci/pci_host.h"
|
#include "hw/pci/pci_host.h"
|
||||||
|
#include "hw/southbridge/piix.h"
|
||||||
#include "migration/vmstate.h"
|
#include "migration/vmstate.h"
|
||||||
#include "hw/i386/pc.h"
|
#include "hw/i386/pc.h"
|
||||||
#include "hw/irq.h"
|
#include "hw/irq.h"
|
||||||
|
|
|
@ -1210,34 +1210,6 @@ static void mips_create_cpu(MachineState *ms, MaltaState *s,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static DeviceState *piix4_create(PCIBus *pci_bus, ISABus **isa_bus,
|
|
||||||
I2CBus **smbus, size_t ide_buses)
|
|
||||||
{
|
|
||||||
const size_t ide_drives = ide_buses * MAX_IDE_DEVS;
|
|
||||||
DriveInfo **hd;
|
|
||||||
PCIDevice *pci;
|
|
||||||
DeviceState *dev;
|
|
||||||
|
|
||||||
pci = pci_create_simple_multifunction(pci_bus, PCI_DEVFN(10, 0),
|
|
||||||
true, TYPE_PIIX4_PCI_DEVICE);
|
|
||||||
dev = DEVICE(pci);
|
|
||||||
if (isa_bus) {
|
|
||||||
*isa_bus = ISA_BUS(qdev_get_child_bus(dev, "isa.0"));
|
|
||||||
}
|
|
||||||
|
|
||||||
hd = g_new(DriveInfo *, ide_drives);
|
|
||||||
ide_drive_get(hd, ide_drives);
|
|
||||||
pci_piix4_ide_init(pci_bus, hd, pci->devfn + 1);
|
|
||||||
g_free(hd);
|
|
||||||
pci_create_simple(pci_bus, pci->devfn + 2, "piix4-usb-uhci");
|
|
||||||
if (smbus) {
|
|
||||||
*smbus = piix4_pm_init(pci_bus, pci->devfn + 3, 0x1100,
|
|
||||||
isa_get_irq(NULL, 9), NULL, 0, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
return dev;
|
|
||||||
}
|
|
||||||
|
|
||||||
static
|
static
|
||||||
void mips_malta_init(MachineState *machine)
|
void mips_malta_init(MachineState *machine)
|
||||||
{
|
{
|
||||||
|
|
|
@ -258,8 +258,6 @@ PCIBus *i440fx_init(const char *host_type, const char *pci_type,
|
||||||
MemoryRegion *ram_memory);
|
MemoryRegion *ram_memory);
|
||||||
|
|
||||||
PCIBus *find_i440fx(void);
|
PCIBus *find_i440fx(void);
|
||||||
/* piix4.c */
|
|
||||||
extern PCIDevice *piix4_dev;
|
|
||||||
|
|
||||||
/* pc_sysfw.c */
|
/* pc_sysfw.c */
|
||||||
void pc_system_flash_create(PCMachineState *pcms);
|
void pc_system_flash_create(PCMachineState *pcms);
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
* QEMU PIIX South Bridge Emulation
|
* QEMU PIIX South Bridge Emulation
|
||||||
*
|
*
|
||||||
* Copyright (c) 2006 Fabrice Bellard
|
* Copyright (c) 2006 Fabrice Bellard
|
||||||
|
* Copyright (c) 2018 Hervé Poussineau
|
||||||
*
|
*
|
||||||
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||||
* See the COPYING file in the top-level directory.
|
* See the COPYING file in the top-level directory.
|
||||||
|
@ -17,4 +18,9 @@ I2CBus *piix4_pm_init(PCIBus *bus, int devfn, uint32_t smb_io_base,
|
||||||
qemu_irq sci_irq, qemu_irq smi_irq,
|
qemu_irq sci_irq, qemu_irq smi_irq,
|
||||||
int smm_enabled, DeviceState **piix4_pm);
|
int smm_enabled, DeviceState **piix4_pm);
|
||||||
|
|
||||||
|
extern PCIDevice *piix4_dev;
|
||||||
|
|
||||||
|
DeviceState *piix4_create(PCIBus *pci_bus, ISABus **isa_bus,
|
||||||
|
I2CBus **smbus, size_t ide_buses);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue