Home | History | Annotate | Line # | Download | only in ibus
      1 /*	$NetBSD: siireg.h,v 1.3 2021/08/17 22:00:30 andvar Exp $	*/
      2 
      3 /*
      4  * Copyright (c) 1992, 1993
      5  *	The Regents of the University of California.  All rights reserved.
      6  *
      7  * This code is derived from software contributed to Berkeley by
      8  * Ralph Campbell.
      9  *
     10  * Redistribution and use in source and binary forms, with or without
     11  * modification, are permitted provided that the following conditions
     12  * are met:
     13  * 1. Redistributions of source code must retain the above copyright
     14  *    notice, this list of conditions and the following disclaimer.
     15  * 2. Redistributions in binary form must reproduce the above copyright
     16  *    notice, this list of conditions and the following disclaimer in the
     17  *    documentation and/or other materials provided with the distribution.
     18  * 3. Neither the name of the University nor the names of its contributors
     19  *    may be used to endorse or promote products derived from this software
     20  *    without specific prior written permission.
     21  *
     22  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
     23  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     24  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     25  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
     26  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     27  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     28  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     29  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
     30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
     31  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
     32  * SUCH DAMAGE.
     33  *
     34  *	@(#)siireg.h	8.1 (Berkeley) 6/10/93
     35  *
     36  * sii.h --
     37  *
     38  * 	SII registers.
     39  *
     40  *	Copyright (C) 1989 Digital Equipment Corporation.
     41  *	Permission to use, copy, modify, and distribute this software and
     42  *	its documentation for any purpose and without fee is hereby granted,
     43  *	provided that the above copyright notice appears in all copies.
     44  *	Digital Equipment Corporation makes no representations about the
     45  *	suitability of this software for any purpose.  It is provided "as is"
     46  *	without express or implied warranty.
     47  *
     48  * from: Header: /sprite/src/kernel/dev/ds3100.md/RCS/sii.h,
     49  *	v 1.2 89/08/15 19:53:04 rab Exp  SPRITE (DECWRL)
     50  */
     51 
     52 #ifndef _SII
     53 #define _SII
     54 
     55 /*
     56  * SII hardware registers
     57  */
     58 typedef volatile struct {
     59 	u_short	sdb;		/* SCSI Data Bus and Parity */
     60 	u_short	pad0;
     61 	u_short	sc1;		/* SCSI Control Signals One */
     62 	u_short	pad1;
     63 	u_short	sc2;		/* SCSI Control Signals Two */
     64 	u_short	pad2;
     65 	u_short	csr;		/* Control/Status register */
     66 	u_short	pad3;
     67 	u_short	id;		/* Bus ID register */
     68 	u_short	pad4;
     69 	u_short	slcsr;		/* Select Control and Status Register */
     70 	u_short	pad5;
     71 	u_short	destat;		/* Selection Detector Status Register */
     72 	u_short	pad6;
     73 	u_short	dstmo;		/* DSSI Timeout Register */
     74 	u_short	pad7;
     75 	u_short	data;		/* Data Register */
     76 	u_short	pad8;
     77 	u_short	dmctrl;		/* DMA Control Register */
     78 	u_short	pad9;
     79 	u_short	dmlotc;		/* DMA Length of Transfer Counter */
     80 	u_short	pad10;
     81 	u_short	dmaddrl;	/* DMA Address Register Low */
     82 	u_short	pad11;
     83 	u_short	dmaddrh;	/* DMA Address Register High */
     84 	u_short	pad12;
     85 	u_short	dmabyte;	/* DMA Initial Byte Register */
     86 	u_short	pad13;
     87 	u_short	stlp;		/* DSSI Short Target List Pointer */
     88 	u_short	pad14;
     89 	u_short	ltlp;		/* DSSI Long Target List Pointer */
     90 	u_short	pad15;
     91 	u_short	ilp;		/* DSSI Initiator List Pointer */
     92 	u_short	pad16;
     93 	u_short	dsctrl;		/* DSSI Control Register */
     94 	u_short	pad17;
     95 	u_short	cstat;		/* Connection Status Register */
     96 	u_short	pad18;
     97 	u_short	dstat;		/* Data Transfer Status Register */
     98 	u_short	pad19;
     99 	u_short	comm;		/* Command Register */
    100 	u_short	pad20;
    101 	u_short	dictrl;		/* Diagnostic Control Register */
    102 	u_short	pad21;
    103 	u_short	clock;		/* Diagnostic Clock Register */
    104 	u_short	pad22;
    105 	u_short	bhdiag;		/* Bus Handler Diagnostic Register */
    106 	u_short	pad23;
    107 	u_short	sidiag;		/* SCSI IO Diagnostic Register */
    108 	u_short	pad24;
    109 	u_short	dmdiag;		/* Data Mover Diagnostic Register */
    110 	u_short	pad25;
    111 	u_short	mcdiag;		/* Main Control Diagnostic Register */
    112 	u_short	pad26;
    113 } SIIRegs;
    114 
    115 /*
    116  * SC1 - SCSI Control Signals One
    117  */
    118 #define SII_SC1_MSK	0x1ff		/* All possible signals on the bus */
    119 #define SII_SC1_SEL	0x80		/* SCSI SEL signal active on bus */
    120 #define SII_SC1_ATN	0x08		/* SCSI ATN signal active on bus */
    121 
    122 /*
    123  * SC2 - SCSI Control Signals Two
    124  */
    125 #define SII_SC2_IGS	0x8		/* SCSI drivers for initiator mode */
    126 
    127 /*
    128  * CSR - Control/Status Register
    129  */
    130 #define SII_HPM	0x10			/* SII in on an arbitrated SCSI bus */
    131 #define	SII_RSE	0x08			/* 1 = respond to reselections */
    132 #define SII_SLE	0x04			/* 1 = respond to selections */
    133 #define SII_PCE	0x02			/* 1 = report parity errors */
    134 #define SII_IE	0x01			/* 1 = enable interrupts */
    135 
    136 /*
    137  * ID - Bus ID Register
    138  */
    139 #define SII_ID_IO	0x8000		/* I/O */
    140 
    141 /*
    142  * DESTAT - Selection Detector Status Register
    143  */
    144 #define SII_IDMSK	0x7		/* ID of target reselected the SII */
    145 
    146 /*
    147  * DMCTRL - DMA Control Register
    148  */
    149 #define SII_ASYNC	0x00		/* REQ/ACK Offset for async mode */
    150 #define SII_SYNC	0x03		/* REQ/ACK Offset for sync mode */
    151 
    152 /*
    153  * DMLOTC - DMA Length Of Transfer Counter
    154  */
    155 #define SII_TCMSK	0x1fff		/* transfer count mask */
    156 
    157 /*
    158  * CSTAT - Connection Status Register
    159  */
    160 #define	SII_CI		0x8000	/* composite interrupt bit for CSTAT */
    161 #define SII_DI		0x4000	/* composite interrupt bit for DSTAT */
    162 #define SII_RST		0x2000	/* 1 if reset is asserted on SCSI bus */
    163 #define	SII_BER		0x1000	/* Bus error */
    164 #define	SII_OBC		0x0800	/* Out_en Bit Cleared (DSSI mode) */
    165 #define SII_TZ		0x0400	/* Target pointer Zero (STLP or LTLP is zero) */
    166 #define	SII_BUF		0x0200	/* Buffer service - outbound pkt to non-DSSI */
    167 #define SII_LDN		0x0100	/* List element Done */
    168 #define SII_SCH		0x0080	/* State Change */
    169 #define SII_CON		0x0040	/* SII is Connected to another device */
    170 #define SII_DST		0x0020	/* SII was Destination of current transfer */
    171 #define SII_TGT		0x0010	/* SII is operating as a Target */
    172 #define SII_STATE_MSK	0x0070	/* State Mask */
    173 #define SII_SWA		0x0008	/* Selected With Attention */
    174 #define SII_SIP		0x0004	/* Selection In Progress */
    175 #define SII_LST		0x0002	/* Lost arbitration */
    176 
    177 /*
    178  * DSTAT - Data Transfer Status Register
    179  */
    180 #define SII_DNE		0x2000	/* DMA transfer Done */
    181 #define SII_TCZ		0x1000	/* Transfer Count register is Zero */
    182 #define SII_TBE		0x0800	/* Transmit Buffer Empty */
    183 #define SII_IBF		0x0400	/* Input Buffer Full */
    184 #define SII_IPE		0x0200	/* Incoming Parity Error */
    185 #define SII_OBB		0x0100	/* Odd Byte Boundary */
    186 #define SII_MIS		0x0010	/* Phase Mismatch */
    187 #define SII_ATN		0x0008	/* ATN set by initiator if in Target mode */
    188 #define SII_MSG		0x0004	/* current bus state of MSG */
    189 #define SII_CD		0x0002	/* current bus state of C/D */
    190 #define SII_IO		0x0001	/* current bus state of I/O */
    191 #define SII_PHASE_MSK	0x0007	/* Phase Mask */
    192 
    193 /*
    194  * The different phases.
    195  */
    196 #define SII_MSG_IN_PHASE	0x7
    197 #define SII_MSG_OUT_PHASE	0x6
    198 #define SII_STATUS_PHASE	0x3
    199 #define SII_CMD_PHASE		0x2
    200 #define SII_DATA_IN_PHASE	0x1
    201 #define SII_DATA_OUT_PHASE	0x0
    202 
    203 /*
    204  * COMM - Command Register
    205  */
    206 #define	SII_DMA		0x8000	/* DMA mode */
    207 #define SII_DO_RST	0x4000	/* Assert reset on SCSI bus for 25 usecs */
    208 #define SII_RSL		0x1000	/* 0 = select, 1 = reselect desired device */
    209 
    210 /* Commands: I - Initiator, T - Target, D - Disconnected */
    211 #define SII_INXFER	0x0800	/* Information Transfer command	(I,T) */
    212 #define SII_SELECT	0x0400	/* Select command		(D) */
    213 #define SII_REQDATA	0x0200	/* Request Data command		(T) */
    214 #define	SII_DISCON	0x0100	/* Disconnect command		(I,T,D) */
    215 #define SII_CHRESET	0x0080	/* Chip Reset command		(I,T,D) */
    216 
    217 /* Command state bits same as connection status register */
    218 /* Command phase bits same as data transfer status register */
    219 
    220 /*
    221  * DICTRL - Diagnostic Control Register
    222  */
    223 #define SII_PRE		0x4	/* Enable the SII to drive the SCSI bus */
    224 
    225 #define SII_WAIT_COUNT		10000	/* Delay count used for the SII chip */
    226 /*
    227  * Max DMA transfer length for SII
    228  * The SII chip only has a 13 bit counter. If 8192 is used as the max count,
    229  * you can't tell the difference between a count of zero and 8192.
    230  * 8190 is used instead of 8191 so the count is even.
    231  */
    232 #define SII_MAX_DMA_XFER_LENGTH	8192
    233 
    234 #endif /* _SII */
    235