Revision b92bb99b

b/hw/pckbd.c
124 124

  
125 125
    qemu_irq irq_kbd;
126 126
    qemu_irq irq_mouse;
127
    target_phys_addr_t base;
127 128
} KBDState;
128 129

  
129 130
KBDState kbd_state;
......
140 141
    s->status &= ~(KBD_STAT_OBF | KBD_STAT_MOUSE_OBF);
141 142
    if (s->pending) {
142 143
        s->status |= KBD_STAT_OBF;
143
        /* kdb data takes priority over aux data.  */
144
        /* kbd data takes priority over aux data.  */
144 145
        if (s->pending == KBD_PENDING_AUX) {
145 146
            s->status |= KBD_STAT_MOUSE_OBF;
146 147
            if (s->mode & KBD_MODE_MOUSE_INT)
......
362 363

  
363 364
    s->irq_kbd = kbd_irq;
364 365
    s->irq_mouse = mouse_irq;
365
    
366

  
366 367
    kbd_reset(s);
367 368
    register_savevm("pckbd", 0, 3, kbd_save, kbd_load, s);
368 369
    register_ioport_read(io_base, 1, 1, kbd_read_data, s);
......
377 378
#endif
378 379
    qemu_register_reset(kbd_reset, s);
379 380
}
381

  
382
/* Memory mapped interface */
383
uint32_t kbd_mm_readb (void *opaque, target_phys_addr_t addr)
384
{
385
    KBDState *s = opaque;
386

  
387
    if (addr == s->base)
388
        return kbd_read_data(s, 0);
389
    else
390
        return kbd_read_status(s, 0);
391
}
392

  
393
void kbd_mm_writeb (void *opaque,
394
                       target_phys_addr_t addr, uint32_t value)
395
{
396
    KBDState *s = opaque;
397

  
398
    if (addr == s->base)
399
        kbd_write_data(s, 0, value);
400
    else
401
        kbd_write_command(s, 0, value);
402
}
403

  
404
static CPUReadMemoryFunc *kbd_mm_read[] = {
405
    &kbd_mm_readb,
406
    &kbd_mm_readb,
407
    &kbd_mm_readb,
408
};
409

  
410
static CPUWriteMemoryFunc *kbd_mm_write[] = {
411
    &kbd_mm_writeb,
412
    &kbd_mm_writeb,
413
    &kbd_mm_writeb,
414
};
415

  
416
void i8042_mm_init(qemu_irq kbd_irq, qemu_irq mouse_irq, target_ulong base, int it_shift)
417
{
418
    KBDState *s = &kbd_state;
419
    int s_io_memory;
420

  
421
    s->irq_kbd = kbd_irq;
422
    s->irq_mouse = mouse_irq;
423
    s->base = base;
424

  
425
    kbd_reset(s);
426
    register_savevm("pckbd", 0, 3, kbd_save, kbd_load, s);
427
    s_io_memory = cpu_register_io_memory(0, kbd_mm_read, kbd_mm_write, s);
428
    cpu_register_physical_memory(base & ~(TARGET_PAGE_SIZE - 1), TARGET_PAGE_SIZE, s_io_memory);
429

  
430
    s->kbd = ps2_kbd_init(kbd_update_kbd_irq, s);
431
    s->mouse = ps2_mouse_init(kbd_update_aux_irq, s);
432
#ifdef TARGET_I386
433
    vmmouse_init(s->mouse);
434
#endif
435
    qemu_register_reset(kbd_reset, s);
436
}
b/vl.h
1035 1035

  
1036 1036
/* pckbd.c */
1037 1037

  
1038
void i8042_init(qemu_irq kdb_irq, qemu_irq mouse_irq, uint32_t io_base);
1038
void i8042_init(qemu_irq kbd_irq, qemu_irq mouse_irq, uint32_t io_base);
1039
void i8042_mm_init(qemu_irq kbd_irq, qemu_irq mouse_irq, target_ulong base, int it_shift);
1039 1040

  
1040 1041
/* mc146818rtc.c */
1041 1042

  

Also available in: Unified diff