The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ 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  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /* $FreeBSD: releng/8.3/sys/dev/usb/usb_bus.h 229370 2012-01-03 09:15:54Z hselasky $ */
    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         struct usb_bus_msg suspend_msg[2];
   73         struct usb_bus_msg resume_msg[2];
   74         struct usb_bus_msg shutdown_msg[2];
   75         /*
   76          * This mutex protects the USB hardware:
   77          */
   78         struct mtx bus_mtx;
   79         struct usb_xfer_queue intr_q;
   80         struct usb_callout power_wdog;  /* power management */
   81 
   82         device_t parent;
   83         device_t bdev;                  /* filled by HC driver */
   84 
   85 #if USB_HAVE_BUSDMA
   86         struct usb_dma_parent_tag dma_parent_tag[1];
   87         struct usb_dma_tag dma_tags[USB_BUS_DMA_TAG_MAX];
   88 #endif
   89         struct usb_bus_methods *methods;        /* filled by HC driver */
   90         struct usb_device **devices;
   91 
   92         struct ifnet *ifp;      /* only for USB Packet Filter */
   93 
   94         usb_power_mask_t hw_power_state;        /* see USB_HW_POWER_XXX */
   95         usb_size_t uframe_usage[USB_HS_MICRO_FRAMES_MAX];
   96 
   97         uint16_t isoc_time_last;        /* in milliseconds */
   98 
   99         uint8_t alloc_failed;           /* Set if memory allocation failed. */
  100         uint8_t driver_added_refcount;  /* Current driver generation count */
  101         enum usb_revision usbrev;       /* USB revision. See "USB_REV_XXX". */
  102 
  103         uint8_t devices_max;            /* maximum number of USB devices */
  104         uint8_t do_probe;               /* set if USB should be re-probed */
  105         uint8_t no_explore;             /* don't explore USB ports */
  106 
  107         /* 
  108          * The scratch area can only be used inside the explore thread
  109          * belonging to the give serial bus.
  110          */
  111         union {
  112                 struct usb_hw_ep_scratch hw_ep_scratch[1];
  113                 struct usb_temp_setup temp_setup[1];
  114                 uint8_t data[255];
  115         }       scratch[1];
  116 };
  117 
  118 #endif                                  /* _USB_BUS_H_ */

Cache object: 23ba7a90290f17c49217d86da7d81ce4


[ 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.