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/ic/sl811hsvar.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 /*      $NetBSD: sl811hsvar.h,v 1.12 2016/04/23 10:15:31 skrll Exp $    */
    2 
    3 /*
    4  * Not (c) 2007 Matthew Orgass
    5  * This file is public domain, meaning anyone can make any use of part or all
    6  * of this file including copying into other works without credit.  Any use,
    7  * modified or not, is solely the responsibility of the user.  If this file is
    8  * part of a collection then use in the collection is governed by the terms of
    9  * the collection.
   10  */
   11 
   12 /*
   13  * Cypress/ScanLogic SL811HS USB Host Controller
   14  */
   15 
   16 #include <sys/gcq.h>
   17 
   18 #define SC_DEV(sc)      ((sc)->sc_dev)
   19 #define SC_NAME(sc)     (device_xname(SC_DEV(sc)))
   20 
   21 typedef unsigned int Frame;
   22 struct slhci_pipe;
   23 
   24 /* Generally transfer related items. */
   25 struct slhci_transfers {
   26         struct usbd_xfer *rootintr;
   27         struct slhci_pipe *spipe[2];    /* current transfer (unless canceled) */
   28         struct gcq_head q[3];           /* transfer queues, Q_* index */
   29         struct gcq_head timed;          /* intr transfer multi-frame wait */
   30         struct gcq_head to;             /* timeout list */
   31         struct gcq_head ap;             /* all pipes */
   32         Frame frame;                    /* current frame */
   33         unsigned int flags;             /* F_* flags */
   34         int pend;                       /* pending for waitintr */
   35         int reserved_bustime;
   36         int16_t len[2];                 /* length of transfer or -1 if none */
   37         uint8_t current_tregs[2][4];    /* ab, ADR, LEN, PID, DEV */
   38         uint8_t copyin[2];              /* copyin ADR, LEN */
   39         uint8_t max_current;            /* max current / 2 */
   40         uint8_t sltype;                 /* revision */
   41 };
   42 
   43 enum power_change {
   44         POWER_OFF,
   45         POWER_ON,
   46 };
   47 
   48 typedef void (*PowerFunc)(void *, enum power_change);
   49 
   50 /* Attachment code must call slhci_preinit before registering the ISR */
   51 struct slhci_softc {
   52         device_t                sc_dev;
   53         struct usbd_bus         sc_bus;
   54 
   55         kmutex_t                sc_lock;
   56         kmutex_t                sc_intr_lock;
   57 
   58         struct slhci_transfers  sc_transfers;   /* Info useful in transfers. */
   59 
   60         struct gcq_head         sc_waitq;
   61 
   62         bus_space_tag_t         sc_iot;
   63         bus_space_handle_t      sc_ioh;
   64 
   65         struct callout          sc_timer;       /* for reset */
   66 
   67         PowerFunc               sc_enable_power;
   68 
   69         device_t                sc_child;
   70 
   71         struct timeval          sc_reserved_warn_rate;
   72         struct timeval          sc_overflow_warn_rate;
   73 
   74         void                    *sc_cb_softintr;
   75 
   76         unsigned int            sc_ier_check;
   77 
   78         int                     sc_mem_use; /* XXX SLHCI_MEM_ACCOUNTING */
   79 
   80         uint8_t                 sc_ier;         /* enabled interrupts */
   81         uint32_t                sc_stride;      /* port stride */
   82 };
   83 
   84 /* last preinit arguments are: max current (in mA, not mA/2), port stride */
   85 /* register access uses byte access, but stride offsets the data port */
   86 int  slhci_supported_rev(uint8_t);
   87 void slhci_preinit(struct slhci_softc *, PowerFunc, bus_space_tag_t,
   88     bus_space_handle_t, uint16_t, uint32_t);
   89 int  slhci_attach(struct slhci_softc *);
   90 int  slhci_detach(struct slhci_softc *, int);
   91 int  slhci_activate(device_t, enum devact);
   92 int  slhci_intr(void *);
   93 

Cache object: b182f65f5c85216518f756d9dc670b21


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