summaryrefslogtreecommitdiff
path: root/Core/EM/KbcEmul/KbcOhci.h
blob: fa8f0b6e87ba7fa6e0f418f5916e36cceedd7c39 (plain)
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                      **
//**                                                                  **
//**********************************************************************
//**********************************************************************