/** @file
Header file for the Ps2 keyboard controller library.
Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _PS2_KBC_LIB_H_
#define _PS2_KBC_LIB_H_
#include
#include
#include
#include
#include
#include
#include
//
// Below is the platform console device path
//
typedef struct {
ACPI_HID_DEVICE_PATH PciRootBridge;
PCI_DEVICE_PATH IsaBridge;
ACPI_HID_DEVICE_PATH Keyboard;
EFI_DEVICE_PATH_PROTOCOL End;
} PLATFORM_KEYBOARD_DEVICE_PATH;
typedef struct {
UINT8 Segment;
UINT8 Bus;
UINT8 Device;
UINT8 Funtion;
} SIO_PCI_ISA_BRIDGE_DEVICE_INFO;
#define gPciRootBridge \
{ \
{ \
ACPI_DEVICE_PATH, \
ACPI_DP, \
{ \
(UINT8) (sizeof (ACPI_HID_DEVICE_PATH)), \
(UINT8) ((sizeof (ACPI_HID_DEVICE_PATH)) >> 8) \
}, \
}, \
EISA_PNP_ID (0x0A03), \
0 \
}
#define gEndEntire \
{ \
END_DEVICE_PATH_TYPE, END_ENTIRE_DEVICE_PATH_SUBTYPE, { END_DEVICE_PATH_LENGTH, 0 } \
}
#define KBC_INPBUF_VIA60_KBECHO 0xEE
#define KEYBOARD_8042_DATA_REGISTER 0x60
#define KEYBOARD_8042_STATUS_REGISTER 0x64
#define PS2_KEYBOARD_TIMEOUT 65536 // 0.07s
#define PS2_KEYBOARD_WAITFORVALUE_TIMEOUT 1000000 // 1s
#define PS2_KEYBOARD_KBEN 0xF4
#define PS2_KEYBOARD_CMDECHO_ACK 0xFA
#endif