Diff for /src/sys/bus/usb/usb_port.h between versions 1.4 and 1.5

version 1.4, 2003/06/27 01:53:24 version 1.5, 2003/12/30 01:01:44
Line 1 Line 1
/*        $NetBSD: usb_port.h,v 1.15 1999/11/16 12:04:28 augustss Exp $  *//*
/*        $FreeBSD: src/sys/dev/usb/usb_port.h,v 1.25.2.7 2002/08/12 14:19:49 joe Exp $      */ * $OpenBSD: usb_port.h,v 1.18 2000/09/06 22:42:10 rahnds Exp $
/*        $DragonFly: src/sys/dev/usb/usb_port.h,v 1.3 2003/06/23 17:55:36 dillon Exp $  */ * $NetBSD: usb_port.h,v 1.54 2002/03/28 21:49:19 ichiro Exp $
  * $FreeBSD: src/sys/dev/usb/usb_port.h,v 1.65 2003/11/09 23:54:21 joe Exp $
  * $DragonFly$
  */
 
 /* Also already merged from NetBSD:
  *      $NetBSD: usb_port.h,v 1.57 2002/09/27 20:42:01 thorpej Exp $
  *       $NetBSD: usb_port.h,v 1.58 2002/10/01 01:25:26 thorpej Exp $
  */
   
 /*  /*
  * Copyright (c) 1998 The NetBSD Foundation, Inc.   * Copyright (c) 1998 The NetBSD Foundation, Inc.
Line 39 Line 47
  * POSSIBILITY OF SUCH DAMAGE.   * POSSIBILITY OF SUCH DAMAGE.
  */   */
   
   #ifndef _USB_PORT_H
   #define _USB_PORT_H
   
/* /*
  * Macro's to cope with the differences between operating systems.   * Macro's to cope with the differences between operating systems.
  */   */
   
Line 51 Line 61
   
 #include "opt_usbverbose.h"  #include "opt_usbverbose.h"
   
   #define USB_USE_SOFTINTR
   
   #ifdef USB_DEBUG
   #define Static
   #else
 #define Static static  #define Static static
   #endif
   
   #define SCSI_MODE_SENSE         MODE_SENSE
   
 typedef struct proc *usb_proc_ptr;  typedef struct proc *usb_proc_ptr;
   
Line 59  typedef struct device *device_ptr_t; Line 77  typedef struct device *device_ptr_t;
 #define USBBASEDEVICE struct device  #define USBBASEDEVICE struct device
 #define USBDEV(bdev) (&(bdev))  #define USBDEV(bdev) (&(bdev))
 #define USBDEVNAME(bdev) ((bdev).dv_xname)  #define USBDEVNAME(bdev) ((bdev).dv_xname)
 #define USBDEVPTRNAME(bdevptr) ((bdevptr)->dv_xname)  
 #define USBDEVUNIT(bdev) ((bdev).dv_unit)  #define USBDEVUNIT(bdev) ((bdev).dv_unit)
   #define USBDEVPTRNAME(bdevptr) ((bdevptr)->dv_xname)
   #define USBGETSOFTC(d) ((void *)(d))
   
 #define DECLARE_USB_DMA_T \  #define DECLARE_USB_DMA_T \
         struct usb_dma_block; \          struct usb_dma_block; \
Line 69  typedef struct device *device_ptr_t; Line 88  typedef struct device *device_ptr_t;
                 u_int offs; \                  u_int offs; \
         } usb_dma_t          } usb_dma_t
   
