usbhost.h
Go to the documentation of this file.
1 //*****************************************************************************
2 //
3 // usbhost.h - Host specific definitions for the USB host library.
4 //
5 // Copyright (c) 2008-2017 Texas Instruments Incorporated. All rights reserved.
6 // Software License Agreement
7 //
8 // Texas Instruments (TI) is supplying this software for use solely and
9 // exclusively on TI's microcontroller products. The software is owned by
10 // TI and/or its suppliers, and is protected under applicable copyright
11 // laws. You may not combine this software with "viral" open-source
12 // software in order to form a larger program.
13 //
14 // THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
15 // NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
16 // NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
17 // A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
18 // CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
19 // DAMAGES, FOR ANY REASON WHATSOEVER.
20 //
21 //*****************************************************************************
22 
23 #ifndef __USBHOST_H__
24 #define __USBHOST_H__
25 
26 //*****************************************************************************
27 //
28 // If building with a C++ compiler, make all of the definitions in this header
29 // have a C binding.
30 //
31 //*****************************************************************************
32 #ifdef __cplusplus
33 extern "C"
34 {
35 #endif
36 
37 //*****************************************************************************
38 //
41 //
42 //*****************************************************************************
43 
44 //*****************************************************************************
45 //
46 // This is the type used to identify what the pipe is currently in use for.
47 //
48 //*****************************************************************************
49 #define USBHCD_PIPE_UNUSED 0x00100000
50 #define USBHCD_PIPE_CONTROL 0x00130000
51 #define USBHCD_PIPE_BULK_OUT 0x00210000
52 #define USBHCD_PIPE_BULK_IN 0x00220000
53 #define USBHCD_PIPE_INTR_OUT 0x00410000
54 #define USBHCD_PIPE_INTR_IN 0x00420000
55 #define USBHCD_PIPE_ISOC_OUT 0x00810000
56 #define USBHCD_PIPE_ISOC_IN 0x00820000
57 #define USBHCD_PIPE_ISOC_OUT_DMA 0x01810000
58 #define USBHCD_PIPE_ISOC_IN_DMA 0x01820000
59 #define USBHCD_PIPE_BULK_OUT_DMA 0x01210000
60 #define USBHCD_PIPE_BULK_IN_DMA 0x01220000
61 
62 //*****************************************************************************
63 //
64 // These are the defines that are used with USBHCDPowerConfigInit().
65 //
66 //*****************************************************************************
67 #define USBHCD_FAULT_LOW 0x00000010
68 #define USBHCD_FAULT_HIGH 0x00000030
69 #define USBHCD_FAULT_VBUS_NONE 0x00000000
70 #define USBHCD_FAULT_VBUS_TRI 0x00000140
71 #define USBHCD_FAULT_VBUS_DIS 0x00000400
72 #define USBHCD_VBUS_MANUAL 0x00000004
73 #define USBHCD_VBUS_AUTO_LOW 0x00000002
74 #define USBHCD_VBUS_AUTO_HIGH 0x00000003
75 #define USBHCD_VBUS_FILTER 0x00010000
76 
77 //*****************************************************************************
78 //
79 // These are the defines that are used with USBHCDLPMStatus().
80 //
81 //*****************************************************************************
82 #define USBHCD_LPM_AVAIL 0x00000000
83 #define USBHCD_LPM_ERROR 0x00000001
84 #define USBHCD_LPM_PENDING 0x00000002
85 
86 //*****************************************************************************
87 //
112 //
113 //*****************************************************************************
114 #define DECLARE_EVENT_DRIVER(VarName, pfnOpen, pfnClose, pfnEvent) \
115 void IntFn(void *pvData); \
116 const tUSBHostClassDriver VarName = \
117 { \
118  USB_CLASS_EVENTS, \
119  0, \
120  0, \
121  pfnEvent \
122 }
123 
124 //*****************************************************************************
125 //
126 // This is the type definition a callback for events on USB Pipes allocated
127 // by USBHCDPipeAlloc().
128 //
129 // \param ui32Pipe is well the pipe
130 // \param ui32Event is well the event
131 //
132 // This prototype is used by any Pipe callbacks that are used in the host
133 // class drivers. These functions typically handle data events like
134 // USB_EVENT_RX_AVAILABLE or USB_EVENT_TX_COMPLETE but can be sent other events
135 // depending on the USB host class in use. See the documentation for the
136 // individual classes for the valid events for that class.
137 //
138 // \return None.
139 //
140 //*****************************************************************************
141 typedef void (* tHCDPipeCallback)(uint32_t ui32Pipe, uint32_t ui32Event);
142 
143 //*****************************************************************************
144 //
145 // Predeclare the private tUSBHostDevice structure.
146 //
147 //*****************************************************************************
149 
150 //*****************************************************************************
151 //
154 //
155 //*****************************************************************************
156 typedef struct
157 {
158  //
160  //
162 
163  //
165  //
166  void *(*pfnOpen)(tUSBHostDevice *psDevice);
167 
168  //
171  //
172  void (*pfnClose)(void *pvInstance);
173 
174  //
177  //
178  void (*pfnIntHandler)(void *pvInstance);
179 }
181 
182 //*****************************************************************************
183 //
184 // Close the Doxygen group.
186 //
187 //*****************************************************************************
188 
189 //*****************************************************************************
190 //
191 // If the g_USBEventDriver is included in the host controller driver list then
192 // this function must be provided by the application.
193 //
194 //*****************************************************************************
195 extern void USBHCDEvents(void *pvData);
196 
197 //*****************************************************************************
198 //
199 // Prototypes for the USB Host controller APIs.
200 //
201 //*****************************************************************************
202 extern void USBHCDMain(void);
203 extern int32_t USBHCDEventEnable(uint32_t ui32Index, void *pvEventDriver,
204  uint32_t ui32Event);
205 extern int32_t USBHCDEventDisable(uint32_t ui32Index, void *pvEventDriver,
206  uint32_t ui32Event);
207 extern void USBHCDInit(uint32_t ui32Index, void *pvData,
208  uint32_t ui32Size);
209 extern void USBHCDPowerConfigInit(uint32_t ui32Index,
210  uint32_t ui32Flags);
211 extern uint32_t USBHCDPowerConfigGet(uint32_t ui32Index);
212 extern uint32_t USBHCDPowerConfigSet(uint32_t ui32Index,
213  uint32_t ui32Config);
214 extern uint32_t USBHCDPowerAutomatic(uint32_t ui32Index);
215 extern void USBHCDRegisterDrivers(uint32_t ui32Index,
216  const tUSBHostClassDriver * const *ppsHClassDrvrs,
217  uint32_t ui32NumDrivers);
218 extern void USBHCDTerm(uint32_t ui32Index);
219 extern void USBHCDSetConfig(uint32_t ui32Index, uint32_t ui32Device,
220  uint32_t ui32Configuration);
221 extern void USBHCDSetInterface(uint32_t ui32Index, uint32_t ui32Device,
222  uint32_t ui32Interface,
223  uint32_t ui32AltSetting);
224 extern void USBHCDSuspend(uint32_t ui32Index);
225 extern void USBHCDResume(uint32_t ui32Index);
226 extern void USBHCDReset(uint32_t ui32Index);
227 extern void USBHCDPipeFree(uint32_t ui32Pipe);
228 extern uint32_t USBHCDPipeAlloc(uint32_t ui32Index,
229  uint32_t ui32EndpointType,
230  tUSBHostDevice *psDevice,
231  tHCDPipeCallback pfnCallback);
232 extern uint32_t USBHCDPipeAllocSize(uint32_t ui32Index,
233  uint32_t ui32EndpointType,
234  tUSBHostDevice *psDevice,
235  uint32_t ui32FIFOSize,
236  tHCDPipeCallback pfnCallback);
237 extern uint32_t USBHCDPipeConfig(uint32_t ui32Pipe, uint32_t ui32MaxPayload,
238  uint32_t ui32Interval,
239  uint32_t ui32TargetEndpoint);
240 extern uint32_t USBHCDPipeStatus(uint32_t ui32Pipe);
241 extern uint32_t USBHCDPipeWrite(uint32_t ui32Pipe, uint8_t *pui8Data,
242  uint32_t ui32Size);
243 extern uint32_t USBHCDPipeRead(uint32_t ui32Pipe, uint8_t *pui8Data,
244  uint32_t ui32Size);
245 extern uint32_t USBHCDPipeSchedule(uint32_t ui32Pipe, uint8_t *pui8Data,
246  uint32_t ui32Size);
247 extern uint32_t USBHCDPipeTransferSizeGet(uint32_t ui32Pipe);
248 extern void USBHCDPipeDataAck(uint32_t ui32Pipe);
249 extern uint32_t USBHCDPipeReadNonBlocking(uint32_t ui32Pipe, uint8_t *pui8Data,
250  uint32_t ui32Size);
251 extern uint32_t USBHCDStringDescriptorGet(tUSBHostDevice *psDevice,
252  uint8_t *pui8Buffer,
253  uint32_t ui32Size,
254  uint32_t ui32LangID,
255  uint32_t ui32StringIndex);
256 extern uint32_t USBHCDControlTransfer(uint32_t ui32Index,
257  tUSBRequest *psSetupPacket,
258  tUSBHostDevice *psDevice,
259  uint8_t *pui8Data, uint32_t ui32Size,
260  uint32_t ui32MaxPacketSize);
261 extern void USB0_IRQHostHandler(void);
262 
263 extern uint8_t USBHCDDevHubPort(uint32_t ui32Instance);
264 extern uint8_t USBHCDDevAddress(uint32_t ui32Instance);
265 extern uint8_t USBHCDDevClass(uint32_t ui32Instance, uint32_t ui32Interface);
266 extern uint8_t USBHCDDevSubClass(uint32_t ui32Instance,
267  uint32_t ui32Interface);
268 extern uint8_t USBHCDDevProtocol(uint32_t ui32Instance,
269  uint32_t ui32Interface);
270 extern bool USBHCDFeatureSet(uint32_t ui32Index, uint32_t ui32Feature,
271  void *pvFeature);
272 extern uint32_t USBHCDLPMSleep(tUSBHostDevice *psDevice);
273 extern void USBHCDLPMResume(uint32_t ui32Index);
274 
275 //*****************************************************************************
276 //
277 // The host class drivers supported by the USB library.
278 //
279 //*****************************************************************************
283 
284 //*****************************************************************************
285 //
286 // Mark the end of the C bindings section for C++ compilers.
287 //
288 //*****************************************************************************
289 #ifdef __cplusplus
290 }
291 #endif
292 
293 #endif // __USBHOST_H__
uint32_t USBHCDPipeAlloc(uint32_t ui32Index, uint32_t ui32EndpointType, tUSBHostDevice *psDevice, tHCDPipeCallback pfnCallback)
Definition: usbhostenum.c:1345
uint32_t ui32Flags
Definition: usbhostpriv.h:165
uint32_t USBHCDPowerConfigGet(uint32_t ui32Index)
Definition: usbhostenum.c:2676
bool USBHCDFeatureSet(uint32_t ui32Index, uint32_t ui32Feature, void *pvFeature)
Definition: usbhostenum.c:6030
void USBHCDSetConfig(uint32_t ui32Index, uint32_t ui32Device, uint32_t ui32Configuration)
Definition: usbhostenum.c:3603
void USBHCDPipeDataAck(uint32_t ui32Pipe)
Definition: usbhostenum.c:1968
uint32_t USBHCDPipeRead(uint32_t ui32Pipe, uint8_t *pui8Data, uint32_t ui32Size)
Definition: usbhostenum.c:2013
void USBHCDSuspend(uint32_t ui32Index)
Definition: usbhostenum.c:3105
uint32_t USBHCDPipeSchedule(uint32_t ui32Pipe, uint8_t *pui8Data, uint32_t ui32Size)
Definition: usbhostenum.c:1798
uint8_t USBHCDDevClass(uint32_t ui32Instance, uint32_t ui32Interface)
Definition: usbhostenum.c:5851
const tUSBHostClassDriver g_sUSBHostMSCClassDriver
Definition: usbhmsc.c:109
void USBHCDLPMResume(uint32_t ui32Index)
Definition: usbhostenum.c:6242
void USBHCDPowerConfigInit(uint32_t ui32Index, uint32_t ui32Flags)
Definition: usbhostenum.c:2651
int32_t USBHCDEventDisable(uint32_t ui32Index, void *pvEventDriver, uint32_t ui32Event)
Definition: usbhostenum.c:780
uint32_t ui32InterfaceClass
The interface class that this device class driver supports.
Definition: usbhost.h:161
void USBHCDResume(uint32_t ui32Index)
Definition: usbhostenum.c:3129
uint8_t USBHCDDevHubPort(uint32_t ui32Instance)
Definition: usbhostenum.c:5785
uint32_t USBHCDPowerAutomatic(uint32_t ui32Index)
Definition: usbhostenum.c:2784
Definition: usbhostpriv.h:108
uint32_t USBHCDPipeReadNonBlocking(uint32_t ui32Pipe, uint8_t *pui8Data, uint32_t ui32Size)
Definition: usbhostenum.c:1922
void USB0_IRQHostHandler(void)
Definition: usbhostenum.c:4430
void USBHCDEvents(void *pvData)
uint32_t USBHCDControlTransfer(uint32_t ui32Index, tUSBRequest *psSetupPacket, tUSBHostDevice *psDevice, uint8_t *pui8Data, uint32_t ui32Size, uint32_t ui32MaxPacketSize)
Definition: usbhostenum.c:5204
uint32_t USBHCDPipeWrite(uint32_t ui32Pipe, uint8_t *pui8Data, uint32_t ui32Size)
Definition: usbhostenum.c:1548
uint8_t USBHCDDevSubClass(uint32_t ui32Instance, uint32_t ui32Interface)
Definition: usbhostenum.c:5912
void USBHCDSetInterface(uint32_t ui32Index, uint32_t ui32Device, uint32_t ui32Interface, uint32_t ui32AltSetting)
Definition: usbhostenum.c:3669
void(* tHCDPipeCallback)(uint32_t ui32Pipe, uint32_t ui32Event)
Definition: usbhost.h:141
void USBHCDRegisterDrivers(uint32_t ui32Index, const tUSBHostClassDriver *const *ppsHClassDrvrs, uint32_t ui32NumDrivers)
Definition: usbhostenum.c:2968
uint32_t USBHCDPipeConfig(uint32_t ui32Pipe, uint32_t ui32MaxPayload, uint32_t ui32Interval, uint32_t ui32TargetEndpoint)
Definition: usbhostenum.c:1386
void USBHCDInit(uint32_t ui32Index, void *pvData, uint32_t ui32Size)
Definition: usbhostenum.c:2831
const tUSBHostClassDriver g_sUSBHIDClassDriver
Definition: usbhhid.c:101
Definition: usbhost.h:156
uint8_t USBHCDDevProtocol(uint32_t ui32Instance, uint32_t ui32Interface)
Definition: usbhostenum.c:5972
uint32_t USBHCDLPMSleep(tUSBHostDevice *psDevice)
Definition: usbhostenum.c:6182
void USBHCDTerm(uint32_t ui32Index)
Definition: usbhostenum.c:3000
void USBHCDPipeFree(uint32_t ui32Pipe)
Definition: usbhostenum.c:2267
uint32_t USBHCDPipeStatus(uint32_t ui32Pipe)
Definition: usbhostenum.c:1523
uint32_t USBHCDPowerConfigSet(uint32_t ui32Index, uint32_t ui32Config)
Definition: usbhostenum.c:2702
uint8_t USBHCDDevAddress(uint32_t ui32Instance)
Definition: usbhostenum.c:5816
uint32_t USBHCDPipeTransferSizeGet(uint32_t ui32Pipe)
Definition: usbhostenum.c:1060
const tUSBHostClassDriver g_sUSBHostAudioClassDriver
Definition: usbhaudio.c:177
uint32_t ui32Interface
Definition: usbhostpriv.h:118
uint32_t USBHCDPipeAllocSize(uint32_t ui32Index, uint32_t ui32EndpointType, tUSBHostDevice *psDevice, uint32_t ui32FIFOSize, tHCDPipeCallback pfnCallback)
Definition: usbhostenum.c:1101
void USBHCDMain(void)
Definition: usbhostenum.c:4678
uint32_t USBHCDStringDescriptorGet(tUSBHostDevice *psDevice, uint8_t *pui8Buffer, uint32_t ui32Size, uint32_t ui32LangID, uint32_t ui32StringIndex)
Definition: usbhostenum.c:3378
int32_t USBHCDEventEnable(uint32_t ui32Index, void *pvEventDriver, uint32_t ui32Event)
Definition: usbhostenum.c:719
void USBHCDReset(uint32_t ui32Index)
Definition: usbhostenum.c:3064
Copyright 2018, Texas Instruments Incorporated