Signed-off-by: Avi Kivity <a...@redhat.com> --- hw/milkymist-softusb.c | 48 ++++++++++++++++++++++++------------------------ 1 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/hw/milkymist-softusb.c b/hw/milkymist-softusb.c index fe4eedb..ef4d9ee 100644 --- a/hw/milkymist-softusb.c +++ b/hw/milkymist-softusb.c @@ -49,6 +49,9 @@ struct MilkymistSoftUsbState { HIDState hid_kbd; HIDState hid_mouse; + MemoryRegion regs_region; + MemoryRegion pmem; + MemoryRegion dmem; qemu_irq irq; /* device properties */ @@ -68,7 +71,8 @@ struct MilkymistSoftUsbState { }; typedef struct MilkymistSoftUsbState MilkymistSoftUsbState; -static uint32_t softusb_read(void *opaque, target_phys_addr_t addr) +static uint64_t softusb_read(void *opaque, target_phys_addr_t addr, + unsigned size) { MilkymistSoftUsbState *s = opaque; uint32_t r = 0; @@ -91,7 +95,8 @@ static uint32_t softusb_read(void *opaque, target_phys_addr_t addr) } static void -softusb_write(void *opaque, target_phys_addr_t addr, uint32_t value) +softusb_write(void *opaque, target_phys_addr_t addr, uint64_t value, + unsigned size) { MilkymistSoftUsbState *s = opaque; @@ -110,16 +115,14 @@ softusb_write(void *opaque, target_phys_addr_t addr, uint32_t value) } } -static CPUReadMemoryFunc * const softusb_read_fn[] = { - NULL, - NULL, - &softusb_read, -}; - -static CPUWriteMemoryFunc * const softusb_write_fn[] = { - NULL, - NULL, - &softusb_write, +static const MemoryRegionOps softusb_mmio_ops = { + .read = softusb_read, + .write = softusb_write, + .endianness = DEVICE_NATIVE_ENDIAN, + .valid = { + .min_access_size = 4, + .max_access_size = 4, + }, }; static inline void softusb_read_dmem(MilkymistSoftUsbState *s, @@ -256,23 +259,20 @@ static void milkymist_softusb_reset(DeviceState *d) static int milkymist_softusb_init(SysBusDevice *dev) { MilkymistSoftUsbState *s = FROM_SYSBUS(typeof(*s), dev); - int softusb_regs; - ram_addr_t pmem_ram; - ram_addr_t dmem_ram; sysbus_init_irq(dev, &s->irq); - softusb_regs = cpu_register_io_memory(softusb_read_fn, softusb_write_fn, s, - DEVICE_NATIVE_ENDIAN); - sysbus_init_mmio(dev, R_MAX * 4, softusb_regs); + memory_region_init_io(&s->regs_region, &softusb_mmio_ops, s, + "milkymist-softusb", R_MAX * 4); + sysbus_init_mmio_region(dev, &s->regs_region); /* register pmem and dmem */ - pmem_ram = qemu_ram_alloc(NULL, "milkymist_softusb.pmem", s->pmem_size); - cpu_register_physical_memory(s->pmem_base, s->pmem_size, - pmem_ram | IO_MEM_RAM); - dmem_ram = qemu_ram_alloc(NULL, "milkymist_softusb.dmem", s->dmem_size); - cpu_register_physical_memory(s->dmem_base, s->dmem_size, - dmem_ram | IO_MEM_RAM); + memory_region_init_ram(&s->pmem, NULL, "milkymist_softusb.pmem", + s->pmem_size); + sysbus_add_memory(dev, s->pmem_base, &s->pmem); + memory_region_init_ram(&s->dmem, NULL, "milkymist_softusb.dmem", + s->dmem_size); + sysbus_add_memory(dev, s->dmem_base, &s->dmem); hid_init(&s->hid_kbd, HID_KEYBOARD, softusb_kbd_hid_datain); hid_init(&s->hid_mouse, HID_MOUSE, softusb_mouse_hid_datain); -- 1.7.5.3