MCPcopy Create free account
hub / github.com/ading2210/linuxpdf / kbd_write_data

Function kbd_write_data

tinyemu/pckbd.c:271–308  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

269}
270
271static void kbd_write_data(void *opaque, uint32_t addr, uint32_t val, int size_log2)
272{
273 KBDState *s = opaque;
274
275#ifdef DEBUG_KBD
276 printf("kbd: write data=0x%02x\n", val);
277#endif
278
279 switch(s->write_cmd) {
280 case 0:
281 ps2_write_keyboard(s->kbd, val);
282 break;
283 case KBD_CCMD_WRITE_MODE:
284 s->mode = val;
285 ps2_keyboard_set_translation(s->kbd, (s->mode & KBD_MODE_KCC) != 0);
286 /* ??? */
287 kbd_update_irq(s);
288 break;
289 case KBD_CCMD_WRITE_OBUF:
290 kbd_queue(s, val, 0);
291 break;
292 case KBD_CCMD_WRITE_AUX_OBUF:
293 kbd_queue(s, val, 1);
294 break;
295 case KBD_CCMD_WRITE_OUTPORT:
296 ioport_set_a20((val >> 1) & 1);
297 if (!(val & 1)) {
298 qemu_system_reset_request();
299 }
300 break;
301 case KBD_CCMD_WRITE_MOUSE:
302 ps2_write_mouse(s->mouse, val);
303 break;
304 default:
305 break;
306 }
307 s->write_cmd = 0;
308}
309
310static void kbd_reset(void *opaque)
311{

Callers

nothing calls this directly

Calls 7

ps2_write_keyboardFunction · 0.85
kbd_update_irqFunction · 0.85
kbd_queueFunction · 0.85
ioport_set_a20Function · 0.85
ps2_write_mouseFunction · 0.85

Tested by

no test coverage detected