Revision 6620cb3c hw/syborg_keyboard.c
b/hw/syborg_keyboard.c | ||
---|---|---|
51 | 51 |
|
52 | 52 |
typedef struct { |
53 | 53 |
SysBusDevice busdev; |
54 |
MemoryRegion iomem; |
|
54 | 55 |
uint32_t int_enabled; |
55 | 56 |
int extension_bit; |
56 | 57 |
uint32_t fifo_size; |
... | ... | |
66 | 67 |
qemu_set_irq(s->irq, level); |
67 | 68 |
} |
68 | 69 |
|
69 |
static uint32_t syborg_keyboard_read(void *opaque, target_phys_addr_t offset) |
|
70 |
static uint64_t syborg_keyboard_read(void *opaque, target_phys_addr_t offset, |
|
71 |
unsigned size) |
|
70 | 72 |
{ |
71 | 73 |
SyborgKeyboardState *s = (SyborgKeyboardState *)opaque; |
72 | 74 |
int c; |
... | ... | |
104 | 106 |
} |
105 | 107 |
|
106 | 108 |
static void syborg_keyboard_write(void *opaque, target_phys_addr_t offset, |
107 |
uint32_t value)
|
|
109 |
uint64_t value, unsigned size)
|
|
108 | 110 |
{ |
109 | 111 |
SyborgKeyboardState *s = (SyborgKeyboardState *)opaque; |
110 | 112 |
|
... | ... | |
121 | 123 |
} |
122 | 124 |
} |
123 | 125 |
|
124 |
static CPUReadMemoryFunc * const syborg_keyboard_readfn[] = { |
|
125 |
syborg_keyboard_read, |
|
126 |
syborg_keyboard_read, |
|
127 |
syborg_keyboard_read |
|
128 |
}; |
|
129 |
|
|
130 |
static CPUWriteMemoryFunc * const syborg_keyboard_writefn[] = { |
|
131 |
syborg_keyboard_write, |
|
132 |
syborg_keyboard_write, |
|
133 |
syborg_keyboard_write |
|
126 |
static const MemoryRegionOps syborg_keyboard_ops = { |
|
127 |
.read = syborg_keyboard_read, |
|
128 |
.write = syborg_keyboard_write, |
|
129 |
.endianness = DEVICE_NATIVE_ENDIAN, |
|
134 | 130 |
}; |
135 | 131 |
|
136 | 132 |
static void syborg_keyboard_event(void *opaque, int keycode) |
... | ... | |
184 | 180 |
static int syborg_keyboard_init(SysBusDevice *dev) |
185 | 181 |
{ |
186 | 182 |
SyborgKeyboardState *s = FROM_SYSBUS(SyborgKeyboardState, dev); |
187 |
int iomemtype; |
|
188 | 183 |
|
189 | 184 |
sysbus_init_irq(dev, &s->irq); |
190 |
iomemtype = cpu_register_io_memory(syborg_keyboard_readfn, |
|
191 |
syborg_keyboard_writefn, s, |
|
192 |
DEVICE_NATIVE_ENDIAN); |
|
193 |
sysbus_init_mmio(dev, 0x1000, iomemtype); |
|
185 |
memory_region_init_io(&s->iomem, &syborg_keyboard_ops, s, |
|
186 |
"keyboard", 0x1000); |
|
187 |
sysbus_init_mmio_region(dev, &s->iomem); |
|
194 | 188 |
if (s->fifo_size <= 0) { |
195 | 189 |
fprintf(stderr, "syborg_keyboard: fifo too small\n"); |
196 | 190 |
s->fifo_size = 16; |
Also available in: Unified diff