X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=IntelFrameworkModulePkg%2FCsm%2FBiosThunk%2FKeyboardDxe%2FBiosKeyboard.h;fp=IntelFrameworkModulePkg%2FCsm%2FBiosThunk%2FKeyboardDxe%2FBiosKeyboard.h;h=0000000000000000000000000000000000000000;hp=3c7abc22ec5f55d323fd6882af33339996a8f41d;hb=aa7fc1c11c3d57d82842dbede50d064639671a98;hpb=4286eb22f4aec33b90574b998a31f8bd34dd4f47 diff --git a/IntelFrameworkModulePkg/Csm/BiosThunk/KeyboardDxe/BiosKeyboard.h b/IntelFrameworkModulePkg/Csm/BiosThunk/KeyboardDxe/BiosKeyboard.h deleted file mode 100644 index 3c7abc22ec..0000000000 --- a/IntelFrameworkModulePkg/Csm/BiosThunk/KeyboardDxe/BiosKeyboard.h +++ /dev/null @@ -1,758 +0,0 @@ -/** @file - -Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
- -SPDX-License-Identifier: BSD-2-Clause-Patent - -**/ - -#ifndef _BIOS_KEYBOARD_H_ -#define _BIOS_KEYBOARD_H_ - - -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// -// Driver Binding Externs -// -extern EFI_DRIVER_BINDING_PROTOCOL gBiosKeyboardDriverBinding; -extern EFI_COMPONENT_NAME_PROTOCOL gBiosKeyboardComponentName; -extern EFI_COMPONENT_NAME2_PROTOCOL gBiosKeyboardComponentName2; - - -#include - -// -// BISO Keyboard Defines -// -#define CHAR_SCANCODE 0xe0 -#define CHAR_ESC 0x1b - -#define KEYBOARD_8042_DATA_REGISTER 0x60 -#define KEYBOARD_8042_STATUS_REGISTER 0x64 -#define KEYBOARD_8042_COMMAND_REGISTER 0x64 - -#define KEYBOARD_TIMEOUT 65536 // 0.07s -#define KEYBOARD_WAITFORVALUE_TIMEOUT 1000000 // 1s -#define KEYBOARD_BAT_TIMEOUT 4000000 // 4s -#define KEYBOARD_TIMER_INTERVAL 200000 // 0.02s -// KEYBOARD COMMAND BYTE -- read by writing command KBC_CMDREG_VIA64_CMDBYTE_R to 64H, then read from 60H -// write by wrting command KBC_CMDREG_VIA64_CMDBYTE_W to 64H, then write to 60H -// 7: Reserved -// 6: PC/XT translation mode convert -// 5: Disable Auxiliary device interface -// 4: Disable keyboard interface -// 3: Reserved -// 2: System Flag: selftest successful -// 1: Enable Auxiliary device interrupt -// 0: Enable Keyboard interrupt ) -// -#define KB_CMMBYTE_KSCAN2UNI_COV (0x1 << 6) -#define KB_CMMBYTE_DISABLE_AUX (0x1 << 5) -#define KB_CMMBYTE_DISABLE_KB (0x1 << 4) -#define KB_CMMBYTE_SLFTEST_SUCC (0x1 << 2) -#define KB_CMMBYTE_ENABLE_AUXINT (0x1 << 1) -#define KB_CMMBYTE_ENABLE_KBINT (0x1 << 0) - -// -// KEYBOARD CONTROLLER STATUS REGISTER - read from 64h -// 7: Parity error -// 6: General time out -// 5: Output buffer holds data for AUX -// 4: Keyboard is not locked -// 3: Command written via 64h / Data written via 60h -// 2: KBC self-test successful / Power-on reset -// 1: Input buffer holds CPU data / empty -// 0: Output buffer holds keyboard data / empty -// -#define KBC_STSREG_VIA64_PARE (0x1 << 7) -#define KBC_STSREG_VIA64_TIM (0x1 << 6) -#define KBC_STSREG_VIA64_AUXB (0x1 << 5) -#define KBC_STSREG_VIA64_KEYL (0x1 << 4) -#define KBC_STSREG_VIA64_C_D (0x1 << 3) -#define KBC_STSREG_VIA64_SYSF (0x1 << 2) -#define KBC_STSREG_VIA64_INPB (0x1 << 1) -#define KBC_STSREG_VIA64_OUTB (0x1 << 0) - -// -// COMMANDs of KEYBOARD CONTROLLER COMMAND REGISTER - write to 64h -// -#define KBC_CMDREG_VIA64_CMDBYTE_R 0x20 -#define KBC_CMDREG_VIA64_CMDBYTE_W 0x60 -#define KBC_CMDREG_VIA64_AUX_DISABLE 0xA7 -#define KBC_CMDREG_VIA64_AUX_ENABLE 0xA8 -#define KBC_CMDREG_VIA64_KBC_SLFTEST 0xAA -#define KBC_CMDREG_VIA64_KB_CKECK 0xAB -#define KBC_CMDREG_VIA64_KB_DISABLE 0xAD -#define KBC_CMDREG_VIA64_KB_ENABLE 0xAE -#define KBC_CMDREG_VIA64_INTP_LOW_R 0xC0 -#define KBC_CMDREG_VIA64_INTP_HIGH_R 0xC2 -#define KBC_CMDREG_VIA64_OUTP_R 0xD0 -#define KBC_CMDREG_VIA64_OUTP_W 0xD1 -#define KBC_CMDREG_VIA64_OUTB_KB_W 0xD2 -#define KBC_CMDREG_VIA64_OUTB_AUX_W 0xD3 -#define KBC_CMDREG_VIA64_AUX_W 0xD4 - -// -// echos of KEYBOARD CONTROLLER COMMAND - read from 60h -// -#define KBC_CMDECHO_KBCSLFTEST_OK 0x55 -#define KBC_CMDECHO_KBCHECK_OK 0x00 -#define KBC_CMDECHO_ACK 0xFA -#define KBC_CMDECHO_BATTEST_OK 0xAA -#define KBC_CMDECHO_BATTEST_FAILE 0xFC - -// -// OUTPUT PORT COMMANDs - write port by writing KBC_CMDREG_VIA64_OUTP_W via 64H, then write the command to 60H -// drive data and clock of KB to high for at least 500us for BAT needs -// -#define KBC_OUTPORT_DCHIGH_BAT 0xC0 -// -// scan code set type -// -#define KBC_INPBUF_VIA60_SCODESET1 0x01 -#define KBC_INPBUF_VIA60_SCODESET2 0x02 -#define KBC_INPBUF_VIA60_SCODESET3 0x03 - -// -// COMMANDs written to INPUT BUFFER - write to 60h -// -#define KBC_INPBUF_VIA60_KBECHO 0xEE -#define KBC_INPBUF_VIA60_KBSCODE 0xF0 -#define KBC_INPBUF_VIA60_KBTYPE 0xF2 -#define KBC_INPBUF_VIA60_KBDELAY 0xF3 -#define KBC_INPBUF_VIA60_KBEN 0xF4 -#define KBC_INPBUF_VIA60_KBSTDDIS 0xF5 -#define KBC_INPBUF_VIA60_KBSTDEN 0xF6 -#define KBC_INPBUF_VIA60_KBRESEND 0xFE -#define KBC_INPBUF_VIA60_KBRESET 0xFF - -// -// 0040h:0017h - KEYBOARD - STATUS FLAGS 1 -// 7 INSert active -// 6 Caps Lock active -// 5 Num Lock active -// 4 Scroll Lock active -// 3 either Alt pressed -// 2 either Ctrl pressed -// 1 Left Shift pressed -// 0 Right Shift pressed -// -// 0040h:0018h - KEYBOARD - STATUS FLAGS 2 -// 7: insert key is depressed -// 6: caps-lock key is depressed (does not work well) -// 5: num-lock key is depressed (does not work well) -// 4: scroll lock key is depressed (does not work well) -// 3: suspend key has been toggled (does not work well) -// 2: system key is pressed and held (does not work well) -// 1: left ALT key is pressed -// 0: left CTRL key is pressed -// -#define KB_INSERT_BIT (0x1 << 7) -#define KB_CAPS_LOCK_BIT (0x1 << 6) -#define KB_NUM_LOCK_BIT (0x1 << 5) -#define KB_SCROLL_LOCK_BIT (0x1 << 4) -#define KB_ALT_PRESSED (0x1 << 3) -#define KB_CTRL_PRESSED (0x1 << 2) -#define KB_LEFT_SHIFT_PRESSED (0x1 << 1) -#define KB_RIGHT_SHIFT_PRESSED (0x1 << 0) - -#define KB_SUSPEND_PRESSED (0x1 << 3) -#define KB_SYSREQ_PRESSED (0x1 << 2) -#define KB_LEFT_ALT_PRESSED (0x1 << 1) -#define KB_LEFT_CTRL_PRESSED (0x1 << 0) - -// -// BIOS Keyboard Device Structure -// -#define BIOS_KEYBOARD_DEV_SIGNATURE SIGNATURE_32 ('B', 'K', 'B', 'D') -#define BIOS_KEYBOARD_CONSOLE_IN_EX_NOTIFY_SIGNATURE SIGNATURE_32 ('c', 'b', 'k', 'h') - -typedef struct _BIOS_KEYBOARD_CONSOLE_IN_EX_NOTIFY { - UINTN Signature; - EFI_KEY_DATA KeyData; - EFI_KEY_NOTIFY_FUNCTION KeyNotificationFn; - LIST_ENTRY NotifyEntry; -} BIOS_KEYBOARD_CONSOLE_IN_EX_NOTIFY; - -#define QUEUE_MAX_COUNT 32 -typedef struct { - UINTN Front; - UINTN Rear; - EFI_KEY_DATA Buffer[QUEUE_MAX_COUNT]; -} SIMPLE_QUEUE; - -typedef struct { - UINTN Signature; - EFI_HANDLE Handle; - EFI_LEGACY_BIOS_PROTOCOL *LegacyBios; - EFI_ISA_IO_PROTOCOL *IsaIo; - EFI_SIMPLE_TEXT_INPUT_PROTOCOL SimpleTextIn; - EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL SimpleTextInputEx; - UINT16 DataRegisterAddress; - UINT16 StatusRegisterAddress; - UINT16 CommandRegisterAddress; - BOOLEAN ExtendedKeyboard; - - EFI_KEY_STATE KeyState; - // - // Buffer storing EFI_KEY_DATA - // - SIMPLE_QUEUE Queue; - SIMPLE_QUEUE QueueForNotify; - - // - // Notification Function List - // - LIST_ENTRY NotifyList; - EFI_EVENT KeyNotifyProcessEvent; - EFI_EVENT TimerEvent; - -} BIOS_KEYBOARD_DEV; - -#define BIOS_KEYBOARD_DEV_FROM_THIS(a) CR (a, BIOS_KEYBOARD_DEV, SimpleTextIn, BIOS_KEYBOARD_DEV_SIGNATURE) -#define TEXT_INPUT_EX_BIOS_KEYBOARD_DEV_FROM_THIS(a) \ - CR (a, \ - BIOS_KEYBOARD_DEV, \ - SimpleTextInputEx, \ - BIOS_KEYBOARD_DEV_SIGNATURE \ - ) - -// -// Global Variables -// -extern EFI_DRIVER_BINDING_PROTOCOL gBiosKeyboardDriverBinding; - -// -// Driver Binding Protocol functions -// - -/** - Check whether the driver supports this device. - - @param This The Udriver binding protocol. - @param Controller The controller handle to check. - @param RemainingDevicePath The remaining device path. - - @retval EFI_SUCCESS The driver supports this controller. - @retval other This device isn't supported. - -**/ -EFI_STATUS -EFIAPI -BiosKeyboardDriverBindingSupported ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath - ); - -/** - Starts the device with this driver. - - @param This The driver binding instance. - @param Controller Handle of device to bind driver to. - @param RemainingDevicePath Optional parameter use to pick a specific child - device to start. - - @retval EFI_SUCCESS The controller is controlled by the driver. - @retval Other This controller cannot be started. - -**/ -EFI_STATUS -EFIAPI -BiosKeyboardDriverBindingStart ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath - ); - -/** - Stop the device handled by this driver. - - @param This The driver binding protocol. - @param Controller The controller to release. - @param NumberOfChildren The number of handles in ChildHandleBuffer. - @param ChildHandleBuffer The array of child handle. - - @retval EFI_SUCCESS The device was stopped. - @retval EFI_DEVICE_ERROR The device could not be stopped due to a device error. - @retval Others Fail to uninstall protocols attached on the device. - -**/ -EFI_STATUS -EFIAPI -BiosKeyboardDriverBindingStop ( - IN EFI_DRIVER_BINDING_PROTOCOL *This, - IN EFI_HANDLE Controller, - IN UINTN NumberOfChildren, - IN EFI_HANDLE *ChildHandleBuffer - ); - -/** - Retrieves a Unicode string that is the user readable name of the driver. - - This function retrieves the user readable name of a driver in the form of a - Unicode string. If the driver specified by This has a user readable name in - the language specified by Language, then a pointer to the driver name is - returned in DriverName, and EFI_SUCCESS is returned. If the driver specified - by This does not support the language specified by Language, - then EFI_UNSUPPORTED is returned. - - @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or - EFI_COMPONENT_NAME_PROTOCOL instance. - - @param Language[in] A pointer to a Null-terminated ASCII string - array indicating the language. This is the - language of the driver name that the caller is - requesting, and it must match one of the - languages specified in SupportedLanguages. The - number of languages supported by a driver is up - to the driver writer. Language is specified - in RFC 4646 or ISO 639-2 language code format. - - @param DriverName[out] A pointer to the Unicode string to return. - This Unicode string is the name of the - driver specified by This in the language - specified by Language. - - @retval EFI_SUCCESS The Unicode string for the Driver specified by - This and the language specified by Language was - returned in DriverName. - - @retval EFI_INVALID_PARAMETER Language is NULL. - - @retval EFI_INVALID_PARAMETER DriverName is NULL. - - @retval EFI_UNSUPPORTED The driver specified by This does not support - the language specified by Language. - -**/ -EFI_STATUS -EFIAPI -BiosKeyboardComponentNameGetDriverName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN CHAR8 *Language, - OUT CHAR16 **DriverName - ); - - -/** - Retrieves a Unicode string that is the user readable name of the controller - that is being managed by a driver. - - This function retrieves the user readable name of the controller specified by - ControllerHandle and ChildHandle in the form of a Unicode string. If the - driver specified by This has a user readable name in the language specified by - Language, then a pointer to the controller name is returned in ControllerName, - and EFI_SUCCESS is returned. If the driver specified by This is not currently - managing the controller specified by ControllerHandle and ChildHandle, - then EFI_UNSUPPORTED is returned. If the driver specified by This does not - support the language specified by Language, then EFI_UNSUPPORTED is returned. - - @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or - EFI_COMPONENT_NAME_PROTOCOL instance. - - @param ControllerHandle[in] The handle of a controller that the driver - specified by This is managing. This handle - specifies the controller whose name is to be - returned. - - @param ChildHandle[in] The handle of the child controller to retrieve - the name of. This is an optional parameter that - may be NULL. It will be NULL for device - drivers. It will also be NULL for a bus drivers - that wish to retrieve the name of the bus - controller. It will not be NULL for a bus - driver that wishes to retrieve the name of a - child controller. - - @param Language[in] A pointer to a Null-terminated ASCII string - array indicating the language. This is the - language of the driver name that the caller is - requesting, and it must match one of the - languages specified in SupportedLanguages. The - number of languages supported by a driver is up - to the driver writer. Language is specified in - RFC 4646 or ISO 639-2 language code format. - - @param ControllerName[out] A pointer to the Unicode string to return. - This Unicode string is the name of the - controller specified by ControllerHandle and - ChildHandle in the language specified by - Language from the point of view of the driver - specified by This. - - @retval EFI_SUCCESS The Unicode string for the user readable name in - the language specified by Language for the - driver specified by This was returned in - DriverName. - - @retval EFI_INVALID_PARAMETER ControllerHandle is NULL. - - @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid - EFI_HANDLE. - - @retval EFI_INVALID_PARAMETER Language is NULL. - - @retval EFI_INVALID_PARAMETER ControllerName is NULL. - - @retval EFI_UNSUPPORTED The driver specified by This is not currently - managing the controller specified by - ControllerHandle and ChildHandle. - - @retval EFI_UNSUPPORTED The driver specified by This does not support - the language specified by Language. - -**/ -EFI_STATUS -EFIAPI -BiosKeyboardComponentNameGetControllerName ( - IN EFI_COMPONENT_NAME_PROTOCOL *This, - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE ChildHandle OPTIONAL, - IN CHAR8 *Language, - OUT CHAR16 **ControllerName - ); - - -// -// Simple Text Input Protocol functions -// -/** - Reset the Keyboard and do BAT test for it, if (ExtendedVerification == TRUE) then do some extra keyboard validations. - - @param This Pointer of simple text Protocol. - @param ExtendedVerification Whether perform the extra validation of keyboard. True: perform; FALSE: skip. - - @retval EFI_SUCCESS The command byte is written successfully. - @retval EFI_DEVICE_ERROR Errors occurred during resetting keyboard. - -**/ -EFI_STATUS -EFIAPI -BiosKeyboardReset ( - IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This, - IN BOOLEAN ExtendedVerification - ); - -/** - Read out the scan code of the key that has just been stroked. - - @param This Pointer of simple text Protocol. - @param Key Pointer for store the key that read out. - - @retval EFI_SUCCESS The key is read out successfully. - @retval other The key reading failed. - -**/ -EFI_STATUS -EFIAPI -BiosKeyboardReadKeyStroke ( - IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This, - OUT EFI_INPUT_KEY *Key - ); - -// -// Private worker functions -// -/** - Waiting on the keyboard event, if there's any key pressed by the user, signal the event - - @param Event The event that be siganlled when any key has been stroked. - @param Context Pointer of the protocol EFI_SIMPLE_TEXT_INPUT_PROTOCOL. - -**/ -VOID -EFIAPI -BiosKeyboardWaitForKey ( - IN EFI_EVENT Event, - IN VOID *Context - ); - -/** - Check key buffer to get the key stroke status. - - @param This Pointer of the protocol EFI_SIMPLE_TEXT_IN_PROTOCOL. - - @retval EFI_SUCCESS A key is being pressed now. - @retval Other No key is now pressed. - -**/ -EFI_STATUS -EFIAPI -BiosKeyboardCheckForKey ( - IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This - ); - -/** - Convert unicode combined with scan code of key to the counterpart of EFIScancode of it. - - @param KeyChar Unicode of key. - @param ScanCode Scan code of key. - - @return The value of EFI Scancode for the key. - @retval SCAN_NULL No corresponding value in the EFI convert table is found for the key. - -**/ -UINT16 -ConvertToEFIScanCode ( - IN CHAR16 KeyChar, - IN UINT16 ScanCode - ); - -/** - Check whether there is Ps/2 Keyboard device in system by 0xF4 Keyboard Command - If Keyboard receives 0xF4, it will respond with 'ACK'. If it doesn't respond, the device - should not be in system. - - @param BiosKeyboardPrivate Keyboard Private Data Struture - - @retval TRUE Keyboard in System. - @retval FALSE Keyboard not in System. - -**/ -BOOLEAN -CheckKeyboardConnect ( - IN BIOS_KEYBOARD_DEV *BiosKeyboardPrivate - ); - -/** - Timer event handler: read a series of key stroke from 8042 - and put them into memory key buffer. - It is registered as running under TPL_NOTIFY - - @param Event The timer event - @param Context A BIOS_KEYBOARD_DEV pointer - -**/ -VOID -EFIAPI -BiosKeyboardTimerHandler ( - IN EFI_EVENT Event, - IN VOID *Context - ); - -/** - Process key notify. - - @param Event Indicates the event that invoke this function. - @param Context Indicates the calling context. -**/ -VOID -EFIAPI -KeyNotifyProcessHandler ( - IN EFI_EVENT Event, - IN VOID *Context - ); - -/** - Reset the input device and optionaly run diagnostics - - @param This Protocol instance pointer. - @param ExtendedVerification Driver may perform diagnostics on reset. - - @retval EFI_SUCCESS The device was reset. - @retval EFI_DEVICE_ERROR The device is not functioning properly and could - not be reset. - -**/ -EFI_STATUS -EFIAPI -BiosKeyboardResetEx ( - IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, - IN BOOLEAN ExtendedVerification - ); - -/** - Reads the next keystroke from the input device. The WaitForKey Event can - be used to test for existance of a keystroke via WaitForEvent () call. - - @param This Protocol instance pointer. - @param KeyData A pointer to a buffer that is filled in with the keystroke - state data for the key that was pressed. - - @retval EFI_SUCCESS The keystroke information was returned. - @retval EFI_NOT_READY There was no keystroke data availiable. - @retval EFI_DEVICE_ERROR The keystroke information was not returned due to - hardware errors. - @retval EFI_INVALID_PARAMETER KeyData is NULL. - -**/ -EFI_STATUS -EFIAPI -BiosKeyboardReadKeyStrokeEx ( - IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, - OUT EFI_KEY_DATA *KeyData - ); - -/** - Set certain state for the input device. - - @param This Protocol instance pointer. - @param KeyToggleState A pointer to the EFI_KEY_TOGGLE_STATE to set the - state for the input device. - - @retval EFI_SUCCESS The device state was set successfully. - @retval EFI_DEVICE_ERROR The device is not functioning correctly and could - not have the setting adjusted. - @retval EFI_UNSUPPORTED The device does not have the ability to set its state. - @retval EFI_INVALID_PARAMETER KeyToggleState is NULL. - -**/ -EFI_STATUS -EFIAPI -BiosKeyboardSetState ( - IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, - IN EFI_KEY_TOGGLE_STATE *KeyToggleState - ); - -/** - Register a notification function for a particular keystroke for the input device. - - @param This Protocol instance pointer. - @param KeyData A pointer to a buffer that is filled in with the keystroke - information data for the key that was pressed. If KeyData.Key, - KeyData.KeyState.KeyToggleState and KeyData.KeyState.KeyShiftState - are 0, then any incomplete keystroke will trigger a notification of - the KeyNotificationFunction. - @param KeyNotificationFunction Points to the function to be called when the key - sequence is typed specified by KeyData. This notification function - should be called at <=TPL_CALLBACK. - @param NotifyHandle Points to the unique handle assigned to the registered notification. - - - @retval EFI_SUCCESS The notification function was registered successfully. - @retval EFI_OUT_OF_RESOURCES Unable to allocate resources for necesssary data structures. - @retval EFI_INVALID_PARAMETER KeyData or NotifyHandle is NULL. - -**/ -EFI_STATUS -EFIAPI -BiosKeyboardRegisterKeyNotify ( - IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, - IN EFI_KEY_DATA *KeyData, - IN EFI_KEY_NOTIFY_FUNCTION KeyNotificationFunction, - OUT VOID **NotifyHandle - ); - -/** - Remove a registered notification function from a particular keystroke. - - @param This Protocol instance pointer. - @param NotificationHandle The handle of the notification function being unregistered. - - @retval EFI_SUCCESS The notification function was unregistered successfully. - @retval EFI_INVALID_PARAMETER The NotificationHandle is invalid. - -**/ -EFI_STATUS -EFIAPI -BiosKeyboardUnregisterKeyNotify ( - IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, - IN VOID *NotificationHandle - ); - -/** - Wait for a specific value to be presented in - Data register of Keyboard Controller by keyboard and then read it, - used in keyboard commands ack - - @param BiosKeyboardPrivate Keyboard instance pointer. - @param Value The value to be waited for - @param WaitForValueTimeOut The limit of microseconds for timeout - - @retval EFI_SUCCESS The command byte is written successfully. - @retval EFI_TIMEOUT Timeout occurred during writing. - -**/ -EFI_STATUS -KeyboardWaitForValue ( - IN BIOS_KEYBOARD_DEV *BiosKeyboardPrivate, - IN UINT8 Value, - IN UINTN WaitForValueTimeOut - ); - -/** - Write data byte to input buffer or input/output ports of Keyboard Controller with delay and waiting for buffer-empty state. - - @param BiosKeyboardPrivate Keyboard instance pointer. - @param Data Data byte to write. - - @retval EFI_SUCCESS The data byte is written successfully. - @retval EFI_TIMEOUT Timeout occurred during writing. - -**/ -EFI_STATUS -KeyboardWrite ( - IN BIOS_KEYBOARD_DEV *BiosKeyboardPrivate, - IN UINT8 Data - ); - -/** - Free keyboard notify list. - - @param ListHead The list head - - @retval EFI_SUCCESS Free the notify list successfully - @retval EFI_INVALID_PARAMETER ListHead is invalid. - -**/ -EFI_STATUS -BiosKeyboardFreeNotifyList ( - IN OUT LIST_ENTRY *ListHead - ); - -/** - Check if key is registered. - - @param RegsiteredData A pointer to a buffer that is filled in with the keystroke - state data for the key that was registered. - @param InputData A pointer to a buffer that is filled in with the keystroke - state data for the key that was pressed. - - @retval TRUE Key be pressed matches a registered key. - @retval FLASE Match failed. - -**/ -BOOLEAN -IsKeyRegistered ( - IN EFI_KEY_DATA *RegsiteredData, - IN EFI_KEY_DATA *InputData - ); - -/** - Waiting on the keyboard event, if there's any key pressed by the user, signal the event - - @param Event The event that be siganlled when any key has been stroked. - @param Context Pointer of the protocol EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL. - -**/ -VOID -EFIAPI -BiosKeyboardWaitForKeyEx ( - IN EFI_EVENT Event, - IN VOID *Context - ); - -#endif -