1 /*++
2 
3   Copyright (c) 2004  - 2014, Intel Corporation. All rights reserved.<BR>
4 
5 
6   This program and the accompanying materials are licensed and made available under
7 
8   the terms and conditions of the BSD License that accompanies this distribution.
9 
10   The full text of the license may be found at
11 
12   http://opensource.org/licenses/bsd-license.php.
13 
14 
15 
16   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
17 
18   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
19 
20 
21 
22 
23 **/
24 
25 #ifndef __BASE_USBDEVICEMODE_LIB_H__
26 #define __BASE_USBDEVICEMODE_LIB_H__
27 
28 #pragma pack(1)
29 typedef struct {
30     UINT8  bLength;
31     UINT8  bDescriptorType;
32     UINT8  bMaxBurst;
33     UINT8  bmAttributes;
34     UINT16 wBytesPerInterval;
35 } endpointCompanionDescriptor;
36 #pragma pack()
37 
38 #pragma pack(1)
39 typedef struct {
40     UINT8  bLength;
41     UINT8  bDescriptorType;
42     UINT8  bEndpointAddress;
43     UINT8  bmAttributes;
44     UINT16 wMaxPacketSize;
45     UINT8  bInterval;
46 } endpointDescriptor;
47 #pragma pack()
48 
49 typedef struct {
50     endpointDescriptor          *pEpDesc;
51     endpointCompanionDescriptor *pEpCompDesc;
52 } USB_DEV_EP_INFO;    //usbdEpInfo;
53 
54 typedef struct {
55     VOID        *pBuf;
56     UINT32    dataLen;
57 } USBD_IO_INFO;
58 
59 typedef struct {
60     USBD_IO_INFO     ioInfo;
61     USB_DEV_EP_INFO  epInfo;
62 } USBD_IO_REQ;
63 
64 UINTN
65 EFIAPI
66 usbdInitDCI (
67   VOID
68   );
69 
70 BOOLEAN
71 EFIAPI
72 fbInit (
73   OUT  VOID  *pParams
74   );
75 
76 BOOLEAN
77 EFIAPI
78 fbDeinit (
79   VOID
80   );
81 
82 BOOLEAN
83 EFIAPI
84 fbStart (
85   VOID
86   );
87 
88 BOOLEAN
89 EFIAPI
90 fbStop (
91   VOID
92   );
93 
94 BOOLEAN
95 EFIAPI
96 usbdSetMmioBar (
97   UINT32 mmioBar
98   );
99 
100 BOOLEAN
101 EFIAPI
102 udciDeinit (
103   VOID    *pUdciHndl,
104   UINT32  flags
105   );
106 
107 BOOLEAN
108 EFIAPI
109 udciIsr (
110   VOID    *pUdciHndl
111   );
112 
113 BOOLEAN
114 EFIAPI
115 udciConnect (
116   VOID    *pUdciHndl
117   );
118 
119 BOOLEAN
120 EFIAPI
121 udciDisconnect (
122   VOID    *pUdciHndl
123   );
124 
125 BOOLEAN
126 EFIAPI
127 udciSetAddress (
128   VOID    *pUdciHndl,
129   UINT8   address
130   );
131 
132 BOOLEAN
133 EFIAPI
134 udciInitEp (
135   VOID            *pUdciHndl,
136   USB_DEV_EP_INFO *pEpInfo
137   );
138 
139 BOOLEAN
140 EFIAPI
141 udciEnableEp (
142   VOID            *pUdciHndl,
143   USB_DEV_EP_INFO *pEpInfo
144   );
145 
146 BOOLEAN
147 EFIAPI
148 udciDisableEp (
149   VOID            *pUdciHndl,
150   USB_DEV_EP_INFO *pEpInfo
151   );
152 
153 BOOLEAN
154 EFIAPI
155 udciStallEp (
156   VOID            *pUdciHndl,
157   USB_DEV_EP_INFO *pEpInfo
158   );
159 
160 BOOLEAN
161 EFIAPI
162 udciClearStallEp (
163   VOID            *pUdciHndl,
164   USB_DEV_EP_INFO *pEpInfo
165   );
166 
167 
168 BOOLEAN
169 EFIAPI
170 udciEp0TxStatus (
171   VOID            *pUdciHndl
172   );
173 
174 
175 BOOLEAN
176 EFIAPI
177 udciEpTxData (
178   VOID        *pUdciHndl,
179   USBD_IO_REQ *pIoReq
180   );
181 
182 BOOLEAN
183 EFIAPI
184 udciEpRxData (
185   VOID        *pUdciHndl,
186   USBD_IO_REQ *pIoReq
187   );
188 
189 BOOLEAN
190 EFIAPI
191 udciRegisterCallbacks (
192   VOID            *pUdciHndl
193   );
194 
195 #endif
196