[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 43/69] hw/mips/mips_fulong2e: Factor out vt82c686b_so
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PULL 43/69] hw/mips/mips_fulong2e: Factor out vt82c686b_southbridge_init() |
Date: |
Tue, 13 Mar 2018 23:46:53 +0100 |
From: Philippe Mathieu-Daudé <address@hidden>
Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
hw/mips/mips_fulong2e.c | 83 ++++++++++++++++++++++++-------------------------
1 file changed, 41 insertions(+), 42 deletions(-)
diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
index a15d3b60cc..2697d772eb 100644
--- a/hw/mips/mips_fulong2e.c
+++ b/hw/mips/mips_fulong2e.c
@@ -77,8 +77,6 @@
#define FULONG2E_ATI_SLOT 6
#define FULONG2E_RTL8139_SLOT 7
-static ISADevice *pit;
-
static struct _loaderparams {
int ram_size;
const char *kernel_filename;
@@ -231,11 +229,44 @@ static const uint8_t eeprom_spd[0x80] = {
0x20,0x30,0x20
};
-/* Audio support */
-static void audio_init (PCIBus *pci_bus)
+static void vt82c686b_southbridge_init(PCIBus *pci_bus, int slot, qemu_irq
intc,
+ I2CBus **i2c_bus, ISABus **p_isa_bus)
{
- vt82c686b_ac97_init(pci_bus, PCI_DEVFN(FULONG2E_VIA_SLOT, 5));
- vt82c686b_mc97_init(pci_bus, PCI_DEVFN(FULONG2E_VIA_SLOT, 6));
+ qemu_irq *i8259;
+ ISABus *isa_bus;
+ DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
+
+ isa_bus = vt82c686b_init(pci_bus, PCI_DEVFN(slot, 0));
+ if (!isa_bus) {
+ fprintf(stderr, "vt82c686b_init error\n");
+ exit(1);
+ }
+ *p_isa_bus = isa_bus;
+ /* Interrupt controller */
+ /* The 8259 -> IP5 */
+ i8259 = i8259_init(isa_bus, intc);
+ isa_bus_irqs(isa_bus, i8259);
+ /* init other devices */
+ i8254_pit_init(isa_bus, 0x40, 0, NULL);
+ i8257_dma_init(isa_bus, 0);
+
+ ide_drive_get(hd, ARRAY_SIZE(hd));
+ vt82c686b_ide_init(pci_bus, hd, PCI_DEVFN(slot, 1));
+
+ pci_create_simple(pci_bus, PCI_DEVFN(slot, 2), "vt82c686b-usb-uhci");
+ pci_create_simple(pci_bus, PCI_DEVFN(slot, 3), "vt82c686b-usb-uhci");
+
+ *i2c_bus = vt82c686b_pm_init(pci_bus, PCI_DEVFN(slot, 4), 0xeee1, NULL);
+
+ /* Audio support */
+ vt82c686b_ac97_init(pci_bus, PCI_DEVFN(slot, 5));
+ vt82c686b_mc97_init(pci_bus, PCI_DEVFN(slot, 6));
+
+ /* Super I/O */
+ isa_create_simple(isa_bus, TYPE_I8042);
+
+ serial_hds_isa_init(isa_bus, 0, MAX_SERIAL_PORTS);
+ parallel_hds_isa_init(isa_bus, 1);
}
/* Network support */
@@ -268,11 +299,9 @@ static void mips_fulong2e_init(MachineState *machine)
MemoryRegion *bios = g_new(MemoryRegion, 1);
long bios_size;
int64_t kernel_entry;
- qemu_irq *i8259;
PCIBus *pci_bus;
ISABus *isa_bus;
I2CBus *smbus;
- DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
MIPSCPU *cpu;
CPUMIPSState *env;
@@ -334,46 +363,16 @@ static void mips_fulong2e_init(MachineState *machine)
/* North bridge, Bonito --> IP2 */
pci_bus = bonito_init((qemu_irq *)&(env->irq[2]));
- /* South bridge */
- ide_drive_get(hd, ARRAY_SIZE(hd));
-
- isa_bus = vt82c686b_init(pci_bus, PCI_DEVFN(FULONG2E_VIA_SLOT, 0));
- if (!isa_bus) {
- error_report("vt82c686b_init error");
- exit(1);
- }
-
- /* Interrupt controller */
- /* The 8259 -> IP5 */
- i8259 = i8259_init(isa_bus, env->irq[5]);
- isa_bus_irqs(isa_bus, i8259);
-
- vt82c686b_ide_init(pci_bus, hd, PCI_DEVFN(FULONG2E_VIA_SLOT, 1));
- pci_create_simple(pci_bus, PCI_DEVFN(FULONG2E_VIA_SLOT, 2),
- "vt82c686b-usb-uhci");
- pci_create_simple(pci_bus, PCI_DEVFN(FULONG2E_VIA_SLOT, 3),
- "vt82c686b-usb-uhci");
+ /* South bridge -> IP5 */
+ vt82c686b_southbridge_init(pci_bus, FULONG2E_VIA_SLOT, env->irq[5],
+ &smbus, &isa_bus);
- smbus = vt82c686b_pm_init(pci_bus, PCI_DEVFN(FULONG2E_VIA_SLOT, 4),
- 0xeee1, NULL);
/* TODO: Populate SPD eeprom data. */
smbus_eeprom_init(smbus, 1, eeprom_spd, sizeof(eeprom_spd));
- /* init other devices */
- pit = i8254_pit_init(isa_bus, 0x40, 0, NULL);
- i8257_dma_init(isa_bus, 0);
-
- /* Super I/O */
- isa_create_simple(isa_bus, TYPE_I8042);
-
mc146818_rtc_init(isa_bus, 2000, NULL);
- serial_hds_isa_init(isa_bus, 0, MAX_SERIAL_PORTS);
- parallel_hds_isa_init(isa_bus, 1);
-
- /* Sound card */
- audio_init(pci_bus);
- /* Network card */
+ /* Network card: RTL8139D */
network_init(pci_bus);
}
--
2.14.3
- [Qemu-devel] [PULL 38/69] hw/isa/superio: Factor out the floppy disc controller code from pc87312.c, (continued)
- [Qemu-devel] [PULL 38/69] hw/isa/superio: Factor out the floppy disc controller code from pc87312.c, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 40/69] hw/isa/superio: Factor out the IDE code from pc87312.c, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 35/69] hw/isa/pc87312: Inherit from the abstract TYPE_ISA_SUPERIO, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 42/69] hw/isa/superio: Factor out the FDC37M817 Super I/O from mips_malta.c, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 46/69] MAINTAINERS: Add entries for the VT82C686B Super I/O, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 47/69] MAINTAINERS: Split the Alpha TCG/machine section, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 49/69] hw/alpha/dp264: Add the ISA DMA controller, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 48/69] hw/isa/superio: Add the SMC FDC37C669 Super I/O, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 45/69] hw/isa/vt82c686: Add the TYPE_VT82C686B_SUPERIO, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 44/69] hw/isa/vt82c686: Rename vt82c686b_init() -> vt82c686b_isa_init(), Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 43/69] hw/mips/mips_fulong2e: Factor out vt82c686b_southbridge_init(),
Paolo Bonzini <=
- [Qemu-devel] [PULL 51/69] hw/i386/pc: Factor out the superio code, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 50/69] hw/alpha/dp264: Use the TYPE_SMC37C669_SUPERIO, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 52/69] cpu-exec: fix exception_index handling, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 53/69] replay: fix processing async events, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 54/69] replay: fixed replay_enable_events, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 56/69] replay: added replay log format description, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 55/69] replay: fix save/load vm for non-empty queue, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 57/69] replay: save prior value of the host clock, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 60/69] replay: make locking visible outside replay code, Paolo Bonzini, 2018/03/13
- [Qemu-devel] [PULL 59/69] replay/replay-internal.c: track holding of replay_lock, Paolo Bonzini, 2018/03/13