Annotation of sys/dev/ic/twevar.h, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: twevar.h,v 1.7 2005/09/15 05:33:39 krw Exp $ */
! 2:
! 3: /*
! 4: * Copyright (c) 2000 Michael Shalayeff
! 5: * 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 ``AS IS'' AND ANY EXPRESS OR
! 17: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
! 18: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
! 19: * IN NO EVENT SHALL THE AUTHOR OR HIS RELATIVES BE LIABLE FOR ANY DIRECT,
! 20: * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
! 21: * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
! 22: * SERVICES; LOSS OF MIND, USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
! 23: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
! 24: * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
! 25: * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
! 26: * THE POSSIBILITY OF SUCH DAMAGE.
! 27: */
! 28:
! 29: struct twe_softc;
! 30:
! 31: struct twe_ccb {
! 32: struct twe_softc *ccb_sc;
! 33: struct twe_cmd *ccb_cmd;
! 34: struct scsi_xfer *ccb_xs;
! 35: paddr_t ccb_cmdpa;
! 36: TAILQ_ENTRY(twe_ccb) ccb_link;
! 37: enum {
! 38: TWE_CCB_FREE, TWE_CCB_READY, TWE_CCB_QUEUED, TWE_CCB_PREQUEUED,
! 39: TWE_CCB_DONE
! 40: } ccb_state;
! 41: int ccb_length;
! 42: void *ccb_data;
! 43: void *ccb_realdata;
! 44: bus_dmamap_t ccb_dmamap;
! 45: bus_dma_segment_t ccb_2bseg[TWE_MAXOFFSETS];
! 46: int ccb_2nseg;
! 47: };
! 48:
! 49: typedef TAILQ_HEAD(twe_queue_head, twe_ccb) twe_queue_head;
! 50:
! 51: struct twe_softc {
! 52: struct device sc_dev;
! 53: void *sc_ih;
! 54: struct scsi_link sc_link;
! 55: struct lock sc_lock;
! 56: struct proc *sc_thread;
! 57: int sc_thread_on;
! 58:
! 59: bus_space_tag_t iot;
! 60: bus_space_handle_t ioh;
! 61: bus_dma_tag_t dmat;
! 62:
! 63: void *sc_cmds;
! 64: bus_dmamap_t sc_cmdmap;
! 65: bus_dma_segment_t sc_cmdseg[1];
! 66: struct twe_ccb sc_ccbs[TWE_MAXCMDS];
! 67: twe_queue_head sc_free_ccb;
! 68: twe_queue_head sc_ccbq;
! 69: twe_queue_head sc_ccb2q;
! 70: twe_queue_head sc_done_ccb;
! 71:
! 72: struct timeout sc_enqueue_tmo;
! 73:
! 74: struct {
! 75: int hd_present;
! 76: int hd_devtype;
! 77: int hd_lock;
! 78: int hd_size;
! 79: } sc_hdr[TWE_MAX_UNITS];
! 80: };
! 81:
! 82: /* XXX These have to become spinlocks in case of SMP */
! 83: #define TWE_LOCK(sc) splbio()
! 84: #define TWE_UNLOCK(sc, lock) splx(lock)
! 85: typedef int twe_lock_t;
! 86:
! 87: void tweminphys(struct buf *bp);
! 88: int twe_attach(struct twe_softc *);
! 89: int twe_intr(void *);
CVSweb