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