@@ -31,6 +31,7 @@
#include "hw/char/isa.h"
#include "hw/sysbus.h"
#include "hw/timer/i8254.h"
+#include "hw/timer/mc146818rtc.h"
#include "qapi/error.h"
PCIDevice *piix4_dev;
@@ -43,6 +44,7 @@ typedef struct PIIX4State {
FDCtrlISABus floppy;
ISASerialState serial[2];
ISAParallelState parallel;
+ RTCState rtc;
/* Reset Control Register */
MemoryRegion rcr_mem;
@@ -213,6 +215,15 @@ static void piix4_realize(PCIDevice *pci, Error **errp)
return;
}
+ /* timer */
+ qdev_set_parent_bus(DEVICE(&s->rtc), BUS(isa_bus));
+ object_property_set_bool(OBJECT(&s->rtc), true, "realized", &err);
+ if (err) {
+ error_propagate(errp, err);
+ return;
+ }
+ isa_init_irq(ISA_DEVICE(&s->rtc), &s->rtc.irq, RTC_ISA_IRQ);
+
piix4_dev = pci;
qemu_register_reset(piix4_reset, s);
}
@@ -227,6 +238,7 @@ static void piix4_init(Object *obj)
object_initialize(&s->serial[i], sizeof(s->serial[i]), TYPE_ISA_SERIAL);
}
object_initialize(&s->parallel, sizeof(s->parallel), TYPE_ISA_PARALLEL);
+ object_initialize(&s->rtc, sizeof(s->rtc), TYPE_MC146818_RTC);
object_property_add_alias(obj, "floppy", OBJECT(&s->floppy), "driveA",
&error_abort);
@@ -995,7 +995,6 @@ void mips_malta_init(MachineState *machine)
uint8_t *smbus_eeprom_buf = g_malloc0(smbus_eeprom_size);
int64_t kernel_entry, bootloader_run_addr;
PCIBus *pci_bus;
- ISABus *isa_bus;
qemu_irq cbus_irq, i8259_irq;
PCIDevice *pci;
int piix4_devfn;
@@ -1197,7 +1196,6 @@ void mips_malta_init(MachineState *machine)
qdev_prop_set_chr(dev, "parallel", parallel_hds[0]);
qdev_init_nofail(dev);
- isa_bus = ISA_BUS(qdev_get_child_bus(dev, "isa.0"));
piix4_devfn = pci->devfn;
/* Interrupt controller */
@@ -1213,8 +1211,6 @@ void mips_malta_init(MachineState *machine)
smbus_eeprom_init(smbus, 8, smbus_eeprom_buf, smbus_eeprom_size);
g_free(smbus_eeprom_buf);
- rtc_init(isa_bus, 2000, NULL);
-
/* Network card */
network_init(pci_bus);
Remove mc146818rtc instanciated in malta board, to not have it twice. Signed-off-by: Hervé Poussineau <hpoussin@reactos.org> --- hw/isa/piix4.c | 12 ++++++++++++ hw/mips/mips_malta.c | 4 ---- 2 files changed, 12 insertions(+), 4 deletions(-)