Revision 1d914fa0 hw/mc146818rtc.c

b/hw/mc146818rtc.c
28 28
#include "apic.h"
29 29
#include "isa.h"
30 30
#include "hpet_emul.h"
31
#include "mc146818rtc.h"
31 32

  
32 33
//#define DEBUG_CMOS
33 34

  
......
65 66
#define REG_C_PF   0x40
66 67
#define REG_C_AF   0x20
67 68

  
68
struct RTCState {
69
typedef struct RTCState {
69 70
    ISADevice dev;
70 71
    uint8_t cmos_data[128];
71 72
    uint8_t cmos_index;
......
85 86
    QEMUTimer *coalesced_timer;
86 87
    QEMUTimer *second_timer;
87 88
    QEMUTimer *second_timer2;
88
};
89
} RTCState;
89 90

  
90 91
static void rtc_irq_raise(qemu_irq irq)
91 92
{
......
492 493
    }
493 494
}
494 495

  
495
void rtc_set_memory(RTCState *s, int addr, int val)
496
void rtc_set_memory(ISADevice *dev, int addr, int val)
496 497
{
498
    RTCState *s = DO_UPCAST(RTCState, dev, dev);
497 499
    if (addr >= 0 && addr <= 127)
498 500
        s->cmos_data[addr] = val;
499 501
}
500 502

  
501
void rtc_set_date(RTCState *s, const struct tm *tm)
503
void rtc_set_date(ISADevice *dev, const struct tm *tm)
502 504
{
505
    RTCState *s = DO_UPCAST(RTCState, dev, dev);
503 506
    s->current_tm = *tm;
504 507
    rtc_copy_date(s);
505 508
}
......
508 511
#define REG_IBM_CENTURY_BYTE        0x32
509 512
#define REG_IBM_PS2_CENTURY_BYTE    0x37
510 513

  
511
static void rtc_set_date_from_host(RTCState *s)
514
static void rtc_set_date_from_host(ISADevice *dev)
512 515
{
516
    RTCState *s = DO_UPCAST(RTCState, dev, dev);
513 517
    struct tm tm;
514 518
    int val;
515 519

  
516 520
    /* set the CMOS date */
517 521
    qemu_get_timedate(&tm, 0);
518
    rtc_set_date(s, &tm);
522
    rtc_set_date(dev, &tm);
519 523

  
520 524
    val = rtc_to_bcd(s, (tm.tm_year / 100) + 19);
521
    rtc_set_memory(s, REG_IBM_CENTURY_BYTE, val);
522
    rtc_set_memory(s, REG_IBM_PS2_CENTURY_BYTE, val);
525
    rtc_set_memory(dev, REG_IBM_CENTURY_BYTE, val);
526
    rtc_set_memory(dev, REG_IBM_PS2_CENTURY_BYTE, val);
523 527
}
524 528

  
525 529
static int rtc_post_load(void *opaque, int version_id)
......
591 595
    s->cmos_data[RTC_REG_C] = 0x00;
592 596
    s->cmos_data[RTC_REG_D] = 0x80;
593 597

  
594
    rtc_set_date_from_host(s);
598
    rtc_set_date_from_host(dev);
595 599

  
596 600
    s->periodic_timer = qemu_new_timer(rtc_clock, rtc_periodic_timer, s);
597 601
#ifdef TARGET_I386
......
614 618
    return 0;
615 619
}
616 620

  
617
RTCState *rtc_init(int base_year)
621
ISADevice *rtc_init(int base_year)
618 622
{
619 623
    ISADevice *dev;
620 624

  
621 625
    dev = isa_create("mc146818rtc");
622 626
    qdev_prop_set_int32(&dev->qdev, "base_year", base_year);
623 627
    qdev_init_nofail(&dev->qdev);
624
    return DO_UPCAST(RTCState, dev, dev);
628
    return dev;
625 629
}
626 630

  
627 631
static ISADeviceInfo mc146818rtc_info = {

Also available in: Unified diff