1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
|
//**********************************************************************
//**********************************************************************
//** **
//** (C)Copyright 1985-2011, American Megatrends, Inc. **
//** **
//** All Rights Reserved. **
//** **
//** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
//** **
//** Phone: (770)-246-8600 **
//** **
//**********************************************************************
//**********************************************************************
// $Header: /Alaska/SOURCE/Modules/KbcEmulation/ALASKA/KBCEMUL/KbcOhci.h 3 12/05/13 12:46a Srikantakumarp $
//
// $Revision: 3 $
//
// $Date: 12/05/13 12:46a $
//
//**********************************************************************
// Revision History
// ----------------
// $Log: /Alaska/SOURCE/Modules/KbcEmulation/ALASKA/KBCEMUL/KbcOhci.h $
//
// 3 12/05/13 12:46a Srikantakumarp
// [TAG] EIP145881
// [Category] Improvement
// [Description] Ohci Emulation support needs to be extended for the
// chipset , where the HCE registers defined in some fixed Memory for
// Aptio 4.x
// [Files] KbcEmul.sdl, KbcOhci.c, KbcOhci.h
//
// 2 2/10/11 1:15a Rameshr
// [TAG] EIP53687
// [Category] Improvement
// [Description] AMI headers update for KbcEmulation Module
// [Files] KbcEmul.mak,KbcEmul.dxs,KbcEmul.c,KbcEmul.h,KbcEmulLib.h,Kbc
// EmulLib.c,Kbc.h,KbcDevEmul.h,Kbccore.c,Legacykbc.c,Legacykbd.c,LegacyMo
// use.c,VirtualKbc.c,VirtualKbd.c,VirtualMouse.c,Ap4x.h,Ap4x.c,KbcUhci.c,
// KbcUhci.h,KbcEmulIrq.c, KbcOhci.c, Kbcohci.h
//
// 1 7/08/10 2:07a Rameshr
// Ohci Emulation support Added.
// EIP 39712
//
// Initial Check-in
//
//**********************************************************************
//**********************************************************************
//<AMI_FHDR_START>
//
// Name: KbcOhci.h
//
// Description: Header file for OCHI controller for Emulation
//
//<AMI_FHDR_END>
//**********************************************************************
typedef enum {
UNSUPPORTED = -1,
USB1_1 = 0,
USB1_2,
USB1_3,
USB1_4,
USB2_1,
NUMBER_USB_CONTROLLERS
} SUPPORTED_USB_CONTROLLERS;
typedef enum {
PciDevice,
FixedMemory
} EMUL_DEV_TYPE;
typedef struct {
EMUL_DEV_TYPE Type;
UINT16 BusDevFunc;
UINTN MemAddr;
} OHCI_EMUL_DEVICE;
typedef struct _FULL_USB_DEVICE_PATH
{
ACPI_HID_DEVICE_PATH acpi;
PCI_DEVICE_PATH pci;
EFI_DEVICE_PATH_PROTOCOL end;
} FULL_USB_DEVICE_PATH;
#define ACPI_PATH_MACRO \
{{ACPI_DEVICE_PATH,ACPI_DP,ACPI_DEVICE_PATH_LENGTH}, EISA_PNP_ID(0x0A03),0}
#define PCI_PATH_MACRO(Device,Function) \
{{HARDWARE_DEVICE_PATH, HW_PCI_DP, HW_PCI_DEVICE_PATH_LENGTH}, (Function),(Device)}
#define END_PATH_MACRO \
{END_DEVICE_PATH,END_ENTIRE_SUBTYPE,END_DEVICE_PATH_LENGTH}
#define USB1_1_DEVICE_PATH \
{ ACPI_PATH_MACRO, PCI_PATH_MACRO(0x1d, 0), END_PATH_MACRO }
//
// Trap Dispatcher
//
//
typedef struct _TRAPDISPATCH {
UINT16 status_bit;
void (* trap_function)();
} TRAPDISPATCH;
#define PCIBUS(x) ( x << 16)
#define PCIDEV(x) ( x << 11)
#define PCIFUNC(x) ( x << 8)
#define PCIOFF_MASK 0x000000FF
#define PCIFUNC_MASK 0x0000FF00
#define PCIDEV_MASK 0x00FF0000
#define PCIBUS_MASK 0xFF000000
// OHCI emulation register equates
#define OHCI_HCE_CONTROL 0x100
#define OHCI_HCE_INPUT 0x104
#define OHCI_HCE_OUTPUT 0x108
#define OHCI_HCE_STATUS 0x10C
#pragma pack(push, 1)
typedef struct {
UINT32 HceControl;
UINT32 HceInput;
UINT32 HceOutput;
UINT32 HceStatus;
} OHCI_LEG_SUP_REGS;
#pragma pack(pop)
// Bit definitions for emulation registers
#define HCE_CNTRL_EMULATION_ENABLE BIT0
#define HCE_CNTRL_EMULATION_INTERRUPT BIT1
#define HCE_CNTRL_CHARACTER_PENDING BIT2
#define HCE_CNTRL_IRQ_ENABLE BIT3
#define HCE_CNTRL_EXT_IRQ_ENABLE BIT4
#define HCE_CNTRL_GA20_SEQ BIT5
#define HCE_CNTRL_IRQ1_ACTIVE BIT6
#define HCE_CNTRL_IRQ12_ACTIVE BIT7
#define HCE_CNTRL_A20_STATE BIT8
#define HCE_STS_OUTPUTFULL BIT0
#define HCE_STS_INPUTFULL BIT1
#define HCE_STS_FLAG BIT2
#define HCE_STS_CMDDATA BIT3
#define HCE_STS_INHIBIT_SWITCH BIT4
#define HCE_STS_AUXOUTPUTFULL BIT5
#define HCE_STS_TIMEOUT BIT6
#define HCE_STS_PARITY BIT7
BOOLEAN Ohci_HasTrapStatus();
BOOLEAN Ohci_TrapEnable(BOOLEAN);
BOOLEAN NonSmmOhci_TrapEnable(BOOLEAN);
BOOLEAN GetRMhStatus ();
UINT16 GetHceControl();
void SetHceControl (UINT16);
void SetHceOutput (UINT8);
UINT8 GetHceOutput();
UINT8 GetHceStatus();
void SetHceStatus (UINT8);
UINT8 GetHceInput();
//**********************************************************************
//**********************************************************************
//** **
//** (C)Copyright 1985-2011, American Megatrends, Inc. **
//** **
//** All Rights Reserved. **
//** **
//** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 **
//** **
//** Phone: (770)-246-8600 **
//** **
//**********************************************************************
//**********************************************************************
|