14c87aefeSPatrick Mooney /* $FreeBSD$ */
24c87aefeSPatrick Mooney /*-
34c87aefeSPatrick Mooney  * Copyright (c) 2008 Hans Petter Selasky. All rights reserved.
44c87aefeSPatrick Mooney  *
54c87aefeSPatrick Mooney  * Redistribution and use in source and binary forms, with or without
64c87aefeSPatrick Mooney  * modification, are permitted provided that the following conditions
74c87aefeSPatrick Mooney  * are met:
84c87aefeSPatrick Mooney  * 1. Redistributions of source code must retain the above copyright
94c87aefeSPatrick Mooney  *    notice, this list of conditions and the following disclaimer.
104c87aefeSPatrick Mooney  * 2. Redistributions in binary form must reproduce the above copyright
114c87aefeSPatrick Mooney  *    notice, this list of conditions and the following disclaimer in the
124c87aefeSPatrick Mooney  *    documentation and/or other materials provided with the distribution.
134c87aefeSPatrick Mooney  *
144c87aefeSPatrick Mooney  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
154c87aefeSPatrick Mooney  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
164c87aefeSPatrick Mooney  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
174c87aefeSPatrick Mooney  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
184c87aefeSPatrick Mooney  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
194c87aefeSPatrick Mooney  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
204c87aefeSPatrick Mooney  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
214c87aefeSPatrick Mooney  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
224c87aefeSPatrick Mooney  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
234c87aefeSPatrick Mooney  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
244c87aefeSPatrick Mooney  * SUCH DAMAGE.
254c87aefeSPatrick Mooney  */
264c87aefeSPatrick Mooney 
274c87aefeSPatrick Mooney /*
284c87aefeSPatrick Mooney  * Including this file is mandatory for all USB related c-files in the kernel.
294c87aefeSPatrick Mooney  */
304c87aefeSPatrick Mooney 
314c87aefeSPatrick Mooney #ifndef _USB_FREEBSD_H_
324c87aefeSPatrick Mooney #define	_USB_FREEBSD_H_
334c87aefeSPatrick Mooney 
344c87aefeSPatrick Mooney /* Default USB configuration */
354c87aefeSPatrick Mooney #define	USB_HAVE_UGEN 1
364c87aefeSPatrick Mooney #define	USB_HAVE_DEVCTL 1
374c87aefeSPatrick Mooney #define	USB_HAVE_BUSDMA 1
384c87aefeSPatrick Mooney #define	USB_HAVE_COMPAT_LINUX 1
394c87aefeSPatrick Mooney #define	USB_HAVE_USER_IO 1
404c87aefeSPatrick Mooney #define	USB_HAVE_MBUF 1
414c87aefeSPatrick Mooney #define	USB_HAVE_TT_SUPPORT 1
424c87aefeSPatrick Mooney #define	USB_HAVE_POWERD 1
434c87aefeSPatrick Mooney #define	USB_HAVE_MSCTEST 1
444c87aefeSPatrick Mooney #define	USB_HAVE_MSCTEST_DETACH 1
454c87aefeSPatrick Mooney #define	USB_HAVE_PF 1
464c87aefeSPatrick Mooney #define	USB_HAVE_ROOT_MOUNT_HOLD 1
474c87aefeSPatrick Mooney #define	USB_HAVE_ID_SECTION 1
484c87aefeSPatrick Mooney #define	USB_HAVE_PER_BUS_PROCESS 1
494c87aefeSPatrick Mooney #define	USB_HAVE_FIXED_ENDPOINT 0
504c87aefeSPatrick Mooney #define	USB_HAVE_FIXED_IFACE 0
514c87aefeSPatrick Mooney #define	USB_HAVE_FIXED_CONFIG 0
524c87aefeSPatrick Mooney #define	USB_HAVE_FIXED_PORT 0
534c87aefeSPatrick Mooney #define	USB_HAVE_DISABLE_ENUM 1
544c87aefeSPatrick Mooney 
554c87aefeSPatrick Mooney /* define zero ticks callout value */
564c87aefeSPatrick Mooney #define	USB_CALLOUT_ZERO_TICKS 1
574c87aefeSPatrick Mooney 
584c87aefeSPatrick Mooney #define	USB_TD_GET_PROC(td) (td)->td_proc
594c87aefeSPatrick Mooney #define	USB_PROC_GET_GID(td) (td)->p_pgid
604c87aefeSPatrick Mooney 
614c87aefeSPatrick Mooney #if (!defined(USB_HOST_ALIGN)) || (USB_HOST_ALIGN <= 0)
624c87aefeSPatrick Mooney /* Use default value. */
634c87aefeSPatrick Mooney #undef USB_HOST_ALIGN
644c87aefeSPatrick Mooney #if defined(__arm__) || defined(__mips__) || defined(__powerpc__)
654c87aefeSPatrick Mooney #define USB_HOST_ALIGN	32		/* Arm and MIPS need at least this much, if not more */
664c87aefeSPatrick Mooney #else
674c87aefeSPatrick Mooney #define	USB_HOST_ALIGN    8		/* bytes, must be power of two */
684c87aefeSPatrick Mooney #endif
694c87aefeSPatrick Mooney #endif
704c87aefeSPatrick Mooney /* Sanity check for USB_HOST_ALIGN: Verify power of two. */
714c87aefeSPatrick Mooney #if ((-USB_HOST_ALIGN) & USB_HOST_ALIGN) != USB_HOST_ALIGN
724c87aefeSPatrick Mooney #error "USB_HOST_ALIGN is not power of two."
734c87aefeSPatrick Mooney #endif
744c87aefeSPatrick Mooney #define	USB_FS_ISOC_UFRAME_MAX 4	/* exclusive unit */
754c87aefeSPatrick Mooney #define	USB_BUS_MAX 256			/* units */
764c87aefeSPatrick Mooney #define	USB_MAX_DEVICES 128		/* units */
774c87aefeSPatrick Mooney #define	USB_CONFIG_MAX 65535		/* bytes */
784c87aefeSPatrick Mooney #define	USB_IFACE_MAX 32		/* units */
794c87aefeSPatrick Mooney #define	USB_FIFO_MAX 128		/* units */
804c87aefeSPatrick Mooney #define	USB_MAX_EP_STREAMS 8		/* units */
814c87aefeSPatrick Mooney #define	USB_MAX_EP_UNITS 32		/* units */
824c87aefeSPatrick Mooney #define	USB_MAX_PORTS 255		/* units */
834c87aefeSPatrick Mooney 
844c87aefeSPatrick Mooney #define	USB_MAX_FS_ISOC_FRAMES_PER_XFER (120)	/* units */
854c87aefeSPatrick Mooney #define	USB_MAX_HS_ISOC_FRAMES_PER_XFER (8*120)	/* units */
864c87aefeSPatrick Mooney 
874c87aefeSPatrick Mooney #define	USB_HUB_MAX_DEPTH	5
884c87aefeSPatrick Mooney #define	USB_EP0_BUFSIZE		1024	/* bytes */
894c87aefeSPatrick Mooney #define	USB_CS_RESET_LIMIT	20	/* failures = 20 * 50 ms = 1sec */
904c87aefeSPatrick Mooney 
914c87aefeSPatrick Mooney #define	USB_MAX_AUTO_QUIRK	8	/* maximum number of dynamic quirks */
924c87aefeSPatrick Mooney 
934c87aefeSPatrick Mooney typedef uint32_t usb_timeout_t;		/* milliseconds */
944c87aefeSPatrick Mooney typedef uint32_t usb_frlength_t;	/* bytes */
954c87aefeSPatrick Mooney typedef uint32_t usb_frcount_t;		/* units */
964c87aefeSPatrick Mooney typedef uint32_t usb_size_t;		/* bytes */
974c87aefeSPatrick Mooney typedef uint32_t usb_ticks_t;		/* system defined */
984c87aefeSPatrick Mooney typedef uint16_t usb_power_mask_t;	/* see "USB_HW_POWER_XXX" */
994c87aefeSPatrick Mooney typedef uint16_t usb_stream_t;		/* stream ID */
1004c87aefeSPatrick Mooney 
1014c87aefeSPatrick Mooney #endif	/* _USB_FREEBSD_H_ */
102