13c60ba66SKatsushi Kobayashi /* 23c60ba66SKatsushi Kobayashi * Copyright (c) 1998-2002 Katsushi Kobayashi and Hidetoshi SHimokawa 33c60ba66SKatsushi Kobayashi * All rights reserved. 43c60ba66SKatsushi Kobayashi * 53c60ba66SKatsushi Kobayashi * Redistribution and use in source and binary forms, with or without 63c60ba66SKatsushi Kobayashi * modification, are permitted provided that the following conditions 73c60ba66SKatsushi Kobayashi * are met: 83c60ba66SKatsushi Kobayashi * 1. Redistributions of source code must retain the above copyright 93c60ba66SKatsushi Kobayashi * notice, this list of conditions and the following disclaimer. 103c60ba66SKatsushi Kobayashi * 2. Redistributions in binary form must reproduce the above copyright 113c60ba66SKatsushi Kobayashi * notice, this list of conditions and the following disclaimer in the 123c60ba66SKatsushi Kobayashi * documentation and/or other materials provided with the distribution. 133c60ba66SKatsushi Kobayashi * 3. All advertising materials mentioning features or use of this software 143c60ba66SKatsushi Kobayashi * must display the acknowledgement as bellow: 153c60ba66SKatsushi Kobayashi * 163c60ba66SKatsushi Kobayashi * This product includes software developed by K. Kobayashi and H. Shimokawa 173c60ba66SKatsushi Kobayashi * 183c60ba66SKatsushi Kobayashi * 4. The name of the author may not be used to endorse or promote products 193c60ba66SKatsushi Kobayashi * derived from this software without specific prior written permission. 203c60ba66SKatsushi Kobayashi * 213c60ba66SKatsushi Kobayashi * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 223c60ba66SKatsushi Kobayashi * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 233c60ba66SKatsushi Kobayashi * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 243c60ba66SKatsushi Kobayashi * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 253c60ba66SKatsushi Kobayashi * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 263c60ba66SKatsushi Kobayashi * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 273c60ba66SKatsushi Kobayashi * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 283c60ba66SKatsushi Kobayashi * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 293c60ba66SKatsushi Kobayashi * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 303c60ba66SKatsushi Kobayashi * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 313c60ba66SKatsushi Kobayashi * POSSIBILITY OF SUCH DAMAGE. 323c60ba66SKatsushi Kobayashi * 333c60ba66SKatsushi Kobayashi * $FreeBSD$ 343c60ba66SKatsushi Kobayashi * 353c60ba66SKatsushi Kobayashi */ 363c60ba66SKatsushi Kobayashi typedef struct fwohci_softc { 373c60ba66SKatsushi Kobayashi struct firewire_comm fc; 383c60ba66SKatsushi Kobayashi bus_space_tag_t bst; 393c60ba66SKatsushi Kobayashi bus_space_handle_t bsh; 403c60ba66SKatsushi Kobayashi void *ih; 413c60ba66SKatsushi Kobayashi #if __FreeBSD_version < 500000 423c60ba66SKatsushi Kobayashi void *ih_cam; 433c60ba66SKatsushi Kobayashi #endif 443c60ba66SKatsushi Kobayashi 453c60ba66SKatsushi Kobayashi struct resource *bsr; 463c60ba66SKatsushi Kobayashi struct resource *irq_res; 473c60ba66SKatsushi Kobayashi struct fwohci_dbch{ 483c60ba66SKatsushi Kobayashi u_int ndb; 493c60ba66SKatsushi Kobayashi u_int ndesc; 503c60ba66SKatsushi Kobayashi caddr_t dummy; 513c60ba66SKatsushi Kobayashi STAILQ_HEAD(, fwohcidb_tr) db_trq; 523c60ba66SKatsushi Kobayashi struct fwohcidb_tr *top, *bottom, *pdb_tr; 533c60ba66SKatsushi Kobayashi struct fw_xferq xferq; 543c60ba66SKatsushi Kobayashi struct { 553c60ba66SKatsushi Kobayashi int len; 563c60ba66SKatsushi Kobayashi int hlen; 573c60ba66SKatsushi Kobayashi int plen; 583c60ba66SKatsushi Kobayashi caddr_t buf; 593c60ba66SKatsushi Kobayashi } frag; 603c60ba66SKatsushi Kobayashi int flags; 613c60ba66SKatsushi Kobayashi #define FWOHCI_DBCH_FULL (1<<1) 623c60ba66SKatsushi Kobayashi int buf_offset; 633c60ba66SKatsushi Kobayashi } arrq, arrs, atrq, atrs, it[OHCI_MAX_DMA_CH], ir[OHCI_MAX_DMA_CH]; 643c60ba66SKatsushi Kobayashi u_int maxrec; 653c60ba66SKatsushi Kobayashi u_int32_t *cromptr; 663c60ba66SKatsushi Kobayashi u_int32_t intmask; 673c60ba66SKatsushi Kobayashi } fwohci_softc_t; 683c60ba66SKatsushi Kobayashi void fwohci_intr __P((void *arg)); 693c60ba66SKatsushi Kobayashi int fwohci_init __P((struct fwohci_softc *, device_t)); 703c60ba66SKatsushi Kobayashi int fwohci_shutdown __P((device_t dev)); 71