void i8042_isa_mouse_fake_event(void *opaque) { ISADevice *dev = opaque; ISAKBDState *isa = I8042(dev); KBDState *s = &isa->kbd; ps2_mouse_fake_event(s->mouse); }
void ps2_keyboard_controller_device::device_add_mconfig(machine_config &config) { I8042(config, m_mcu, DERIVED_CLOCK(1, 1)); m_mcu->p1_in_cb().set(FUNC(ps2_keyboard_controller_device::p1_r)); m_mcu->p1_out_cb().set_nop(); m_mcu->p2_in_cb().set_constant(0xffU); m_mcu->p2_out_cb().set(FUNC(ps2_keyboard_controller_device::p2_w)); m_mcu->t0_in_cb().set([this] () { return kbd_clk_r(); }); m_mcu->t1_in_cb().set([this] () { return aux_clk_r(); }); }
static void i8042_initfn(Object *obj) { ISAKBDState *isa_s = I8042(obj); KBDState *s = &isa_s->kbd; memory_region_init_io(isa_s->io + 0, obj, &i8042_data_ops, s, "i8042-data", 1); memory_region_init_io(isa_s->io + 1, obj, &i8042_cmd_ops, s, "i8042-cmd", 1); qdev_init_gpio_out_named(DEVICE(obj), &s->a20_out, I8042_A20_LINE, 1); }
static void i8042_realizefn(DeviceState *dev, Error **errp) { ISADevice *isadev = ISA_DEVICE(dev); ISAKBDState *isa_s = I8042(dev); KBDState *s = &isa_s->kbd; isa_init_irq(isadev, &s->irq_kbd, 1); isa_init_irq(isadev, &s->irq_mouse, 12); isa_register_ioport(isadev, isa_s->io + 0, 0x60); isa_register_ioport(isadev, isa_s->io + 1, 0x64); s->kbd = ps2_kbd_init(kbd_update_kbd_irq, s); s->mouse = ps2_mouse_init(kbd_update_aux_irq, s); qemu_register_reset(kbd_reset, s); }