1 /*- 2 * Copyright (c) 2009 Andrew Thompson 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 14 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 15 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 16 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 17 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 18 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 19 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 20 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 22 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 * 24 * $FreeBSD$ 25 */ 26 #ifndef _USB_USBDI_H_ 27 #define _USB_USBDI_H_ 28 29 struct usb_fifo; 30 struct usb_xfer; 31 struct usb_device; 32 struct usb_attach_arg; 33 struct usb_interface; 34 struct usb_endpoint; 35 struct usb_page_cache; 36 struct usb_page_search; 37 struct usb_process; 38 struct usb_proc_msg; 39 struct usb_mbuf; 40 struct usb_fs_privdata; 41 struct mbuf; 42 43 typedef enum { /* keep in sync with usb_errstr_table */ 44 USB_ERR_NORMAL_COMPLETION = 0, 45 USB_ERR_PENDING_REQUESTS, /* 1 */ 46 USB_ERR_NOT_STARTED, /* 2 */ 47 USB_ERR_INVAL, /* 3 */ 48 USB_ERR_NOMEM, /* 4 */ 49 USB_ERR_CANCELLED, /* 5 */ 50 USB_ERR_BAD_ADDRESS, /* 6 */ 51 USB_ERR_BAD_BUFSIZE, /* 7 */ 52 USB_ERR_BAD_FLAG, /* 8 */ 53 USB_ERR_NO_CALLBACK, /* 9 */ 54 USB_ERR_IN_USE, /* 10 */ 55 USB_ERR_NO_ADDR, /* 11 */ 56 USB_ERR_NO_PIPE, /* 12 */ 57 USB_ERR_ZERO_NFRAMES, /* 13 */ 58 USB_ERR_ZERO_MAXP, /* 14 */ 59 USB_ERR_SET_ADDR_FAILED, /* 15 */ 60 USB_ERR_NO_POWER, /* 16 */ 61 USB_ERR_TOO_DEEP, /* 17 */ 62 USB_ERR_IOERROR, /* 18 */ 63 USB_ERR_NOT_CONFIGURED, /* 19 */ 64 USB_ERR_TIMEOUT, /* 20 */ 65 USB_ERR_SHORT_XFER, /* 21 */ 66 USB_ERR_STALLED, /* 22 */ 67 USB_ERR_INTERRUPTED, /* 23 */ 68 USB_ERR_DMA_LOAD_FAILED, /* 24 */ 69 USB_ERR_BAD_CONTEXT, /* 25 */ 70 USB_ERR_NO_ROOT_HUB, /* 26 */ 71 USB_ERR_NO_INTR_THREAD, /* 27 */ 72 USB_ERR_NOT_LOCKED, /* 28 */ 73 USB_ERR_MAX 74 } usb_error_t; 75 76 /* 77 * Flags for transfers 78 */ 79 #define USB_FORCE_SHORT_XFER 0x0001 /* force a short transmit last */ 80 #define USB_SHORT_XFER_OK 0x0004 /* allow short reads */ 81 #define USB_DELAY_STATUS_STAGE 0x0010 /* insert delay before STATUS stage */ 82 #define USB_USER_DATA_PTR 0x0020 /* internal flag */ 83 #define USB_MULTI_SHORT_OK 0x0040 /* allow multiple short frames */ 84 #define USB_MANUAL_STATUS 0x0080 /* manual ctrl status */ 85 86 #define USB_NO_TIMEOUT 0 87 #define USB_DEFAULT_TIMEOUT 5000 /* 5000 ms = 5 seconds */ 88 89 #endif /* _USB_USBDI_H_ */ 90