#define usb_timeout(f, d, t, h) timeout((f), (d), (t))typedef struct callout usb_callout_t;
#define usb_untimeout(f, d, h) untimeout((f), (d))#define usb_callout_init(h) callout_init(&(h))
 #define usb_callout(h, t, f, d)   callout_reset(&(h), (t), (f), (d))
 #define usb_uncallout(h, f, d)  callout_stop(&(h))
 
 #define usb_kthread_create1 kthread_create1
 #define usb_kthread_create      kthread_create
 
 typedef int usb_malloc_type;
 
 #define Ether_ifattach ether_ifattach
 #define IF_INPUT(ifp, m) (*(ifp)->if_input)((ifp), (m))
   
 #define logprintf printf  #define logprintf printf
   
   #define USB_DNAME(dname)        dname
 #define USB_DECLARE_DRIVER(dname)  \  #define USB_DECLARE_DRIVER(dname)  \
 int __CONCAT(dname,_match)(struct device *, struct cfdata *, void *); \  int __CONCAT(dname,_match)(struct device *, struct cfdata *, void *); \
 void __CONCAT(dname,_attach)(struct device *, struct device *, void *); \  void __CONCAT(dname,_attach)(struct device *, struct device *, void *); \
Line 82  int __CONCAT(dname,_activate)(struct dev Line 112  int __CONCAT(dname,_activate)(struct dev
 \  \
 extern struct cfdriver __CONCAT(dname,_cd); \  extern struct cfdriver __CONCAT(dname,_cd); \
 \  \
struct cfattach __CONCAT(dname,_ca) = { \CFATTACH_DECL(USB_DNAME(dname), \
        sizeof(struct __CONCAT(dname,_softc)), \    sizeof(struct ___CONCAT(dname,_softc)), \
        __CONCAT(dname,_match), \    ___CONCAT(dname,_match), \
        __CONCAT(dname,_attach), \    ___CONCAT(dname,_attach), \
        __CONCAT(dname,_detach), \    ___CONCAT(dname,_detach), \
        __CONCAT(dname,_activate), \    ___CONCAT(dname,_activate))
} 
   
 #define USB_MATCH(dname) \  #define USB_MATCH(dname) \
int \int __CONCAT(dname,_match)(struct device *parent, struct cfdata *match, void *aux)
__CONCAT(dname,_match)(parent, match, aux) \ 
        struct device *parent; \ 
        struct cfdata *match; \ 
        void *aux; 
   
 #define USB_MATCH_START(dname, uaa) \  #define USB_MATCH_START(dname, uaa) \
         struct usb_attach_arg *uaa = aux          struct usb_attach_arg *uaa = aux
   
 #define USB_MATCH_SETUP         /* nop */  
   
 #define USB_ATTACH(dname) \  #define USB_ATTACH(dname) \
void \void __CONCAT(dname,_attach)(struct device *parent, struct device *self, void *aux)
__CONCAT(dname,_attach)(parent, self, aux) \ 
        struct device *parent; \ 
        struct device *self; \ 
        void *aux; 
   
 #define USB_ATTACH_START(dname, sc, uaa) \  #define USB_ATTACH_START(dname, sc, uaa) \
         struct __CONCAT(dname,_softc) *sc = \          struct __CONCAT(dname,_softc) *sc = \
Line 121  __CONCAT(dname,_attach)(parent, self, au Line 140  __CONCAT(dname,_attach)(parent, self, au
 #define USB_ATTACH_SETUP printf("\n")  #define USB_ATTACH_SETUP printf("\n")
   
 #define USB_DETACH(dname) \  #define USB_DETACH(dname) \
int \int __CONCAT(dname,_detach)(struct device *self, int flags)
__CONCAT(dname,_detach)(self, flags) \ 
        struct device *self; \ 
        int flags; 
   
 #define USB_DETACH_START(dname, sc) \  #define USB_DETACH_START(dname, sc) \
         struct __CONCAT(dname,_softc) *sc = \          struct __CONCAT(dname,_softc) *sc = \
Line 134  __CONCAT(dname,_detach)(self, flags) \ Line 150  __CONCAT(dname,_detach)(self, flags) \
         if (unit >= __CONCAT(dname,_cd).cd_ndevs) \          if (unit >= __CONCAT(dname,_cd).cd_ndevs) \
                 return (ENXIO); \                  return (ENXIO); \
         sc = __CONCAT(dname,_cd).cd_devs[unit]; \          sc = __CONCAT(dname,_cd).cd_devs[unit]; \
        if (!sc) \        if (sc == NULL) \
                 return (ENXIO)                  return (ENXIO)
   
 #define USB_GET_SC(dname, unit, sc) \  #define USB_GET_SC(dname, unit, sc) \
Line 147  __CONCAT(dname,_detach)(self, flags) \ Line 163  __CONCAT(dname,_detach)(self, flags) \
 /*  /*
  * OpenBSD   * OpenBSD
  */   */
#define Static static#define Static
   
 typedef struct proc *usb_proc_ptr;  typedef struct proc *usb_proc_ptr;
   
   #define UCOMBUSCF_PORTNO                -1
   #define UCOMBUSCF_PORTNO_DEFAULT        -1
   
   #define SCSI_MODE_SENSE         MODE_SENSE
   #define XS_STS_DONE             ITSDONE
   #define XS_CTL_POLL             SCSI_POLL
   #define XS_CTL_DATA_IN          SCSI_DATA_IN
   #define XS_CTL_DATA_OUT         SCSI_DATA_OUT
   #define scsipi_adapter          scsi_adapter
   #define scsipi_cmd              scsi_cmd
   #define scsipi_device           scsi_device
   #define scsipi_done             scsi_done
   #define scsipi_link             scsi_link
   #define scsipi_minphys          scsi_minphys
   #define scsipi_sense            scsi_sense
   #define scsipi_xfer             scsi_xfer
   #define xs_control              flags
   #define xs_status               status
   
 #define memcpy(d, s, l)         bcopy((s),(d),(l))  #define memcpy(d, s, l)         bcopy((s),(d),(l))
 #define memset(d, v, l)         bzero((d),(l))  #define memset(d, v, l)         bzero((d),(l))
 #define bswap32(x)              swap32(x)  #define bswap32(x)              swap32(x)
#define kthread_create1         kthread_create#define bswap16(x)              swap16(x)
#define kthread_create          kthread_create_deferred
 /*
  * The UHCI/OHCI controllers are little endian, so on big endian machines
  * the data strored in memory needs to be swapped.
  */
 
 #if defined(letoh32)
 #define le32toh(x) letoh32(x)
 #define le16toh(x) letoh16(x)
 #endif
 
 #define usb_kthread_create1 kthread_create
 #define usb_kthread_create  kthread_create_deferred
 
 #define config_pending_incr()
 #define config_pending_decr()
 
 typedef int usb_malloc_type;
 
 #define Ether_ifattach(ifp, eaddr) ether_ifattach(ifp)
 #define if_deactivate(x)
 #define IF_INPUT(ifp, m) do {                                           \
         struct ether_header *eh;                                        \
                                                                         \
         eh = mtod(m, struct ether_header *);                            \
         m_adj(m, sizeof(struct ether_header));                          \
         ether_input((ifp), (eh), (m));                                  \
 } while (0)
   
 #define usbpoll                 usbselect  #define usbpoll                 usbselect
 #define uhidpoll                uhidselect  #define uhidpoll                uhidselect
 #define ugenpoll                ugenselect  #define ugenpoll                ugenselect
   #define uriopoll                urioselect
   #define uscannerpoll            uscannerselect
   
   #define powerhook_establish(fn, sc) (fn)
   #define powerhook_disestablish(hdl)
 #define PWR_RESUME 0  #define PWR_RESUME 0
 #define PWR_SUSPEND 1  
   
typedef struct device device_ptr_t;#define logprintf printf
 
 #define swap_bytes_change_sign16_le swap_bytes_change_sign16
 #define change_sign16_swap_bytes_le change_sign16_swap_bytes
 #define change_sign16_le change_sign16
 
 #define realloc usb_realloc
 void *usb_realloc(void *, u_int, int, int);
 
 extern int cold;
 
 typedef struct device *device_ptr_t;
 #define USBBASEDEVICE struct device  #define USBBASEDEVICE struct device
 #define USBDEV(bdev) (&(bdev))  #define USBDEV(bdev) (&(bdev))
 #define USBDEVNAME(bdev) ((bdev).dv_xname)  #define USBDEVNAME(bdev) ((bdev).dv_xname)
 #define USBDEVPTRNAME(bdevptr) ((bdevptr)->dv_xname)  
 #define USBDEVUNIT(bdev) ((bdev).dv_unit)  #define USBDEVUNIT(bdev) ((bdev).dv_unit)
   #define USBDEVPTRNAME(bdevptr) ((bdevptr)->dv_xname)
   #define USBGETSOFTC(d) ((void *)(d))
   
 #define DECLARE_USB_DMA_T \  #define DECLARE_USB_DMA_T \
         struct usb_dma_block; \          struct usb_dma_block; \
Line 178  typedef struct device device_ptr_t; Line 255  typedef struct device device_ptr_t;
                 u_int offs; \                  u_int offs; \
         } usb_dma_t          } usb_dma_t
   
#define usb_timeout(f, d, t, h) timeout((f), (d), (t))typedef char usb_callout_t;
#define usb_untimeout(f, d, h) untimeout((f), (d))#define usb_callout_init(h)
 #define usb_callout(h, t, f, d) timeout((f), (d), (t))
 #define usb_uncallout(h, f, d) untimeout((f), (d))
   
 #define USB_DECLARE_DRIVER(dname)  \  #define USB_DECLARE_DRIVER(dname)  \
 int __CONCAT(dname,_match)(struct device *, void *, void *); \  int __CONCAT(dname,_match)(struct device *, void *, void *); \
Line 191  struct cfdriver __CONCAT(dname,_cd) = { Line 270  struct cfdriver __CONCAT(dname,_cd) = {
         NULL, #dname, DV_DULL \          NULL, #dname, DV_DULL \
 }; \  }; \
 \  \
struct cfattach __CONCAT(dname,_ca) = { \const struct cfattach __CONCAT(dname,_ca) = { \
         sizeof(struct __CONCAT(dname,_softc)), \          sizeof(struct __CONCAT(dname,_softc)), \
         __CONCAT(dname,_match), \          __CONCAT(dname,_match), \
         __CONCAT(dname,_attach), \          __CONCAT(dname,_attach), \
Line 209  __CONCAT(dname,_match)(parent, match, au Line 288  __CONCAT(dname,_match)(parent, match, au
 #define USB_MATCH_START(dname, uaa) \  #define USB_MATCH_START(dname, uaa) \
         struct usb_attach_arg *uaa = aux          struct usb_attach_arg *uaa = aux
   
 #define USB_MATCH_SETUP         /* nop */  
   
 #define USB_ATTACH(dname) \  #define USB_ATTACH(dname) \
 void \  void \
 __CONCAT(dname,_attach)(parent, self, aux) \  __CONCAT(dname,_attach)(parent, self, aux) \
Line 243  __CONCAT(dname,_detach)(self, flags) \ Line 320  __CONCAT(dname,_detach)(self, flags) \
         if (unit >= __CONCAT(dname,_cd).cd_ndevs) \          if (unit >= __CONCAT(dname,_cd).cd_ndevs) \
                 return (ENXIO); \                  return (ENXIO); \
         sc = __CONCAT(dname,_cd).cd_devs[unit]; \          sc = __CONCAT(dname,_cd).cd_devs[unit]; \
        if (!sc) \        if (sc == NULL) \
                 return (ENXIO)                  return (ENXIO)
   
 #define USB_GET_SC(dname, unit, sc) \  #define USB_GET_SC(dname, unit, sc) \
Line 252  __CONCAT(dname,_detach)(self, flags) \ Line 329  __CONCAT(dname,_detach)(self, flags) \
 #define USB_DO_ATTACH(dev, bdev, parent, args, print, sub) \  #define USB_DO_ATTACH(dev, bdev, parent, args, print, sub) \
         (config_found_sm(parent, args, print, sub))          (config_found_sm(parent, args, print, sub))
   
#elif defined(__FreeBSD__)#elif defined(__DragonFly__)
/*/***************************************************************************
 * FreeBSD *                                      DRAGONFLY
  */   */
   
 #include "opt_usb.h"  #include "opt_usb.h"
   
   #if defined(_KERNEL)
   #include <sys/malloc.h>
   
   MALLOC_DECLARE(M_USB);
   MALLOC_DECLARE(M_USBDEV);
   MALLOC_DECLARE(M_USBHC);
   
   #endif
   
 #define USBVERBOSE  #define USBVERBOSE
   
   /* We don't use the soft interrupt code in FreeBSD. */
   /* #undef USB_USE_SOFTINTR */
   
 #define Static static  #define Static static
   
 #define device_ptr_t device_t  #define device_ptr_t device_t
 #define USBBASEDEVICE device_t  #define USBBASEDEVICE device_t
 #define USBDEV(bdev) (bdev)  #define USBDEV(bdev) (bdev)
 #define USBDEVNAME(bdev) device_get_nameunit(bdev)  #define USBDEVNAME(bdev) device_get_nameunit(bdev)
   #define USBDEVUNIT(bdev) device_get_unit(bdev)
 #define USBDEVPTRNAME(bdev) device_get_nameunit(bdev)  #define USBDEVPTRNAME(bdev) device_get_nameunit(bdev)
 #define USBDEVUNIT(bdev) device_get_unit(bdev)  #define USBDEVUNIT(bdev) device_get_unit(bdev)
   #define USBGETSOFTC(bdev) (device_get_softc(bdev))
   
#define DECLARE_USB_DMA_T typedef char * usb_dma_t#define DECLARE_USB_DMA_T \
         struct usb_dma_block; \
         typedef struct { \
                 struct usb_dma_block *block; \
                 u_int offs; \
                 u_int len; \
         } usb_dma_t
 
 #define PROC_LOCK(p)
 #define PROC_UNLOCK(p)
 #define uio_procp uio_td
 
 #define selwakeuppri(p, pri)    selwakeup(p)
   
 typedef struct thread *usb_proc_ptr;  typedef struct thread *usb_proc_ptr;
   
 /* XXX Change this when FreeBSD has memset */  /* XXX Change this when FreeBSD has memset */
#define memcpy(d, s, l)         bcopy((s),(d),(l))#define memcpy(d, s, l)         bcopy((s),(d),(l))
#define memset(d, v, l)         bzero((d),(l))#define memset(d, v, l)         bzero((d),(l))
#define bswap32(x)              swap32(x)#define bswap32(x)              swap32(x)
#define kthread_create1(function, sc, priv, string, name)
#define kthread_create(create_function, sc)#define config_pending_incr()
#define kthread_exit()#define config_pending_decr()
 
 #define usb_kthread_create(f, s)                        \
                 kthread_create(f, s, NULL, "dummy")
 #define usb_kthread_create1(f, s, p, name, arg)          \
                 kthread_create(f, s, p, name, arg)
 #define usb_kthread_create2(f, s, p, name)          \
                 kthread_create(f, s, p, name)
 
 typedef struct callout usb_callout_t;
 #define usb_callout_init(h)     callout_init(&(h))
 #define usb_callout(h, t, f, d) callout_reset(&(h), (t), (f), (d))
 #define usb_uncallout(h, f, d)  callout_stop(&(h))
   
#define usb_timeout(f, d, t, h) ((h) = timeout((f), (d), (t)))#define ETHER_ALIGN             2
#define usb_untimeout(f, d, h) untimeout((f), (d), (h))#define BPF_MTAP(ifp, m)        if ((ifp)->if_bpf) bpf_mtap((ifp), (m));
   
 #define clalloc(p, s, x) (clist_alloc_cblocks((p), (s), (s)), 0)  #define clalloc(p, s, x) (clist_alloc_cblocks((p), (s), (s)), 0)
 #define clfree(p) clist_free_cblocks((p))  #define clfree(p) clist_free_cblocks((p))
Line 291  typedef struct thread *usb_proc_ptr; Line 405  typedef struct thread *usb_proc_ptr;
 #define PWR_RESUME 0  #define PWR_RESUME 0
 #define PWR_SUSPEND 1  #define PWR_SUSPEND 1
   
   #define config_detach(dev, flag) device_delete_child(device_get_parent(dev), dev)
   
   typedef struct malloc_type *usb_malloc_type;
   
 #define USB_DECLARE_DRIVER_INIT(dname, init...) \  #define USB_DECLARE_DRIVER_INIT(dname, init...) \
 Static device_probe_t __CONCAT(dname,_match); \  Static device_probe_t __CONCAT(dname,_match); \
 Static device_attach_t __CONCAT(dname,_attach); \  Static device_attach_t __CONCAT(dname,_attach); \
Line 310  Static driver_t __CONCAT(dname,_driver) Line 428  Static driver_t __CONCAT(dname,_driver)
         #dname, \          #dname, \
         __CONCAT(dname,_methods), \          __CONCAT(dname,_methods), \
         sizeof(struct __CONCAT(dname,_softc)) \          sizeof(struct __CONCAT(dname,_softc)) \
}}; \
 MODULE_DEPEND(dname, usb, 1, 1, 1)
 
 
 #define METHODS_NONE                    {0,0}  #define METHODS_NONE                    {0,0}
 #define USB_DECLARE_DRIVER(dname)       USB_DECLARE_DRIVER_INIT(dname, METHODS_NONE)  #define USB_DECLARE_DRIVER(dname)       USB_DECLARE_DRIVER_INIT(dname, METHODS_NONE)
   
Line 349  __CONCAT(dname,_detach)(device_t self) Line 470  __CONCAT(dname,_detach)(device_t self)
   
 #define USB_GET_SC_OPEN(dname, unit, sc) \  #define USB_GET_SC_OPEN(dname, unit, sc) \
         sc = devclass_get_softc(__CONCAT(dname,_devclass), unit); \          sc = devclass_get_softc(__CONCAT(dname,_devclass), unit); \
        if (!sc) \        if (sc == NULL) \
                 return (ENXIO)                  return (ENXIO)
   
 #define USB_GET_SC(dname, unit, sc) \  #define USB_GET_SC(dname, unit, sc) \
Line 359  __CONCAT(dname,_detach)(device_t self) Line 480  __CONCAT(dname,_detach)(device_t self)
         (device_probe_and_attach((bdev)) == 0 ? (bdev) : 0)          (device_probe_and_attach((bdev)) == 0 ? (bdev) : 0)
   
 /* conversion from one type of queue to the other */  /* conversion from one type of queue to the other */
/* XXX In FreeBSD SIMPLEQ_REMOVE_HEAD only removes the head element.#define SIMPLEQ_REMOVE_HEAD    STAILQ_REMOVE_HEAD
 #define SIMPLEQ_INSERT_HEAD     STAILQ_INSERT_HEAD
 #define SIMPLEQ_INSERT_TAIL     STAILQ_INSERT_TAIL
 #define SIMPLEQ_NEXT            STAILQ_NEXT
 #define SIMPLEQ_FIRST           STAILQ_FIRST
 #define SIMPLEQ_HEAD            STAILQ_HEAD
 #define SIMPLEQ_EMPTY           STAILQ_EMPTY
 #define SIMPLEQ_FOREACH         STAILQ_FOREACH
 #define SIMPLEQ_INIT            STAILQ_INIT
 #define SIMPLEQ_HEAD_INITIALIZER        STAILQ_HEAD_INITIALIZER
 #define SIMPLEQ_ENTRY           STAILQ_ENTRY
 
 #include <sys/syslog.h>
 /*
 #define logprintf(args...)      log(LOG_DEBUG, args)
 */
 #define logprintf               printf
 
 #ifdef SYSCTL_DECL
 SYSCTL_DECL(_hw_usb);
 #endif
 
 #elif defined(__FreeBSD__)
 /***************************************************************************
  *                                      FREEBSD
  */   */
#define SIMPLEQ_REMOVE_HEAD(h, e, f)       do {                            \
                if ( (e) != SIMPLEQ_FIRST((h)) )                        \#include "opt_usb.h"
                        panic("Removing other than first element");     \
                STAILQ_REMOVE_HEAD(h, f);                         \#if defined(_KERNEL)
} while (0)#include <sys/malloc.h>
 
 MALLOC_DECLARE(M_USB);
 MALLOC_DECLARE(M_USBDEV);
 MALLOC_DECLARE(M_USBHC);
 
 #endif
 
 #define USBVERBOSE
 
 /* We don't use the soft interrupt code in FreeBSD. */
 #if 0
 #define USB_USE_SOFTINTR
 #endif
 
 #define Static static
 
 #define device_ptr_t device_t
 #define USBBASEDEVICE device_t
 #define USBDEV(bdev) (bdev)
 #define USBDEVNAME(bdev) device_get_nameunit(bdev)
 #define USBDEVUNIT(bdev) device_get_unit(bdev)
 #define USBDEVPTRNAME(bdev) device_get_nameunit(bdev)
 #define USBDEVUNIT(bdev) device_get_unit(bdev)
 #define USBGETSOFTC(bdev) (device_get_softc(bdev))
 
 #define DECLARE_USB_DMA_T \
         struct usb_dma_block; \
         typedef struct { \
                 struct usb_dma_block *block; \
                 u_int offs; \
                 u_int len; \
         } usb_dma_t
 
 #if __FreeBSD_version >= 500000
 typedef struct thread *usb_proc_ptr;
 
 #define uio_procp uio_td
 
 #define usb_kthread_create1(f, s, p, a0, a1) \
                 kthread_create((f), (s), (p), RFHIGHPID, 0, (a0), (a1))
 #define usb_kthread_create2(f, s, p, a0) \
                 kthread_create((f), (s), (p), RFHIGHPID, 0, (a0))
 #define usb_kthread_create      kthread_create
 
 #define config_pending_incr()
 #define config_pending_decr()
 
 typedef struct callout usb_callout_t;
 #define usb_callout_init(h)     callout_init(&(h), 0)
 #define usb_callout(h, t, f, d) callout_reset(&(h), (t), (f), (d))
 #define usb_uncallout(h, f, d)  callout_stop(&(h))
 #else
 typedef struct proc *usb_proc_ptr;
 
 #define PROC_LOCK(p)
 #define PROC_UNLOCK(p)
 
 #define usb_kthread_create1(f, s, p, a0, a1) \
                 kthread_create((f), (s), (p), (a0), (a1))
 #define usb_kthread_create2(f, s, p, a0) \
                 kthread_create((f), (s), (p), (a0))
 #define usb_kthread_create      kthread_create
 
 #define config_pending_incr()
 #define config_pending_decr()
 
 typedef struct callout usb_callout_t;
 #define usb_callout_init(h)     callout_init(&(h))
 #define usb_callout(h, t, f, d) callout_reset(&(h), (t), (f), (d))
 #define usb_uncallout(h, f, d)  callout_stop(&(h))
 
 #define BUS_DMA_COHERENT        0
 #define ETHER_ALIGN             2
 #define BPF_MTAP(ifp, m)        if ((ifp)->if_bpf) bpf_mtap((ifp), (m));
 #endif
 
 #define clalloc(p, s, x) (clist_alloc_cblocks((p), (s), (s)), 0)
 #define clfree(p) clist_free_cblocks((p))
 
 #define PWR_RESUME 0
 #define PWR_SUSPEND 1
 
 #define config_detach(dev, flag) device_delete_child(device_get_parent(dev), dev)
 
 typedef struct malloc_type *usb_malloc_type;
 
 #define USB_DECLARE_DRIVER_INIT(dname, init...) \
 Static device_probe_t __CONCAT(dname,_match); \
 Static device_attach_t __CONCAT(dname,_attach); \
 Static device_detach_t __CONCAT(dname,_detach); \
 \
 Static devclass_t __CONCAT(dname,_devclass); \
 \
 Static device_method_t __CONCAT(dname,_methods)[] = { \
         DEVMETHOD(device_probe, __CONCAT(dname,_match)), \
         DEVMETHOD(device_attach, __CONCAT(dname,_attach)), \
         DEVMETHOD(device_detach, __CONCAT(dname,_detach)), \
         init, \
         {0,0} \
 }; \
 \
 Static driver_t __CONCAT(dname,_driver) = { \
         #dname, \
         __CONCAT(dname,_methods), \
         sizeof(struct __CONCAT(dname,_softc)) \
 }; \
 MODULE_DEPEND(dname, usb, 1, 1, 1)
 
 
 #define METHODS_NONE                    {0,0}
 #define USB_DECLARE_DRIVER(dname)       USB_DECLARE_DRIVER_INIT(dname, METHODS_NONE)
 
 #define USB_MATCH(dname) \
 Static int \
 __CONCAT(dname,_match)(device_t self)
 
 #define USB_MATCH_START(dname, uaa) \
         struct usb_attach_arg *uaa = device_get_ivars(self)
 
 #define USB_MATCH_SETUP \
         sc->sc_dev = self
 
 #define USB_ATTACH(dname) \
 Static int \
 __CONCAT(dname,_attach)(device_t self)
 
 #define USB_ATTACH_START(dname, sc, uaa) \
         struct __CONCAT(dname,_softc) *sc = device_get_softc(self); \
         struct usb_attach_arg *uaa = device_get_ivars(self)
 
 /* Returns from attach */
 #define USB_ATTACH_ERROR_RETURN return ENXIO
 #define USB_ATTACH_SUCCESS_RETURN       return 0
 
 #define USB_ATTACH_SETUP \
         sc->sc_dev = self; \
         device_set_desc_copy(self, devinfo)
 
 #define USB_DETACH(dname) \
 Static int \
 __CONCAT(dname,_detach)(device_t self)
 
 #define USB_DETACH_START(dname, sc) \
         struct __CONCAT(dname,_softc) *sc = device_get_softc(self)
 
 #define USB_GET_SC_OPEN(dname, unit, sc) \
         sc = devclass_get_softc(__CONCAT(dname,_devclass), unit); \
         if (sc == NULL) \
                 return (ENXIO)
 
 #define USB_GET_SC(dname, unit, sc) \
         sc = devclass_get_softc(__CONCAT(dname,_devclass), unit)
 
 #define USB_DO_ATTACH(dev, bdev, parent, args, print, sub) \
         (device_probe_and_attach((bdev)) == 0 ? (bdev) : 0)
 
 /* conversion from one type of queue to the other */
 #define SIMPLEQ_REMOVE_HEAD     STAILQ_REMOVE_HEAD
 #define SIMPLEQ_INSERT_HEAD     STAILQ_INSERT_HEAD  #define SIMPLEQ_INSERT_HEAD     STAILQ_INSERT_HEAD
 #define SIMPLEQ_INSERT_TAIL     STAILQ_INSERT_TAIL  #define SIMPLEQ_INSERT_TAIL     STAILQ_INSERT_TAIL
 #define SIMPLEQ_NEXT            STAILQ_NEXT  #define SIMPLEQ_NEXT            STAILQ_NEXT
 #define SIMPLEQ_FIRST           STAILQ_FIRST  #define SIMPLEQ_FIRST           STAILQ_FIRST
 #define SIMPLEQ_HEAD            STAILQ_HEAD  #define SIMPLEQ_HEAD            STAILQ_HEAD
   #define SIMPLEQ_EMPTY           STAILQ_EMPTY
   #define SIMPLEQ_FOREACH         STAILQ_FOREACH
 #define SIMPLEQ_INIT            STAILQ_INIT  #define SIMPLEQ_INIT            STAILQ_INIT
 #define SIMPLEQ_HEAD_INITIALIZER        STAILQ_HEAD_INITIALIZER  #define SIMPLEQ_HEAD_INITIALIZER        STAILQ_HEAD_INITIALIZER
 #define SIMPLEQ_ENTRY           STAILQ_ENTRY  #define SIMPLEQ_ENTRY           STAILQ_ENTRY
Line 386  SYSCTL_DECL(_hw_usb); Line 691  SYSCTL_DECL(_hw_usb);
 #endif  #endif
   
 #endif /* __FreeBSD__ */  #endif /* __FreeBSD__ */
   
   #endif /* _USB_PORT_H */
   

Removed from v.1.4  
changed lines
  Added in v.1.5