425
425
vmstate_register(NULL, 0, &vmstate_kbd, s);
427
memory_region_init_io(region, &i8042_mmio_ops, s, "i8042", size);
427
memory_region_init_io(region, NULL, &i8042_mmio_ops, s, "i8042", size);
429
429
s->kbd = ps2_kbd_init(kbd_update_kbd_irq, s);
430
430
s->mouse = ps2_mouse_init(kbd_update_aux_irq, s);
489
489
.endianness = DEVICE_LITTLE_ENDIAN,
492
static int i8042_initfn(ISADevice *dev)
492
static void i8042_initfn(Object *obj)
494
ISAKBDState *isa_s = I8042(obj);
495
KBDState *s = &isa_s->kbd;
497
memory_region_init_io(isa_s->io + 0, obj, &i8042_data_ops, s,
499
memory_region_init_io(isa_s->io + 1, obj, &i8042_cmd_ops, s,
503
static void i8042_realizefn(DeviceState *dev, Error **errp)
505
ISADevice *isadev = ISA_DEVICE(dev);
494
506
ISAKBDState *isa_s = I8042(dev);
495
507
KBDState *s = &isa_s->kbd;
497
isa_init_irq(dev, &s->irq_kbd, 1);
498
isa_init_irq(dev, &s->irq_mouse, 12);
500
memory_region_init_io(isa_s->io + 0, &i8042_data_ops, s, "i8042-data", 1);
501
isa_register_ioport(dev, isa_s->io + 0, 0x60);
503
memory_region_init_io(isa_s->io + 1, &i8042_cmd_ops, s, "i8042-cmd", 1);
504
isa_register_ioport(dev, isa_s->io + 1, 0x64);
509
isa_init_irq(isadev, &s->irq_kbd, 1);
510
isa_init_irq(isadev, &s->irq_mouse, 12);
512
isa_register_ioport(isadev, isa_s->io + 0, 0x60);
513
isa_register_ioport(isadev, isa_s->io + 1, 0x64);
506
515
s->kbd = ps2_kbd_init(kbd_update_kbd_irq, s);
507
516
s->mouse = ps2_mouse_init(kbd_update_aux_irq, s);
508
517
qemu_register_reset(kbd_reset, s);
512
520
static void i8042_class_initfn(ObjectClass *klass, void *data)
514
522
DeviceClass *dc = DEVICE_CLASS(klass);
515
ISADeviceClass *ic = ISA_DEVICE_CLASS(klass);
516
ic->init = i8042_initfn;
524
dc->realize = i8042_realizefn;
518
526
dc->vmsd = &vmstate_kbd_isa;