]> git.proxmox.com Git - mirror_edk2.git/blame - QuarkSocPkg/QuarkSouthCluster/Usb/Ohci/Dxe/OhciSched.h
QuarkSocPkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / QuarkSocPkg / QuarkSouthCluster / Usb / Ohci / Dxe / OhciSched.h
CommitLineData
9b6bbcdb
MK
1/** @file\r
2This file contains the definination for host controller schedule routines.\r
3\r
4Copyright (c) 2013-2015 Intel Corporation.\r
5\r
c9f231d0 6SPDX-License-Identifier: BSD-2-Clause-Patent\r
9b6bbcdb
MK
7\r
8**/\r
9\r
10\r
11\r
12#ifndef _OHCI_SCHED_H\r
13#define _OHCI_SCHED_H\r
14\r
15#include "Descriptor.h"\r
16\r
17#define HCCA_MEM_SIZE 256\r
18#define GRID_SIZE 16\r
19#define GRID_SHIFT 4\r
20\r
21typedef struct _INTERRUPT_CONTEXT_ENTRY INTERRUPT_CONTEXT_ENTRY;\r
22\r
23struct _INTERRUPT_CONTEXT_ENTRY{\r
24 UINT8 DeviceAddress;\r
25 UINT8 EndPointAddress;\r
26 ED_DESCRIPTOR *Ed;\r
27 TD_DESCRIPTOR *DataTd;\r
28 BOOLEAN IsSlowDevice;\r
29 UINT8 MaxPacketLength;\r
30 UINTN PollingInterval;\r
31 EFI_ASYNC_USB_TRANSFER_CALLBACK CallBackFunction;\r
32 VOID *Context;\r
33 BOOLEAN IsPeriodic;\r
34 VOID *Buffer;\r
35 UINTN DataLength;\r
36 VOID *UCBuffer;\r
37 VOID *UCBufferMapping;\r
38 UINT8 *Toggle;\r
39 INTERRUPT_CONTEXT_ENTRY *NextEntry;\r
40};\r
41\r
42\r
43typedef struct {\r
44 UINT32 ErrorCode;\r
45 UINT8 NextToggle;\r
46} OHCI_ED_RESULT;\r
47\r
48/**\r
49\r
50 Add an item of interrupt context\r
51\r
52 @param Ohc UHC private data\r
53 @param NewEntry New entry to add\r
54\r
55 @retval EFI_SUCCESS Item successfully added\r
56\r
57**/\r
58EFI_STATUS\r
59OhciAddInterruptContextEntry (\r
60 IN USB_OHCI_HC_DEV *Ohc,\r
61 IN INTERRUPT_CONTEXT_ENTRY *NewEntry\r
62 );\r
63\r
64/**\r
65\r
66 Free a interrupt context entry\r
67\r
68 @param Ohc UHC private data\r
69 @param Entry Pointer to an interrupt context entry\r
70\r
71 @retval EFI_SUCCESS Entry freed\r
72 @retval EFI_INVALID_PARAMETER Entry is NULL\r
73\r
74**/\r
75EFI_STATUS\r
76OhciFreeInterruptContextEntry (\r
77 IN USB_OHCI_HC_DEV *Ohc,\r
78 IN INTERRUPT_CONTEXT_ENTRY *Entry\r
79 );\r
80\r
81/**\r
82\r
83 Free entries match the device address and endpoint address\r
84\r
85 @Param Ohc UHC private date\r
86 @Param DeviceAddress Item to free must match this device address\r
87 @Param EndPointAddress Item to free must match this end point address\r
88 @Param DataToggle DataToggle for output\r
89\r
90 @retval EFI_SUCCESS Items match the requirement removed\r
91\r
92**/\r
93EFI_STATUS\r
94OhciFreeInterruptContext(\r
95 IN USB_OHCI_HC_DEV *Ohc,\r
96 IN UINT8 DeviceAddress,\r
97 IN UINT8 EndPointAddress,\r
98 OUT UINT8 *DataToggle\r
99 );\r
100\r
101\r
102/**\r
103\r
104 Convert Error code from OHCI format to EFI format\r
105\r
106 @Param ErrorCode ErrorCode in OHCI format\r
107\r
108 @retval ErrorCode in EFI format\r
109\r
110**/\r
111UINT32\r
112ConvertErrorCode (\r
113 IN UINT32 ErrorCode\r
114 );\r
115\r
116\r
117/**\r
118\r
119 Check TDs Results\r
120\r
121 @Param Ohc UHC private data\r
122 @Param Td TD_DESCRIPTOR\r
123 @Param Result Result to return\r
124\r
125 @retval TRUE means OK\r
126 @retval FLASE means Error or Short packet\r
127\r
128**/\r
129BOOLEAN\r
130OhciCheckTDsResults (\r
131 IN USB_OHCI_HC_DEV *Ohc,\r
132 IN TD_DESCRIPTOR *Td,\r
133 OUT UINT32 *Result\r
134 );\r
135/**\r
136\r
137 Check the task status on an ED\r
138\r
139 @Param Ed Pointer to the ED task that TD hooked on\r
140 @Param HeadTd TD header for current transaction\r
141\r
142 @retval Task Status Code\r
143\r
144**/\r
145\r
146UINT32\r
147CheckEDStatus (\r
148 IN ED_DESCRIPTOR *Ed,\r
149 IN TD_DESCRIPTOR *HeadTd,\r
150 OUT OHCI_ED_RESULT *EdResult\r
151 );\r
152/**\r
153\r
154 Check the task status\r
155\r
156 @Param Ohc UHC private data\r
157 @Param ListType Pipe type\r
158 @Param Ed Pointer to the ED task hooked on\r
159 @Param HeadTd Head of TD corresponding to the task\r
160 @Param ErrorCode return the ErrorCode\r
161\r
162 @retval EFI_SUCCESS Task done\r
163 @retval EFI_NOT_READY Task on processing\r
164 @retval EFI_DEVICE_ERROR Some error occured\r
165\r
166**/\r
167EFI_STATUS\r
168CheckIfDone (\r
169 IN USB_OHCI_HC_DEV *Ohc,\r
170 IN DESCRIPTOR_LIST_TYPE ListType,\r
171 IN ED_DESCRIPTOR *Ed,\r
172 IN TD_DESCRIPTOR *HeadTd,\r
173 OUT OHCI_ED_RESULT *EdResult\r
174 );\r
175\r
176/**\r
177\r
178 Convert TD condition code to Efi Status\r
179\r
180 @Param ConditionCode Condition code to convert\r
181\r
182 @retval EFI_SUCCESS No error occured\r
183 @retval EFI_NOT_READY TD still on processing\r
184 @retval EFI_DEVICE_ERROR Error occured in processing TD\r
185\r
186**/\r
187\r
188EFI_STATUS\r
189OhciTDConditionCodeToStatus (\r
190 IN UINT32 ConditionCode\r
191 );\r
192\r
193/**\r
194\r
195 Invoke callbacks hooked on done TDs\r
196\r
197 @Param Entry Interrupt transfer transaction information data structure\r
198 @Param Context Ohc private data\r
199\r
200**/\r
201\r
202VOID\r
203OhciInvokeInterruptCallBack(\r
204 IN INTERRUPT_CONTEXT_ENTRY *Entry,\r
205 IN UINT32 Result\r
206);\r
207\r
208\r
209/**\r
210\r
211 Timer to submit periodic interrupt transfer, and invoke callbacks hooked on done TDs\r
212\r
213 @param Event Event handle\r
214 @param Context Device private data\r
215\r
216**/\r
217\r
218VOID\r
219EFIAPI\r
220OhciHouseKeeper (\r
221 IN EFI_EVENT Event,\r
222 IN VOID *Context\r
223 );\r
224\r
225#endif\r