pc: split out basic device init from pc_init1() into pc_basic_device_init()
Split out basic device, i.e. legacy devices like floppy, initialization from pc_init1() into pc_basic_device_init(). Later it will be used. Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> Acked-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
parent
765d79084b
commit
ffe513da92
86
hw/pc.c
86
hw/pc.c
|
@ -951,6 +951,52 @@ static void pc_vga_init(PCIBus *pci_bus)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void pc_basic_device_init(qemu_irq *isa_irq,
|
||||||
|
FDCtrl **floppy_controller,
|
||||||
|
RTCState **rtc_state)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
DriveInfo *fd[MAX_FD];
|
||||||
|
PITState *pit;
|
||||||
|
|
||||||
|
register_ioport_write(0x80, 1, 1, ioport80_write, NULL);
|
||||||
|
|
||||||
|
register_ioport_write(0xf0, 1, 1, ioportF0_write, NULL);
|
||||||
|
|
||||||
|
*rtc_state = rtc_init(2000);
|
||||||
|
|
||||||
|
qemu_register_boot_set(pc_boot_set, *rtc_state);
|
||||||
|
|
||||||
|
register_ioport_read(0x92, 1, 1, ioport92_read, NULL);
|
||||||
|
register_ioport_write(0x92, 1, 1, ioport92_write, NULL);
|
||||||
|
|
||||||
|
pit = pit_init(0x40, isa_reserve_irq(0));
|
||||||
|
pcspk_init(pit);
|
||||||
|
if (!no_hpet) {
|
||||||
|
hpet_init(isa_irq);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = 0; i < MAX_SERIAL_PORTS; i++) {
|
||||||
|
if (serial_hds[i]) {
|
||||||
|
serial_isa_init(i, serial_hds[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for(i = 0; i < MAX_PARALLEL_PORTS; i++) {
|
||||||
|
if (parallel_hds[i]) {
|
||||||
|
parallel_init(i, parallel_hds[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
isa_create_simple("i8042");
|
||||||
|
DMA_init(0);
|
||||||
|
|
||||||
|
for(i = 0; i < MAX_FD; i++) {
|
||||||
|
fd[i] = drive_get(IF_FLOPPY, 0, i);
|
||||||
|
}
|
||||||
|
*floppy_controller = fdctrl_init_isa(fd);
|
||||||
|
}
|
||||||
|
|
||||||
/* PC hardware initialisation */
|
/* PC hardware initialisation */
|
||||||
static void pc_init1(ram_addr_t ram_size,
|
static void pc_init1(ram_addr_t ram_size,
|
||||||
const char *boot_device,
|
const char *boot_device,
|
||||||
|
@ -972,10 +1018,8 @@ static void pc_init1(ram_addr_t ram_size,
|
||||||
qemu_irq *smi_irq;
|
qemu_irq *smi_irq;
|
||||||
IsaIrqState *isa_irq_state;
|
IsaIrqState *isa_irq_state;
|
||||||
DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
|
DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
|
||||||
DriveInfo *fd[MAX_FD];
|
|
||||||
FDCtrl *floppy_controller;
|
FDCtrl *floppy_controller;
|
||||||
RTCState *rtc_state;
|
RTCState *rtc_state;
|
||||||
PITState *pit;
|
|
||||||
|
|
||||||
pc_cpus_init(cpu_model);
|
pc_cpus_init(cpu_model);
|
||||||
|
|
||||||
|
@ -1004,37 +1048,10 @@ static void pc_init1(ram_addr_t ram_size,
|
||||||
|
|
||||||
pc_register_ferr_irq(isa_reserve_irq(13));
|
pc_register_ferr_irq(isa_reserve_irq(13));
|
||||||
|
|
||||||
/* init basic PC hardware */
|
|
||||||
register_ioport_write(0x80, 1, 1, ioport80_write, NULL);
|
|
||||||
|
|
||||||
register_ioport_write(0xf0, 1, 1, ioportF0_write, NULL);
|
|
||||||
|
|
||||||
pc_vga_init(pci_enabled? pci_bus: NULL);
|
pc_vga_init(pci_enabled? pci_bus: NULL);
|
||||||
|
|
||||||
rtc_state = rtc_init(2000);
|
/* init basic PC hardware */
|
||||||
|
pc_basic_device_init(isa_irq, &floppy_controller, &rtc_state);
|
||||||
qemu_register_boot_set(pc_boot_set, rtc_state);
|
|
||||||
|
|
||||||
register_ioport_read(0x92, 1, 1, ioport92_read, NULL);
|
|
||||||
register_ioport_write(0x92, 1, 1, ioport92_write, NULL);
|
|
||||||
|
|
||||||
pit = pit_init(0x40, isa_reserve_irq(0));
|
|
||||||
pcspk_init(pit);
|
|
||||||
if (!no_hpet) {
|
|
||||||
hpet_init(isa_irq);
|
|
||||||
}
|
|
||||||
|
|
||||||
for(i = 0; i < MAX_SERIAL_PORTS; i++) {
|
|
||||||
if (serial_hds[i]) {
|
|
||||||
serial_isa_init(i, serial_hds[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for(i = 0; i < MAX_PARALLEL_PORTS; i++) {
|
|
||||||
if (parallel_hds[i]) {
|
|
||||||
parallel_init(i, parallel_hds[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for(i = 0; i < nb_nics; i++) {
|
for(i = 0; i < nb_nics; i++) {
|
||||||
NICInfo *nd = &nd_table[i];
|
NICInfo *nd = &nd_table[i];
|
||||||
|
@ -1063,17 +1080,10 @@ static void pc_init1(ram_addr_t ram_size,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
isa_create_simple("i8042");
|
|
||||||
DMA_init(0);
|
|
||||||
#ifdef HAS_AUDIO
|
#ifdef HAS_AUDIO
|
||||||
audio_init(pci_enabled ? pci_bus : NULL, isa_irq);
|
audio_init(pci_enabled ? pci_bus : NULL, isa_irq);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for(i = 0; i < MAX_FD; i++) {
|
|
||||||
fd[i] = drive_get(IF_FLOPPY, 0, i);
|
|
||||||
}
|
|
||||||
floppy_controller = fdctrl_init_isa(fd);
|
|
||||||
|
|
||||||
cmos_init(below_4g_mem_size, above_4g_mem_size, boot_device, hd,
|
cmos_init(below_4g_mem_size, above_4g_mem_size, boot_device, hd,
|
||||||
floppy_controller, rtc_state);
|
floppy_controller, rtc_state);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue