diff options
Diffstat (limited to 'Core/EM/PS2CTL/kbc.c')
-rw-r--r-- | Core/EM/PS2CTL/kbc.c | 75 |
1 files changed, 15 insertions, 60 deletions
diff --git a/Core/EM/PS2CTL/kbc.c b/Core/EM/PS2CTL/kbc.c index 19518b6..1712196 100644 --- a/Core/EM/PS2CTL/kbc.c +++ b/Core/EM/PS2CTL/kbc.c @@ -291,35 +291,8 @@ extern UINT8 gKeyboardIrqInstall; extern EFI_LEGACY_8259_PROTOCOL *mLegacy8259; BOOLEAN InsidePS2DataDispatcher = FALSE; //---------------------------------------------------------------------- - -VOID F81866ConfigRegisterWrite(UINT8 Index, UINT8 Data) -{ - IoWrite8(F81866_CONFIG_INDEX, Index); - IoWrite8(F81866_CONFIG_DATA, Data); -} -UINT8 F81866ConfigRegisterRead(UINT8 Index) -{ - UINT8 Data8; - IoWrite8(F81866_CONFIG_INDEX, Index); - Data8 = IoRead8(F81866_CONFIG_DATA); - return Data8; -} -VOID F81866LDNSelect(UINT8 Ldn) -{ - IoWrite8(F81866_CONFIG_INDEX, F81866_LDN_SEL_REGISTER); - IoWrite8(F81866_CONFIG_DATA, Ldn); -} -VOID F81866EnterConfigMode() -{ - IoWrite8(F81866_CONFIG_INDEX, F81866_CONFIG_MODE_ENTER_VALUE); - IoWrite8(F81866_CONFIG_INDEX, F81866_CONFIG_MODE_ENTER_VALUE); -} -VOID F81866ExitConfigMode() -{ - // Exit config mode - IoWrite8(F81866_CONFIG_INDEX, F81866_CONFIG_MODE_EXIT_VALUE); -} + //<AMI_PHDR_START> //---------------------------------------------------------------------- // @@ -459,29 +432,21 @@ VOID AutodetectKbdMousePorts() { UINT8 bData, Index; -// EFI_STATUS Status; -{ - UINT8 Data8 ; - - F81866EnterConfigMode() ; - F81866LDNSelect(0x05) ; - Data8 = F81866ConfigRegisterRead(0xFE) ; - F81866ConfigRegisterWrite(0xFE , Data8 & ~BIT4) ; - F81866ExitConfigMode() ; -} -// Status = IbFreeTimeout(IbFreeMaxTimeoutValue); -// if (EFI_ERROR(Status)) { -// return; -// } -// WriteKeyboardCommand(0x60); // Lock KBD + EFI_STATUS Status; + Status = IbFreeTimeout(IbFreeMaxTimeoutValue); + if (EFI_ERROR(Status)) { + return; + } + WriteKeyboardCommand(0x60); // Lock KBD IoRead8(KBC_DATA_PORT); // Discard any data Write8042CommandByte(0x74); // KBD and Aux device disabled // Check for KBC version IoRead8(KBC_DATA_PORT); // Discard any data -// WriteKeyboardCommand(0xa1); // -// if (!ObFullReadTimeout(&bData, 20, TRUE) && bData == 0x35) { + WriteKeyboardCommand(0xa1); // + if (!ObFullReadTimeout(&bData, 20, TRUE) && bData == 0x35) { + WriteKeyboardCommand(0x60); WriteKeyboardData(4); @@ -498,13 +463,12 @@ VOID AutodetectKbdMousePorts() if (bData == rKeyboardID) goto PortSwap; -// if (bData == KB_ACK_COM) { + if (bData == KB_ACK_COM) { ObFullReadTimeout(&bData, 100, TRUE); // When Mouse is connected to KBD port, control goes to PortSwap here -// if (!bData) goto PortSwap; - if (bData != 0xAB) goto PortSwap; + if (!bData) goto PortSwap; ObFullReadTimeout(&bData, 100, TRUE); -// } + } bData = IoRead8(KBC_CMDSTS_PORT); // When KBD is connected to the KBD port, control returns here if (!(bData & KBC_TIMEOUT_ERR)) return; @@ -524,18 +488,9 @@ VOID AutodetectKbdMousePorts() if (bData & KBC_TIMEOUT_ERR) return; PortSwap: -{ - UINT8 Data8 ; - - F81866EnterConfigMode() ; - F81866LDNSelect(0x05) ; - Data8 = F81866ConfigRegisterRead(0xFE) ; - F81866ConfigRegisterWrite(0xFE , Data8 | BIT4) ; - F81866ExitConfigMode() ; -} -// WriteKeyboardCommand(0xC9); + WriteKeyboardCommand(0xC9); return; -// } + } } |