From 7190a776aea3706291ca62db4535778bdaf0d5ba Mon Sep 17 00:00:00 2001 From: OBattler Date: Mon, 9 Aug 2021 07:52:57 +0200 Subject: [PATCH] Some AT KBC fixes, fixes the QDI Excellent II. --- src/device/keyboard_at.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/device/keyboard_at.c b/src/device/keyboard_at.c index 581f55f30..1c44880a3 100644 --- a/src/device/keyboard_at.c +++ b/src/device/keyboard_at.c @@ -1118,12 +1118,15 @@ write_cmd(atkbd_t *dev, uint8_t val) if ((kbc_ven == KBC_VEN_AMI) || ((dev->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_NOREF)) { keyboard_mode &= ~CCB_PCMODE; - /* Update the output port to mirror the KBD DIS and AUX DIS bits, if active. */ - write_output(dev, dev->output_port); kbd_log("ATkbc: mouse interrupt is now %s\n", (val & 0x02) ? "enabled" : "disabled"); } + if ((kbc_ven == KBC_VEN_AMI) || ((dev->flags & KBC_TYPE_MASK) < KBC_TYPE_PS2_NOREF)) { + /* Update the output port to mirror the KBD DIS and AUX DIS bits, if active. */ + write_output(dev, dev->output_port); + } + kbd_log("Command byte now: %02X (%02X)\n", dev->mem[0], val); dev->status = (dev->status & ~STAT_SYSFLAG) | (val & STAT_SYSFLAG); @@ -1740,7 +1743,7 @@ kbd_write(uint16_t port, uint8_t val, void *priv) case 0xd2: /* write to keyboard output buffer */ kbd_log("ATkbc: write to keyboard output buffer\n"); - add_data_kbd_direct(dev, val); + add_to_kbc_queue_front(dev, val, 0, 0x00); break; case 0xd3: /* write to mouse output buffer */