From: Jan Kiszka <jan.kiszka@xxxxxxxxxxx> Instead of retrieving the IRQ object from the ISA bus, let the creator of the PIT pick it. pit_init can then connect it to a generic GPIO output pin. Signed-off-by: Jan Kiszka <jan.kiszka@xxxxxxxxxxx> --- hw/alpha_dp264.c | 2 +- hw/i8254.c | 4 +--- hw/i8254.h | 4 ++-- hw/mips_fulong2e.c | 2 +- hw/mips_jazz.c | 2 +- hw/mips_malta.c | 2 +- hw/mips_r4k.c | 2 +- hw/pc.c | 2 +- hw/ppc_prep.c | 2 +- 9 files changed, 10 insertions(+), 12 deletions(-) diff --git a/hw/alpha_dp264.c b/hw/alpha_dp264.c index 4c0efd3..5b49b90 100644 --- a/hw/alpha_dp264.c +++ b/hw/alpha_dp264.c @@ -73,7 +73,7 @@ static void clipper_init(ram_addr_t ram_size, clipper_pci_map_irq); rtc_init(isa_bus, 1980, rtc_irq); - pit_init(isa_bus, 0x40, 0); + pit_init(isa_bus, 0x40, isa_get_irq(NULL, 0)); isa_create_simple(isa_bus, "i8042"); /* VGA setup. Don't bother loading the bios. */ diff --git a/hw/i8254.c b/hw/i8254.c index 7d5ca3a..dd49552 100644 --- a/hw/i8254.c +++ b/hw/i8254.c @@ -57,7 +57,6 @@ typedef struct PITChannelState { typedef struct PITState { ISADevice dev; MemoryRegion ioports; - uint32_t irq; uint32_t iobase; PITChannelState channels[3]; } PITState; @@ -532,7 +531,7 @@ static int pit_initfn(ISADevice *dev) s = &pit->channels[0]; /* the timer 0 is connected to an IRQ */ s->irq_timer = qemu_new_timer_ns(vm_clock, pit_irq_timer, s); - s->irq = isa_get_irq(dev, pit->irq); + qdev_init_gpio_out(&dev->qdev, &s->irq, 1); memory_region_init_io(&pit->ioports, &pit_ioport_ops, pit, "pit", 4); isa_register_ioport(dev, &pit->ioports, pit->iobase); @@ -550,7 +549,6 @@ static ISADeviceInfo pit_info = { .qdev.no_user = 1, .init = pit_initfn, .qdev.props = (Property[]) { - DEFINE_PROP_UINT32("irq", PITState, irq, -1), DEFINE_PROP_HEX32("iobase", PITState, iobase, -1), DEFINE_PROP_END_OF_LIST(), }, diff --git a/hw/i8254.h b/hw/i8254.h index cd3111c..4821fb4 100644 --- a/hw/i8254.h +++ b/hw/i8254.h @@ -30,14 +30,14 @@ #define PIT_FREQ 1193182 -static inline ISADevice *pit_init(ISABus *bus, int base, int irq) +static inline ISADevice *pit_init(ISABus *bus, int base, qemu_irq irq) { ISADevice *dev; dev = isa_create(bus, "isa-pit"); qdev_prop_set_uint32(&dev->qdev, "iobase", base); - qdev_prop_set_uint32(&dev->qdev, "irq", irq); qdev_init_nofail(&dev->qdev); + qdev_connect_gpio_out(&dev->qdev, 0, irq); return dev; } diff --git a/hw/mips_fulong2e.c b/hw/mips_fulong2e.c index ead72ae..fedc929 100644 --- a/hw/mips_fulong2e.c +++ b/hw/mips_fulong2e.c @@ -364,7 +364,7 @@ static void mips_fulong2e_init(ram_addr_t ram_size, const char *boot_device, smbus_eeprom_init(smbus, 1, eeprom_spd, sizeof(eeprom_spd)); /* init other devices */ - pit = pit_init(isa_bus, 0x40, 0); + pit = pit_init(isa_bus, 0x40, isa_get_irq(NULL, 0)); cpu_exit_irq = qemu_allocate_irqs(cpu_request_exit, NULL, 1); DMA_init(0, cpu_exit_irq); diff --git a/hw/mips_jazz.c b/hw/mips_jazz.c index 61dee4d..9878b78 100644 --- a/hw/mips_jazz.c +++ b/hw/mips_jazz.c @@ -192,7 +192,7 @@ static void mips_jazz_init(MemoryRegion *address_space, isa_bus_irqs(isa_bus, i8259); cpu_exit_irq = qemu_allocate_irqs(cpu_request_exit, NULL, 1); DMA_init(0, cpu_exit_irq); - pit = pit_init(isa_bus, 0x40, 0); + pit = pit_init(isa_bus, 0x40, isa_get_irq(NULL, 0)); pcspk_init(pit); /* ISA IO space at 0x90000000 */ diff --git a/hw/mips_malta.c b/hw/mips_malta.c index 7ddfc3a..506244b 100644 --- a/hw/mips_malta.c +++ b/hw/mips_malta.c @@ -970,7 +970,7 @@ void mips_malta_init (ram_addr_t ram_size, isa_get_irq(NULL, 9), NULL, NULL, 0); /* TODO: Populate SPD eeprom data. */ smbus_eeprom_init(smbus, 8, NULL, 0); - pit = pit_init(isa_bus, 0x40, 0); + pit = pit_init(isa_bus, 0x40, isa_get_irq(NULL, 0)); cpu_exit_irq = qemu_allocate_irqs(cpu_request_exit, NULL, 1); DMA_init(0, cpu_exit_irq); diff --git a/hw/mips_r4k.c b/hw/mips_r4k.c index 1b3ec2d..6ff56e9 100644 --- a/hw/mips_r4k.c +++ b/hw/mips_r4k.c @@ -270,7 +270,7 @@ void mips_r4k_init (ram_addr_t ram_size, isa_mmio_init(0x14000000, 0x00010000); isa_mem_base = 0x10000000; - pit = pit_init(isa_bus, 0x40, 0); + pit = pit_init(isa_bus, 0x40, isa_get_irq(NULL, 0)); for(i = 0; i < MAX_SERIAL_PORTS; i++) { if (serial_hds[i]) { diff --git a/hw/pc.c b/hw/pc.c index ea60a7c..29a4187 100644 --- a/hw/pc.c +++ b/hw/pc.c @@ -1152,7 +1152,7 @@ void pc_basic_device_init(ISABus *isa_bus, qemu_irq *gsi, qemu_register_boot_set(pc_boot_set, *rtc_state); - pit = pit_init(isa_bus, 0x40, 0); + pit = pit_init(isa_bus, 0x40, isa_get_irq(NULL, 0)); pcspk_init(pit); for(i = 0; i < MAX_SERIAL_PORTS; i++) { diff --git a/hw/ppc_prep.c b/hw/ppc_prep.c index 47dab3f..1cb7c65 100644 --- a/hw/ppc_prep.c +++ b/hw/ppc_prep.c @@ -644,7 +644,7 @@ static void ppc_prep_init (ram_addr_t ram_size, /* init basic PC hardware */ pci_vga_init(pci_bus); // openpic = openpic_init(0x00000000, 0xF0000000, 1); - // pit = pit_init(0x40, 0); + // pit = pit_init(0x40, isa_get_irq(0)); rtc_init(isa_bus, 2000, NULL); if (serial_hds[0]) -- 1.7.3.4 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html