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) |