@@ -542,6 +542,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(ViaISAState, VIA_ISA)
542
542
struct ViaISAState {
543
543
PCIDevice dev ;
544
544
qemu_irq cpu_intr ;
545
+ ISABus * isa_bus ;
545
546
ViaSuperIOState * via_sio ;
546
547
};
547
548
@@ -572,6 +573,29 @@ static void via_isa_request_i8259_irq(void *opaque, int irq, int level)
572
573
qemu_set_irq (s -> cpu_intr , level );
573
574
}
574
575
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
+
575
599
/* TYPE_VT82C686B_ISA */
576
600
577
601
static void vt82c686b_write_config (PCIDevice * d , uint32_t addr ,
@@ -610,27 +634,10 @@ static void vt82c686b_isa_reset(DeviceState *dev)
610
634
static void vt82c686b_realize (PCIDevice * d , Error * * errp )
611
635
{
612
636
ViaISAState * s = VIA_ISA (d );
613
- DeviceState * dev = DEVICE (d );
614
- ISABus * isa_bus ;
615
- qemu_irq * isa_irq ;
616
- int i ;
617
637
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 ,
626
640
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
- }
634
641
}
635
642
636
643
static void vt82c686b_class_init (ObjectClass * klass , void * data )
@@ -691,26 +698,10 @@ static void vt8231_isa_reset(DeviceState *dev)
691
698
static void vt8231_realize (PCIDevice * d , Error * * errp )
692
699
{
693
700
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 );
708
701
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 ));
714
705
}
715
706
716
707
static void vt8231_class_init (ObjectClass * klass , void * data )
0 commit comments