/** Issue self test command via IsaIo interface. @return EFI_SUCCESS Success to do keyboard self testing. @return others Fail to do keyboard self testing. **/ EFI_STATUS KbcSelfTest ( VOID ) { EFI_STATUS Status; UINT8 Data; // // Keyboard controller self test // Status = Out8042Command (SELF_TEST); if (EFI_ERROR (Status)) { return Status; } // // Read return code // Status = In8042Data (&Data); if (EFI_ERROR (Status)) { return Status; } if (Data != 0x55) { return EFI_DEVICE_ERROR; } // // Set system flag // Status = Out8042Command (READ_CMD_BYTE); if (EFI_ERROR (Status)) { return Status; } Status = In8042Data (&Data); if (EFI_ERROR (Status)) { return Status; } Status = Out8042Command (WRITE_CMD_BYTE); if (EFI_ERROR (Status)) { return Status; } Data |= CMD_SYS_FLAG; Status = Out8042Data (Data); if (EFI_ERROR (Status)) { return Status; } return EFI_SUCCESS; }
/** Issue command to check keyboard status. @param KeyboardEnable return whether keyboard is enable. @return Status of command issuing. **/ EFI_STATUS CheckKbStatus ( OUT BOOLEAN *KeyboardEnable ) { EFI_STATUS Status; UINT8 Data; // // Send command to read KBC command byte // Status = Out8042Command (READ_CMD_BYTE); if (EFI_ERROR (Status)) { return Status; } Status = In8042Data (&Data); if (EFI_ERROR (Status)) { return Status; } // // Check keyboard enable or not // if ((Data & CMD_KB_STS) == CMD_KB_DIS) { *KeyboardEnable = FALSE; } else { *KeyboardEnable = TRUE; } return EFI_SUCCESS; }
/** Issue command to enable keyboard AUX functionality. @return Status of command issuing. **/ EFI_STATUS KbcEnableAux ( VOID ) { // // Send 8042 enable mouse command // return Out8042Command (ENABLE_AUX); }
/** Issue command to disable keyboard. @return Status of command issuing. **/ EFI_STATUS KbcDisableKb ( VOID ) { // // Send 8042 disable keyboard command // return Out8042Command (DISABLE_KB); }
/** Issue command to enable keyboard. @param IsaIo Pointer to instance of EFI_ISA_IO_PROTOCOL @return Status of command issuing. **/ EFI_STATUS KbcEnableKb ( VOID ) { // // Send 8042 enable keyboard command // return Out8042Command (ENABLE_KB); }
/** Issue command to disable keyboard AUX functionality. @param IsaIo Pointer to instance of EFI_ISA_IO_PROTOCOL @return Status of command issuing. **/ EFI_STATUS KbcDisableAux ( VOID ) { // // Send 8042 disable mouse command // return Out8042Command (DISABLE_AUX); }
/** Issue command to enable keyboard AUX functionality. @param IsaIo Pointer to instance of EFI_ISA_IO_PROTOCOL @return Status of command issuing. **/ EFI_STATUS KbcEnableAux ( IN EFI_ISA_IO_PROTOCOL *IsaIo ) { // // Send 8042 enable mouse command // return Out8042Command (IsaIo, ENABLE_AUX); }
/** Issue command to disable keyboard. @param IsaIo Pointer to instance of EFI_ISA_IO_PROTOCOL @return Status of command issuing. **/ EFI_STATUS KbcDisableKb ( IN EFI_ISA_IO_PROTOCOL *IsaIo ) { // // Send 8042 disable keyboard command // return Out8042Command (IsaIo, DISABLE_KB); }