Revision 6cd816b8 hw/pxa2xx_keypad.c
b/hw/pxa2xx_keypad.c | ||
---|---|---|
80 | 80 |
#define PXAKBD_MAXCOL 8 |
81 | 81 |
|
82 | 82 |
struct PXA2xxKeyPadState { |
83 |
MemoryRegion iomem; |
|
83 | 84 |
qemu_irq irq; |
84 | 85 |
struct keymap *map; |
85 | 86 |
int pressed_cnt; |
... | ... | |
174 | 175 |
return; |
175 | 176 |
} |
176 | 177 |
|
177 |
static uint32_t pxa2xx_keypad_read(void *opaque, target_phys_addr_t offset) |
|
178 |
static uint64_t pxa2xx_keypad_read(void *opaque, target_phys_addr_t offset, |
|
179 |
unsigned size) |
|
178 | 180 |
{ |
179 | 181 |
PXA2xxKeyPadState *s = (PXA2xxKeyPadState *) opaque; |
180 | 182 |
uint32_t tmp; |
... | ... | |
235 | 237 |
return 0; |
236 | 238 |
} |
237 | 239 |
|
238 |
static void pxa2xx_keypad_write(void *opaque, |
|
239 |
target_phys_addr_t offset, uint32_t value)
|
|
240 |
static void pxa2xx_keypad_write(void *opaque, target_phys_addr_t offset,
|
|
241 |
uint64_t value, unsigned size)
|
|
240 | 242 |
{ |
241 | 243 |
PXA2xxKeyPadState *s = (PXA2xxKeyPadState *) opaque; |
242 | 244 |
|
... | ... | |
277 | 279 |
} |
278 | 280 |
} |
279 | 281 |
|
280 |
static CPUReadMemoryFunc * const pxa2xx_keypad_readfn[] = { |
|
281 |
pxa2xx_keypad_read, |
|
282 |
pxa2xx_keypad_read, |
|
283 |
pxa2xx_keypad_read |
|
284 |
}; |
|
285 |
|
|
286 |
static CPUWriteMemoryFunc * const pxa2xx_keypad_writefn[] = { |
|
287 |
pxa2xx_keypad_write, |
|
288 |
pxa2xx_keypad_write, |
|
289 |
pxa2xx_keypad_write |
|
282 |
static const MemoryRegionOps pxa2xx_keypad_ops = { |
|
283 |
.read = pxa2xx_keypad_read, |
|
284 |
.write = pxa2xx_keypad_write, |
|
285 |
.endianness = DEVICE_NATIVE_ENDIAN, |
|
290 | 286 |
}; |
291 | 287 |
|
292 | 288 |
static const VMStateDescription vmstate_pxa2xx_keypad = { |
... | ... | |
306 | 302 |
} |
307 | 303 |
}; |
308 | 304 |
|
309 |
PXA2xxKeyPadState *pxa27x_keypad_init(target_phys_addr_t base, |
|
310 |
qemu_irq irq) |
|
305 |
PXA2xxKeyPadState *pxa27x_keypad_init(MemoryRegion *sysmem, |
|
306 |
target_phys_addr_t base, |
|
307 |
qemu_irq irq) |
|
311 | 308 |
{ |
312 |
int iomemtype; |
|
313 | 309 |
PXA2xxKeyPadState *s; |
314 | 310 |
|
315 | 311 |
s = (PXA2xxKeyPadState *) g_malloc0(sizeof(PXA2xxKeyPadState)); |
316 | 312 |
s->irq = irq; |
317 | 313 |
|
318 |
iomemtype = cpu_register_io_memory(pxa2xx_keypad_readfn,
|
|
319 |
pxa2xx_keypad_writefn, s, DEVICE_NATIVE_ENDIAN);
|
|
320 |
cpu_register_physical_memory(base, 0x00100000, iomemtype);
|
|
314 |
memory_region_init_io(&s->iomem, &pxa2xx_keypad_ops, s,
|
|
315 |
"pxa2xx-keypad", 0x00100000);
|
|
316 |
memory_region_add_subregion(sysmem, base, &s->iomem);
|
|
321 | 317 |
|
322 | 318 |
vmstate_register(NULL, 0, &vmstate_pxa2xx_keypad, s); |
323 | 319 |
|
Also available in: Unified diff