Gabe Black has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/55806 )

Change subject: dev,arch-x86: Implement some self test 8042 commands.
......................................................................

dev,arch-x86: Implement some self test 8042 commands.

The self test in particular is used by bare metal software to ensure
that the keyboard controller is reset and ready to use.

Change-Id: I53c2a80c181b9d19617c75657637e06951c94433
---
M src/dev/x86/i8042.cc
1 file changed, 30 insertions(+), 3 deletions(-)



diff --git a/src/dev/x86/i8042.cc b/src/dev/x86/i8042.cc
index 268d090..9fab694 100644
--- a/src/dev/x86/i8042.cc
+++ b/src/dev/x86/i8042.cc
@@ -226,11 +226,26 @@
             commandByte.disableMouse = 0;
             break;
           case TestMouse:
-            panic("i8042 \"Test mouse\" command not implemented.\n");
+            // The response to this is from the 8042, not the mouse.
+            // Hard code no errors detected.
+            writeData(0x00);
+            break;
           case SelfTest:
-            panic("i8042 \"Self test\" command not implemented.\n");
+ // Exactly what this does is essentially undocumented, but this:
+            // https://www.os2museum.com/wp/
+            //          ibm-pcat-8042-keyboard-controller-commands/
+            // says that this should essentially reset some values.
+            commandByte.convertScanCodes = 1;
+            commandByte.disableMouse = 1;
+            commandByte.disableKeyboard = 1;
+            commandByte.passedSelfTest = 1;
+            statusReg.passedSelfTest = 1;
+            writeData(0x55); // Self test passed.
+            break;
           case InterfaceTest:
-            panic("i8042 \"Interface test\" command not implemented.\n");
+            // Hard code no errors detected.
+            writeData(0x00);
+            break;
           case DiagnosticDump:
             panic("i8042 \"Diagnostic dump\" command not implemented.\n");
           case DisableKeyboard:

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/55806
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: I53c2a80c181b9d19617c75657637e06951c94433
Gerrit-Change-Number: 55806
Gerrit-PatchSet: 1
Gerrit-Owner: Gabe Black <gabe.bl...@gmail.com>
Gerrit-MessageType: newchange
_______________________________________________
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