Lines Matching +full:ps2 +full:- +full:gpio

4  * Copyright (c) 2006-2007 CodeSourcery.
13 * + Named GPIO input "ps2-input-irq": set to 1 if the downstream PS2 device
21 #include "hw/input/ps2.h"
56 int level = (s->pending && (s->cr & 0x10) != 0) in pl050_update_irq()
57 || (s->cr & 0x08) != 0; in pl050_update_irq()
59 qemu_set_irq(s->irq, level); in pl050_update_irq()
66 s->pending = level; in pl050_set_irq()
76 return pl050_id[(offset - 0xfe0) >> 2]; in pl050_read()
81 return s->cr; in pl050_read()
87 val = s->last; in pl050_read()
96 if (s->pending) { in pl050_read()
103 if (s->pending) { in pl050_read()
104 s->last = ps2_read_data(s->ps2dev); in pl050_read()
106 return s->last; in pl050_read()
108 return s->clk; in pl050_read()
110 return s->pending | 2; in pl050_read()
125 s->cr = value; in pl050_write()
132 if (s->is_mouse) { in pl050_write()
133 ps2_write_mouse(PS2_MOUSE_DEVICE(s->ps2dev), value); in pl050_write()
135 ps2_write_keyboard(PS2_KBD_DEVICE(s->ps2dev), value); in pl050_write()
139 s->clk = value; in pl050_write()
156 qdev_connect_gpio_out(DEVICE(s->ps2dev), PS2_DEVICE_IRQ, in pl050_realize()
157 qdev_get_gpio_in_named(dev, "ps2-input-irq", 0)); in pl050_realize()
166 if (!sysbus_realize(SYS_BUS_DEVICE(&s->kbd), errp)) { in pl050_kbd_realize()
170 ps->ps2dev = PS2_DEVICE(&s->kbd); in pl050_kbd_realize()
171 pdc->parent_realize(dev, errp); in pl050_kbd_realize()
179 ps->is_mouse = false; in pl050_kbd_init()
180 object_initialize_child(obj, "kbd", &s->kbd, TYPE_PS2_KBD_DEVICE); in pl050_kbd_init()
189 if (!sysbus_realize(SYS_BUS_DEVICE(&s->mouse), errp)) { in pl050_mouse_realize()
193 ps->ps2dev = PS2_DEVICE(&s->mouse); in pl050_mouse_realize()
194 pdc->parent_realize(dev, errp); in pl050_mouse_realize()
202 ps->is_mouse = true; in pl050_mouse_init()
203 object_initialize_child(obj, "mouse", &s->mouse, TYPE_PS2_MOUSE_DEVICE); in pl050_mouse_init()
212 &pdc->parent_realize); in pl050_kbd_class_init()
229 &pdc->parent_realize); in pl050_mouse_class_init()
245 memory_region_init_io(&s->iomem, obj, &pl050_ops, s, "pl050", 0x1000); in pl050_init()
246 sysbus_init_mmio(sbd, &s->iomem); in pl050_init()
247 sysbus_init_irq(sbd, &s->irq); in pl050_init()
249 qdev_init_gpio_in_named(DEVICE(obj), pl050_set_irq, "ps2-input-irq", 1); in pl050_init()
256 dc->realize = pl050_realize; in pl050_class_init()
257 dc->vmsd = &vmstate_pl050; in pl050_class_init()