db1015e92e
Some typedefs and macros are defined after the type check macros. This makes it difficult to automatically replace their definitions with OBJECT_DECLARE_TYPE. Patch generated using: $ ./scripts/codeconverter/converter.py -i \ --pattern=QOMStructTypedefSplit $(git grep -l '' -- '*.[ch]') which will split "typdef struct { ... } TypedefName" declarations. Followed by: $ ./scripts/codeconverter/converter.py -i --pattern=MoveSymbols \ $(git grep -l '' -- '*.[ch]') which will: - move the typedefs and #defines above the type check macros - add missing #include "qom/object.h" lines if necessary Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Reviewed-by: Juan Quintela <quintela@redhat.com> Message-Id: <20200831210740.126168-9-ehabkost@redhat.com> Reviewed-by: Juan Quintela <quintela@redhat.com> Message-Id: <20200831210740.126168-10-ehabkost@redhat.com> Message-Id: <20200831210740.126168-11-ehabkost@redhat.com> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
60 lines
1.4 KiB
C
60 lines
1.4 KiB
C
/*
|
|
* 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-misc.h"
|
|
#include "qemu/queue.h"
|
|
#include "qemu/timer.h"
|
|
#include "hw/isa/isa.h"
|
|
#include "qom/object.h"
|
|
|
|
#define TYPE_MC146818_RTC "mc146818rtc"
|
|
typedef struct RTCState RTCState;
|
|
#define MC146818_RTC(obj) OBJECT_CHECK(RTCState, (obj), TYPE_MC146818_RTC)
|
|
|
|
struct RTCState {
|
|
ISADevice parent_obj;
|
|
|
|
MemoryRegion io;
|
|
MemoryRegion coalesced_io;
|
|
uint8_t cmos_data[128];
|
|
uint8_t cmos_index;
|
|
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(RTCState) link;
|
|
};
|
|
|
|
#define RTC_ISA_IRQ 8
|
|
#define RTC_ISA_BASE 0x70
|
|
|
|
ISADevice *mc146818_rtc_init(ISABus *bus, int base_year,
|
|
qemu_irq intercept_irq);
|
|
void rtc_set_memory(ISADevice *dev, int addr, int val);
|
|
int rtc_get_memory(ISADevice *dev, int addr);
|
|
|
|
#endif /* MC146818RTC_H */
|