Diff for /src/sys/bus/usb/usbdivar.h between versions 1.2 and 1.3

version 1.2, 2003/06/17 04:28:32 version 1.3, 2003/12/30 01:01:44
Line 1 Line 1
/*        $NetBSD: usbdivar.h,v 1.46 2000/01/19 01:16:40 augustss Exp $ *//*
/*        $FreeBSD: src/sys/dev/usb/usbdivar.h,v 1.14.2.2 2000/10/31 23:23:30 n_hibma Exp $  */ * $NetBSD: usbdivar.h,v 1.70 2002/07/11 21:14:36 augustss Exp $
/*        $DragonFly: src/sys/dev/usb/usbdivar.h,v 1.1 2003/06/16 06:11:34 dillon Exp $     */ * $FreeBSD: src/sys/dev/usb/usbdivar.h,v 1.40 2003/07/15 22:42:37 jmg Exp $
  * $DragonFly$
  */
   
 /*  /*
  * Copyright (c) 1998 The NetBSD Foundation, Inc.   * Copyright (c) 1998 The NetBSD Foundation, Inc.
Line 39 Line 41
  * POSSIBILITY OF SUCH DAMAGE.   * POSSIBILITY OF SUCH DAMAGE.
  */   */
   
   #if defined(__NetBSD__)
   #include <sys/callout.h>
   #endif
   
 /* From usb_mem.h */  /* From usb_mem.h */
 DECLARE_USB_DMA_T;  DECLARE_USB_DMA_T;
   
