summaryrefslogtreecommitdiff
path: root/Board/EM/EcPs2Kbd
diff options
context:
space:
mode:
authorraywu <raywu0301@gmail.com>2018-06-15 00:00:50 +0800
committerraywu <raywu0301@gmail.com>2018-06-15 00:00:50 +0800
commitb7c51c9cf4864df6aabb99a1ae843becd577237c (patch)
treeeebe9b0d0ca03062955223097e57da84dd618b9a /Board/EM/EcPs2Kbd
downloadzprj-b7c51c9cf4864df6aabb99a1ae843becd577237c.tar.xz
init. 1AQQW051HEADmaster
Diffstat (limited to 'Board/EM/EcPs2Kbd')
-rw-r--r--Board/EM/EcPs2Kbd/EcPs2Kbd.c280
-rw-r--r--Board/EM/EcPs2Kbd/EcPs2Kbd.chmbin0 -> 24781 bytes
-rw-r--r--Board/EM/EcPs2Kbd/EcPs2Kbd.cif13
-rw-r--r--Board/EM/EcPs2Kbd/EcPs2Kbd.dxs55
-rw-r--r--Board/EM/EcPs2Kbd/EcPs2Kbd.h83
-rw-r--r--Board/EM/EcPs2Kbd/EcPs2Kbd.mak53
-rw-r--r--Board/EM/EcPs2Kbd/EcPs2Kbd.sdl41
7 files changed, 525 insertions, 0 deletions
diff --git a/Board/EM/EcPs2Kbd/EcPs2Kbd.c b/Board/EM/EcPs2Kbd/EcPs2Kbd.c
new file mode 100644
index 0000000..daab843
--- /dev/null
+++ b/Board/EM/EcPs2Kbd/EcPs2Kbd.c
@@ -0,0 +1,280 @@
+//*************************************************************************
+//*************************************************************************
+//** **
+//** (C)Copyright 1985-2010, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//*************************************************************************
+//*************************************************************************
+//*************************************************************************
+//
+// $Header: /Alaska/SOURCE/Modules/EcPs2Kbd/EcPs2Kbd.c 3 6/29/10 3:01p Stacyh $
+//
+// $Revision: 3 $
+//
+// $Date: 6/29/10 3:01p $
+//
+//*****************************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/EcPs2Kbd/EcPs2Kbd.c $
+//
+// 3 6/29/10 3:01p Stacyh
+// Added fix for EIP# 39388: SCT Execution test
+// failed-4.6.3.5_VeB_0ABUC_004
+//
+// 2 6/03/08 10:07a Stacyh
+// Added code to install a device path for PS2 Mouse.
+// Added code to create/update the SIO_DEV_STATUS EFI variable
+//
+// 1 5/30/08 4:23p Stacyh
+//
+//
+//*****************************************************************************
+
+
+//<AMI_FHDR_START>
+//----------------------------------------------------------------------------
+//
+// Name: EcPs2Kbd.C
+//
+// Description: This file contains code necessary to install the EC PS2 devices
+// for EFI, ACPI and DOS.
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+//<AMI_FHDR_END>
+#include "token.h"
+#include "EcPs2Kbd.h"
+
+static EFI_GUID gSioDevStatusVarGuid = SIO_DEV_STATUS_VAR_GUID;
+
+static PS2_KBD_DEVICE_PATH mEcPs2KbdDevicePath[1][1] = {
+ {
+ ACPI_DEVICE_PATH,
+ ACPI_DP,
+ (UINT8) (sizeof (ACPI_HID_DEVICE_PATH)),
+ (UINT8) ((sizeof (ACPI_HID_DEVICE_PATH)) >> 8),
+ EISA_PNP_ID(0x303),
+ 0,
+ END_DEVICE_PATH_TYPE,
+ END_ENTIRE_DEVICE_PATH_SUBTYPE,
+ END_DEVICE_PATH_LENGTH,
+ 0
+ }
+};
+
+static PS2_KBD_DEVICE_PATH mEcPs2MsDevicePath[1][1] = {
+ {
+ ACPI_DEVICE_PATH,
+ ACPI_DP,
+ (UINT8) (sizeof (ACPI_HID_DEVICE_PATH)),
+ (UINT8) ((sizeof (ACPI_HID_DEVICE_PATH)) >> 8),
+ EISA_PNP_ID(0xF03),
+ 0,
+ END_DEVICE_PATH_TYPE,
+ END_ENTIRE_DEVICE_PATH_SUBTYPE,
+ END_DEVICE_PATH_LENGTH,
+ 0
+ }
+};
+
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: ConnectDevicePath
+//
+// Description: This function connects the EFI device to its parent device.
+//
+// Input: pPath - Pointer to an EFI device path.
+//
+// Output: VOID
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+
+VOID ConnectDevicePath (
+ IN EFI_DEVICE_PATH_PROTOCOL *pPath)
+{
+ EFI_HANDLE Handle;
+ EFI_STATUS Status;
+
+ while (TRUE)
+ {
+ EFI_DEVICE_PATH_PROTOCOL *pLastPath = NULL;
+ EFI_DEVICE_PATH_PROTOCOL *pFirstNode = pPath;
+
+ if (isEndNode(pPath))
+ {
+ if (pPath->SubType == END_ENTIRE_SUBTYPE) break;
+ pPath++;
+ continue;
+ }
+
+ while (TRUE) {
+ EFI_DEVICE_PATH_PROTOCOL *Dp;
+ UINT8 SubType;
+
+ pPath = pFirstNode;
+
+ // LocateDevicePath can not work with multi-instance device paths.
+ // Prepare single instance device path and call LocateDevicePath.
+
+ Dp = DPGetEndNode(pPath);
+ SubType = Dp->SubType;
+ Dp->SubType = END_ENTIRE_SUBTYPE;
+ Status = pBS->LocateDevicePath(&gEfiDevicePathProtocolGuid, \
+ &pPath, &Handle);
+ Dp->SubType = SubType;
+ if (EFI_ERROR(Status)) break;
+
+ if (isEndNode(pPath))
+ {
+ // Last time let's do it recursively.
+
+ pBS->ConnectController(Handle, NULL, NULL, TRUE);
+ break;
+ }
+ if (pPath == pLastPath) break;
+ pLastPath = pPath;
+ if (EFI_ERROR(pBS->ConnectController(Handle, NULL, pPath, FALSE)))
+ break;
+ }
+
+ while (!isEndNode(pPath))
+ pPath = NEXT_NODE(pPath);
+ }
+}
+
+
+//<AMI_PHDR_START>
+//----------------------------------------------------------------------------
+// Procedure: EcPs2KbdEntry
+//
+// Description: This function installs the Device Path for the EC Ps2.
+//
+// Input: ImageHandle Image handle
+// SystemTable Pointer to the system table
+//
+// Output: EFI_STATUS Returned from PCI read call
+//
+//----------------------------------------------------------------------------
+//<AMI_PHDR_END>
+
+EFI_STATUS EcPs2KbdEntry (
+ IN EFI_HANDLE ImageHandle,
+ IN EFI_SYSTEM_TABLE *SystemTable)
+{
+ EFI_STATUS Status;
+ EFI_DEVICE_PATH_PROTOCOL *KbTmpDp = NULL;
+ EFI_DEVICE_PATH_PROTOCOL *MsTmpDp = NULL;
+ ACPI_HID_DEVICE_PATH RbDp;
+ PCI_DEVICE_PATH PciDp;
+ PS2KBD_DEV *PrivateData;
+ SIO_DEV_STATUS SioDevStatusVar;
+ UINTN SioDevStatusVarSize = sizeof(SIO_DEV_STATUS);
+ UINT32 SioDevStatusVarAttributes = 0;
+
+ InitAmiLib(ImageHandle,SystemTable);
+
+ // Get root bridge device path
+ RbDp.Header.Type = ACPI_DEVICE_PATH;
+ RbDp.Header.SubType = ACPI_DP;
+ SET_NODE_LENGTH(&RbDp.Header, ACPI_DEVICE_PATH_LENGTH);
+ RbDp.HID = EISA_PNP_ID(0x0A03);
+ RbDp.UID = 0;
+ KbTmpDp = DPAddNode(KbTmpDp, &RbDp.Header);
+ MsTmpDp = DPAddNode(MsTmpDp, &RbDp.Header);
+ ConnectDevicePath(KbTmpDp);
+ ConnectDevicePath(MsTmpDp);
+
+ // Get PCI device path
+ PciDp.Header.SubType = HW_PCI_DP;
+ PciDp.Header.Type = HARDWARE_DEVICE_PATH;
+ SET_NODE_LENGTH(&PciDp.Header, HW_PCI_DEVICE_PATH_LENGTH);
+ PciDp.Function = SB_FUN_NUMBER;
+ PciDp.Device = SB_DEV_NUMBER;
+ KbTmpDp = DPAddNode(KbTmpDp, &PciDp.Header);
+ MsTmpDp = DPAddNode(MsTmpDp, &PciDp.Header);
+ ConnectDevicePath(KbTmpDp);
+ ConnectDevicePath(MsTmpDp);
+
+
+ // Install PS2 Keyboard Device Path
+ Status = pBS->AllocatePool (EfiBootServicesData, sizeof (PS2KBD_DEV), \
+ &PrivateData);
+ ASSERT (!EFI_ERROR (Status));
+
+ KbTmpDp = DPAddNode(KbTmpDp, (EFI_DEVICE_PATH_PROTOCOL *) \
+ &mEcPs2KbdDevicePath [0][0]);
+ ConnectDevicePath(KbTmpDp);
+ PrivateData->DevicePath = KbTmpDp;
+ PrivateData->Handle = NULL;
+
+ Status = pBS->InstallProtocolInterface (&PrivateData->Handle, \
+ &gEfiDevicePathProtocolGuid, EFI_NATIVE_INTERFACE, \
+ PrivateData->DevicePath);
+
+ if (EFI_ERROR (Status)) {
+ pBS->FreePool (PrivateData);
+ return EFI_DEVICE_ERROR;
+ }
+
+ // Install PS2 Mouse Device Path
+ Status = pBS->AllocatePool (EfiBootServicesData, sizeof (PS2KBD_DEV), \
+ &PrivateData);
+ ASSERT (!EFI_ERROR (Status));
+
+ MsTmpDp = DPAddNode(MsTmpDp, (EFI_DEVICE_PATH_PROTOCOL *) \
+ &mEcPs2MsDevicePath [0][0]);
+ ConnectDevicePath(MsTmpDp);
+ PrivateData->DevicePath = MsTmpDp;
+ PrivateData->Handle = NULL;
+
+ Status = pBS->InstallProtocolInterface (&PrivateData->Handle, \
+ &gEfiDevicePathProtocolGuid, EFI_NATIVE_INTERFACE, \
+ PrivateData->DevicePath);
+
+ if (EFI_ERROR (Status)) {
+ pBS->FreePool (PrivateData);
+ return EFI_DEVICE_ERROR;
+ }
+
+ // Create/Update SIO_DEV_STATUS EFI variable
+ Status = pRS->GetVariable(SIO_DEV_STATUS_VAR_NAME, &gSioDevStatusVarGuid,
+ &SioDevStatusVarAttributes, &SioDevStatusVarSize,
+ &SioDevStatusVar.DEV_STATUS);
+
+ if (EFI_ERROR(Status)) {
+ SioDevStatusVar.DEV_STATUS = 0;
+ SioDevStatusVarAttributes = EFI_VARIABLE_BOOTSERVICE_ACCESS;
+ }
+
+ SioDevStatusVar.Key60_64 = 1;
+ SioDevStatusVar.Ps2Mouse = 1;
+
+ Status = pRS->SetVariable(SIO_DEV_STATUS_VAR_NAME, &gSioDevStatusVarGuid,
+ SioDevStatusVarAttributes, SioDevStatusVarSize,
+ &SioDevStatusVar);
+
+ return Status;
+}
+
+//*************************************************************************
+//*************************************************************************
+//** **
+//** (C)Copyright 1985-2010, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//*************************************************************************
+//*************************************************************************
diff --git a/Board/EM/EcPs2Kbd/EcPs2Kbd.chm b/Board/EM/EcPs2Kbd/EcPs2Kbd.chm
new file mode 100644
index 0000000..907d4c5
--- /dev/null
+++ b/Board/EM/EcPs2Kbd/EcPs2Kbd.chm
Binary files differ
diff --git a/Board/EM/EcPs2Kbd/EcPs2Kbd.cif b/Board/EM/EcPs2Kbd/EcPs2Kbd.cif
new file mode 100644
index 0000000..c38168b
--- /dev/null
+++ b/Board/EM/EcPs2Kbd/EcPs2Kbd.cif
@@ -0,0 +1,13 @@
+<component>
+ name = "EcPs2Kbd"
+ category = eModule
+ LocalRoot = "Board\em\EcPs2Kbd"
+ RefName = "EcPs2Kbd"
+[files]
+"EcPs2Kbd.sdl"
+"EcPs2Kbd.c"
+"EcPs2Kbd.mak"
+"EcPs2Kbd.h"
+"EcPs2Kbd.dxs"
+"EcPs2Kbd.chm"
+<endComponent>
diff --git a/Board/EM/EcPs2Kbd/EcPs2Kbd.dxs b/Board/EM/EcPs2Kbd/EcPs2Kbd.dxs
new file mode 100644
index 0000000..e24542c
--- /dev/null
+++ b/Board/EM/EcPs2Kbd/EcPs2Kbd.dxs
@@ -0,0 +1,55 @@
+//**********************************************************************
+//**********************************************************************
+//** **
+//** (C)Copyright 1985-2008, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 6145-F Northbelt Pkwy, Norcross, GA 30071 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//**********************************************************************
+//**********************************************************************
+//**********************************************************************
+// $Header: /Alaska/SOURCE/Modules/EcPs2Kbd/EcPs2Kbd.dxs 2 5/30/08 4:26p Stacyh $
+//
+// $Revision: 2 $
+//
+// $Date: 5/30/08 4:26p $
+//
+//*****************************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/EcPs2Kbd/EcPs2Kbd.dxs $
+//
+// 2 5/30/08 4:26p Stacyh
+//
+//
+//**********************************************************************
+//<AMI_FHDR_START>
+//
+// Name: EcPs2Kbd.dxs
+//
+// Description: Dependency expression file for EcPs2Kbd DXE driver
+//
+//<AMI_FHDR_END>
+//**********************************************************************
+
+DEPENDENCY_START
+ TRUE
+DEPENDENCY_END
+
+//**********************************************************************
+//**********************************************************************
+//** **
+//** (C)Copyright 1985-2008, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 6145-F Northbelt Pkwy, Norcross, GA 30071 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//**********************************************************************
+//**********************************************************************
diff --git a/Board/EM/EcPs2Kbd/EcPs2Kbd.h b/Board/EM/EcPs2Kbd/EcPs2Kbd.h
new file mode 100644
index 0000000..50736e8
--- /dev/null
+++ b/Board/EM/EcPs2Kbd/EcPs2Kbd.h
@@ -0,0 +1,83 @@
+//**********************************************************************
+//**********************************************************************
+//** **
+//** (C)Copyright 1985-2008, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 6145-F Northbelt Pkwy, Norcross, GA 30071 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//**********************************************************************
+//**********************************************************************
+//**********************************************************************
+//
+// $Header: /Alaska/SOURCE/Modules/EcPs2Kbd/EcPs2Kbd.h 3 7/18/11 5:58p Stacyh $
+//
+// $Revision: 3 $
+//
+// $Date: 7/18/11 5:58p $
+//
+//*****************************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/EcPs2Kbd/EcPs2Kbd.h $
+//
+// 3 7/18/11 5:58p Stacyh
+// [TAG] EIP65200
+// [Category] Improvement
+// [Description] Port EcPs2Kbd to be compliant with PI 1.2, and UEFI
+// 2.3.1 specifications.
+// [Files] EcPs2Kbd.h
+//
+// 2 6/03/08 10:05a Stacyh
+//
+// 1 5/30/08 4:23p Stacyh
+//
+//
+//*****************************************************************************
+
+
+//<AMI_FHDR_START>
+//----------------------------------------------------------------------------
+//
+// Name: EcPs2Kbd.h
+//
+// Description: defines needed for EcPs2Kbd.
+//
+// Notes:
+//
+//----------------------------------------------------------------------------
+//<AMI_FHDR_END>
+#include <GenericSIO.h>
+#include <Protocol\DevicePath.h>
+#include <AmiDxeLib.h>
+
+#define END_DEVICE_PATH_TYPE 0x7f
+#define END_ENTIRE_DEVICE_PATH_SUBTYPE 0xff
+
+typedef struct {
+ ACPI_HID_DEVICE_PATH AcpiDevicePath;
+ EFI_DEVICE_PATH_PROTOCOL EndDevicePath;
+} PS2_KBD_DEVICE_PATH;
+
+
+typedef struct _PS2KBD_DEV {
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;
+ EFI_HANDLE Handle;
+} PS2KBD_DEV;
+
+//**********************************************************************
+//**********************************************************************
+//** **
+//** (C)Copyright 1985-2008, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 6145-F Northbelt Pkwy, Norcross, GA 30071 **
+//** **
+//** Phone: (770)-246-8600 **
+//** **
+//**********************************************************************
+//**********************************************************************
diff --git a/Board/EM/EcPs2Kbd/EcPs2Kbd.mak b/Board/EM/EcPs2Kbd/EcPs2Kbd.mak
new file mode 100644
index 0000000..d980b9e
--- /dev/null
+++ b/Board/EM/EcPs2Kbd/EcPs2Kbd.mak
@@ -0,0 +1,53 @@
+#**********************************************************************
+#**********************************************************************
+#** **
+#** (C)Copyright 1985-2008, American Megatrends, Inc. **
+#** **
+#** All Rights Reserved. **
+#** **
+#** 6145-F Northbelt Pkwy, Norcross, GA 30071 **
+#** **
+#** Phone: (770)-246-8600 **
+#** **
+#**********************************************************************
+#**********************************************************************
+
+#**********************************************************************
+#<AMI_FHDR_START>
+#
+# Name: <EcPs2Kbd.mak>
+#
+# Description:
+#
+#<AMI_FHDR_END>
+#**********************************************************************
+{$(ECPS2KBD_DIR)}.c{$(BUILD_DIR)}.obj::
+ $(CC) $(CFLAGS) /Fo$(BUILD_DIR)\\ $<
+
+all : EcPs2Kbd
+
+EcPs2Kbd : $(BUILD_DIR)\EcPs2Kbd.mak EcPs2KbdBin
+
+$(BUILD_DIR)\EcPs2Kbd.mak : $(ECPS2KBD_DIR)\$(@B).cif $(ECPS2KBD_DIR)\$(@B).mak $(BUILD_RULES)
+ $(CIF2MAK) $(ECPS2KBD_DIR)\$(@B).cif $(CIF2MAK_DEFAULTS)
+
+EcPs2KbdBin : $(AMIDXELIB)
+ $(MAKE) /$(MAKEFLAGS) $(BUILD_DEFAULTS)\
+ /f $(BUILD_DIR)\EcPs2Kbd.mak all\
+ GUID=2F72309E-D5B0-4a9d-84A9-1AB38C698F78\
+ ENTRY_POINT=EcPs2KbdEntry\
+ TYPE=BS_DRIVER \
+ COMPRESS=1
+#**********************************************************************
+#**********************************************************************
+#** **
+#** (C)Copyright 1985-2008, American Megatrends, Inc. **
+#** **
+#** All Rights Reserved. **
+#** **
+#** 6145-F Northbelt Pkwy, Norcross, GA 30071 **
+#** **
+#** Phone: (770)-246-8600 **
+#** **
+#**********************************************************************
+#**********************************************************************
diff --git a/Board/EM/EcPs2Kbd/EcPs2Kbd.sdl b/Board/EM/EcPs2Kbd/EcPs2Kbd.sdl
new file mode 100644
index 0000000..46d09b6
--- /dev/null
+++ b/Board/EM/EcPs2Kbd/EcPs2Kbd.sdl
@@ -0,0 +1,41 @@
+TOKEN
+ Name = "EcPs2Kbd_SUPPORT"
+ Value = "1"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetMAK = Yes
+ TargetH = Yes
+ Master = Yes
+End
+
+TOKEN
+ Name = "SB_DEV_NUMBER"
+ Value = "0x1f"
+ Help = "South Bridge (LPC Bridge) PCI Device Number"
+ TokenType = Integer
+ TargetH = Yes
+End
+
+TOKEN
+ Name = "SB_FUN_NUMBER"
+ Value = "0x00"
+ Help = "South Bridge (LPC Bridge) PCI Function Number"
+ TokenType = Integer
+ TargetH = Yes
+End
+
+PATH
+ Name = "ECPS2KBD_DIR"
+End
+
+MODULE
+ Help = "Includes EcPs2Kbd.MAK into BUILD PROCESS"
+ File = "EcPs2Kbd.mak"
+End
+
+ELINK
+ Name = "$(BUILD_DIR)\EcPs2Kbd.ffs"
+ Parent = "FV_MAIN"
+ InvokeOrder = AfterParent
+End
+