Annotation of sys/dev/usb/usb_port.h, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: usb_port.h,v 1.96 2007/06/17 07:53:11 mbalmer Exp $ */
! 2: /* $NetBSD: usb_port.h,v 1.62 2003/02/15 18:33:30 augustss Exp $ */
! 3: /* $FreeBSD: src/sys/dev/usb/usb_port.h,v 1.21 1999/11/17 22:33:47 n_hibma Exp $ */
! 4:
! 5: /*
! 6: * Copyright (c) 1998 The NetBSD Foundation, Inc.
! 7: * All rights reserved.
! 8: *
! 9: * This code is derived from software contributed to The NetBSD Foundation
! 10: * by Lennart Augustsson (lennart@augustsson.net) at
! 11: * Carlstedt Research & Technology.
! 12: *
! 13: * Redistribution and use in source and binary forms, with or without
! 14: * modification, are permitted provided that the following conditions
! 15: * are met:
! 16: * 1. Redistributions of source code must retain the above copyright
! 17: * notice, this list of conditions and the following disclaimer.
! 18: * 2. Redistributions in binary form must reproduce the above copyright
! 19: * notice, this list of conditions and the following disclaimer in the
! 20: * documentation and/or other materials provided with the distribution.
! 21: * 3. All advertising materials mentioning features or use of this software
! 22: * must display the following acknowledgement:
! 23: * This product includes software developed by the NetBSD
! 24: * Foundation, Inc. and its contributors.
! 25: * 4. Neither the name of The NetBSD Foundation nor the names of its
! 26: * contributors may be used to endorse or promote products derived
! 27: * from this software without specific prior written permission.
! 28: *
! 29: * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
! 30: * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
! 31: * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
! 32: * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
! 33: * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
! 34: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
! 35: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
! 36: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
! 37: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
! 38: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
! 39: * POSSIBILITY OF SUCH DAMAGE.
! 40: */
! 41:
! 42: #ifndef _USB_PORT_H
! 43: #define _USB_PORT_H
! 44:
! 45: /*
! 46: * Macros to ease the import of USB drivers from other operating systems, e.g.
! 47: * NetBSD or FreeBSD.
! 48: */
! 49:
! 50: #ifdef __HAVE_GENERIC_SOFT_INTERRUPTS
! 51: #define USB_USE_SOFTINTR
! 52: #else
! 53: #undef USB_USE_SOFTINTR
! 54: #endif
! 55:
! 56: #define Static
! 57:
! 58: #define UMASS_ATAPISTR "atapiscsi"
! 59:
! 60: /* periph_quirks */
! 61: #define PQUIRK_NOSENSE ADEV_NOSENSE /* can't REQUEST SENSE */
! 62: #define PQUIRK_ONLYBIG SDEV_ONLYBIG
! 63:
! 64: #define sel_klist si_note
! 65:
! 66: typedef struct proc *usb_proc_ptr;
! 67:
! 68: #define UCOMBUSCF_PORTNO 0
! 69: #define UCOMBUSCF_PORTNO_DEFAULT -1
! 70: #define UHIDBUSCF_REPORTID 0
! 71: #define UHIDBUSCF_REPORTID_DEFAULT -1
! 72:
! 73: #define mstohz(ms) ((ms) * hz / 1000)
! 74:
! 75: #define sel_klist si_note
! 76:
! 77: typedef int usb_malloc_type;
! 78:
! 79: #define if_deactivate(x)
! 80: #define IF_INPUT(ifp, m) ether_input_mbuf((ifp), (m))
! 81:
! 82: #define swap_bytes_change_sign16_le swap_bytes_change_sign16
! 83: #define change_sign16_swap_bytes_le change_sign16_swap_bytes
! 84: #define change_sign16_le change_sign16
! 85:
! 86: #define ulinear8_to_slinear16_le ulinear8_to_linear16_le
! 87: #define ulinear8_to_slinear16_be ulinear8_to_linear16_be
! 88: #define slinear16_to_ulinear8_le linear16_to_ulinear8_le
! 89: #define slinear16_to_ulinear8_be linear16_to_ulinear8_be
! 90:
! 91: typedef struct device *device_ptr_t;
! 92: #define USBBASEDEVICE struct device
! 93: #define USBDEV(bdev) (&(bdev))
! 94: #define USBDEVNAME(bdev) ((bdev).dv_xname)
! 95: #define USBDEVUNIT(bdev) ((bdev).dv_unit)
! 96: #define USBDEVPTRNAME(bdevptr) ((bdevptr)->dv_xname)
! 97: #define USBGETSOFTC(d) ((void *)(d))
! 98:
! 99: #define DECLARE_USB_DMA_T \
! 100: struct usb_dma_block; \
! 101: typedef struct { \
! 102: struct usb_dma_block *block; \
! 103: u_int offs; \
! 104: } usb_dma_t
! 105:
! 106: typedef struct timeout usb_callout_t;
! 107: #define usb_callout_init(h) timeout_set(&(h), NULL, NULL)
! 108: #define usb_callout(h, t, f, d) \
! 109: do { \
! 110: timeout_del(&(h)); \
! 111: timeout_set(&(h), (f), (d)); \
! 112: timeout_add(&(h), (t)); \
! 113: } while (0)
! 114: #define usb_callout_pending(h) timeout_pending(&(h))
! 115: #define usb_uncallout(h, f, d) timeout_del(&(h))
! 116:
! 117: #define USB_DECLARE_DRIVER_CLASS(dname, devclass) \
! 118: int __CONCAT(dname,_match)(struct device *, void *, void *); \
! 119: void __CONCAT(dname,_attach)(struct device *, struct device *, void *); \
! 120: int __CONCAT(dname,_detach)(struct device *, int); \
! 121: int __CONCAT(dname,_activate)(struct device *, enum devact); \
! 122: \
! 123: struct cfdriver __CONCAT(dname,_cd) = { \
! 124: NULL, #dname, devclass \
! 125: }; \
! 126: \
! 127: const struct cfattach __CONCAT(dname,_ca) = { \
! 128: sizeof(struct __CONCAT(dname,_softc)), \
! 129: __CONCAT(dname,_match), \
! 130: __CONCAT(dname,_attach), \
! 131: __CONCAT(dname,_detach), \
! 132: __CONCAT(dname,_activate), \
! 133: }
! 134:
! 135: #define USB_DECLARE_DRIVER(dname) USB_DECLARE_DRIVER_CLASS(dname, DV_DULL)
! 136:
! 137: #define USB_MATCH(dname) \
! 138: int \
! 139: __CONCAT(dname,_match)(parent, match, aux) \
! 140: struct device *parent; \
! 141: void *match; \
! 142: void *aux;
! 143:
! 144: #define USB_MATCH_START(dname, uaa) \
! 145: struct usb_attach_arg *uaa = aux
! 146:
! 147: #define USB_ATTACH(dname) \
! 148: void \
! 149: __CONCAT(dname,_attach)(parent, self, aux) \
! 150: struct device *parent; \
! 151: struct device *self; \
! 152: void *aux;
! 153:
! 154: #define USB_ATTACH_START(dname, sc, uaa) \
! 155: struct __CONCAT(dname,_softc) *sc = \
! 156: (struct __CONCAT(dname,_softc) *)self; \
! 157: struct usb_attach_arg *uaa = aux
! 158:
! 159: /* Returns from attach */
! 160: #define USB_ATTACH_ERROR_RETURN return
! 161: #define USB_ATTACH_SUCCESS_RETURN return
! 162:
! 163: #define USB_ATTACH_SETUP printf("\n")
! 164:
! 165: #define USB_DETACH(dname) \
! 166: int \
! 167: __CONCAT(dname,_detach)(self, flags) \
! 168: struct device *self; \
! 169: int flags;
! 170:
! 171: #define USB_DETACH_START(dname, sc) \
! 172: struct __CONCAT(dname,_softc) *sc = \
! 173: (struct __CONCAT(dname,_softc) *)self
! 174:
! 175: #define USB_GET_SC_OPEN(dname, unit, sc) \
! 176: if (unit >= __CONCAT(dname,_cd).cd_ndevs) \
! 177: return (ENXIO); \
! 178: sc = __CONCAT(dname,_cd).cd_devs[unit]; \
! 179: if (sc == NULL) \
! 180: return (ENXIO)
! 181:
! 182: #define USB_GET_SC(dname, unit, sc) \
! 183: sc = __CONCAT(dname,_cd).cd_devs[unit]
! 184:
! 185: #define USB_DO_ATTACH(dev, bdev, parent, args, print, sub) \
! 186: (config_found_sm(parent, args, print, sub))
! 187:
! 188: #endif /* _USB_PORT_H */
CVSweb