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$ */
    2 /*-
    3  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
    4  *
    5  * Copyright (c) 2008-2019 Hans Petter Selasky. All rights reserved.
    6  *
    7  * Redistribution and use in source and binary forms, with or without
    8  * modification, are permitted provided that the following conditions
    9  * are met:
   10  * 1. Redistributions of source code must retain the above copyright
   11  *    notice, this list of conditions and the following disclaimer.
   12  * 2. Redistributions in binary form must reproduce the above copyright
   13  *    notice, this list of conditions and the following disclaimer in the
   14  *    documentation and/or other materials provided with the distribution.
   15  *
   16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   17  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   19  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   20  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   21  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   22  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   23  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   24  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   25  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   26  * SUCH DAMAGE.
   27  */
   28 
   29 #ifndef _USB_BUS_H_
   30 #define _USB_BUS_H_
   31 
   32 struct usb_fs_privdata;
   33 
   34 /*
   35  * The following structure defines the USB explore message sent to the USB
   36  * explore process.
   37  */
   38 
   39 struct usb_bus_msg {
   40         struct usb_proc_msg hdr;
   41         struct usb_bus *bus;
   42 };
   43 
   44 /*
   45  * The following structure defines an USB BUS. There is one USB BUS
   46  * for every Host or Device controller.
   47  */
   48 struct usb_bus {
   49 #if USB_HAVE_ROOT_MOUNT_HOLD
   50         struct root_hold_token *bus_roothold;
   51 #endif
   52 
   53 /* convenience macros */
   54 #define USB_BUS_TT_PROC(bus) USB_BUS_NON_GIANT_ISOC_PROC(bus)
   55 #define USB_BUS_CS_PROC(bus) USB_BUS_NON_GIANT_ISOC_PROC(bus)
   56   
   57 #if USB_HAVE_PER_BUS_PROCESS
   58 #define USB_BUS_GIANT_PROC(bus) (&(bus)->giant_callback_proc)
   59 #define USB_BUS_NON_GIANT_ISOC_PROC(bus) (&(bus)->non_giant_isoc_callback_proc)
   60 #define USB_BUS_NON_GIANT_BULK_PROC(bus) (&(bus)->non_giant_bulk_callback_proc)
   61 #define USB_BUS_EXPLORE_PROC(bus) (&(bus)->explore_proc)
   62 #define USB_BUS_CONTROL_XFER_PROC(bus) (&(bus)->control_xfer_proc)
   63         /*
   64          * There are three callback processes. One for Giant locked
   65          * callbacks. One for non-Giant locked non-periodic callbacks
   66          * and one for non-Giant locked periodic callbacks. This
   67          * should avoid congestion and reduce response time in most
   68          * cases.
   69          */
   70         struct usb_process giant_callback_proc;
   71         struct usb_process non_giant_isoc_callback_proc;
   72         struct usb_process non_giant_bulk_callback_proc;
   73 
   74         /* Explore process */
   75         struct usb_process explore_proc;
   76 
   77         /* Control request process */
   78         struct usb_process control_xfer_proc;
   79 #endif
   80 
   81         struct usb_bus_msg explore_msg[2];
   82         struct usb_bus_msg detach_msg[2];
   83         struct usb_bus_msg attach_msg[2];
   84         struct usb_bus_msg suspend_msg[2];
   85         struct usb_bus_msg resume_msg[2];
   86         struct usb_bus_msg reset_msg[2];
   87         struct usb_bus_msg shutdown_msg[2];
   88 #if USB_HAVE_UGEN
   89         struct usb_bus_msg cleanup_msg[2];
   90         LIST_HEAD(,usb_fs_privdata) pd_cleanup_list;
   91 #endif
   92         /*
   93          * This mutex protects the USB hardware:
   94          */
   95         struct mtx bus_mtx;
   96         struct mtx bus_spin_lock;
   97         struct usb_xfer_queue intr_q;
   98         struct usb_callout power_wdog;  /* power management */
   99 
  100         device_t parent;
  101         device_t bdev;                  /* filled by HC driver */
  102 
  103 #if USB_HAVE_BUSDMA
  104         struct usb_dma_parent_tag dma_parent_tag[1];
  105         struct usb_dma_tag dma_tags[USB_BUS_DMA_TAG_MAX];
  106 #endif
  107         const struct usb_bus_methods *methods;  /* filled by HC driver */
  108         struct usb_device **devices;
  109 
  110         struct ifnet *ifp;      /* only for USB Packet Filter */
  111 
  112         usb_power_mask_t hw_power_state;        /* see USB_HW_POWER_XXX */
  113         usb_size_t uframe_usage[USB_HS_MICRO_FRAMES_MAX];
  114 
  115         uint16_t isoc_time_last;        /* in milliseconds */
  116 
  117         uint8_t alloc_failed;           /* Set if memory allocation failed. */
  118         uint8_t driver_added_refcount;  /* Current driver generation count */
  119         enum usb_revision usbrev;       /* USB revision. See "USB_REV_XXX". */
  120 
  121         uint8_t devices_max;            /* maximum number of USB devices */
  122         uint8_t do_probe;               /* set if USB should be re-probed */
  123         uint8_t no_explore;             /* don't explore USB ports */
  124         uint8_t dma_bits;               /* number of DMA address lines */
  125         uint8_t control_ep_quirk;       /* need 64kByte buffer for data stage */
  126 };
  127 
  128 #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.