Revision ee6847d1 hw/m48t59.c
b/hw/m48t59.c | ||
---|---|---|
43 | 43 |
struct m48t59_t { |
44 | 44 |
SysBusDevice busdev; |
45 | 45 |
/* Model parameters */ |
46 |
int type; // 2 = m48t02, 8 = m48t08, 59 = m48t59
|
|
46 |
uint32_t type; // 2 = m48t02, 8 = m48t08, 59 = m48t59
|
|
47 | 47 |
/* Hardware parameters */ |
48 | 48 |
qemu_irq IRQ; |
49 | 49 |
uint32_t io_base; |
50 |
uint16_t size;
|
|
50 |
uint32_t size;
|
|
51 | 51 |
/* RTC management */ |
52 | 52 |
time_t time_offset; |
53 | 53 |
time_t stop_time; |
... | ... | |
623 | 623 |
m48t59_t *d; |
624 | 624 |
|
625 | 625 |
dev = qdev_create(NULL, "m48t59"); |
626 |
qdev_set_prop_int(dev, "type", type);
|
|
627 |
qdev_set_prop_int(dev, "size", size);
|
|
628 |
qdev_set_prop_int(dev, "io_base", io_base);
|
|
626 |
qdev_prop_set_uint32(dev, "type", type);
|
|
627 |
qdev_prop_set_uint32(dev, "size", size);
|
|
628 |
qdev_prop_set_uint32(dev, "io_base", io_base);
|
|
629 | 629 |
qdev_init(dev); |
630 | 630 |
s = sysbus_from_qdev(dev); |
631 | 631 |
sysbus_connect_irq(s, 0, IRQ); |
... | ... | |
647 | 647 |
m48t59_t *s = FROM_SYSBUS(m48t59_t, dev); |
648 | 648 |
int mem_index; |
649 | 649 |
|
650 |
s->size = qdev_get_prop_int(&dev->qdev, "size", -1); |
|
651 | 650 |
s->buffer = qemu_mallocz(s->size); |
652 | 651 |
sysbus_init_irq(dev, &s->IRQ); |
653 |
s->io_base = qdev_get_prop_int(&dev->qdev, "io_base", 0); |
|
654 |
s->type = qdev_get_prop_int(&dev->qdev, "type", -1); |
|
655 | 652 |
|
656 | 653 |
mem_index = cpu_register_io_memory(nvram_read, nvram_write, s); |
657 | 654 |
sysbus_init_mmio(dev, s->size, mem_index); |
... | ... | |
666 | 663 |
register_savevm("m48t59", -1, 1, m48t59_save, m48t59_load, s); |
667 | 664 |
} |
668 | 665 |
|
666 |
static SysBusDeviceInfo m48t59_info = { |
|
667 |
.init = m48t59_init1, |
|
668 |
.qdev.name = "m48t59", |
|
669 |
.qdev.size = sizeof(m48t59_t), |
|
670 |
.qdev.props = (Property[]) { |
|
671 |
{ |
|
672 |
.name = "size", |
|
673 |
.info = &qdev_prop_uint32, |
|
674 |
.offset = offsetof(m48t59_t, size), |
|
675 |
.defval = (uint32_t[]) { -1 }, |
|
676 |
},{ |
|
677 |
.name = "type", |
|
678 |
.info = &qdev_prop_uint32, |
|
679 |
.offset = offsetof(m48t59_t, type), |
|
680 |
.defval = (uint32_t[]) { -1 }, |
|
681 |
},{ |
|
682 |
.name = "io_base", |
|
683 |
.info = &qdev_prop_hex32, |
|
684 |
.offset = offsetof(m48t59_t, io_base), |
|
685 |
}, |
|
686 |
{/* end of list */} |
|
687 |
} |
|
688 |
}; |
|
689 |
|
|
669 | 690 |
static void m48t59_register_devices(void) |
670 | 691 |
{ |
671 |
sysbus_register_dev("m48t59", sizeof(m48t59_t), m48t59_init1);
|
|
692 |
sysbus_register_withprop(&m48t59_info);
|
|
672 | 693 |
} |
673 | 694 |
|
674 | 695 |
device_init(m48t59_register_devices) |
Also available in: Unified diff