Revision 5105ed3b hw/milkymist-softusb.c
b/hw/milkymist-softusb.c | ||
---|---|---|
49 | 49 |
HIDState hid_kbd; |
50 | 50 |
HIDState hid_mouse; |
51 | 51 |
|
52 |
MemoryRegion regs_region; |
|
53 |
MemoryRegion pmem; |
|
54 |
MemoryRegion dmem; |
|
52 | 55 |
qemu_irq irq; |
53 | 56 |
|
54 | 57 |
/* device properties */ |
... | ... | |
68 | 71 |
}; |
69 | 72 |
typedef struct MilkymistSoftUsbState MilkymistSoftUsbState; |
70 | 73 |
|
71 |
static uint32_t softusb_read(void *opaque, target_phys_addr_t addr) |
|
74 |
static uint64_t softusb_read(void *opaque, target_phys_addr_t addr, |
|
75 |
unsigned size) |
|
72 | 76 |
{ |
73 | 77 |
MilkymistSoftUsbState *s = opaque; |
74 | 78 |
uint32_t r = 0; |
... | ... | |
91 | 95 |
} |
92 | 96 |
|
93 | 97 |
static void |
94 |
softusb_write(void *opaque, target_phys_addr_t addr, uint32_t value) |
|
98 |
softusb_write(void *opaque, target_phys_addr_t addr, uint64_t value, |
|
99 |
unsigned size) |
|
95 | 100 |
{ |
96 | 101 |
MilkymistSoftUsbState *s = opaque; |
97 | 102 |
|
... | ... | |
110 | 115 |
} |
111 | 116 |
} |
112 | 117 |
|
113 |
static CPUReadMemoryFunc * const softusb_read_fn[] = { |
|
114 |
NULL, |
|
115 |
NULL, |
|
116 |
&softusb_read, |
|
117 |
}; |
|
118 |
|
|
119 |
static CPUWriteMemoryFunc * const softusb_write_fn[] = { |
|
120 |
NULL, |
|
121 |
NULL, |
|
122 |
&softusb_write, |
|
118 |
static const MemoryRegionOps softusb_mmio_ops = { |
|
119 |
.read = softusb_read, |
|
120 |
.write = softusb_write, |
|
121 |
.endianness = DEVICE_NATIVE_ENDIAN, |
|
122 |
.valid = { |
|
123 |
.min_access_size = 4, |
|
124 |
.max_access_size = 4, |
|
125 |
}, |
|
123 | 126 |
}; |
124 | 127 |
|
125 | 128 |
static inline void softusb_read_dmem(MilkymistSoftUsbState *s, |
... | ... | |
256 | 259 |
static int milkymist_softusb_init(SysBusDevice *dev) |
257 | 260 |
{ |
258 | 261 |
MilkymistSoftUsbState *s = FROM_SYSBUS(typeof(*s), dev); |
259 |
int softusb_regs; |
|
260 |
ram_addr_t pmem_ram; |
|
261 |
ram_addr_t dmem_ram; |
|
262 | 262 |
|
263 | 263 |
sysbus_init_irq(dev, &s->irq); |
264 | 264 |
|
265 |
softusb_regs = cpu_register_io_memory(softusb_read_fn, softusb_write_fn, s,
|
|
266 |
DEVICE_NATIVE_ENDIAN);
|
|
267 |
sysbus_init_mmio(dev, R_MAX * 4, softusb_regs);
|
|
265 |
memory_region_init_io(&s->regs_region, &softusb_mmio_ops, s,
|
|
266 |
"milkymist-softusb", R_MAX * 4);
|
|
267 |
sysbus_init_mmio_region(dev, &s->regs_region);
|
|
268 | 268 |
|
269 | 269 |
/* register pmem and dmem */ |
270 |
pmem_ram = qemu_ram_alloc(NULL, "milkymist_softusb.pmem", s->pmem_size);
|
|
271 |
cpu_register_physical_memory(s->pmem_base, s->pmem_size,
|
|
272 |
pmem_ram | IO_MEM_RAM);
|
|
273 |
dmem_ram = qemu_ram_alloc(NULL, "milkymist_softusb.dmem", s->dmem_size);
|
|
274 |
cpu_register_physical_memory(s->dmem_base, s->dmem_size,
|
|
275 |
dmem_ram | IO_MEM_RAM);
|
|
270 |
memory_region_init_ram(&s->pmem, NULL, "milkymist_softusb.pmem",
|
|
271 |
s->pmem_size);
|
|
272 |
sysbus_add_memory(dev, s->pmem_base, &s->pmem);
|
|
273 |
memory_region_init_ram(&s->dmem, NULL, "milkymist_softusb.dmem",
|
|
274 |
s->dmem_size);
|
|
275 |
sysbus_add_memory(dev, s->dmem_base, &s->dmem);
|
|
276 | 276 |
|
277 | 277 |
hid_init(&s->hid_kbd, HID_KEYBOARD, softusb_kbd_hid_datain); |
278 | 278 |
hid_init(&s->hid_mouse, HID_MOUSE, softusb_mouse_hid_datain); |
Also available in: Unified diff