pckbd.c (a2e0b863ebec1c9ceea9b7aab022a6378ea74136) pckbd.c (db895a1e6a97e919f9b86d60c969377357b05066)
1/*
2 * QEMU PC keyboard emulation
3 *
4 * Copyright (c) 2003 Fabrice Bellard
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to deal
8 * in the Software without restriction, including without limitation the rights

--- 475 unchanged lines hidden (view full) ---

484 .write = kbd_write_command,
485 .impl = {
486 .min_access_size = 1,
487 .max_access_size = 1,
488 },
489 .endianness = DEVICE_LITTLE_ENDIAN,
490};
491
1/*
2 * QEMU PC keyboard emulation
3 *
4 * Copyright (c) 2003 Fabrice Bellard
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to deal
8 * in the Software without restriction, including without limitation the rights

--- 475 unchanged lines hidden (view full) ---

484 .write = kbd_write_command,
485 .impl = {
486 .min_access_size = 1,
487 .max_access_size = 1,
488 },
489 .endianness = DEVICE_LITTLE_ENDIAN,
490};
491
492static int i8042_initfn(ISADevice *dev)
492static void i8042_initfn(Object *obj)
493{
493{
494 ISAKBDState *isa_s = I8042(dev);
494 ISAKBDState *isa_s = I8042(obj);
495 KBDState *s = &isa_s->kbd;
496
495 KBDState *s = &isa_s->kbd;
496
497 isa_init_irq(dev, &s->irq_kbd, 1);
498 isa_init_irq(dev, &s->irq_mouse, 12);
499
500 memory_region_init_io(isa_s->io + 0, &i8042_data_ops, s, "i8042-data", 1);
497 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);
502
503 memory_region_init_io(isa_s->io + 1, &i8042_cmd_ops, s, "i8042-cmd", 1);
498 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);
499}
505
500
501static void i8042_realizefn(DeviceState *dev, Error **errp)
502{
503 ISADevice *isadev = ISA_DEVICE(dev);
504 ISAKBDState *isa_s = I8042(dev);
505 KBDState *s = &isa_s->kbd;
506
507 isa_init_irq(isadev, &s->irq_kbd, 1);
508 isa_init_irq(isadev, &s->irq_mouse, 12);
509
510 isa_register_ioport(isadev, isa_s->io + 0, 0x60);
511 isa_register_ioport(isadev, isa_s->io + 1, 0x64);
512
506 s->kbd = ps2_kbd_init(kbd_update_kbd_irq, s);
507 s->mouse = ps2_mouse_init(kbd_update_aux_irq, s);
508 qemu_register_reset(kbd_reset, s);
513 s->kbd = ps2_kbd_init(kbd_update_kbd_irq, s);
514 s->mouse = ps2_mouse_init(kbd_update_aux_irq, s);
515 qemu_register_reset(kbd_reset, s);
509 return 0;
510}
511
512static void i8042_class_initfn(ObjectClass *klass, void *data)
513{
514 DeviceClass *dc = DEVICE_CLASS(klass);
516}
517
518static void i8042_class_initfn(ObjectClass *klass, void *data)
519{
520 DeviceClass *dc = DEVICE_CLASS(klass);
515 ISADeviceClass *ic = ISA_DEVICE_CLASS(klass);
516 ic->init = i8042_initfn;
521
522 dc->realize = i8042_realizefn;
517 dc->no_user = 1;
518 dc->vmsd = &vmstate_kbd_isa;
519}
520
521static const TypeInfo i8042_info = {
522 .name = TYPE_I8042,
523 .parent = TYPE_ISA_DEVICE,
524 .instance_size = sizeof(ISAKBDState),
523 dc->no_user = 1;
524 dc->vmsd = &vmstate_kbd_isa;
525}
526
527static const TypeInfo i8042_info = {
528 .name = TYPE_I8042,
529 .parent = TYPE_ISA_DEVICE,
530 .instance_size = sizeof(ISAKBDState),
531 .instance_init = i8042_initfn,
525 .class_init = i8042_class_initfn,
526};
527
528static void i8042_register_types(void)
529{
530 type_register_static(&i8042_info);
531}
532
533type_init(i8042_register_types)
532 .class_init = i8042_class_initfn,
533};
534
535static void i8042_register_types(void)
536{
537 type_register_static(&i8042_info);
538}
539
540type_init(i8042_register_types)