diff options
author | Steve Murphree <smurph@cvs.openbsd.org> | 2000-01-25 04:18:19 +0000 |
---|---|---|
committer | Steve Murphree <smurph@cvs.openbsd.org> | 2000-01-25 04:18:19 +0000 |
commit | e40439a3e2496cea86c39162e0063dee4d8e547e (patch) | |
tree | 7894a4ed2821db7fdd4280362beffca3b5467f45 /sys/arch/mvme68k/dev/vsvar.h | |
parent | e20b3a79bd049247aa2a4a09532c4d5d9f7734af (diff) |
Added support for MVME328 SCSI VME board.
Diffstat (limited to 'sys/arch/mvme68k/dev/vsvar.h')
-rw-r--r-- | sys/arch/mvme68k/dev/vsvar.h | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/sys/arch/mvme68k/dev/vsvar.h b/sys/arch/mvme68k/dev/vsvar.h new file mode 100644 index 00000000000..b72a86cf4e9 --- /dev/null +++ b/sys/arch/mvme68k/dev/vsvar.h @@ -0,0 +1,132 @@ +/* $OpenBSD: vsvar.h,v 1.1 2000/01/25 04:18:18 smurph Exp $ */ +/* + * Copyright (c) 1999 Steve Murphree, Jr. + * Copyright (c) 1990 The Regents of the University of California. + * All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Van Jacobson of Lawrence Berkeley Laboratory. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +#ifndef _VSVAR_H_ +#define _VSVAR_H_ + +/* + * The largest single request will be MAXPHYS bytes which will require + * at most MAXPHYS/NBPG+1 chain elements to describe, i.e. if none of + * the buffer pages are physically contiguous (MAXPHYS/NBPG) and the + * buffer is not page aligned (+1). + */ +#define DMAMAXIO (MAXPHYS/NBPG+1) +#define LO(x) (u_short)((unsigned long)x & 0x0000FFFF) +#define HI(x) (u_short)((unsigned long)x >> 16) +#define OFF(x) (u_short)((long)kvtop(x) - (long)kvtop(sc->sc_vsreg)) + +struct vs_tinfo { + int cmds; /* #commands processed */ + int dconns; /* #disconnects */ + int touts; /* #timeouts */ + int perrs; /* #parity errors */ + int senses; /* #request sense commands sent */ + ushort lubusy; /* What local units/subr. are busy? */ + u_char flags; + u_char period; /* Period suggestion */ + u_char offset; /* Offset suggestion */ + int avail; /* Is there a device there */ +} tinfo_t; + +struct vs_softc { + struct device sc_dev; + struct intrhand sc_ih_e; + struct intrhand sc_ih_n; + struct evcnt sc_intrcnt_e; + struct evcnt sc_intrcnt_n; + u_short sc_ipl; + u_short sc_evec; + u_short sc_nvec; + struct scsi_link sc_link; /* proto for sub devices */ + u_long sc_chnl; /* channel 0 or 1 for dual bus cards */ + u_long sc_qhp; /* Command queue head pointer */ + struct vsreg *sc_vsreg; +#define SIOP_NACB 8 + struct vs_tinfo sc_tinfo[8]; + u_char sc_flags; + u_char sc_sien; + u_char sc_dien; + u_char sc_minsync; + struct map *hus_map; + /* one for each target */ + struct syncpar { + u_char state; + u_char sxfer; + u_char sbcl; + } sc_sync[8]; +}; + +/* sync states */ +#define SYNC_START 0 /* no sync handshake started */ +#define SYNC_SENT 1 /* we sent sync request, no answer yet */ +#define SYNC_DONE 2 /* target accepted our (or inferior) settings, + or it rejected the request and we stay async */ + +#define IOPB_SCSI 0x20 +#define IOPB_RESET 0x22 +#define IOPB_INIT 0x41 +#define IOPB_WQINIT 0x42 +#define IOPB_DEV_RESET 0x4D + +#define OPT_INTEN 0x0001 +#define OPT_INTDIS 0x0000 +#define OPT_SG 0x0002 +#define OPT_SST 0x0004 +#define OPT_SIT 0x0040 +#define OPT_READ 0x0000 +#define OPT_WRITE 0x0100 + +#define AM_S32 0x01 +#define AM_S16 0x05 +#define AM_16 0x0100 +#define AM_32 0x0200 +#define AM_SHORT 0x0300 +#define AM_NORMAL 0x0000 +#define AM_BLOCK 0x0400 +#define AM_D64BLOCK 0x0C00 + +#define WQO_AE 0x0001 /* abort enable bit */ +#define WQO_FOE 0x0004 /* freeze on error */ +#define WQO_PE 0x0008 /* parity enable bit */ +#define WQO_ARE 0x0010 /* autosense recovery enable bit */ +#define WQO_RFWQ 0x0020 /* report frozen work queue bit */ +#define WQO_INIT 0x8000 /* work queue init bit */ + +void vs_minphys __P((struct buf *bp)); +int vs_scsicmd __P((struct scsi_xfer *)); + +#endif /* _M328VAR_H */ |