]> git.proxmox.com Git - mirror_edk2.git/blame - QuarkSocPkg/QuarkSouthCluster/Usb/Ohci/Dxe/OhciUrb.h
ArmPkg/CompilerIntrinsicsLib: Add uread, uwrite GCC assembly sources
[mirror_edk2.git] / QuarkSocPkg / QuarkSouthCluster / Usb / Ohci / Dxe / OhciUrb.h
CommitLineData
9b6bbcdb
MK
1/** @file\r
2Provides some data struct used by OHCI controller driver.\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#ifndef _OHCI_URB_H\r
12#define _OHCI_URB_H\r
13\r
14#include "Descriptor.h"\r
15\r
16\r
17//\r
18// Func List\r
19//\r
20\r
21\r
22/**\r
23\r
24 Create a TD\r
25\r
26 @Param Ohc UHC private data\r
27\r
28 @retval TD structure pointer\r
29\r
30**/\r
31TD_DESCRIPTOR *\r
32OhciCreateTD (\r
33 IN USB_OHCI_HC_DEV *Ohc\r
34 );\r
35\r
36/**\r
37\r
38 Free a TD\r
39\r
40 @Param Ohc UHC private data\r
41 @Param Td Pointer to a TD to free\r
42\r
43 @retval EFI_SUCCESS TD freed\r
44\r
45**/\r
46EFI_STATUS\r
47OhciFreeTD (\r
48 IN USB_OHCI_HC_DEV *Ohc,\r
49 IN TD_DESCRIPTOR *Td\r
50 );\r
51\r
52/**\r
53\r
54 Create a ED\r
55\r
56 @Param Ohc Device private data\r
57\r
58 @retval ED descriptor pointer\r
59\r
60**/\r
61ED_DESCRIPTOR *\r
62OhciCreateED (\r
63 USB_OHCI_HC_DEV *Ohc\r
64 );\r
65\r
66\r
67/**\r
68\r
69 Free a ED\r
70\r
71 @Param Ohc UHC private data\r
72 @Param Ed Pointer to a ED to free\r
73\r
74 @retval EFI_SUCCESS ED freed\r
75\r
76**/\r
77\r
78EFI_STATUS\r
79OhciFreeED (\r
80 IN USB_OHCI_HC_DEV *Ohc,\r
81 IN ED_DESCRIPTOR *Ed\r
82 );\r
83\r
84/**\r
85\r
86 Free ED\r
87\r
88 @Param Ohc Device private data\r
89 @Param Ed Pointer to a ED to free\r
90\r
91 @retval EFI_SUCCESS ED freed\r
92\r
93**/\r
94EFI_STATUS\r
95OhciFreeAllTDFromED (\r
96 IN USB_OHCI_HC_DEV *Ohc,\r
97 IN ED_DESCRIPTOR *Ed\r
98 );\r
99\r
100/**\r
101\r
102 Find a working ED match the requirement\r
103\r
104 @Param EdHead Head of the ED list\r
105 @Param DeviceAddress Device address to search\r
106 @Param EndPointNum End point num to search\r
107 @Param EdDir ED Direction to search\r
108\r
109 @retval ED descriptor searched\r
110\r
111**/\r
112\r
113ED_DESCRIPTOR *\r
114OhciFindWorkingEd (\r
115 IN ED_DESCRIPTOR *EdHead,\r
116 IN UINT8 DeviceAddress,\r
117 IN UINT8 EndPointNum,\r
118 IN UINT8 EdDir\r
119 );\r
120\r
121\r
122/**\r
123\r
124 Initialize interrupt list.\r
125\r
126 @Param Ohc Device private data\r
127\r
128 @retval EFI_SUCCESS Initialization done\r
129\r
130**/\r
131EFI_STATUS\r
132OhciInitializeInterruptList (\r
133 USB_OHCI_HC_DEV *Ohc\r
134 );\r
135\r
136/**\r
137\r
138 Attach an ED\r
139\r
140 @Param Ed Ed to be attached\r
141 @Param NewEd Ed to attach\r
142\r
143 @retval EFI_SUCCESS NewEd attached to Ed\r
144 @retval EFI_INVALID_PARAMETER Ed is NULL\r
145\r
146**/\r
147EFI_STATUS\r
148OhciAttachED (\r
149 IN ED_DESCRIPTOR *Ed,\r
150 IN ED_DESCRIPTOR *NewEd\r
151 );\r
152\r
153/**\r
154\r
155 Count ED number on a ED chain\r
156\r
157 @Param Ed Head of the ED chain\r
158\r
159 @retval ED number on the chain\r
160\r
161**/\r
162\r
163UINTN\r
164CountEdNum (\r
165 IN ED_DESCRIPTOR *Ed\r
166 );\r
167\r
168/**\r
169\r
170 Find the minimal burn ED list on a specific depth level\r
171\r
172 @Param Ohc Device private data\r
173 @Param Depth Depth level\r
174\r
175 @retval ED list found\r
176\r
177**/\r
178\r
179ED_DESCRIPTOR *\r
180OhciFindMinInterruptEDList (\r
181 IN USB_OHCI_HC_DEV *Ohc,\r
182 IN UINT32 Depth\r
183 );\r
184\r
185/**\r
186\r
187 Attach an ED to an ED list\r
188\r
189 @Param OHC UHC private data\r
190 @Param ListType Type of the ED list\r
191 @Param Ed ED to attach\r
192 @Param EdList ED list to be attached\r
193\r
194 @retval EFI_SUCCESS ED attached to ED list\r
195\r
196**/\r
197ED_DESCRIPTOR *\r
198OhciAttachEDToList (\r
199 IN USB_OHCI_HC_DEV *Ohc,\r
200 IN DESCRIPTOR_LIST_TYPE ListType,\r
201 IN ED_DESCRIPTOR *Ed,\r
202 IN ED_DESCRIPTOR *EdList\r
203 );\r
204\r
205/**\r
206\r
207 Remove interrupt EDs that match requirement\r
208\r
209 @Param Ohc UHC private data\r
210 @Param IntEd The address of Interrupt endpoint\r
211\r
212 @retval EFI_SUCCESS EDs match requirement removed\r
213\r
214**/\r
215\r
216EFI_STATUS\r
217OhciFreeInterruptEdByEd (\r
218 IN USB_OHCI_HC_DEV *Ohc,\r
219 IN ED_DESCRIPTOR *IntEd\r
220 );\r
221\r
222/**\r
223\r
224 Remove interrupt EDs that match requirement\r
225\r
226 @Param Ohc UHC private data\r
227 @Param FunctionAddress Requirement on function address\r
228 @Param EndPointNum Requirement on end point number\r
229\r
230 @retval EFI_SUCCESS EDs match requirement removed\r
231\r
232**/\r
233EFI_STATUS\r
234OhciFreeInterruptEdByAddr (\r
235 IN USB_OHCI_HC_DEV *Ohc,\r
236 IN UINT8 FunctionAddress,\r
237 IN UINT8 EndPointNum\r
238 );\r
239\r
240\r
241/**\r
242\r
243 Link Td2 to the end of Td1\r
244\r
245 @Param Td1 TD to be linked\r
246 @Param Td2 TD to link\r
247\r
248 @retval EFI_SUCCESS TD successfully linked\r
249 @retval EFI_INVALID_PARAMETER Td1 is NULL\r
250\r
251**/\r
252EFI_STATUS\r
253OhciLinkTD (\r
254 IN TD_DESCRIPTOR *Td1,\r
255 IN TD_DESCRIPTOR *Td2\r
256 );\r
257\r
258\r
259/**\r
260\r
261 Attach TD list to ED\r
262\r
263 @Param Ed ED which TD list attach on\r
264 @Param HeadTd Head of the TD list to attach\r
265\r
266 @retval EFI_SUCCESS TD list attached on the ED\r
267\r
268**/\r
269EFI_STATUS\r
270OhciAttachTDListToED (\r
271 IN ED_DESCRIPTOR *Ed,\r
272 IN TD_DESCRIPTOR *HeadTd\r
273 );\r
274\r
275\r
276/**\r
277\r
278 Set value to ED specific field\r
279\r
280 @Param Ed ED to be set\r
281 @Param Field Field to be set\r
282 @Param Value Value to set\r
283\r
284 @retval EFI_SUCCESS Value set\r
285\r
286**/\r
287EFI_STATUS\r
288OhciSetEDField (\r
289 IN ED_DESCRIPTOR *Ed,\r
290 IN UINT32 Field,\r
291 IN UINT32 Value\r
292 );\r
293\r
294\r
295/**\r
296\r
297 Get value from an ED's specific field\r
298\r
299 @Param Ed ED pointer\r
300 @Param Field Field to get value from\r
301\r
302 @retval Value of the field\r
303\r
304**/\r
305UINT32\r
306OhciGetEDField (\r
307 IN ED_DESCRIPTOR *Ed,\r
308 IN UINT32 Field\r
309 );\r
310\r
311\r
312/**\r
313\r
314 Set value to TD specific field\r
315\r
316 @Param Td TD to be set\r
317 @Param Field Field to be set\r
318 @Param Value Value to set\r
319\r
320 @retval EFI_SUCCESS Value set\r
321\r
322**/\r
323EFI_STATUS\r
324OhciSetTDField (\r
325 IN TD_DESCRIPTOR *Td,\r
326 IN UINT32 Field,\r
327 IN UINT32 Value\r
328 );\r
329\r
330\r
331/**\r
332\r
333 Get value from ED specific field\r
334\r
335 @Param Td TD pointer\r
336 @Param Field Field to get value from\r
337\r
338 @retval Value of the field\r
339\r
340**/\r
341\r
342UINT32\r
343OhciGetTDField (\r
344 IN TD_DESCRIPTOR *Td,\r
345 IN UINT32 Field\r
346 );\r
347/**\r
348\r
349 Free the Ed,Td,buffer that were created during transferring\r
350\r
351 @Param Ohc Device private data\r
352**/\r
353\r
354VOID\r
355OhciFreeDynamicIntMemory(\r
356 IN USB_OHCI_HC_DEV *Ohc\r
357 );\r
358\r
359/**\r
360\r
361 Free the Ed that were initilized during driver was starting,\r
362 those memory were used as interrupt ED head\r
363\r
364 @Param Ohc Device private data\r
365\r
366\r
367**/\r
368VOID\r
369OhciFreeFixedIntMemory (\r
370 IN USB_OHCI_HC_DEV *Ohc\r
371 );\r
372/**\r
373\r
374 Release all OHCI used memory when OHCI going to quit\r
375\r
376 @Param Ohc Device private data\r
377\r
378 @retval EFI_SUCCESS Memory released\r
379\r
380**/\r
381\r
382EFI_STATUS\r
383OhciFreeIntTransferMemory (\r
384 IN USB_OHCI_HC_DEV *Ohc\r
385 );\r
386\r
387#endif\r