123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- /*
- * QEMU MC146818 RTC emulation
- *
- * Copyright (c) 2003-2004 Fabrice Bellard
- *
- * SPDX-License-Identifier: MIT
- */
- #ifndef HW_RTC_MC146818RTC_H
- #define HW_RTC_MC146818RTC_H
- #include "qapi/qapi-types-machine.h"
- #include "qemu/queue.h"
- #include "qemu/timer.h"
- #include "hw/isa/isa.h"
- #include "qom/object.h"
- #define TYPE_MC146818_RTC "mc146818rtc"
- OBJECT_DECLARE_SIMPLE_TYPE(MC146818RtcState, MC146818_RTC)
- struct MC146818RtcState {
- ISADevice parent_obj;
- MemoryRegion io;
- MemoryRegion coalesced_io;
- uint8_t cmos_data[128];
- uint8_t cmos_index;
- uint8_t isairq;
- uint16_t io_base;
- int32_t base_year;
- uint64_t base_rtc;
- uint64_t last_update;
- int64_t offset;
- qemu_irq irq;
- int it_shift;
- /* periodic timer */
- QEMUTimer *periodic_timer;
- int64_t next_periodic_time;
- /* update-ended timer */
- QEMUTimer *update_timer;
- uint64_t next_alarm_time;
- uint16_t irq_reinject_on_ack_count;
- uint32_t irq_coalesced;
- uint32_t period;
- QEMUTimer *coalesced_timer;
- Notifier clock_reset_notifier;
- LostTickPolicy lost_tick_policy;
- Notifier suspend_notifier;
- QLIST_ENTRY(MC146818RtcState) link;
- };
- #define RTC_ISA_IRQ 8
- MC146818RtcState *mc146818_rtc_init(ISABus *bus, int base_year,
- qemu_irq intercept_irq);
- void mc146818rtc_set_cmos_data(MC146818RtcState *s, int addr, int val);
- int mc146818rtc_get_cmos_data(MC146818RtcState *s, int addr);
- void rtc_reset_reinjection(MC146818RtcState *rtc);
- #endif /* HW_RTC_MC146818RTC_H */
|