diff --git a/hw/alpha_dp264.c b/hw/alpha_dp264.c index 876335a77..4c0efd361 100644 --- a/hw/alpha_dp264.c +++ b/hw/alpha_dp264.c @@ -14,6 +14,7 @@ #include "sysemu.h" #include "mc146818rtc.h" #include "ide.h" +#include "i8254.h" #define MAX_IDE_BUS 2 diff --git a/hw/hpet.c b/hw/hpet.c index 76769d549..16833fa8a 100644 --- a/hw/hpet.c +++ b/hw/hpet.c @@ -31,6 +31,7 @@ #include "hpet_emul.h" #include "sysbus.h" #include "mc146818rtc.h" +#include "i8254.h" //#define HPET_DEBUG #ifdef HPET_DEBUG diff --git a/hw/i82378.c b/hw/i82378.c index 3929c041b..d3c4ac5f7 100644 --- a/hw/i82378.c +++ b/hw/i82378.c @@ -19,6 +19,7 @@ #include "pci.h" #include "pc.h" +#include "i8254.h" //#define DEBUG_I82378 diff --git a/hw/i8254.c b/hw/i8254.c index d55b22148..71ea849d1 100644 --- a/hw/i8254.c +++ b/hw/i8254.c @@ -25,6 +25,7 @@ #include "pc.h" #include "isa.h" #include "qemu-timer.h" +#include "i8254.h" //#define DEBUG_PIT diff --git a/hw/i8254.h b/hw/i8254.h new file mode 100644 index 000000000..cd3111c55 --- /dev/null +++ b/hw/i8254.h @@ -0,0 +1,54 @@ +/* + * QEMU 8253/8254 interval timer emulation + * + * Copyright (c) 2003-2004 Fabrice Bellard + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef HW_I8254_H +#define HW_I8254_H + +#include "hw.h" +#include "isa.h" + +#define PIT_FREQ 1193182 + +static inline ISADevice *pit_init(ISABus *bus, int base, int 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); + + return dev; +} + +void pit_set_gate(ISADevice *dev, int channel, int val); +int pit_get_gate(ISADevice *dev, int channel); +int pit_get_initial_count(ISADevice *dev, int channel); +int pit_get_mode(ISADevice *dev, int channel); +int pit_get_out(ISADevice *dev, int channel, int64_t current_time); + +void hpet_pit_disable(void); +void hpet_pit_enable(void); + +#endif /* !HW_I8254_H */ diff --git a/hw/mips_fulong2e.c b/hw/mips_fulong2e.c index 163a66853..ead72ae0c 100644 --- a/hw/mips_fulong2e.c +++ b/hw/mips_fulong2e.c @@ -40,6 +40,7 @@ #include "elf.h" #include "vt82c686.h" #include "mc146818rtc.h" +#include "i8254.h" #include "blockdev.h" #include "exec-memory.h" diff --git a/hw/mips_jazz.c b/hw/mips_jazz.c index 63165b9a3..61dee4def 100644 --- a/hw/mips_jazz.c +++ b/hw/mips_jazz.c @@ -36,6 +36,7 @@ #include "mips-bios.h" #include "loader.h" #include "mc146818rtc.h" +#include "i8254.h" #include "blockdev.h" #include "sysbus.h" #include "exec-memory.h" diff --git a/hw/mips_malta.c b/hw/mips_malta.c index ffecefded..692f79b48 100644 --- a/hw/mips_malta.c +++ b/hw/mips_malta.c @@ -45,6 +45,7 @@ #include "loader.h" #include "elf.h" #include "mc146818rtc.h" +#include "i8254.h" #include "blockdev.h" #include "exec-memory.h" #include "sysbus.h" /* SysBusDevice */ diff --git a/hw/mips_r4k.c b/hw/mips_r4k.c index 1c0615c1d..1b3ec2dc5 100644 --- a/hw/mips_r4k.c +++ b/hw/mips_r4k.c @@ -22,6 +22,7 @@ #include "loader.h" #include "elf.h" #include "mc146818rtc.h" +#include "i8254.h" #include "blockdev.h" #include "exec-memory.h" diff --git a/hw/pc.c b/hw/pc.c index ab94d7240..435fe4dd4 100644 --- a/hw/pc.c +++ b/hw/pc.c @@ -36,6 +36,7 @@ #include "elf.h" #include "multiboot.h" #include "mc146818rtc.h" +#include "i8254.h" #include "msi.h" #include "sysbus.h" #include "sysemu.h" diff --git a/hw/pc.h b/hw/pc.h index c666ec982..b08708d6a 100644 --- a/hw/pc.h +++ b/hw/pc.h @@ -81,31 +81,6 @@ typedef struct GSIState { void gsi_handler(void *opaque, int n, int level); -/* i8254.c */ - -#define PIT_FREQ 1193182 - -static inline ISADevice *pit_init(ISABus *bus, int base, int 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); - - return dev; -} - -void pit_set_gate(ISADevice *dev, int channel, int val); -int pit_get_gate(ISADevice *dev, int channel); -int pit_get_initial_count(ISADevice *dev, int channel); -int pit_get_mode(ISADevice *dev, int channel); -int pit_get_out(ISADevice *dev, int channel, int64_t current_time); - -void hpet_pit_disable(void); -void hpet_pit_enable(void); - /* vmport.c */ static inline void vmport_init(ISABus *bus) { diff --git a/hw/pcspk.c b/hw/pcspk.c index acb016773..43df818fb 100644 --- a/hw/pcspk.c +++ b/hw/pcspk.c @@ -27,6 +27,7 @@ #include "isa.h" #include "audio/audio.h" #include "qemu-timer.h" +#include "i8254.h" #define PCSPK_BUF_LEN 1792 #define PCSPK_SAMPLE_RATE 32000