summaryrefslogtreecommitdiff
path: root/Core/EM/usb/rt/amidef.h
diff options
context:
space:
mode:
Diffstat (limited to 'Core/EM/usb/rt/amidef.h')
-rw-r--r--Core/EM/usb/rt/amidef.h503
1 files changed, 503 insertions, 0 deletions
diff --git a/Core/EM/usb/rt/amidef.h b/Core/EM/usb/rt/amidef.h
new file mode 100644
index 0000000..a679e7b
--- /dev/null
+++ b/Core/EM/usb/rt/amidef.h
@@ -0,0 +1,503 @@
+//****************************************************************************
+//****************************************************************************
+//** **
+//** (C)Copyright 1985-2016, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Pkwy, Norcross, GA 30093 **
+//** **
+//** Phone (770)-246-8600 **
+//** **
+//****************************************************************************
+//****************************************************************************
+
+//**********************************************************************
+// $Header: /Alaska/SOURCE/Modules/USB/ALASKA/rt/amidef.h 40 10/28/16 3:57a Wilsonlee $
+//
+// $Revision: 40 $
+//
+// $Date: 10/28/16 3:57a $
+//
+//**********************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/USB/ALASKA/rt/amidef.h $
+//
+// 40 10/28/16 3:57a Wilsonlee
+// [TAG] EIP300142
+// [Category] Improvement
+// [Description] Remove USB Int1C module part because we use the other
+// method to service xhci.
+// [Files] usbport.c, amidef.h, amiusbhc.c, UsbLegacy.cif
+//
+// 39 10/28/16 1:29a Wilsonlee
+// [TAG] EIP300142
+// [Category] Improvement
+// [Description] Get vector value from memory 0x1c directly and check
+// it's not zero.
+// [Files] usbport.c, amidef.h
+//
+// 38 12/16/13 1:41a Ryanchou
+// [TAG] EIP142509
+// [Category] Improvement
+// [Description] Added usage 0x87 and 0x89.
+// [Files] efiusbkb.c, efiusbkb.h. amidef.h
+//
+// 37 5/22/12 10:03a Ryanchou
+// [TAG] EIP90154
+// [Category] Improvement
+// [Description] Remove the USBSB_EnableSmmPeriodicSmi and
+// USBSB_DisableSmmPeriodicSmi hooks.
+// [Files] amidef.h, amiusb.c, usb.c, usbsb.c
+//
+// 36 5/04/12 5:20a Wilsonlee
+// [TAG] EIP89307
+// [Category] Improvement
+// [Description] Modify incorrect #pragma pack directive.
+// [Files] amidef.h, amiusb.c, ehci.c, ohci.c, ohci.h, uhci.h, usb.c,
+// usbdef.h, xhci.h, efiusbmass.c, uhcd.c, uhcd.h, usbbus.c, usbbus.h,
+// UsbIo.h
+//
+// 35 11/08/11 2:01a Ryanchou
+// [TAG] EIP63188
+// [Category] Improvement
+// [Description] External USB controller support.
+// [Files] amidef.h, amiusb.c, ehci.c, ohci.c, uhcd.c, uhcd.h, uhci.c,
+// usbdef.h, usbmisc.c, usbsb.c, xhci.c
+//
+// 34 4/06/11 3:26a Ryanchou
+// [TAG] EIP55275
+// [Category] Bug Fix
+// [Severity] Important
+// [Symptom] EBDA:108 conflict
+// [RootCause] The EIP48064 save EFI_USB_PROTOCOL pointer in EBDA:108,
+// but Keymon filter driver used the same location.
+// [Solution] Use the EBDA:32 to save EFI_USB_PROTOCOL pointer and add a
+// signature in EFI_USB_PROTOCOL.
+// [Files] amidef.h, AmiUsbController.h, uhcd.c, usbsb.c
+//
+// 33 11/22/10 8:44a Ryanchou
+// [TAG] EIP48064
+// [Category] Improvement
+// [Description] The SB template implemented elink
+// AcpiEnableCallbackList, the XHCI/EHCI hand off function should be
+// invoked via the elink AcpiEnableCallbackList.
+// [Files] amidef.h, amiusb.c, amiusb.dxs, amiusb.h,
+// AmiUsbController.h, usb.sdl, usbrt.mak, usbsb.c
+//
+// 32 10/07/10 10:14a Ryanchou
+// EIP41379: Move the code that install xHCI hardware SMI handler in
+// XHCI_Start function.
+//
+// 31 3/25/10 9:47a Olegi
+//
+// 30 3/19/10 10:06a Olegi
+//
+// 29 11/30/09 6:11p Olegi
+//
+// 28 11/30/09 9:08a Olegi
+//
+// 27 10/02/09 10:50a Olegi
+// Code cleanup.
+//
+// 26 10/03/08 3:33p Olegi
+//
+// 25 9/05/08 3:45p Olegi
+// Definitions related to USB SMI code isolation.
+//
+// 24 5/16/08 12:03p Olegi
+// Compliance with AMI coding standard.
+//
+// 23 7/13/07 11:42a Olegi
+// F11 and F12 codes added.
+//
+// 22 3/20/07 1:26p Olegi
+//
+// 21 3/07/07 5:59p Olegi
+//
+// 20 10/25/06 10:59a Olegi
+//
+// 19 10/12/06 9:11p Andriyn
+//
+// 18 10/12/06 5:17p Olegi
+//
+// 17 10/12/06 5:01p Felixp
+// EfiCreateEventLegacyBoot added
+//
+// 16 10/12/06 4:42p Olegi
+//
+// 15 5/31/06 6:56p Mirk
+// Core 4.5 compliant - DP Length manipulation changes.
+//
+// 14 5/03/06 10:00a Olegi
+//
+// 13 4/14/06 6:43p Olegi
+// Conversion to be able to use x64 compiler.
+//
+// 10 1/11/06 1:42p Olegi
+//
+// 9 11/10/05 11:11a Olegi
+//
+// 8 8/26/05 12:25p Andriyn
+//
+// 7 8/15/05 3:59p Olegi
+//
+// 6 8/05/05 3:38p Andriyn
+// Complience with EFI EDK
+//
+// 5 6/03/05 6:32p Andriyn
+// Redifinition of library function for source complience with Aptio
+//
+// 4 5/20/05 11:05a Andriyn
+// reconcile Aptio changes with Alaska
+//
+// 3 5/17/05 7:51p Andriyn
+// USB BUS pre-release
+//
+// 2 5/10/05 4:13p Andriyn
+// USBBUS implementation
+//
+// 1 3/29/05 10:40a Olegi
+//
+// 1 3/15/05 9:23a Olegi
+// Initial VSS check-in.
+//
+//**********************************************************************
+
+//<AMI_FHDR_START>
+//----------------------------------------------------------------------------
+//
+// Name: AmiDef.h
+//
+// Description: AMI USB driver definitions, framework specific
+//
+//----------------------------------------------------------------------------
+//<AMI_FHDR_END>
+
+// Avoid including multiple instance of this file
+
+#ifndef __AMI_H
+#define __AMI_H
+
+#include "token.h"
+
+#define USB_DRIVER_VERSION (USB_DRIVER_MAJOR_VER << 4) + USB_DRIVER_MINOR_VER
+
+#include "Efi.h"
+#include <AmiDxeLib.h>
+#define _FAR_
+
+// Basic type definitions of various size
+
+#if (__STDC_VERSION__ < 199901L )
+
+ /* No ANSI C 1999/2000 stdint.h integer width declarations */
+
+ #if _MSC_EXTENSIONS
+
+ /* Use Microsoft C compiler integer width declarations */
+#if _64_BIT_EXTENSIONS
+ typedef unsigned __int64 UINT64;
+ typedef __int64 INT64;
+typedef UINT64 QWORD;
+typedef QWORD * PQWORD;
+typedef QWORD _FAR_ * FPQWORD;
+typedef UINT64 * PUINT64;
+typedef INT64 * PINT64;
+typedef UINT64 _FAR_ * FPUINT64;
+typedef INT64 _FAR_ * FPINT64;
+#endif
+// typedef unsigned __int32 UINT32;
+// typedef __int32 INT32;
+// typedef unsigned __int16 UINT16;
+// typedef __int16 INT16;
+// typedef unsigned __int8 UINT8;
+// typedef __int8 INT8;
+ #else
+#if _64_BIT_EXTENSIONS
+#endif
+ #endif
+#endif
+
+// Return code definition
+typedef INT16 RETCODE;
+
+// 64-bit extenstion definition
+#if _64_BIT_EXTENSIONS
+#endif
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+// Private and public definitions
+#define PRIVATE static
+#define PUBLIC
+
+// Function IN/OUT definitions
+#define IN
+#define OUT
+#define IN_OUT
+
+// Return codes
+#define SUCCESS 0
+#define FAILURE -1
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+#ifndef FALSE
+#define FALSE 0
+#endif
+// Bit equates
+#define BIT0 0x01
+#define BIT1 0x02
+#define BIT2 0x04
+#define BIT3 0x08
+#define BIT4 0x10
+#define BIT5 0x20
+#define BIT6 0x40
+#define BIT7 0x80
+#define BIT8 0x100
+#define BIT9 0x200
+/* defined in AmiDxeLib
+#define BIT10 0x400
+#define BIT11 0x800
+#define BIT12 0x1000
+#define BIT13 0x2000
+#define BIT14 0x4000
+#define BIT15 0x8000
+#define BIT16 0x10000
+#define BIT17 0x20000
+#define BIT18 0x40000
+#define BIT19 0x80000
+#define BIT20 0x100000
+#define BIT21 0x200000
+#define BIT22 0x400000
+#define BIT23 0x800000
+#define BIT24 0x1000000
+#define BIT25 0x2000000
+#define BIT26 0x4000000
+#define BIT27 0x8000000
+#define BIT28 0x10000000
+#define BIT29 0x20000000
+#define BIT30 0x40000000
+#define BIT31 0x80000000
+*/
+#define SCAN_NULL EFI_SCAN_NULL
+#define SCAN_ESC EFI_SCAN_ESC
+#define SCAN_F1 EFI_SCAN_F1
+#define SCAN_F2 EFI_SCAN_F2
+#define SCAN_F3 EFI_SCAN_F3
+#define SCAN_F4 EFI_SCAN_F4
+#define SCAN_F5 EFI_SCAN_F5
+#define SCAN_F6 EFI_SCAN_F6
+#define SCAN_F7 EFI_SCAN_F7
+#define SCAN_F8 EFI_SCAN_F8
+#define SCAN_F9 EFI_SCAN_F9
+#define SCAN_F10 EFI_SCAN_F10
+#define SCAN_F11 EFI_SCAN_F11
+#define SCAN_F12 EFI_SCAN_F12
+#define SCAN_INSERT EFI_SCAN_INS
+#define SCAN_HOME EFI_SCAN_HOME
+#define SCAN_PAGE_UP EFI_SCAN_PGUP
+#define SCAN_DELETE EFI_SCAN_DEL
+#define SCAN_END EFI_SCAN_END
+#define SCAN_PAGE_DOWN EFI_SCAN_PGDN
+#define SCAN_RIGHT EFI_SCAN_RIGHT
+#define SCAN_LEFT EFI_SCAN_LEFT
+#define SCAN_DOWN EFI_SCAN_DN
+#define SCAN_UP EFI_SCAN_UP
+
+#ifndef SCAN_PAUSE
+#define SCAN_PAUSE 0x0048
+#define SCAN_F13 0x0068
+#define SCAN_F14 0x0069
+#define SCAN_F15 0x006A
+#define SCAN_F16 0x006B
+#define SCAN_F17 0x006C
+#define SCAN_F18 0x006D
+#define SCAN_F19 0x006E
+#define SCAN_F20 0x006F
+#define SCAN_F21 0x0070
+#define SCAN_F22 0x0071
+#define SCAN_F23 0x0072
+#define SCAN_F24 0x0073
+#define SCAN_MUTE 0x007F
+#define SCAN_VOLUME_UP 0x0080
+#define SCAN_VOLUME_DOWN 0x0081
+#define SCAN_BRIGHTNESS_UP 0x0100
+#define SCAN_BRIGHTNESS_DOWN 0x0101
+#define SCAN_SUSPEND 0x0102
+#define SCAN_HIBERNATE 0x0103
+#define SCAN_TOGGLE_DISPLAY 0x0104
+#define SCAN_RECOVERY 0x0105
+#define SCAN_EJECT 0x0106
+#endif
+
+#define EFI_BLOCK_IO_PROTOCOL EFI_BLOCK_IO
+#define EFI_SIMPLE_TEXT_IN_PROTOCOL SIMPLE_INPUT_INTERFACE
+
+//#define MESSAGING_DEVICE_PATH MESSAGING_DEVICE_PATH_TYPE
+//#define MSG_USB_CLASS_DP MSG_USB_CLASS_DEVICE_PATH_SUBTYPE
+#define EFI_END_ENTIRE_DEVICE_PATH END_DEVICE_PATH
+#define EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE END_ENTIRE_SUBTYPE
+//#define MSG_SCSI_DP MSG_SCSI_DEVICE_PATH_SUBTYPE
+//#define Pun TargetId
+
+#define EFI_DRIVER_ENTRY_POINT(x)
+//#define EFI_LOADED_IMAGE_PROTOCOL EFI_LOADED_IMAGE
+#define EfiInitializeSmmDriverLib(ImageHandle, SystemTable) InitAmiLib(ImageHandle, SystemTable)
+#define EfiInitializeDriverLib(ImageHandle, SystemTable) InitAmiLib(ImageHandle,SystemTable)
+#define gBS pBS
+#define gRT pRS
+#define EfiDuplicateDevicePath DPCopy
+
+
+// Loop forever macro
+#define LOOP_FOREVER while(1)
+
+#if defined(DEBUG_SWITCH) && (DEBUG_SWITCH == 1)
+#define EfiDebugVPrint(EFI_D_ERROR, Message, ArgList) PrintDebugMessageVaList(-1, Message, ArgList)
+
+extern RETCODE PrintDebugMsg (int, char *, ...);
+#define USB_DEBUG PrintDebugMsg
+#define USB_DEBUG_LEVEL DEBUG_LEVEL_3
+void DEBUG_DELAY();
+#else
+extern RETCODE PrintDebugMsg (int, char *, ...);
+#define USB_DEBUG 1?0:PrintDebugMsg
+#define DEBUG_DELAY
+#endif
+
+#if GENERIC_USB_CABLE_SUPPORT
+#undef USB_DEBUG
+#define USB_DEBUG
+#endif
+
+#define MAX_DEBUG_LEVEL 8
+
+#define DEBUG_LEVEL_8 8
+#define DEBUG_LEVEL_7 7
+#define DEBUG_LEVEL_6 6
+#define DEBUG_LEVEL_5 5
+#define DEBUG_LEVEL_4 4
+#define DEBUG_LEVEL_3 3
+#define DEBUG_LEVEL_2 2
+#define DEBUG_LEVEL_1 1
+#define DEBUG_LEVEL_0 0
+
+#define MICROSECOND 10
+#define MILLISECOND (1000 * MICROSECOND)
+#define ONESECOND (1000 * MILLISECOND)
+
+#define USB_DATA_EBDA_OFFSET 0x104
+#define USB_PROTOCOL_EBDA_OFFSET 0x32 //(EIP55275)
+
+#define GET_CPUSAVESTATE_REG(x) (URP_STRUC*)(UINTN)gSmst->CpuSaveState->Ia32SaveState.x
+//#define GET_FV_NAME(pImage) &((FV_FILE_PATH_DEVICE_PATH*)(pImage->FilePath))->Name
+#define GET_FV_NAME(pImage) &((MEDIA_FW_VOL_FILEPATH_DEVICE_PATH*)(pImage->FilePath))->NameGuid
+#define EfiDevicePathNodeLength(a) (((a)->Length[0]) | ((a)->Length[1] << 8))
+//#define EfiNextDevicePathNode(a) ((EFI_DEVICE_PATH_PROTOCOL *) ( ((UINT8 *) (a)) + \
+// EfiDevicePathNodeLength(a)))
+#define EfiNextDevicePathNode(a) NEXT_NODE(a)
+
+#define EfiDevicePathType(a) ( ((a)->Type) & 0x7f )
+#define EfiIsDevicePathEndType(a) (EfiDevicePathType(a) == 0x7f)
+
+
+#define EfiIsDevicePathEndSubType(a) ((a)->SubType == 0xFF)
+#define EfiIsDevicePathEndInstanceSubType(a) ((a)->SubType == 1)
+
+#define EfiIsDevicePathEnd(a) ( EfiIsDevicePathEndType(a) && \
+ EfiIsDevicePathEndSubType(a) )
+#define EfiIsDevicePathEndInstance(a) ( EfiIsDevicePathEndType(a) && \
+ EfiIsDevicePathEndInstanceSubType(a) )
+//#define SetDevicePathNodeLength(a,l) { (a)->Length = (l); }
+#define SetDevicePathNodeLength(a,l) ( SET_NODE_LENGTH(a,l) )
+//#define DevicePathNodeLength(a) ( ((a)->Length[0]) | ((a)->Length[1] << 8) )
+#define DevicePathNodeLength(a) ( NODE_LENGTH(a) )
+//#define NextDevicePathNode(a) ( (EFI_DEVICE_PATH_PROTOCOL *) ( ((UINT8 *) (a)) + DevicePathNodeLength(a)))
+#define NextDevicePathNode(a) ( (EFI_DEVICE_PATH_PROTOCOL *) ( ((UINT8 *) (a)) + NODE_LENGTH(a)))
+#define SetDevicePathEndNode(a) { \
+ (a)->Type = 0x7F; \
+ (a)->SubType = 0xFF; \
+ (a)->Length = sizeof(EFI_DEVICE_PATH_PROTOCOL); \
+ }
+
+#define VA_LIST va_list
+#define VA_START va_start
+#define VA_ARG va_arg
+#define VA_END va_end
+
+//
+// CONTAINING_RECORD - returns a pointer to the structure
+// from one of it's elements.
+//
+#define _CR(Record, TYPE, Field) \
+ ((TYPE *) ( (CHAR8 *)(Record) - (CHAR8 *) &(((TYPE *) 0)->Field)))
+
+
+//
+// Define macros to build data structure signatures from characters.
+//
+#define EFI_SIGNATURE_16(A,B) ((A) | (B<<8))
+#define EFI_SIGNATURE_32(A,B,C,D) (EFI_SIGNATURE_16(A,B) | (EFI_SIGNATURE_16(C,D) << 16))
+#define EFI_SIGNATURE_64(A,B,C,D,E,F,G,H) (EFI_SIGNATURE_32(A,B,C,D) | ((UINT64)(EFI_SIGNATURE_32(E,F,G,H)) << 32))
+
+#define EfiCopyMem(_Destination, _Source, _Length) gBS->CopyMem ((_Destination), (_Source), (_Length))
+#define EfiSetMem(_Destination, _Length, _Value) gBS->SetMem ((_Destination), (_Length), (_Value))
+#define EfiZeroMem(_Destination, _Length) gBS->SetMem ((_Destination), (_Length), 0)
+
+#define EFI_TPL_NOTIFY TPL_NOTIFY
+#define EFI_TPL_CALLBACK TPL_CALLBACK
+#define EFI_TPL_HIGH_LEVEL TPL_HIGH_LEVEL
+
+#define EFI_CHECK(x) {EFI_STATUS status = (x);if(status!=EFI_SUCCESS)return status;}
+#define COUNTOF(x) (sizeof(x)/sizeof((x)[0]))
+
+#define EfiAppendDevicePathNode DPAddNode
+// redefined in core 4.05 #define DPLENGTH(x) ((x).Length)
+
+void cp( UINT8 code);
+
+#define EfiCreateEventLegacyBoot CreateLegacyBootEvent
+
+VOID USB_SmiQueuePut(VOID*);
+
+typedef struct
+{
+ UINT8 Down;
+ UINT8 KeyCode;
+} USB_KEY;
+
+#define MAX_KEY_ALLOWED 32
+
+typedef struct
+{
+ USB_KEY buffer[MAX_KEY_ALLOWED + 1];
+ UINT8 bHead;
+ UINT8 bTail;
+} USB_KB_BUFFER;
+
+EFI_STATUS USBSB_InstallSmiEventHandlers(VOID);
+EFI_STATUS USBSB_InstallXhciHwSmiHandler(VOID);
+EFI_STATUS USBSB_InstallUsbIntTimerHandler(VOID);
+EFI_STATUS USBSB_UninstallTimerHandlers(VOID);
+
+#endif // __AMI_H
+
+//****************************************************************************
+//****************************************************************************
+//** **
+//** (C)Copyright 1985-2016, American Megatrends, Inc. **
+//** **
+//** All Rights Reserved. **
+//** **
+//** 5555 Oakbrook Pkwy, Norcross, GA 30093 **
+//** **
+//** Phone (770)-246-8600 **
+//** **
+//****************************************************************************
+//****************************************************************************