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/11.2/sys/dev/usb/usb_bus.h 331722 2018-03-29 02:50:57Z eadler $ */
    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 struct usb_fs_privdata;
   31 
   32 /*
   33  * The following structure defines the USB explore message sent to the USB
   34  * explore process.
   35  */
   36 
   37 struct usb_bus_msg {
   38         struct usb_proc_msg hdr;
   39         struct usb_bus *bus;
   40 };
   41 
   42 /*
   43  * The following structure defines the USB statistics structure.
   44  */
   45 struct usb_bus_stat {
   46         uint32_t uds_requests[4];
   47 };
   48 
   49 /*
   50  * The following structure defines an USB BUS. There is one USB BUS
   51  * for every Host or Device controller.
   52  */
   53 struct usb_bus {
   54         struct usb_bus_stat stats_err;
   55         struct usb_bus_stat stats_ok;
   56 #if USB_HAVE_ROOT_MOUNT_HOLD
   57         struct root_hold_token *bus_roothold;
   58 #endif
   59 
   60 /* convenience macros */
   61 #define USB_BUS_TT_PROC(bus) USB_BUS_NON_GIANT_ISOC_PROC(bus)
   62 #define USB_BUS_CS_PROC(bus) USB_BUS_NON_GIANT_ISOC_PROC(bus)
   63   
   64 #if USB_HAVE_PER_BUS_PROCESS
   65 #define USB_BUS_GIANT_PROC(bus) (&(bus)->giant_callback_proc)
   66 #define USB_BUS_NON_GIANT_ISOC_PROC(bus) (&(bus)->non_giant_isoc_callback_proc)
   67 #define USB_BUS_NON_GIANT_BULK_PROC(bus) (&(bus)->non_giant_bulk_callback_proc)
   68 #define USB_BUS_EXPLORE_PROC(bus) (&(bus)->explore_proc)
   69 #define USB_BUS_CONTROL_XFER_PROC(bus) (&(bus)->control_xfer_proc)
   70         /*
   71          * There are three callback processes. One for Giant locked
   72          * callbacks. One for non-Giant locked non-periodic callbacks
   73          * and one for non-Giant locked periodic callbacks. This
   74          * should avoid congestion and reduce response time in most
   75          * cases.
   76          */
   77         struct usb_process giant_callback_proc;
   78         struct usb_process non_giant_isoc_callback_proc;
   79         struct usb_process non_giant_bulk_callback_proc;
   80 
   81         /* Explore process */
   82         struct usb_process explore_proc;
   83 
   84         /* Control request process */
   85         struct usb_process control_xfer_proc;
   86 #endif
   87 
   88         struct usb_bus_msg explore_msg[2];
   89         struct usb_bus_msg detach_msg[2];
   90         struct usb_bus_msg attach_msg[2];
   91         struct usb_bus_msg suspend_msg[2];
   92         struct usb_bus_msg resume_msg[2];
   93         struct usb_bus_msg reset_msg[2];
   94         struct usb_bus_msg shutdown_msg[2];
   95 #if USB_HAVE_UGEN
   96         struct usb_bus_msg cleanup_msg[2];
   97         LIST_HEAD(,usb_fs_privdata) pd_cleanup_list;
   98 #endif
   99         /*
  100          * This mutex protects the USB hardware:
  101          */
  102         struct mtx bus_mtx;
  103         struct mtx bus_spin_lock;
  104         struct usb_xfer_queue intr_q;
  105         struct usb_callout power_wdog;  /* power management */
  106 
  107         device_t parent;
  108         device_t bdev;                  /* filled by HC driver */
  109 
  110 #if USB_HAVE_BUSDMA
  111         struct usb_dma_parent_tag dma_parent_tag[1];
  112         struct usb_dma_tag dma_tags[USB_BUS_DMA_TAG_MAX];
  113 #endif
  114         const struct usb_bus_methods *methods;  /* filled by HC driver */
  115         struct usb_device **devices;
  116 
  117         struct ifnet *ifp;      /* only for USB Packet Filter */
  118 
  119         usb_power_mask_t hw_power_state;        /* see USB_HW_POWER_XXX */
  120         usb_size_t uframe_usage[USB_HS_MICRO_FRAMES_MAX];
  121 
  122         uint16_t isoc_time_last;        /* in milliseconds */
  123 
  124         uint8_t alloc_failed;           /* Set if memory allocation failed. */
  125         uint8_t driver_added_refcount;  /* Current driver generation count */
  126         enum usb_revision usbrev;       /* USB revision. See "USB_REV_XXX". */
  127 
  128         uint8_t devices_max;            /* maximum number of USB devices */
  129         uint8_t do_probe;               /* set if USB should be re-probed */
  130         uint8_t no_explore;             /* don't explore USB ports */
  131         uint8_t dma_bits;               /* number of DMA address lines */
  132 };
  133 
  134 #endif                                  /* _USB_BUS_H_ */

Cache object: baded98f0538e56f84506832278f2188


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