Gabe Black has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/55807 )

Change subject: dev: Implement PS/2 keyboard echo and set scan code commands.
......................................................................

dev: Implement PS/2 keyboard echo and set scan code commands.

Don't actually let anyone set a scan code set other than 2, since that's
all our converter knows about. It's probably all anyone will want
anyway.

Change-Id: Ief2f35448adc80e30e8fdf13ef9d64d6f19447eb
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/55807
Reviewed-by: Matthew Poremba <matthew.pore...@amd.com>
Maintainer: Gabe Black <gabe.bl...@gmail.com>
Tested-by: kokoro <noreply+kok...@google.com>
---
M src/dev/ps2/keyboard.cc
1 file changed, 36 insertions(+), 2 deletions(-)

Approvals:
  Matthew Poremba: Looks good to me, approved
  Gabe Black: Looks good to me, approved
  kokoro: Regressions pass




diff --git a/src/dev/ps2/keyboard.cc b/src/dev/ps2/keyboard.cc
index fb63d48..e3b13ac 100644
--- a/src/dev/ps2/keyboard.cc
+++ b/src/dev/ps2/keyboard.cc
@@ -128,9 +128,26 @@
             return true;
         }
       case keyboard::DiagnosticEcho:
-        panic("Keyboard diagnostic echo unimplemented.\n");
+        send(keyboard::DiagnosticEcho);
+        return true;
       case keyboard::AlternateScanCodes:
-        panic("Accessing alternate scan codes unimplemented.\n");
+        if (data.size() == 1) {
+            DPRINTF(PS2, "Got scan code set command.\n");
+            sendAck();
+            return false;
+        } else {
+            sendAck();
+            uint8_t scan_code = data[1];
+            if (scan_code == 0) {
+ DPRINTF(PS2, "Sending hard coded current scan code set 2.\n");
+                send(0x2);
+            } else {
+                DPRINTF(PS2, "Setting scan code set to %d.\n", scan_code);
+                panic_if(scan_code != 0x2,
+                        "PS/2 scan code set %d not supported.", scan_code);
+            }
+        }
+        return true;
       case keyboard::TypematicInfo:
         if (data.size() == 1) {
             DPRINTF(PS2, "Setting typematic info.\n");

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/55807
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Ief2f35448adc80e30e8fdf13ef9d64d6f19447eb
Gerrit-Change-Number: 55807
Gerrit-PatchSet: 13
Gerrit-Owner: Gabe Black <gabe.bl...@gmail.com>
Gerrit-Reviewer: Bradford Beckmann <bradford.beckm...@gmail.com>
Gerrit-Reviewer: Gabe Black <gabe.bl...@gmail.com>
Gerrit-Reviewer: Matt Sinclair <mattdsincl...@gmail.com>
Gerrit-Reviewer: Matthew Poremba <matthew.pore...@amd.com>
Gerrit-Reviewer: kokoro <noreply+kok...@google.com>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to