Skip to content

Commit 3a2f166

Browse files
zbalatonphilmd
authored andcommitted
vt82c686: Move common code to via_isa_realize
The vt82c686b_realize and vt8231_realize methods are almost identical, factor out the common parts to a via_isa_realize function to avoid code duplication. Signed-off-by: BALATON Zoltan <[email protected]> Reviewed-by: Jiaxun Yang <[email protected]> Reviewed-by: Philippe Mathieu-Daudé <[email protected]> Message-Id: <7cb7a16ff4daf8f48d576246255bea1fd355207c.1634259980.git.balaton@eik.bme.hu> Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
1 parent 7c8eae4 commit 3a2f166

File tree

1 file changed

+29
-38
lines changed

1 file changed

+29
-38
lines changed

hw/isa/vt82c686.c

Lines changed: 29 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(ViaISAState, VIA_ISA)
542542
struct ViaISAState {
543543
PCIDevice dev;
544544
qemu_irq cpu_intr;
545+
ISABus *isa_bus;
545546
ViaSuperIOState *via_sio;
546547
};
547548

@@ -572,6 +573,29 @@ static void via_isa_request_i8259_irq(void *opaque, int irq, int level)
572573
qemu_set_irq(s->cpu_intr, level);
573574
}
574575

576+
static void via_isa_realize(PCIDevice *d, Error **errp)
577+
{
578+
ViaISAState *s = VIA_ISA(d);
579+
DeviceState *dev = DEVICE(d);
580+
qemu_irq *isa_irq;
581+
int i;
582+
583+
qdev_init_gpio_out(dev, &s->cpu_intr, 1);
584+
isa_irq = qemu_allocate_irqs(via_isa_request_i8259_irq, s, 1);
585+
s->isa_bus = isa_bus_new(dev, get_system_memory(), pci_address_space_io(d),
586+
&error_fatal);
587+
isa_bus_irqs(s->isa_bus, i8259_init(s->isa_bus, *isa_irq));
588+
i8254_pit_init(s->isa_bus, 0x40, 0, NULL);
589+
i8257_dma_init(s->isa_bus, 0);
590+
mc146818_rtc_init(s->isa_bus, 2000, NULL);
591+
592+
for (i = 0; i < PCI_CONFIG_HEADER_SIZE; i++) {
593+
if (i < PCI_COMMAND || i >= PCI_REVISION_ID) {
594+
d->wmask[i] = 0;
595+
}
596+
}
597+
}
598+
575599
/* TYPE_VT82C686B_ISA */
576600

577601
static void vt82c686b_write_config(PCIDevice *d, uint32_t addr,
@@ -610,27 +634,10 @@ static void vt82c686b_isa_reset(DeviceState *dev)
610634
static void vt82c686b_realize(PCIDevice *d, Error **errp)
611635
{
612636
ViaISAState *s = VIA_ISA(d);
613-
DeviceState *dev = DEVICE(d);
614-
ISABus *isa_bus;
615-
qemu_irq *isa_irq;
616-
int i;
617637

618-
qdev_init_gpio_out(dev, &s->cpu_intr, 1);
619-
isa_irq = qemu_allocate_irqs(via_isa_request_i8259_irq, s, 1);
620-
isa_bus = isa_bus_new(dev, get_system_memory(), pci_address_space_io(d),
621-
&error_fatal);
622-
isa_bus_irqs(isa_bus, i8259_init(isa_bus, *isa_irq));
623-
i8254_pit_init(isa_bus, 0x40, 0, NULL);
624-
i8257_dma_init(isa_bus, 0);
625-
s->via_sio = VIA_SUPERIO(isa_create_simple(isa_bus,
638+
via_isa_realize(d, errp);
639+
s->via_sio = VIA_SUPERIO(isa_create_simple(s->isa_bus,
626640
TYPE_VT82C686B_SUPERIO));
627-
mc146818_rtc_init(isa_bus, 2000, NULL);
628-
629-
for (i = 0; i < PCI_CONFIG_HEADER_SIZE; i++) {
630-
if (i < PCI_COMMAND || i >= PCI_REVISION_ID) {
631-
d->wmask[i] = 0;
632-
}
633-
}
634641
}
635642

636643
static void vt82c686b_class_init(ObjectClass *klass, void *data)
@@ -691,26 +698,10 @@ static void vt8231_isa_reset(DeviceState *dev)
691698
static void vt8231_realize(PCIDevice *d, Error **errp)
692699
{
693700
ViaISAState *s = VIA_ISA(d);
694-
DeviceState *dev = DEVICE(d);
695-
ISABus *isa_bus;
696-
qemu_irq *isa_irq;
697-
int i;
698-
699-
qdev_init_gpio_out(dev, &s->cpu_intr, 1);
700-
isa_irq = qemu_allocate_irqs(via_isa_request_i8259_irq, s, 1);
701-
isa_bus = isa_bus_new(dev, get_system_memory(), pci_address_space_io(d),
702-
&error_fatal);
703-
isa_bus_irqs(isa_bus, i8259_init(isa_bus, *isa_irq));
704-
i8254_pit_init(isa_bus, 0x40, 0, NULL);
705-
i8257_dma_init(isa_bus, 0);
706-
s->via_sio = VIA_SUPERIO(isa_create_simple(isa_bus, TYPE_VT8231_SUPERIO));
707-
mc146818_rtc_init(isa_bus, 2000, NULL);
708701

709-
for (i = 0; i < PCI_CONFIG_HEADER_SIZE; i++) {
710-
if (i < PCI_COMMAND || i >= PCI_REVISION_ID) {
711-
d->wmask[i] = 0;
712-
}
713-
}
702+
via_isa_realize(d, errp);
703+
s->via_sio = VIA_SUPERIO(isa_create_simple(s->isa_bus,
704+
TYPE_VT8231_SUPERIO));
714705
}
715706

716707
static void vt8231_class_init(ObjectClass *klass, void *data)

0 commit comments

Comments
 (0)