]> begriffs open source - cmsis/blob - CMSIS/Driver/Include/Driver_USBH.h
Update README.md
[cmsis] / CMSIS / Driver / Include / Driver_USBH.h
1 /*\r
2  * Copyright (c) 2013-2016 ARM Limited. All rights reserved.\r
3  *\r
4  * SPDX-License-Identifier: Apache-2.0\r
5  *\r
6  * Licensed under the Apache License, Version 2.0 (the License); you may\r
7  * not use this file except in compliance with the License.\r
8  * You may obtain a copy of the License at\r
9  *\r
10  * http://www.apache.org/licenses/LICENSE-2.0\r
11  *\r
12  * Unless required by applicable law or agreed to in writing, software\r
13  * distributed under the License is distributed on an AS IS BASIS, WITHOUT\r
14  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
15  * See the License for the specific language governing permissions and\r
16  * limitations under the License.\r
17  */\r
18 \r
19 /* History:\r
20  *  Version 2.01\r
21  *    Renamed structure ARM_USBH_EP_HANDLE to ARM_USBH_PIPE_HANDLE\r
22  *    Renamed functions ARM_USBH_Endpoint... to ARM_USBH_Pipe...\r
23  *    Renamed function ARM_USBH_SignalEndpointEvent to ARM_USBH_SignalPipeEvent\r
24  *  Version 2.00\r
25  *    Replaced function ARM_USBH_PortPowerOnOff with ARM_USBH_PortVbusOnOff\r
26  *    Changed function ARM_USBH_EndpointCreate parameters\r
27  *    Replaced function ARM_USBH_EndpointConfigure with ARM_USBH_EndpointModify\r
28  *    Replaced function ARM_USBH_EndpointClearHalt with ARM_USBH_EndpointReset\r
29  *    Replaced function ARM_USBH_URB_Submit with ARM_USBH_EndpointTransfer\r
30  *    Replaced function ARM_USBH_URB_Abort with ARM_USBH_EndpointTransferAbort\r
31  *    Added function ARM_USBH_EndpointTransferGetResult\r
32  *    Added function ARM_USBH_GetFrameNumber\r
33  *    Changed prefix ARM_DRV -> ARM_DRIVER\r
34  *  Version 1.20\r
35  *    Added API for OHCI/EHCI Host Controller Interface (HCI)\r
36  *  Version 1.10\r
37  *    Namespace prefix ARM_ added\r
38  *  Version 1.00\r
39  *    Initial release\r
40  */\r
41 \r
42 #ifndef __DRIVER_USBH_H\r
43 #define __DRIVER_USBH_H\r
44 \r
45 #include "Driver_USB.h"\r
46 \r
47 #define ARM_USBH_API_VERSION ARM_DRIVER_VERSION_MAJOR_MINOR(2,01)  /* API version */\r
48 \r
49 \r
50 /**\r
51 \brief USB Host Port State\r
52 */\r
53 typedef struct _ARM_USBH_PORT_STATE {\r
54   uint32_t connected   : 1;             ///< USB Host Port connected flag\r
55   uint32_t overcurrent : 1;             ///< USB Host Port overcurrent flag\r
56   uint32_t speed       : 2;             ///< USB Host Port speed setting (ARM_USB_SPEED_xxx)\r
57 } ARM_USBH_PORT_STATE;\r
58 \r
59 /**\r
60 \brief USB Host Pipe Handle\r
61 */\r
62 typedef uint32_t ARM_USBH_PIPE_HANDLE;\r
63 #define ARM_USBH_EP_HANDLE ARM_USBH_PIPE_HANDLE  /* Legacy name */\r
64 \r
65 \r
66 /****** USB Host Packet Information *****/\r
67 #define ARM_USBH_PACKET_TOKEN_Pos         0\r
68 #define ARM_USBH_PACKET_TOKEN_Msk        (0x0FUL << ARM_USBH_PACKET_TOKEN_Pos)\r
69 #define ARM_USBH_PACKET_SETUP            (0x01UL << ARM_USBH_PACKET_TOKEN_Pos)  ///< SETUP Packet\r
70 #define ARM_USBH_PACKET_OUT              (0x02UL << ARM_USBH_PACKET_TOKEN_Pos)  ///< OUT Packet\r
71 #define ARM_USBH_PACKET_IN               (0x03UL << ARM_USBH_PACKET_TOKEN_Pos)  ///< IN Packet\r
72 #define ARM_USBH_PACKET_PING             (0x04UL << ARM_USBH_PACKET_TOKEN_Pos)  ///< PING Packet\r
73 \r
74 #define ARM_USBH_PACKET_DATA_Pos          4\r
75 #define ARM_USBH_PACKET_DATA_Msk         (0x0FUL << ARM_USBH_PACKET_DATA_Pos)\r
76 #define ARM_USBH_PACKET_DATA0            (0x01UL << ARM_USBH_PACKET_DATA_Pos)   ///< DATA0 PID\r
77 #define ARM_USBH_PACKET_DATA1            (0x02UL << ARM_USBH_PACKET_DATA_Pos)   ///< DATA1 PID\r
78 \r
79 #define ARM_USBH_PACKET_SPLIT_Pos         8\r
80 #define ARM_USBH_PACKET_SPLIT_Msk        (0x0FUL << ARM_USBH_PACKET_SPLIT_Pos)\r
81 #define ARM_USBH_PACKET_SSPLIT           (0x08UL << ARM_USBH_PACKET_SPLIT_Pos)  ///< SSPLIT Packet\r
82 #define ARM_USBH_PACKET_SSPLIT_S         (0x09UL << ARM_USBH_PACKET_SPLIT_Pos)  ///< SSPLIT Packet: Data Start\r
83 #define ARM_USBH_PACKET_SSPLIT_E         (0x0AUL << ARM_USBH_PACKET_SPLIT_Pos)  ///< SSPLIT Packet: Data End\r
84 #define ARM_USBH_PACKET_SSPLIT_S_E       (0x0BUL << ARM_USBH_PACKET_SPLIT_Pos)  ///< SSPLIT Packet: Data All\r
85 #define ARM_USBH_PACKET_CSPLIT           (0x0CUL << ARM_USBH_PACKET_SPLIT_Pos)  ///< CSPLIT Packet\r
86 \r
87 #define ARM_USBH_PACKET_PRE              (1UL << 12)                            ///< PRE Token\r
88 \r
89 \r
90 /****** USB Host Port Event *****/\r
91 #define ARM_USBH_EVENT_CONNECT           (1UL << 0)     ///< USB Device Connected to Port\r
92 #define ARM_USBH_EVENT_DISCONNECT        (1UL << 1)     ///< USB Device Disconnected from Port\r
93 #define ARM_USBH_EVENT_OVERCURRENT       (1UL << 2)     ///< USB Device caused Overcurrent\r
94 #define ARM_USBH_EVENT_RESET             (1UL << 3)     ///< USB Reset completed\r
95 #define ARM_USBH_EVENT_SUSPEND           (1UL << 4)     ///< USB Suspend occurred\r
96 #define ARM_USBH_EVENT_RESUME            (1UL << 5)     ///< USB Resume occurred\r
97 #define ARM_USBH_EVENT_REMOTE_WAKEUP     (1UL << 6)     ///< USB Device activated Remote Wakeup\r
98 \r
99 /****** USB Host Pipe Event *****/\r
100 #define ARM_USBH_EVENT_TRANSFER_COMPLETE (1UL << 0)     ///< Transfer completed\r
101 #define ARM_USBH_EVENT_HANDSHAKE_NAK     (1UL << 1)     ///< NAK Handshake received\r
102 #define ARM_USBH_EVENT_HANDSHAKE_NYET    (1UL << 2)     ///< NYET Handshake received\r
103 #define ARM_USBH_EVENT_HANDSHAKE_MDATA   (1UL << 3)     ///< MDATA Handshake received\r
104 #define ARM_USBH_EVENT_HANDSHAKE_STALL   (1UL << 4)     ///< STALL Handshake received\r
105 #define ARM_USBH_EVENT_HANDSHAKE_ERR     (1UL << 5)     ///< ERR Handshake received\r
106 #define ARM_USBH_EVENT_BUS_ERROR         (1UL << 6)     ///< Bus Error detected\r
107 \r
108 \r
109 #ifndef __DOXYGEN_MW__                  // exclude from middleware documentation\r
110 \r
111 // Function documentation\r
112 /**\r
113   \fn          ARM_DRIVER_VERSION ARM_USBH_GetVersion (void)\r
114   \brief       Get driver version.\r
115   \return      \ref ARM_DRIVER_VERSION\r
116 */\r
117 /**\r
118   \fn          ARM_USBH_CAPABILITIES ARM_USBH_GetCapabilities (void)\r
119   \brief       Get driver capabilities.\r
120   \return      \ref ARM_USBH_CAPABILITIES\r
121 */\r
122 /**\r
123   \fn          int32_t ARM_USBH_Initialize (ARM_USBH_SignalPortEvent_t cb_port_event,\r
124                                             ARM_USBH_SignalPipeEvent_t cb_pipe_event)\r
125   \brief       Initialize USB Host Interface.\r
126   \param[in]   cb_port_event  Pointer to \ref ARM_USBH_SignalPortEvent\r
127   \param[in]   cb_pipe_event  Pointer to \ref ARM_USBH_SignalPipeEvent\r
128   \return      \ref execution_status\r
129 */\r
130 /**\r
131   \fn          int32_t ARM_USBH_Uninitialize (void)\r
132   \brief       De-initialize USB Host Interface.\r
133   \return      \ref execution_status\r
134 */\r
135 /**\r
136   \fn          int32_t ARM_USBH_PowerControl (ARM_POWER_STATE state)\r
137   \brief       Control USB Host Interface Power.\r
138   \param[in]   state  Power state\r
139   \return      \ref execution_status\r
140 */\r
141 /**\r
142   \fn          int32_t ARM_USBH_PortVbusOnOff (uint8_t port, bool vbus)\r
143   \brief       Root HUB Port VBUS on/off.\r
144   \param[in]   port  Root HUB Port Number\r
145   \param[in]   vbus\r
146                 - \b false VBUS off\r
147                 - \b true  VBUS on\r
148   \return      \ref execution_status\r
149 */\r
150 /**\r
151   \fn          int32_t ARM_USBH_PortReset (uint8_t port)\r
152   \brief       Do Root HUB Port Reset.\r
153   \param[in]   port  Root HUB Port Number\r
154   \return      \ref execution_status\r
155 */\r
156 /**\r
157   \fn          int32_t ARM_USBH_PortSuspend (uint8_t port)\r
158   \brief       Suspend Root HUB Port (stop generating SOFs).\r
159   \param[in]   port  Root HUB Port Number\r
160   \return      \ref execution_status\r
161 */\r
162 /**\r
163   \fn          int32_t ARM_USBH_PortResume (uint8_t port)\r
164   \brief       Resume Root HUB Port (start generating SOFs).\r
165   \param[in]   port  Root HUB Port Number\r
166   \return      \ref execution_status\r
167 */\r
168 /**\r
169   \fn          ARM_USBH_PORT_STATE ARM_USBH_PortGetState (uint8_t port)\r
170   \brief       Get current Root HUB Port State.\r
171   \param[in]   port  Root HUB Port Number\r
172   \return      Port State \ref ARM_USBH_PORT_STATE\r
173 */\r
174 /**\r
175   \fn          ARM_USBH_PIPE_HANDLE ARM_USBH_PipeCreate (uint8_t  dev_addr,\r
176                                                          uint8_t  dev_speed,\r
177                                                          uint8_t  hub_addr,\r
178                                                          uint8_t  hub_port,\r
179                                                          uint8_t  ep_addr,\r
180                                                          uint8_t  ep_type,\r
181                                                          uint16_t ep_max_packet_size,\r
182                                                          uint8_t  ep_interval)\r
183   \brief       Create Pipe in System.\r
184   \param[in]   dev_addr   Device Address\r
185   \param[in]   dev_speed  Device Speed\r
186   \param[in]   hub_addr   Hub Address\r
187   \param[in]   hub_port   Hub Port\r
188   \param[in]   ep_addr    Endpoint Address\r
189                 - ep_addr.0..3: Address\r
190                 - ep_addr.7:    Direction\r
191   \param[in]   ep_type    Endpoint Type (ARM_USB_ENDPOINT_xxx)\r
192   \param[in]   ep_max_packet_size Endpoint Maximum Packet Size\r
193   \param[in]   ep_interval        Endpoint Polling Interval\r
194   \return      Pipe Handle \ref ARM_USBH_PIPE_HANDLE\r
195 */\r
196 /**\r
197   \fn          int32_t ARM_USBH_PipeModify (ARM_USBH_PIPE_HANDLE pipe_hndl,\r
198                                             uint8_t              dev_addr,\r
199                                             uint8_t              dev_speed,\r
200                                             uint8_t              hub_addr,\r
201                                             uint8_t              hub_port,\r
202                                             uint16_t             ep_max_packet_size)\r
203   \brief       Modify Pipe in System.\r
204   \param[in]   pipe_hndl  Pipe Handle\r
205   \param[in]   dev_addr   Device Address\r
206   \param[in]   dev_speed  Device Speed\r
207   \param[in]   hub_addr   Hub Address\r
208   \param[in]   hub_port   Hub Port\r
209   \param[in]   ep_max_packet_size Endpoint Maximum Packet Size\r
210   \return      \ref execution_status\r
211 */\r
212 /**\r
213   \fn          int32_t ARM_USBH_PipeDelete (ARM_USBH_PIPE_HANDLE pipe_hndl)\r
214   \brief       Delete Pipe from System.\r
215   \param[in]   pipe_hndl  Pipe Handle\r
216   \return      \ref execution_status\r
217 */\r
218 /**\r
219   \fn          int32_t ARM_USBH_PipeReset (ARM_USBH_PIPE_HANDLE pipe_hndl)\r
220   \brief       Reset Pipe.\r
221   \param[in]   pipe_hndl  Pipe Handle\r
222   \return      \ref execution_status\r
223 */\r
224 /**\r
225   \fn          int32_t ARM_USBH_PipeTransfer (ARM_USBH_PIPE_HANDLE pipe_hndl,\r
226                                               uint32_t             packet,\r
227                                               uint8_t             *data,\r
228                                               uint32_t             num)\r
229   \brief       Transfer packets through USB Pipe.\r
230   \param[in]   pipe_hndl  Pipe Handle\r
231   \param[in]   packet     Packet information\r
232   \param[in]   data       Pointer to buffer with data to send or for data to receive\r
233   \param[in]   num        Number of data bytes to transfer\r
234   \return      \ref execution_status\r
235 */\r
236 /**\r
237   \fn          uint32_t ARM_USBH_PipeTransferGetResult (ARM_USBH_PIPE_HANDLE pipe_hndl)\r
238   \brief       Get result of USB Pipe transfer.\r
239   \param[in]   pipe_hndl  Pipe Handle\r
240   \return      number of successfully transferred data bytes\r
241 */\r
242 /**\r
243   \fn          int32_t ARM_USBH_PipeTransferAbort (ARM_USBH_PIPE_HANDLE pipe_hndl)\r
244   \brief       Abort current USB Pipe transfer.\r
245   \param[in]   pipe_hndl  Pipe Handle\r
246   \return      \ref execution_status\r
247 */\r
248 /**\r
249   \fn          uint16_t ARM_USBH_GetFrameNumber (void)\r
250   \brief       Get current USB Frame Number.\r
251   \return      Frame Number\r
252 */\r
253 \r
254 /**\r
255   \fn          void ARM_USBH_SignalPortEvent (uint8_t port, uint32_t event)\r
256   \brief       Signal Root HUB Port Event.\r
257   \param[in]   port  Root HUB Port Number\r
258   \param[in]   event \ref USBH_port_events\r
259   \return      none\r
260 */\r
261 /**\r
262   \fn          void ARM_USBH_SignalPipeEvent (ARM_USBH_PIPE_HANDLE pipe_hndl, uint32_t event)\r
263   \brief       Signal Pipe Event.\r
264   \param[in]   pipe_hndl  Pipe Handle\r
265   \param[in]   event  \ref USBH_pipe_events\r
266   \return      none\r
267 */\r
268 \r
269 typedef void (*ARM_USBH_SignalPortEvent_t) (uint8_t port, uint32_t event);                    ///< Pointer to \ref ARM_USBH_SignalPortEvent : Signal Root HUB Port Event.\r
270 typedef void (*ARM_USBH_SignalPipeEvent_t) (ARM_USBH_PIPE_HANDLE pipe_hndl, uint32_t event);  ///< Pointer to \ref ARM_USBH_SignalPipeEvent : Signal Pipe Event.\r
271 #define ARM_USBH_SignalEndpointEvent_t ARM_USBH_SignalPipeEvent_t  /* Legacy name */\r
272 \r
273 \r
274 /**\r
275 \brief USB Host Driver Capabilities.\r
276 */\r
277 typedef struct _ARM_USBH_CAPABILITIES {\r
278   uint32_t port_mask          : 15;     ///< Root HUB available Ports Mask\r
279   uint32_t auto_split         :  1;     ///< Automatic SPLIT packet handling\r
280   uint32_t event_connect      :  1;     ///< Signal Connect event\r
281   uint32_t event_disconnect   :  1;     ///< Signal Disconnect event\r
282   uint32_t event_overcurrent  :  1;     ///< Signal Overcurrent event\r
283 } ARM_USBH_CAPABILITIES;\r
284 \r
285 \r
286 /**\r
287 \brief Access structure of USB Host Driver.\r
288 */\r
289 typedef struct _ARM_DRIVER_USBH {\r
290   ARM_DRIVER_VERSION    (*GetVersion)            (void);                                     ///< Pointer to \ref ARM_USBH_GetVersion : Get driver version.\r
291   ARM_USBH_CAPABILITIES (*GetCapabilities)       (void);                                     ///< Pointer to \ref ARM_USBH_GetCapabilities : Get driver capabilities.\r
292   int32_t               (*Initialize)            (ARM_USBH_SignalPortEvent_t cb_port_event,            \r
293                                                   ARM_USBH_SignalPipeEvent_t cb_pipe_event); ///< Pointer to \ref ARM_USBH_Initialize : Initialize USB Host Interface.\r
294   int32_t               (*Uninitialize)          (void);                                     ///< Pointer to \ref ARM_USBH_Uninitialize : De-initialize USB Host Interface.\r
295   int32_t               (*PowerControl)          (ARM_POWER_STATE state);                    ///< Pointer to \ref ARM_USBH_PowerControl : Control USB Host Interface Power.\r
296   int32_t               (*PortVbusOnOff)         (uint8_t port, bool vbus);                  ///< Pointer to \ref ARM_USBH_PortVbusOnOff : Root HUB Port VBUS on/off.\r
297   int32_t               (*PortReset)             (uint8_t port);                             ///< Pointer to \ref ARM_USBH_PortReset : Do Root HUB Port Reset.\r
298   int32_t               (*PortSuspend)           (uint8_t port);                             ///< Pointer to \ref ARM_USBH_PortSuspend : Suspend Root HUB Port (stop generating SOFs).\r
299   int32_t               (*PortResume)            (uint8_t port);                             ///< Pointer to \ref ARM_USBH_PortResume : Resume Root HUB Port (start generating SOFs).\r
300   ARM_USBH_PORT_STATE   (*PortGetState)          (uint8_t port);                             ///< Pointer to \ref ARM_USBH_PortGetState : Get current Root HUB Port State.\r
301   ARM_USBH_PIPE_HANDLE  (*PipeCreate)            (uint8_t dev_addr,\r
302                                                   uint8_t dev_speed,\r
303                                                   uint8_t hub_addr,\r
304                                                   uint8_t hub_port,\r
305                                                   uint8_t ep_addr,\r
306                                                   uint8_t ep_type,\r
307                                                   uint16_t ep_max_packet_size,\r
308                                                   uint8_t ep_interval);                      ///< Pointer to \ref ARM_USBH_PipeCreate : Create Pipe in System.\r
309   int32_t               (*PipeModify)            (ARM_USBH_PIPE_HANDLE pipe_hndl,\r
310                                                   uint8_t dev_addr,\r
311                                                   uint8_t dev_speed,\r
312                                                   uint8_t hub_addr,\r
313                                                   uint8_t hub_port,\r
314                                                   uint16_t ep_max_packet_size);              ///< Pointer to \ref ARM_USBH_PipeModify : Modify Pipe in System.\r
315   int32_t               (*PipeDelete)            (ARM_USBH_PIPE_HANDLE pipe_hndl);           ///< Pointer to \ref ARM_USBH_PipeDelete : Delete Pipe from System.\r
316   int32_t               (*PipeReset)             (ARM_USBH_PIPE_HANDLE pipe_hndl);           ///< Pointer to \ref ARM_USBH_PipeReset : Reset Pipe.\r
317   int32_t               (*PipeTransfer)          (ARM_USBH_PIPE_HANDLE pipe_hndl, \r
318                                                   uint32_t packet,\r
319                                                   uint8_t *data,\r
320                                                   uint32_t num);                             ///< Pointer to \ref ARM_USBH_PipeTransfer : Transfer packets through USB Pipe.\r
321   uint32_t              (*PipeTransferGetResult) (ARM_USBH_PIPE_HANDLE pipe_hndl);           ///< Pointer to \ref ARM_USBH_PipeTransferGetResult : Get result of USB Pipe transfer.\r
322   int32_t               (*PipeTransferAbort)     (ARM_USBH_PIPE_HANDLE pipe_hndl);           ///< Pointer to \ref ARM_USBH_PipeTransferAbort : Abort current USB Pipe transfer.\r
323   uint16_t              (*GetFrameNumber)        (void);                                     ///< Pointer to \ref ARM_USBH_GetFrameNumber : Get current USB Frame Number.                    \r
324 } const ARM_DRIVER_USBH;\r
325 \r
326 \r
327 // HCI (OHCI/EHCI)\r
328 \r
329 // Function documentation\r
330 /**\r
331   \fn          ARM_DRIVER_VERSION ARM_USBH_HCI_GetVersion (void)\r
332   \brief       Get USB Host HCI (OHCI/EHCI) driver version.\r
333   \return      \ref ARM_DRIVER_VERSION\r
334 */\r
335 /**\r
336   \fn          ARM_USBH_HCI_CAPABILITIES ARM_USBH_HCI_GetCapabilities (void)\r
337   \brief       Get driver capabilities.\r
338   \return      \ref ARM_USBH_HCI_CAPABILITIES\r
339 */\r
340 /**\r
341   \fn          int32_t ARM_USBH_HCI_Initialize (ARM_USBH_HCI_Interrupt_t *cb_interrupt)\r
342   \brief       Initialize USB Host HCI (OHCI/EHCI) Interface.\r
343   \param[in]   cb_interrupt Pointer to Interrupt Handler Routine\r
344   \return      \ref execution_status\r
345 */\r
346 /**\r
347   \fn          int32_t ARM_USBH_HCI_Uninitialize (void)\r
348   \brief       De-initialize USB Host HCI (OHCI/EHCI) Interface.\r
349   \return      \ref execution_status\r
350 */\r
351 /**\r
352   \fn          int32_t ARM_USBH_HCI_PowerControl (ARM_POWER_STATE state)\r
353   \brief       Control USB Host HCI (OHCI/EHCI) Interface Power.\r
354   \param[in]   state Power state\r
355   \return      \ref execution_status\r
356 */\r
357 /**\r
358   \fn          int32_t ARM_USBH_HCI_PortVbusOnOff (uint8_t port, bool vbus)\r
359   \brief       USB Host HCI (OHCI/EHCI) Root HUB Port VBUS on/off.\r
360   \param[in]   port  Root HUB Port Number\r
361   \param[in]   vbus\r
362                 - \b false VBUS off\r
363                 - \b true  VBUS on\r
364   \return      \ref execution_status\r
365 */\r
366 \r
367 /**\r
368   \fn          void ARM_USBH_HCI_Interrupt (void)\r
369   \brief       USB Host HCI Interrupt Handler.\r
370   \return      none\r
371 */\r
372 \r
373 typedef void (*ARM_USBH_HCI_Interrupt_t) (void);  ///< Pointer to Interrupt Handler Routine.\r
374 \r
375 \r
376 /**\r
377 \brief USB Host HCI (OHCI/EHCI) Driver Capabilities.\r
378 */\r
379 typedef struct _ARM_USBH_HCI_CAPABILITIES {\r
380   uint32_t port_mask : 15;              ///< Root HUB available Ports Mask\r
381 } ARM_USBH_HCI_CAPABILITIES;\r
382 \r
383 \r
384 /**\r
385   \brief Access structure of USB Host HCI (OHCI/EHCI) Driver.\r
386 */\r
387 typedef struct _ARM_DRIVER_USBH_HCI {\r
388   ARM_DRIVER_VERSION        (*GetVersion)      (void);                                  ///< Pointer to \ref ARM_USBH_HCI_GetVersion : Get USB Host HCI (OHCI/EHCI) driver version.\r
389   ARM_USBH_HCI_CAPABILITIES (*GetCapabilities) (void);                                  ///< Pointer to \ref ARM_USBH_HCI_GetCapabilities : Get driver capabilities.\r
390   int32_t                   (*Initialize)      (ARM_USBH_HCI_Interrupt_t cb_interrupt); ///< Pointer to \ref ARM_USBH_HCI_Initialize : Initialize USB Host HCI (OHCI/EHCI) Interface.\r
391   int32_t                   (*Uninitialize)    (void);                                  ///< Pointer to \ref ARM_USBH_HCI_Uninitialize : De-initialize USB Host HCI (OHCI/EHCI) Interface.\r
392   int32_t                   (*PowerControl)    (ARM_POWER_STATE state);                 ///< Pointer to \ref ARM_USBH_HCI_PowerControl : Control USB Host HCI (OHCI/EHCI) Interface Power.\r
393   int32_t                   (*PortVbusOnOff)   (uint8_t port, bool vbus);               ///< Pointer to \ref ARM_USBH_HCI_PortVbusOnOff : USB Host HCI (OHCI/EHCI) Root HUB Port VBUS on/off.\r
394 } const ARM_DRIVER_USBH_HCI;\r
395 \r
396 #endif /* __DOXYGEN_MW__ */\r
397 \r
398 #endif /* __DRIVER_USBH_H */\r