[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/usb/usb_bus.h

Version: -  FREEBSD  -  FREEBSD8  -  FREEBSD7  -  FREEBSD72  -  FREEBSD71  -  FREEBSD70  -  FREEBSD6  -  FREEBSD64  -  FREEBSD63  -  FREEBSD62  -  FREEBSD61  -  FREEBSD60  -  FREEBSD5  -  FREEBSD55  -  FREEBSD54  -  FREEBSD53  -  FREEBSD52  -  FREEBSD51  -  FREEBSD50  -  FREEBSD4  -  FREEBSD3  -  FREEBSD22  -  linux-2.6  -  linux-2.4.22  -  MK83  -  MK84  -  PLAN9  -  DFBSD  -  NETBSD  -  NETBSD5  -  NETBSD4  -  NETBSD3  -  NETBSD20  -  OPENBSD  -  xnu-517  -  xnu-792  -  xnu-792.6.70  -  xnu-1228  -  xnu-1456.1.26  -  OPENSOLARIS  -  minix-3-1-1  -  FREEBSD-LIBC  -  FREEBSD7-LIBC  -  FREEBSD6-LIBC  -  GLIBC27 
SearchContext: -  none  -  excerpts  -  bigexcerpts 

    1 /* $FreeBSD$ */
    2 /*-
    3  * Copyright (c) 2008 Hans Petter Selasky. All rights reserved.
    4  *
    5  * Redistribution and use in source and binary forms, with or without
    6  * modification, are permitted provided that the following conditions
    7  * are met:
    8  * 1. Redistributions of source code must retain the above copyright
    9  *    notice, this list of conditions and the following disclaimer.
   10  * 2. Redistributions in binary form must reproduce the above copyright
   11  *    notice, this list of conditions and the following disclaimer in the
   12  *    documentation and/or other materials provided with the distribution.
   13  *
   14  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   15  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   17  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   18  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   19  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   20  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   21  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   22  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   23  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   24  * SUCH DAMAGE.
   25  */
   26 
   27 #ifndef _USB_BUS_H_
   28 #define _USB_BUS_H_
   29 
   30 /*
   31  * The following structure defines the USB explore message sent to the USB
   32  * explore process.
   33  */
   34 
   35 struct usb_bus_msg {
   36         struct usb_proc_msg hdr;
   37         struct usb_bus *bus;
   38 };
   39 
   40 /*
   41  * The following structure defines the USB statistics structure.
   42  */
   43 struct usb_bus_stat {
   44         uint32_t uds_requests[4];
   45 };
   46 
   47 /*
   48  * The following structure defines an USB BUS. There is one USB BUS
   49  * for every Host or Device controller.
   50  */
   51 struct usb_bus {
   52         struct usb_bus_stat stats_err;
   53         struct usb_bus_stat stats_ok;
   54         struct root_hold_token *bus_roothold;
   55         /*
   56          * There are two callback processes. One for Giant locked
   57          * callbacks. One for non-Giant locked callbacks. This should
   58          * avoid congestion and reduce response time in most cases.
   59          */
   60         struct usb_process giant_callback_proc;
   61         struct usb_process non_giant_callback_proc;
   62 
   63         /* Explore process */
   64         struct usb_process explore_proc;
   65 
   66         /* Control request process */
   67         struct usb_process control_xfer_proc;
   68 
   69         struct usb_bus_msg explore_msg[2];
   70         struct usb_bus_msg detach_msg[2];
   71         struct usb_bus_msg attach_msg[2];
   72         /*
   73          * This mutex protects the USB hardware:
   74          */
   75         struct mtx bus_mtx;
   76         struct usb_xfer_queue intr_q;
   77         struct usb_callout power_wdog;  /* power management */
   78 
   79         device_t parent;
   80         device_t bdev;                  /* filled by HC driver */
   81 
   82 #if USB_HAVE_BUSDMA
   83         struct usb_dma_parent_tag dma_parent_tag[1];
   84         struct usb_dma_tag dma_tags[USB_BUS_DMA_TAG_MAX];
   85 #endif
   86         struct usb_bus_methods *methods;        /* filled by HC driver */
   87         struct usb_device **devices;
   88 
   89         usb_power_mask_t hw_power_state;        /* see USB_HW_POWER_XXX */
   90         usb_size_t uframe_usage[USB_HS_MICRO_FRAMES_MAX];
   91 
   92         uint16_t isoc_time_last;        /* in milliseconds */
   93 
   94         uint8_t alloc_failed;           /* Set if memory allocation failed. */
   95         uint8_t driver_added_refcount;  /* Current driver generation count */
   96         enum usb_revision usbrev;       /* USB revision. See "USB_REV_XXX". */
   97 
   98         uint8_t devices_max;            /* maximum number of USB devices */
   99         uint8_t do_probe;               /* set if USB BUS should be re-probed */
  100 
  101         /* 
  102          * The scratch area can only be used inside the explore thread
  103          * belonging to the give serial bus.
  104          */
  105         union {
  106                 struct usb_hw_ep_scratch hw_ep_scratch[1];
  107                 struct usb_temp_setup temp_setup[1];
  108                 uint8_t data[255];
  109         }       scratch[1];
  110 };
  111 
  112 #endif                                  /* _USB_BUS_H_ */

Cache object: 044f998abfa1ca2f152fed26d7e05cf6


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.