Revision 8ea72f38 hw/stellaris.c
b/hw/stellaris.c | ||
---|---|---|
687 | 687 |
SysBusDevice busdev; |
688 | 688 |
i2c_bus *bus; |
689 | 689 |
qemu_irq irq; |
690 |
MemoryRegion iomem; |
|
690 | 691 |
uint32_t msa; |
691 | 692 |
uint32_t mcs; |
692 | 693 |
uint32_t mdr; |
... | ... | |
704 | 705 |
#define STELLARIS_I2C_MCS_IDLE 0x20 |
705 | 706 |
#define STELLARIS_I2C_MCS_BUSBSY 0x40 |
706 | 707 |
|
707 |
static uint32_t stellaris_i2c_read(void *opaque, target_phys_addr_t offset) |
|
708 |
static uint64_t stellaris_i2c_read(void *opaque, target_phys_addr_t offset, |
|
709 |
unsigned size) |
|
708 | 710 |
{ |
709 | 711 |
stellaris_i2c_state *s = (stellaris_i2c_state *)opaque; |
710 | 712 |
|
... | ... | |
741 | 743 |
} |
742 | 744 |
|
743 | 745 |
static void stellaris_i2c_write(void *opaque, target_phys_addr_t offset, |
744 |
uint32_t value)
|
|
746 |
uint64_t value, unsigned size)
|
|
745 | 747 |
{ |
746 | 748 |
stellaris_i2c_state *s = (stellaris_i2c_state *)opaque; |
747 | 749 |
|
... | ... | |
832 | 834 |
stellaris_i2c_update(s); |
833 | 835 |
} |
834 | 836 |
|
835 |
static CPUReadMemoryFunc * const stellaris_i2c_readfn[] = { |
|
836 |
stellaris_i2c_read, |
|
837 |
stellaris_i2c_read, |
|
838 |
stellaris_i2c_read |
|
839 |
}; |
|
840 |
|
|
841 |
static CPUWriteMemoryFunc * const stellaris_i2c_writefn[] = { |
|
842 |
stellaris_i2c_write, |
|
843 |
stellaris_i2c_write, |
|
844 |
stellaris_i2c_write |
|
837 |
static const MemoryRegionOps stellaris_i2c_ops = { |
|
838 |
.read = stellaris_i2c_read, |
|
839 |
.write = stellaris_i2c_write, |
|
840 |
.endianness = DEVICE_NATIVE_ENDIAN, |
|
845 | 841 |
}; |
846 | 842 |
|
847 | 843 |
static const VMStateDescription vmstate_stellaris_i2c = { |
... | ... | |
865 | 861 |
{ |
866 | 862 |
stellaris_i2c_state *s = FROM_SYSBUS(stellaris_i2c_state, dev); |
867 | 863 |
i2c_bus *bus; |
868 |
int iomemtype; |
|
869 | 864 |
|
870 | 865 |
sysbus_init_irq(dev, &s->irq); |
871 | 866 |
bus = i2c_init_bus(&dev->qdev, "i2c"); |
872 | 867 |
s->bus = bus; |
873 | 868 |
|
874 |
iomemtype = cpu_register_io_memory(stellaris_i2c_readfn, |
|
875 |
stellaris_i2c_writefn, s, |
|
876 |
DEVICE_NATIVE_ENDIAN); |
|
877 |
sysbus_init_mmio(dev, 0x1000, iomemtype); |
|
869 |
memory_region_init_io(&s->iomem, &stellaris_i2c_ops, s, |
|
870 |
"i2c", 0x1000); |
|
871 |
sysbus_init_mmio_region(dev, &s->iomem); |
|
878 | 872 |
/* ??? For now we only implement the master interface. */ |
879 | 873 |
stellaris_i2c_reset(s); |
880 | 874 |
vmstate_register(&dev->qdev, -1, &vmstate_stellaris_i2c, s); |
Also available in: Unified diff