Line 52  struct usbd_endpoint { Line 58  struct usbd_endpoint {
   
 struct usbd_bus_methods {  struct usbd_bus_methods {
         usbd_status           (*open_pipe)(struct usbd_pipe *pipe);          usbd_status           (*open_pipe)(struct usbd_pipe *pipe);
           void                  (*soft_intr)(void *);
         void                  (*do_poll)(struct usbd_bus *);          void                  (*do_poll)(struct usbd_bus *);
         usbd_status           (*allocm)(struct usbd_bus *, usb_dma_t *,          usbd_status           (*allocm)(struct usbd_bus *, usb_dma_t *,
                                            u_int32_t bufsize);                                        u_int32_t bufsize);
         void                  (*freem)(struct usbd_bus *, usb_dma_t *);          void                  (*freem)(struct usbd_bus *, usb_dma_t *);
         struct usbd_xfer *    (*allocx)(struct usbd_bus *);          struct usbd_xfer *    (*allocx)(struct usbd_bus *);
        void                  (*freex)(struct usbd_bus *,        void                  (*freex)(struct usbd_bus *, struct usbd_xfer *);
                                           struct usbd_xfer *); 
 };  };
   
 struct usbd_pipe_methods {  struct usbd_pipe_methods {
Line 76  struct usbd_port { Line 82  struct usbd_port {
         u_int8_t                portno;          u_int8_t                portno;
         u_int8_t                restartcnt;          u_int8_t                restartcnt;
 #define USBD_RESTART_MAX 5  #define USBD_RESTART_MAX 5
        struct usbd_device     *device;        struct usbd_device     *device; /* Connected device */
         struct usbd_device     *parent; /* The ports hub */          struct usbd_device     *parent; /* The ports hub */
 };  };
   
Line 110  struct usbd_bus { Line 116  struct usbd_bus {
 #define USBREV_PRE_1_0  1  #define USBREV_PRE_1_0  1
 #define USBREV_1_0      2  #define USBREV_1_0      2
 #define USBREV_1_1      3  #define USBREV_1_1      3
#define USBREV_STR { "unknown", "pre 1.0", "1.0", "1.1" }#define USBREV_2_0      4
 #define USBREV_STR { "unknown", "pre 1.0", "1.0", "1.1", "2.0" }
   
#if defined(__NetBSD__) || defined(__OpenBSD__)#ifdef USB_USE_SOFTINTR
        bus_dma_tag_t           dmatag; /* DMA tag */#ifdef __HAVE_GENERIC_SOFT_INTERRUPTS
         void                   *soft; /* soft interrupt cookie */
 #else
         struct callout          softi;
 #endif
 #endif  #endif
   
           bus_dma_tag_t           dmatag; /* DMA tag */
 };  };
   
 struct usbd_device {  struct usbd_device {
Line 123  struct usbd_device { Line 136  struct usbd_device {
         u_int8_t                address;       /* device addess */          u_int8_t                address;       /* device addess */
         u_int8_t                config;        /* current configuration # */          u_int8_t                config;        /* current configuration # */
         u_int8_t                depth;         /* distance from root hub */          u_int8_t                depth;         /* distance from root hub */
        u_int8_t                lowspeed;      /* lowspeed flag */        u_int8_t                speed;         /* low/full/high speed */
         u_int8_t                self_powered;  /* flag for self powered */          u_int8_t                self_powered;  /* flag for self powered */
         u_int16_t               power;         /* mA the device uses */          u_int16_t               power;         /* mA the device uses */
         int16_t                 langid;        /* language for strings */          int16_t                 langid;        /* language for strings */
 #define USBD_NOLANG (-1)  #define USBD_NOLANG (-1)
         usb_event_cookie_t      cookie;        /* unique connection id */          usb_event_cookie_t      cookie;        /* unique connection id */
         struct usbd_port       *powersrc;      /* upstream hub port, or 0 */          struct usbd_port       *powersrc;      /* upstream hub port, or 0 */
           struct usbd_device     *myhub;         /* upstream hub */
           struct usbd_device     *myhighhub;     /* closest high speed hub */
         struct usbd_endpoint    def_ep;        /* for pipe 0 */          struct usbd_endpoint    def_ep;        /* for pipe 0 */
         usb_endpoint_descriptor_t def_ep_desc; /* for pipe 0 */          usb_endpoint_descriptor_t def_ep_desc; /* for pipe 0 */
         struct usbd_interface  *ifaces;        /* array of all interfaces */          struct usbd_interface  *ifaces;        /* array of all interfaces */
         usb_device_descriptor_t ddesc;         /* device descriptor */          usb_device_descriptor_t ddesc;         /* device descriptor */
         usb_config_descriptor_t *cdesc;        /* full config descr */          usb_config_descriptor_t *cdesc;        /* full config descr */
        struct usbd_quirks     *quirks;        /* device quirks, always set */        const struct usbd_quirks     *quirks;  /* device quirks, always set */
         struct usbd_hub        *hub;           /* only if this is a hub */          struct usbd_hub        *hub;           /* only if this is a hub */
         device_ptr_t           *subdevs;       /* sub-devices, 0 terminated */          device_ptr_t           *subdevs;       /* sub-devices, 0 terminated */
 };  };
Line 156  struct usbd_pipe { Line 171  struct usbd_pipe {
         struct usbd_endpoint   *endpoint;          struct usbd_endpoint   *endpoint;
         int                     refcnt;          int                     refcnt;
         char                    running;          char                    running;
           char                    aborting;
         SIMPLEQ_HEAD(, usbd_xfer) queue;          SIMPLEQ_HEAD(, usbd_xfer) queue;
         LIST_ENTRY(usbd_pipe)   next;          LIST_ENTRY(usbd_pipe)   next;
   
Line 178  struct usbd_xfer { Line 194  struct usbd_xfer {
         usbd_status             status;          usbd_status             status;
         usbd_callback           callback;          usbd_callback           callback;
         __volatile char         done;          __volatile char         done;
   #ifdef DIAGNOSTIC
           u_int32_t               busy_free;
   #define XFER_FREE 0x46524545
   #define XFER_BUSY 0x42555359
   #define XFER_ONQU 0x4f4e5155
   #endif
   
         /* For control pipe */          /* For control pipe */
         usb_device_request_t    request;          usb_device_request_t    request;
Line 198  struct usbd_xfer { Line 220  struct usbd_xfer {
         SIMPLEQ_ENTRY(usbd_xfer) next;          SIMPLEQ_ENTRY(usbd_xfer) next;
   
         void                   *hcpriv; /* private use by the HC driver */          void                   *hcpriv; /* private use by the HC driver */
         int                     hcprivint;  
   
#if defined(__FreeBSD__)        usb_callout_t           timeout_handle;
        struct callout_handle  timo_handle; 
#endif 
 };  };
   
 void usbd_init(void);  void usbd_init(void);
 void usbd_finish(void);  void usbd_finish(void);
   
   #ifdef USB_DEBUG
   void usbd_dump_iface(struct usbd_interface *iface);
   void usbd_dump_device(struct usbd_device *dev);
   void usbd_dump_endpoint(struct usbd_endpoint *endp);
   void usbd_dump_queue(usbd_pipe_handle pipe);
   void usbd_dump_pipe(usbd_pipe_handle pipe);
   #endif
   
 /* Routines from usb_subr.c */  /* Routines from usb_subr.c */
 int             usbctlprint(void *, const char *);  int             usbctlprint(void *, const char *);
 void            usb_delay_ms(usbd_bus_handle, u_int);  void            usb_delay_ms(usbd_bus_handle, u_int);
 void            usbd_devinfo_vp(usbd_device_handle, char *, char *);  
 usbd_status     usbd_reset_port(usbd_device_handle dev,  usbd_status     usbd_reset_port(usbd_device_handle dev,
                                     int port, usb_port_status_t *ps);                                int port, usb_port_status_t *ps);
 usbd_status     usbd_setup_pipe(usbd_device_handle dev,  usbd_status     usbd_setup_pipe(usbd_device_handle dev,
                                     usbd_interface_handle iface,                                usbd_interface_handle iface,
                                     struct usbd_endpoint *, int,                                struct usbd_endpoint *, int,
                                     usbd_pipe_handle *pipe);                                usbd_pipe_handle *pipe);
usbd_status     usbd_new_device(device_ptr_t parent, usbd_status     usbd_new_device(device_ptr_t parent,
                                     usbd_bus_handle bus, int depth,                                usbd_bus_handle bus, int depth,
                                     int lowspeed, int port,                                 int lowspeed, int port,
                                     struct usbd_port *);                                struct usbd_port *);
void            usbd_remove_device(usbd_device_handle,void            usbd_remove_device(usbd_device_handle, struct usbd_port *);
                                        struct usbd_port *); 
 int             usbd_printBCD(char *cp, int bcd);  int             usbd_printBCD(char *cp, int bcd);
usbd_status     usbd_fill_iface_data(usbd_device_handle dev, usbd_status     usbd_fill_iface_data(usbd_device_handle dev, int i, int a);
                                          int i, int a); 
 void            usb_free_device(usbd_device_handle);  void            usb_free_device(usbd_device_handle);
   
 usbd_status     usb_insert_transfer(usbd_xfer_handle xfer);  usbd_status     usb_insert_transfer(usbd_xfer_handle xfer);
Line 234  void  usb_transfer_complete(usbd_xfer_ha Line 258  void  usb_transfer_complete(usbd_xfer_ha
 void            usb_disconnect_port(struct usbd_port *up, device_ptr_t);  void            usb_disconnect_port(struct usbd_port *up, device_ptr_t);
   
 /* Routines from usb.c */  /* Routines from usb.c */
int             usb_bus_count(void);void            usb_needs_explore(usbd_device_handle);
void            usb_needs_explore(usbd_bus_handle);void            usb_schedsoftintr(struct usbd_bus *);
   
#ifdef DIAGNOSTIC/*
  * XXX This check is extremely bogus. Bad Bad Bad.
  */
 #if defined(DIAGNOSTIC) && 0
 #define SPLUSBCHECK \  #define SPLUSBCHECK \
         do { int _s = splusb(), _su = splusb(); \          do { int _s = splusb(), _su = splusb(); \
              if (!cold && _s != _su) printf("SPLUSBCHECK failed 0x%x!=0x%x, %s:%d\n", \               if (!cold && _s != _su) printf("SPLUSBCHECK failed 0x%x!=0x%x, %s:%d\n", \

Removed from v.1.2  
changed lines
  Added in v.1.3