[BACK]Return to ohcivar.h CVS log [TXT][DIR] Up to [local] / sys / dev / usb

Annotation of sys/dev/usb/ohcivar.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: ohcivar.h,v 1.25 2007/06/15 11:41:48 mbalmer Exp $ */
                      2: /*     $NetBSD: ohcivar.h,v 1.32 2003/02/22 05:24:17 tsutsui Exp $     */
                      3: /*     $FreeBSD: src/sys/dev/usb/ohcivar.h,v 1.13 1999/11/17 22:33:41 n_hibma Exp $    */
                      4:
                      5: /*
                      6:  * Copyright (c) 1998 The NetBSD Foundation, Inc.
                      7:  * All rights reserved.
                      8:  *
                      9:  * This code is derived from software contributed to The NetBSD Foundation
                     10:  * by Lennart Augustsson (lennart@augustsson.net) at
                     11:  * Carlstedt Research & Technology.
                     12:  *
                     13:  * Redistribution and use in source and binary forms, with or without
                     14:  * modification, are permitted provided that the following conditions
                     15:  * are met:
                     16:  * 1. Redistributions of source code must retain the above copyright
                     17:  *    notice, this list of conditions and the following disclaimer.
                     18:  * 2. Redistributions in binary form must reproduce the above copyright
                     19:  *    notice, this list of conditions and the following disclaimer in the
                     20:  *    documentation and/or other materials provided with the distribution.
                     21:  * 3. All advertising materials mentioning features or use of this software
                     22:  *    must display the following acknowledgement:
                     23:  *        This product includes software developed by the NetBSD
                     24:  *        Foundation, Inc. and its contributors.
                     25:  * 4. Neither the name of The NetBSD Foundation nor the names of its
                     26:  *    contributors may be used to endorse or promote products derived
                     27:  *    from this software without specific prior written permission.
                     28:  *
                     29:  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
                     30:  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
                     31:  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
                     32:  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
                     33:  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
                     34:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
                     35:  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                     36:  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
                     37:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
                     38:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
                     39:  * POSSIBILITY OF SUCH DAMAGE.
                     40:  */
                     41:
                     42: typedef struct ohci_soft_ed {
                     43:        ohci_ed_t ed;
                     44:        struct ohci_soft_ed *next;
                     45:        ohci_physaddr_t physaddr;
                     46: } ohci_soft_ed_t;
                     47: #define OHCI_SED_SIZE ((sizeof (struct ohci_soft_ed) + OHCI_ED_ALIGN - 1) / OHCI_ED_ALIGN * OHCI_ED_ALIGN)
                     48: #define OHCI_SED_CHUNK 128
                     49:
                     50:
                     51: typedef struct ohci_soft_td {
                     52:        ohci_td_t td;
                     53:        struct ohci_soft_td *nexttd; /* mirrors nexttd in TD */
                     54:        struct ohci_soft_td *dnext; /* next in done list */
                     55:        ohci_physaddr_t physaddr;
                     56:        LIST_ENTRY(ohci_soft_td) hnext;
                     57:        usbd_xfer_handle xfer;
                     58:        u_int16_t len;
                     59:        u_int16_t flags;
                     60: #define OHCI_CALL_DONE 0x0001
                     61: #define OHCI_ADD_LEN   0x0002
                     62: } ohci_soft_td_t;
                     63: #define OHCI_STD_SIZE ((sizeof (struct ohci_soft_td) + OHCI_TD_ALIGN - 1) / OHCI_TD_ALIGN * OHCI_TD_ALIGN)
                     64: #define OHCI_STD_CHUNK 128
                     65:
                     66:
                     67: typedef struct ohci_soft_itd {
                     68:        ohci_itd_t itd;
                     69:        struct ohci_soft_itd *nextitd; /* mirrors nexttd in ITD */
                     70:        struct ohci_soft_itd *dnext; /* next in done list */
                     71:        ohci_physaddr_t physaddr;
                     72:        LIST_ENTRY(ohci_soft_itd) hnext;
                     73:        usbd_xfer_handle xfer;
                     74:        u_int16_t flags;
                     75: #ifdef DIAGNOSTIC
                     76:        char isdone;
                     77: #endif
                     78: } ohci_soft_itd_t;
                     79: #define OHCI_SITD_SIZE ((sizeof (struct ohci_soft_itd) + OHCI_ITD_ALIGN - 1) / OHCI_ITD_ALIGN * OHCI_ITD_ALIGN)
                     80: #define OHCI_SITD_CHUNK 64
                     81:
                     82:
                     83: #define OHCI_NO_EDS (2*OHCI_NO_INTRS-1)
                     84:
                     85: #define OHCI_HASH_SIZE 128
                     86:
                     87: typedef struct ohci_softc {
                     88:        struct usbd_bus sc_bus;         /* base device */
                     89:        bus_space_tag_t iot;
                     90:        bus_space_handle_t ioh;
                     91:        bus_size_t sc_size;
                     92:
                     93:        usb_dma_t sc_hccadma;
                     94:        struct ohci_hcca *sc_hcca;
                     95:        ohci_soft_ed_t *sc_eds[OHCI_NO_EDS];
                     96:        u_int sc_bws[OHCI_NO_INTRS];
                     97:
                     98:        u_int32_t sc_eintrs;
                     99:        ohci_soft_ed_t *sc_isoc_head;
                    100:        ohci_soft_ed_t *sc_ctrl_head;
                    101:        ohci_soft_ed_t *sc_bulk_head;
                    102:
                    103:        LIST_HEAD(, ohci_soft_td)  sc_hash_tds[OHCI_HASH_SIZE];
                    104:        LIST_HEAD(, ohci_soft_itd) sc_hash_itds[OHCI_HASH_SIZE];
                    105:
                    106:        int sc_noport;
                    107:        u_int8_t sc_addr;               /* device address */
                    108:        u_int8_t sc_conf;               /* device configuration */
                    109:
                    110: #ifdef __HAVE_GENERIC_SOFT_INTERRUPTS
                    111:        char sc_softwake;
                    112: #endif /* __HAVE_GENERIC_SOFT_INTERRUPTS */
                    113:
                    114:        ohci_soft_ed_t *sc_freeeds;
                    115:        ohci_soft_td_t *sc_freetds;
                    116:        ohci_soft_itd_t *sc_freeitds;
                    117:
                    118:        SIMPLEQ_HEAD(, usbd_xfer) sc_free_xfers; /* free xfers */
                    119:
                    120:        usbd_xfer_handle sc_intrxfer;
                    121:
                    122:        ohci_soft_itd_t *sc_sidone;
                    123:        ohci_soft_td_t  *sc_sdone;
                    124:
                    125:        char sc_vendor[16];
                    126:        int sc_id_vendor;
                    127:
                    128:        void *sc_powerhook;             /* cookie from power hook */
                    129:        void *sc_shutdownhook;          /* cookie from shutdown hook */
                    130:
                    131:        u_int32_t sc_control;           /* Preserved during suspend/standby */
                    132:        u_int32_t sc_intre;
                    133:        u_int32_t sc_ival;
                    134:
                    135:        u_int sc_overrun_cnt;
                    136:        struct timeval sc_overrun_ntc;
                    137:
                    138:        struct timeout sc_tmo_rhsc;
                    139:
                    140:        struct device *sc_child;
                    141:
                    142:        char sc_dying;
                    143: } ohci_softc_t;
                    144:
                    145: struct ohci_xfer {
                    146:        struct usbd_xfer xfer;
                    147:        struct usb_task abort_task;
                    148: };
                    149:
                    150: usbd_status    ohci_checkrev(ohci_softc_t *);
                    151: usbd_status    ohci_handover(ohci_softc_t *);
                    152: usbd_status    ohci_init(ohci_softc_t *);
                    153: int            ohci_intr(void *);
                    154: int            ohci_detach(ohci_softc_t *, int);
                    155: int            ohci_activate(struct device *, enum devact);
                    156: void           ohci_power(int, void *);

CVSweb