1:
9:
10:
14:
#ifndef __USBH_API_H__
15:
#define __USBH_API_H__
16:
17:
18:
19:
20:
21:
22:
23:
#include "uhs_type.h"
24:
#include "depend_cfg.h"
25:
#include "open_usbdi.h"
26:
#include "wrapper_kernel.h"
27:
#include "usbc_api.h"
28:
29:
50:
struct usbh_overcurrent_info {
51:
struct usbd_usb_deviceinfo *usbhub;
52: uhs_ubit8_t port_num;
53: uhs_ubit8_t ovcr_kind;
54: };
55:
56:
57:
struct usbh_split_err_notify_info {
58:
59:
struct usbd_usb_spliterrinfo *split_err_info;
61: };
62:
63:
64:
67:
68:
69:
typedef struct usbd_usb_deviceinfo *
PUSB_DEVICE;
70:
71:
72:
typedef enum {
73: DEV_TYPE_NONE,
74: DEV_TYPE_OTHER,
75: DEV_TYPE_ROOT,
76: DEV_TYPE_HUB,
77: DEV_TYPE_STOR,
78: DEV_TYPE_CDC,
79: DEV_TYPE_HID
80: }
DEVICE_TYPE;
81:
82:
85:
86:
87:
90:
91:
92:
typedef enum _usb_logtype {
93: USB_MSGMON_LOGTYPE_ANALYSIS,
94: USB_MSGMON_LOGTYPE_NORMALOP
95: }
usb_logtype;
96:
97:
98:
101:
typedef struct _usb_msgformat {
102: uhs_ubit8_t msglayer;
103: uhs_ubit8_t msgsublayer;
104: uhs_ubit8_t msgtype;
105: uhs_ubit8_t msglevel;
106: uhs_ubit16_t msgdata;
107: uhs_ubit16_t extdatasize;
108:
void * extdata;
109: SYSTIM rcvdtime;
110: }
usb_msgformat;
111:
112:
113:
117: uhs_ubit8_t msgsublayer;
118: uhs_ubit8_t msgtype;
119: uhs_ubit8_t msglevel;
120: uhs_ubit16_t msgdata;
121: uhs_ubit16_t extdatasize;
122:
void * extdata;
123: SYSTIM rcvdtime;
124: }
usb_simple_msgformat;
125:
126:
127:
128:
typedef enum _usb_msglayer {
129: USB_MSGMON_LAYER_USBH_HCD,
130: USB_MSGMON_LAYER_USBH_CORE,
131: USB_MSGMON_LAYER_USBH_CLASSDRIVER,
132: USB_MSGMON_LAYER_USBH_FILESYSTEM
133: }
usb_msglayer;
134:
135:
136:
137:
138:
139:
140: 141:
142:
143:
typedef enum _usb_msgsublayer_hcd {
144: USB_MSGMON_SUBLAYER_HCD_OHCI,
145: USB_MSGMON_SUBLAYER_HCD_EHCI
146: }
usb_msgsublayer_hcd;
147:
148:
149:
typedef enum _usb_msgsublayer_clsdrv {
150: USB_MSGMON_SUBLAYER_CLSDRV_STOR,
151: USB_MSGMON_SUBLAYER_CLSDRV_HUB,
152: USB_MSGMON_SUBLAYER_CLSDRV_CDC,
153: USB_MSGMON_SUBLAYER_CLSDRV_HID
154: }
usb_msgsublayer_clsdrv;
155:
156: 157:
158:
159:
160:
161:
typedef enum _usg_msglevel {
162: USB_MSGMON_MSGLVL_MILESTONE,
163: USB_MSGMON_MSGLVL_ERROR,
164: USB_MSGMON_MSGLVL_WARNING
165: }
usb_msglevel;
166:
167:
168:
169:
170:
#define USBHC_ILLEGAL_ERROR (1)
171:
172:
#define USBHC_RESOURCE_UNAVAIL (2)
173:
174:
#define USBHC_INVALID_PARAMETER (3)
175:
180:
181:
#define USBHC_EHCI_INIT_COMP (1)
182:
183:
#define USBHC_EHCI_EXIT_COMP (2)
184:
185:
#define USBHC_DEVICE_CONNECT (3)
186:
187:
#define USBHC_DEVICE_DISCONNECT (4)
188:
189:
#define USBHC_EHCI_PORTPOWER_ON (5)
190:
191:
#define USBHC_EHCI_PORTPOWER_OFF (6)
192:
193:
194:
195:
#define USBC_INVALID_ADDRESS (1)
196:
197:
#define USBC_INVALID_INTERFACE (2)
198:
199:
#define USBC_INVALID_ENDPOINT (3)
200:
201:
#define USBC_INVALID_PIPE (4)
202:
203:
#define USBC_INVALID_PARAMETER (5)
204:
205:
#define USBC_PIPE_HALT_ERROR (6)
206:
207:
#define USBC_NO_BANDWIDTH (7)
208:
209:
#define USBC_INIT_ERROR (8)
210:
211:
#define USBC_HOST_INIT_ERROR (9)
212:
213:
#define USBC_ILLEGAL_ERROR (10)
214:
215:
#define USBC_RESOURCE_UNAVAIL (11)
216:
217:
#define USBC_BUS_SUSPEND (12)
218:
219:
#define USBC_REQUEST_QUEUE_FULL (13)
220:
221:
222:
223:
#define USBC_INIT_COMP (1)
224:
225:
#define USBC_EXIT_COMP (2)
226:
227:
#define USBC_ENUM_START (3)
228:
229:
#define USBC_ENUM_END (4)
230:
231:
232:
233:
#define USBCLS_HUB_DETECT_OVERCURRENT (1)
234:
235:
#define USBCLS_HUB_ILLEGAL_ERROR (2)
236:
237:
#define USBCLS_HUB_RESOURCE_UNAVAIL (3)
238:
239:
#define USBCLS_HUB_INVALID_PARAMETER (4)
240:
241:
#define USBCLS_HUB_IMPORTANT_ERROR (5)
242:
243:
#define USBCLS_HUB_INVALID_STATUS (6)
244:
245:
#define USBCLS_HUB_OVERCONN (7)
246:
247:
248:
249:
#define USBCLS_HUB_INIT_COMP (1)
250:
251:
#define USBCLS_HUB_EXIT_COMP (2)
252:
253:
#define USBCLS_HUB_DEVICE_CONNECTED (3)
254:
255:
#define USBCLS_HUB_DEVICE_DISCONNECTED (4)
256:
257:
#define USBCLS_HUB_DEVICE_CONNECT_NG (5)
258:
259:
260:
261:
264:
265:
266: 267:
268:
269:
#define USBH_ASSERT_MEM_TOPID (0x00010000)
270:
271:
#define USBH_ASSERT_MEM_CREATE (
USBH_ASSERT_MEM_TOPID | 0x00000001)
272:
273:
#define USBH_ASSERT_MEM_ALLOC (
USBH_ASSERT_MEM_TOPID | 0x00000002)
274:
275:
#define USBH_ASSERT_MEM_FREE (
USBH_ASSERT_MEM_TOPID | 0x00000003)
276:
277:
#define USBH_ASSERT_MEM_DELETE (
USBH_ASSERT_MEM_TOPID | 0x00000004)
278:
279:
280:
#define USBH_ASSERT_SEM_TOPID (0x00020000)
281:
282:
#define USBH_ASSERT_SEM_CREATE (
USBH_ASSERT_SEM_TOPID | 0x00000001)
283:
284:
#define USBH_ASSERT_SEM_ACQU (
USBH_ASSERT_SEM_TOPID | 0x00000002)
285:
286:
#define USBH_ASSERT_SEM_REL (
USBH_ASSERT_SEM_TOPID | 0x00000003)
287:
288:
#define USBH_ASSERT_SEM_DELETE (
USBH_ASSERT_SEM_TOPID | 0x00000004)
289:
290:
291:
#define USBH_ASSERT_EVF_TOPID (0x00030000)
292:
293:
#define USBH_ASSERT_EVF_CREATE (
USBH_ASSERT_EVF_TOPID | 0x00000001)
294:
295:
#define USBH_ASSERT_EVF_SET (
USBH_ASSERT_EVF_TOPID | 0x00000002)
296:
297:
#define USBH_ASSERT_EVF_WAIT (
USBH_ASSERT_EVF_TOPID | 0x00000003)
298:
299:
#define USBH_ASSERT_EVF_DELETE (
USBH_ASSERT_EVF_TOPID | 0x00000004)
300:
301:
302:
#define USBH_ASSERT_DTQ_TOPID (0x00040000)
303:
304:
#define USBH_ASSERT_DTQ_CREATE (
USBH_ASSERT_DTQ_TOPID | 0x00000001)
305:
306:
#define USBH_ASSERT_DTQ_SND (
USBH_ASSERT_DTQ_TOPID | 0x00000002)
307:
308:
#define USBH_ASSERT_DTQ_RCV (
USBH_ASSERT_DTQ_TOPID | 0x00000003)
309:
310:
#define USBH_ASSERT_DTQ_DELETE (
USBH_ASSERT_DTQ_TOPID | 0x00000004)
311:
312:
313:
#define USBH_ASSERT_TIM_TOPID (0x00050000)
314:
315:
#define USBH_ASSERT_TIM_GET (
USBH_ASSERT_TIM_TOPID | 0x00000001)
316:
317:
#define USBH_ASSERT_TIM_WAIT (
USBH_ASSERT_TIM_TOPID | 0x00000002)
318:
319:
320:
#define USBH_ASSERT_CYC_TOPID (0x00060000)
321:
322:
#define USBH_ASSERT_CYC_CREATE (
USBH_ASSERT_CYC_TOPID | 0x00000001)
323:
324:
#define USBH_ASSERT_CYC_INACT (
USBH_ASSERT_CYC_TOPID | 0x00000002)
325:
326:
#define USBH_ASSERT_CYC_DELETE (
USBH_ASSERT_CYC_TOPID | 0x00000003)
327:
328:
329:
#define USBH_ASSERT_THREAD_TOPID (0x00070000)
330:
331:
#define USBH_ASSERT_THREAD_CREATE (
USBH_ASSERT_THREAD_TOPID | 0x00000001)
332:
333:
#define USBH_ASSERT_THREAD_EXIT (
USBH_ASSERT_THREAD_TOPID | 0x00000002)
334:
335:
#define USBH_ASSERT_THREAD_DELETE (
USBH_ASSERT_THREAD_TOPID | 0x00000003)
336:
337:
338:
#define USBH_ASSERT_MBOX_TOPID (0x00080000)
339:
340:
#define USBH_ASSERT_MBOX_CREATE (
USBH_ASSERT_MBOX_TOPID | 0x00000001)
341:
342:
#define USBH_ASSERT_MBOX_SND (
USBH_ASSERT_MBOX_TOPID | 0x00000002)
343:
344:
#define USBH_ASSERT_MBOX_RCV (
USBH_ASSERT_MBOX_TOPID | 0x00000003)
345:
346:
#define USBH_ASSERT_MBOX_DELETE (
USBH_ASSERT_MBOX_TOPID | 0x00000004)
347:
348:
349:
#define USBH_ASSERT_INT_TOPID (0x00090000)
350:
351:
#define USBH_ASSERT_INT_REG (
USBH_ASSERT_INT_TOPID | 0x00000001)
352:
353:
#define USBH_ASSERT_INT_ENA (
USBH_ASSERT_INT_TOPID | 0x00000002)
354:
355:
#define USBH_ASSERT_INT_DIS (
USBH_ASSERT_INT_TOPID | 0x00000003)
356:
357:
#define USBH_ASSERT_INT_UNREG (
USBH_ASSERT_INT_TOPID | 0x00000004)
358:
359:
360:
361:
362:
typedef int (*
usb_class_init_callback_t)(
void * stCallback);
363:
364:
365:
366:
375:
typedef struct _app_callback_info {
376:
377:
class_driver_type clsdrv_type;
378:
usb_common_callback_t attach_callback;
379:
usb_common_callback_t detach_callback;
380:
usb_class_init_callback_t class_ini_callback;
381: uhs_boolean_t is_lastnode;
382:
383: }
app_callback_info;
384:
385:
386:
390:
typedef struct _usbh_regist_info {
391:
392:
393:
394:
usb_common_callback_t overload_callback;
395:
usb_common_callback_t status_notify_callback;
396:
usb_common_callback_t split_err_notify_callback;
397:
usb_common_callback_t assert_callback;
398:
usb_logtype logtype;
399:
400: 401:
402:
app_callback_info * app_callback;
403:
404: }
usbh_regist_info;
405:
406:
407:
extern uhs_status_t
Usbh_Init(
usbh_regist_info init );
408:
extern uhs_status_t
Usbh_Exit(
void );
409:
extern uhs_status_t
Usbh_Api_RegistAppCallback(
usbh_regist_info init );
410:
extern uhs_status_t
Usbh_Api_DriverRegister(
struct class_driver_reginfo * driver_info);
411:
extern void Usbh_Api_DriverUnRegister(
struct class_driver_reginfo * driver_info);
412:
extern uhs_status_t
Usbh_Api_OpenPipe(
struct usb_control_block* ucb);
413:
extern uhs_status_t
Usbh_Api_ClosePipe(
struct usb_control_block* ucb);
414:
extern uhs_status_t
Usbh_Api_ControlMsg(
struct usb_control_block* ucb);
415:
extern uhs_status_t
Usbh_Api_BulkMsg(
struct usb_control_block* ucb);
416:
extern uhs_status_t
Usbh_Api_IntMsg(
struct usb_control_block* ucb);
417:
extern uhs_status_t
Usbh_Api_SyncControlMsg(
struct usb_control_block* ucb,
const udi_ubit8_t bmRequestType,
const udi_ubit8_t bRequest,
418:
const udi_ubit8_t wValue0,
const udi_ubit8_t wValue1,
const udi_ubit8_t wIndex0,
const udi_ubit8_t wIndex1,
void *buf,
const uhs_ubit32_t size);
419:
extern uhs_status_t
Usbh_Api_SyncBulkMsg(
struct usb_control_block* ucb );
420:
extern uhs_status_t
Usbh_Api_CancelPipe(
struct usb_control_block* ucb);
421:
extern uhs_status_t
Usbh_Api_GetDescriptor(
struct usb_control_block* ucb,
struct usbd_usb_deviceinfo* usbdev,
const uhs_ubit8_t type,
const uhs_ubit8_t index,
const uhs_ubit16_t wIndex,
void *buf,
const uhs_ubit32_t size);
422:
extern uhs_status_t
Usbh_Api_SetDescriptor(
struct usb_control_block* ucb,
struct usbd_usb_deviceinfo* usbdev,
const uhs_ubit8_t type,
const uhs_ubit8_t index,
const uhs_ubit16_t wIndex,
void *buf,
const uhs_ubit32_t size);
423:
extern uhs_status_t
Usbh_Api_ClearFeature(
struct usb_control_block* ucb,
struct usbd_usb_deviceinfo* usbdev,
const uhs_ubit8_t bmRequest,
const uhs_ubit16_t feature_select,
const uhs_ubit16_t wIndex);
424:
extern uhs_status_t
Usbh_Api_SetFeature(
struct usb_control_block* ucb,
struct usbd_usb_deviceinfo* usbdev,
const uhs_ubit8_t bmRequest,
const uhs_ubit16_t feature_select,
const uhs_ubit16_t wIndex);
425:
extern uhs_status_t
Usbh_Api_GetStatus(
struct usb_control_block* ucb,
struct usbd_usb_deviceinfo* usbdev,
const uhs_ubit8_t bmRequest,
const uhs_ubit16_t wIndex,
void *buf);
426:
extern uhs_status_t
Usbh_Api_SetAddress(
struct usb_control_block* ucb,
struct usbd_usb_deviceinfo* usbdev,
const uhs_ubit16_t address);
427:
extern uhs_status_t
Usbh_Api_GetConfiguration(
struct usb_control_block* ucb,
struct usbd_usb_deviceinfo* usbdev,
void *buf);
428:
extern uhs_status_t
Usbh_Api_SetConfiguration(
struct usb_control_block* ucb,
struct usbd_usb_deviceinfo* usbdev,
const uhs_ubit16_t config_num);
429:
extern uhs_status_t
Usbh_Api_GetInterface(
struct usb_control_block* ucb,
struct usbd_usb_deviceinfo* usbdev,
const uhs_ubit16_t wIndex,
void *buf);
430:
extern uhs_status_t
Usbh_Api_SetInterface(
struct usb_control_block* ucb,
struct usbd_usb_deviceinfo* usbdev,
const uhs_ubit16_t intf_num,
const uhs_ubit16_t alt_num);
431:
extern uhs_status_t
Usbh_Api_AllocUsbCtrlBlock(
struct usb_control_block ** ucb);
432:
extern uhs_status_t
Usbh_Api_FreeUsbCtrlBlock(
struct usb_control_block * ucb);
433:
extern void Usbh_Api_FixupUsbCtrlBlock(
struct usb_control_block * ucb,
struct usbd_usb_deviceinfo* usbdev,
const uhs_ubit32_t pipe, usb_device_request_t *setup_data,
void *data_buf,
const uhs_ubit32_t data_len,
const uhs_ubit8_t interval,
usb_common_callback_t complete_func,
void *context);
434:
extern void Usbh_Api_FixupPipeInfo( uhs_ubit32_t *pipe,
const uhs_ubit8_t usb_addr,
const uhs_ubit8_t ep_num,
const uhs_ubit8_t packet_id,
const uhs_ubit8_t ep_type,
const uhs_ubit32_t maxpkt_size);
435:
extern uhs_boolean_t
Usbh_Api_PipeIsOpened(
struct usb_control_block* ucb);
436:
extern uhs_ubit32_t
Usbh_Api_GetPipeAddr(
const uhs_ubit32_t pipe);
437:
extern uhs_ubit32_t
Usbh_Api_GetPipeEpNum(
const uhs_ubit32_t pipe);
438:
extern uhs_ubit32_t
Usbh_Api_GetPipePID(
const uhs_ubit32_t pipe);
439:
extern uhs_boolean_t
Usbh_Api_GetPipeDirIn(
const uhs_ubit32_t pipe);
440:
extern uhs_ubit32_t
Usbh_Api_GetPipeEpType(
const uhs_ubit32_t pipe);
441:
extern uhs_ubit32_t
Usbh_Api_GetPipeMaxPktSize(
const uhs_ubit32_t pipe);
442:
extern uhs_ubit8_t
Usbh_Api_GetPortPower(
struct usbd_usb_deviceinfo *usbhub,
const uhs_ubit8_t port_num);
443:
extern void Usbh_Api_SetPortPower(
struct usbd_usb_deviceinfo *usbhub,
const uhs_ubit8_t port_num,
const uhs_ubit8_t stat);
444:
extern struct usbd_usb_deviceinfo *
Usbh_Api_EnumRootHub(
struct usbd_usb_deviceinfo * pRootHub );
445:
extern struct usbd_usb_deviceinfo *
Usbh_Api_EnumDevice(
struct usbd_usb_deviceinfo * pParent,
struct usbd_usb_deviceinfo * pChild );
446:
extern uhs_ubit8_t
Usbh_Api_GetDeviceType(
struct usbd_usb_deviceinfo * pDev );
447:
extern uhs_boolean_t
Usbh_Api_GetVidPid(
struct usbd_usb_deviceinfo * pDev, udi_ubit16_t *pVid, udi_ubit16_t *pPid );
448:
extern uhs_boolean_t
Usbh_Api_GetSerial(
struct usbd_usb_deviceinfo * pDev, udi_ubit8_t *pSerial, udi_ubit8_t bufsize );
449:
extern uhs_status_t
Usbh_Api_GetVersion(uhs_ubit8_t* pu8MajorVersion, uhs_ubit8_t* pu8MinorVersion);
450:
extern uhs_status_t
Usbh_Api_ResetTT(
struct usbd_usb_deviceinfo *usbhub,
const uhs_ubit16_t tt_num);
451:
extern uhs_status_t
Usbh_Api_ClearTTBuffer(
struct usbd_usb_deviceinfo *usbhub,
const uhs_ubit16_t tt_num,
struct usbd_usb_spliterrinfo *split_err_info);
452:
extern void Usb_Core_ReportStatus(
const char *pFileName, uhs_ubit32_t nLine,
usb_msglevel level, uhs_ubit16_t msgdata );
453:
extern void Hcd_EHCI_ReportStatus(
const char *pFileName, uhs_ubit32_t nLine,
usb_msglevel level, uhs_ubit16_t msgdata );
454:
extern uhs_status_t
Usbh_Api_ReqDisableAttDet(
void );
455:
extern uhs_status_t
Usbh_Api_CancelDisableAttDet(
void );
456:
extern uhs_status_t
Usbh_Api_ReqSuspend(
void );
457:
extern uhs_status_t
Usbh_Api_ReqResume(
void );
458:
459:
460:
461:
462:
463:
464:
#define Usbh_FixupCtrlUcb(ucb, usbdev, pipe, setup, buf, size, function, context) \
465:
Usbh_Api_FixupUsbCtrlBlock(ucb, usbdev, pipe, setup, buf, size, 0x00, function, context)
466:
467:
#define Usbh_FixupBulkUcb(ucb, usbdev, pipe, buf, size, function, context) \
468:
Usbh_Api_FixupUsbCtrlBlock(ucb, usbdev, pipe, NULL, buf, size, 0, function, context)
469:
470:
#define Usbh_FixupIntrUcb(ucb, usbdev, pipe, buf, size, interval, function, context) \
471:
Usbh_Api_FixupUsbCtrlBlock(ucb, usbdev, pipe, NULL, buf, size, interval, function, context)
472:
473:
#define Usbh_FixupIsoUcb(ucb, usbdev, pipe, buf, size, function, context) \
474:
Usbh_Api_FixupUsbCtrlBlock(ucb, usbdev, pipe, NULL, buf, size, 0, function, context)
475:
476:
477:
#endif