A small change in device/keyboard_at.c so the keyboard no longer loses track of what command a parameter is intended for when interrupted by another command.

This commit is contained in:
OBattler
2023-04-22 08:38:15 +02:00
parent 5d9de974ee
commit 8d6181de50

View File

@@ -788,10 +788,9 @@ keyboard_at_write(void *priv)
dev->state = DEV_STATE_MAIN_WANT_IN; dev->state = DEV_STATE_MAIN_WANT_IN;
} }
dev->command = val; switch (val) {
switch (dev->command) {
case 0xed: /* set/reset LEDs */ case 0xed: /* set/reset LEDs */
dev->command = val;
keyboard_at_log("%s: set/reset LEDs\n", dev->name); keyboard_at_log("%s: set/reset LEDs\n", dev->name);
dev->flags |= FLAG_CTRLDAT; dev->flags |= FLAG_CTRLDAT;
kbc_at_dev_queue_add(dev, 0xfa, 0); /* ACK for command byte */ kbc_at_dev_queue_add(dev, 0xfa, 0); /* ACK for command byte */
@@ -811,6 +810,7 @@ keyboard_at_write(void *priv)
case 0xf0: /* get/set scan code set */ case 0xf0: /* get/set scan code set */
if (dev->type & FLAG_PS2) { if (dev->type & FLAG_PS2) {
dev->command = val;
keyboard_at_log("%s: scan code set\n", dev->name); keyboard_at_log("%s: scan code set\n", dev->name);
dev->flags |= FLAG_CTRLDAT; dev->flags |= FLAG_CTRLDAT;
kbc_at_dev_queue_add(dev, 0xfa, 0); /* ACK for command byte */ kbc_at_dev_queue_add(dev, 0xfa, 0); /* ACK for command byte */
@@ -833,6 +833,7 @@ keyboard_at_write(void *priv)
break; break;
case 0xf3: /* set command mode */ case 0xf3: /* set command mode */
dev->command = val;
keyboard_at_log("%s: set typematic rate/delay\n", dev->name); keyboard_at_log("%s: set typematic rate/delay\n", dev->name);
dev->flags |= FLAG_CTRLDAT; dev->flags |= FLAG_CTRLDAT;
kbc_at_dev_queue_add(dev, 0xfa, 0); /* ACK for command byte */ kbc_at_dev_queue_add(dev, 0xfa, 0); /* ACK for command byte */