]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Bus/Pci/EhciDxe/EhciSched.h
clean up the un-suitable ';' location when declaring the functions.
[mirror_edk2.git] / MdeModulePkg / Bus / Pci / EhciDxe / EhciSched.h
CommitLineData
913cb9dc 1/** @file\r
2\r
78c2ffb5 3 This file contains the definination for host controller schedule routines.\r
4\r
913cb9dc 5Copyright (c) 2007, Intel Corporation\r
6All rights reserved. This program and the accompanying materials\r
7are licensed and made available under the terms and conditions of the BSD License\r
8which accompanies this distribution. The full text of the license may be found at\r
9http://opensource.org/licenses/bsd-license.php\r
10\r
11THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13\r
78c2ffb5 14**/\r
913cb9dc 15\r
78c2ffb5 16#ifndef _EFI_EHCI_SCHED_H_\r
17#define _EFI_EHCI_SCHED_H_\r
913cb9dc 18\r
913cb9dc 19\r
78c2ffb5 20/**\r
21 Initialize the schedule data structure such as frame list.\r
913cb9dc 22\r
78c2ffb5 23 @param Ehc The EHCI device to init schedule data for.\r
913cb9dc 24\r
78c2ffb5 25 @retval EFI_OUT_OF_RESOURCES Failed to allocate resource to init schedule data.\r
26 @retval EFI_SUCCESS The schedule data is initialized.\r
913cb9dc 27\r
78c2ffb5 28**/\r
913cb9dc 29EFI_STATUS\r
30EhcInitSched (\r
31 IN USB2_HC_DEV *Ehc\r
ed66e1bc 32 );\r
913cb9dc 33\r
34\r
913cb9dc 35/**\r
36 Free the schedule data. It may be partially initialized.\r
37\r
78c2ffb5 38 @param Ehc The EHCI device.\r
913cb9dc 39\r
40 @return None\r
41\r
42**/\r
43VOID\r
44EhcFreeSched (\r
45 IN USB2_HC_DEV *Ehc\r
ed66e1bc 46 );\r
913cb9dc 47\r
48\r
913cb9dc 49/**\r
50 Link the queue head to the asynchronous schedule list.\r
51 UEFI only supports one CTRL/BULK transfer at a time\r
52 due to its interfaces. This simplifies the AsynList\r
53 management: A reclamation header is always linked to\r
54 the AsyncListAddr, the only active QH is appended to it.\r
55\r
78c2ffb5 56 @param Ehc The EHCI device.\r
57 @param Qh The queue head to link.\r
913cb9dc 58\r
78c2ffb5 59 @return None.\r
913cb9dc 60\r
61**/\r
62VOID\r
63EhcLinkQhToAsync (\r
64 IN USB2_HC_DEV *Ehc,\r
65 IN EHC_QH *Qh\r
ed66e1bc 66 );\r
913cb9dc 67\r
68\r
69/**\r
70 Unlink a queue head from the asynchronous schedule list.\r
78c2ffb5 71 Need to synchronize with hardware.\r
913cb9dc 72\r
78c2ffb5 73 @param Ehc The EHCI device.\r
74 @param Qh The queue head to unlink.\r
913cb9dc 75\r
78c2ffb5 76 @return None.\r
913cb9dc 77\r
78**/\r
79VOID\r
80EhcUnlinkQhFromAsync (\r
81 IN USB2_HC_DEV *Ehc,\r
82 IN EHC_QH *Qh\r
ed66e1bc 83 );\r
913cb9dc 84\r
85\r
86/**\r
87 Link a queue head for interrupt transfer to the periodic\r
88 schedule frame list. This code is very much the same as\r
89 that in UHCI.\r
90\r
78c2ffb5 91 @param Ehc The EHCI device.\r
92 @param Qh The queue head to link.\r
913cb9dc 93\r
78c2ffb5 94 @return None.\r
913cb9dc 95\r
96**/\r
97VOID\r
98EhcLinkQhToPeriod (\r
99 IN USB2_HC_DEV *Ehc,\r
100 IN EHC_QH *Qh\r
ed66e1bc 101 );\r
913cb9dc 102\r
103\r
104/**\r
105 Unlink an interrupt queue head from the periodic\r
78c2ffb5 106 schedule frame list.\r
913cb9dc 107\r
78c2ffb5 108 @param Ehc The EHCI device.\r
109 @param Qh The queue head to unlink.\r
913cb9dc 110\r
78c2ffb5 111 @return None.\r
913cb9dc 112\r
113**/\r
114VOID\r
115EhcUnlinkQhFromPeriod (\r
116 IN USB2_HC_DEV *Ehc,\r
117 IN EHC_QH *Qh\r
ed66e1bc 118 );\r
913cb9dc 119\r
120\r
121\r
122/**\r
123 Execute the transfer by polling the URB. This is a synchronous operation.\r
124\r
78c2ffb5 125 @param Ehc The EHCI device.\r
126 @param Urb The URB to execute.\r
127 @param TimeOut The time to wait before abort, in millisecond.\r
913cb9dc 128\r
78c2ffb5 129 @retval EFI_DEVICE_ERROR The transfer failed due to transfer error.\r
130 @retval EFI_TIMEOUT The transfer failed due to time out.\r
131 @retval EFI_SUCCESS The transfer finished OK.\r
913cb9dc 132\r
133**/\r
134EFI_STATUS\r
135EhcExecTransfer (\r
136 IN USB2_HC_DEV *Ehc,\r
137 IN URB *Urb,\r
138 IN UINTN TimeOut\r
ed66e1bc 139 );\r
913cb9dc 140\r
141\r
142/**\r
143 Delete a single asynchronous interrupt transfer for\r
78c2ffb5 144 the device and endpoint.\r
913cb9dc 145\r
78c2ffb5 146 @param Ehc The EHCI device.\r
147 @param DevAddr The address of the target device.\r
148 @param EpNum The endpoint of the target.\r
149 @param DataToggle Return the next data toggle to use.\r
913cb9dc 150\r
78c2ffb5 151 @retval EFI_SUCCESS An asynchronous transfer is removed.\r
152 @retval EFI_NOT_FOUND No transfer for the device is found.\r
913cb9dc 153\r
154**/\r
155EFI_STATUS\r
156EhciDelAsyncIntTransfer (\r
157 IN USB2_HC_DEV *Ehc,\r
158 IN UINT8 DevAddr,\r
159 IN UINT8 EpNum,\r
160 OUT UINT8 *DataToggle\r
ed66e1bc 161 );\r
913cb9dc 162\r
163\r
164/**\r
78c2ffb5 165 Remove all the asynchronous interrutp transfers.\r
913cb9dc 166\r
78c2ffb5 167 @param Ehc The EHCI device.\r
913cb9dc 168\r
78c2ffb5 169 @return None.\r
913cb9dc 170\r
171**/\r
172VOID\r
173EhciDelAllAsyncIntTransfers (\r
174 IN USB2_HC_DEV *Ehc\r
ed66e1bc 175 );\r
913cb9dc 176\r
177\r
913cb9dc 178/**\r
78c2ffb5 179 Interrupt transfer periodic check handler.\r
913cb9dc 180\r
78c2ffb5 181 @param Event Interrupt event.\r
182 @param Context Pointer to USB2_HC_DEV.\r
913cb9dc 183\r
78c2ffb5 184 @return None.\r
913cb9dc 185\r
186**/\r
187VOID\r
188EhcMoniteAsyncRequests (\r
189 IN EFI_EVENT Event,\r
190 IN VOID *Context\r
ed66e1bc 191 );\r
913cb9dc 192\r
193#endif\r