Home | History | Annotate | Line # | Download | only in ic
ihareg.h revision 1.6.6.3
      1  1.6.6.3    skrll /*	$NetBSD: ihareg.h,v 1.6.6.3 2004/09/21 13:27:57 skrll Exp $ */
      2      1.4  tsutsui 
      3      1.4  tsutsui /*-
      4      1.4  tsutsui  * Device driver for the INI-9XXXU/UW or INIC-940/950 PCI SCSI Controller.
      5      1.4  tsutsui  *
      6      1.4  tsutsui  *  Written for 386bsd and FreeBSD by
      7      1.4  tsutsui  *	Winston Hung		<winstonh (at) initio.com>
      8      1.1  tsutsui  *
      9      1.4  tsutsui  * Copyright (c) 1997-1999 Initio Corp.
     10      1.1  tsutsui  * Copyright (c) 2000 Ken Westerback
     11      1.1  tsutsui  * All rights reserved.
     12      1.1  tsutsui  *
     13      1.1  tsutsui  * Redistribution and use in source and binary forms, with or without
     14      1.1  tsutsui  * modification, are permitted provided that the following conditions
     15      1.1  tsutsui  * are met:
     16      1.1  tsutsui  * 1. Redistributions of source code must retain the above copyright
     17      1.1  tsutsui  *    notice, this list of conditions and the following disclaimer,
     18      1.1  tsutsui  *    without modification, immediately at the beginning of the file.
     19      1.1  tsutsui  * 2. The name of the author may not be used to endorse or promote products
     20      1.1  tsutsui  *    derived from this software without specific prior written permission.
     21      1.1  tsutsui  *
     22      1.1  tsutsui  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     23      1.1  tsutsui  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     24      1.1  tsutsui  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     25      1.1  tsutsui  * IN NO EVENT SHALL THE AUTHOR OR HIS RELATIVES BE LIABLE FOR ANY DIRECT,
     26      1.1  tsutsui  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     27      1.1  tsutsui  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
     28      1.1  tsutsui  * SERVICES; LOSS OF MIND, USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     29      1.1  tsutsui  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     30      1.1  tsutsui  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
     31      1.1  tsutsui  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
     32      1.1  tsutsui  * THE POSSIBILITY OF SUCH DAMAGE.
     33      1.1  tsutsui  */
     34      1.1  tsutsui 
     35      1.1  tsutsui /*
     36      1.1  tsutsui  * Ported to NetBSD by Izumi Tsutsui <tsutsui (at) ceres.dti.ne.jp> from OpenBSD:
     37      1.1  tsutsui  * $OpenBSD: iha.h,v 1.2 2001/02/08 17:35:05 krw Exp $
     38      1.1  tsutsui  */
     39      1.1  tsutsui 
     40      1.1  tsutsui /*
     41      1.2  tsutsui  *  Tulip (aka inic-940/950) PCI Configuration Space Initio Specific Registers
     42      1.1  tsutsui  *
     43      1.1  tsutsui  *  Offsets 0x00 through 0x3f are the standard PCI Configuration Header
     44      1.1  tsutsui  *  registers.
     45      1.1  tsutsui  *
     46      1.1  tsutsui  *  Offsets 0x40 through 0x4f, 0x51, 0x53, 0x57, 0x5b, 0x5e and 0x5f are
     47      1.1  tsutsui  *  reserved registers.
     48      1.1  tsutsui  *
     49      1.1  tsutsui  *  Registers 0x50 and 0x52 always read as 0.
     50      1.1  tsutsui  *
     51      1.1  tsutsui  *  The register offset names and associated bit field names are taken
     52      1.2  tsutsui  *  from the Inic-950 Data Sheet, Version 2.1, March 1997
     53      1.1  tsutsui  */
     54      1.1  tsutsui #define TUL_GCTRL0	0x54	       /* R/W Global Control 0		     */
     55      1.1  tsutsui #define     EEPRG	    0x04       /*     Enable EEPROM Programming	     */
     56      1.1  tsutsui #define TUL_GCTRL1	0x55	       /* R/W Global Control 1		     */
     57      1.1  tsutsui #define     ATDEN	    0x01       /*     Auto Termination Detect Enable */
     58      1.1  tsutsui #define TUL_GSTAT	0x56	       /* R/W Global Status - connector type */
     59      1.1  tsutsui #define TUL_EPAD0	0x58	       /* R/W External EEPROM Addr (lo byte) */
     60      1.1  tsutsui #define TUL_EPAD1	0x59	       /* R/W External EEPROM Addr (hi byte) */
     61      1.1  tsutsui #define TUL_PNVPG	0x5A	       /* R/W Data port to external BIOS     */
     62      1.1  tsutsui #define TUL_EPDATA	0x5C	       /* R/W EEPROM Data port		     */
     63      1.1  tsutsui #define TUL_NVRAM	0x5D	       /* R/W Non-volatile RAM port	     */
     64      1.1  tsutsui #define     READ	    0x80       /*     Read from given NVRAM addr     */
     65      1.1  tsutsui #define     WRITE           0x40       /*     Write to given NVRAM addr	     */
     66      1.1  tsutsui #define     ENABLE_ERASE    0x30       /*     Enable NVRAM Erase/Write       */
     67      1.1  tsutsui #define     NVRCS	    0x08       /*     Select external NVRAM	     */
     68      1.1  tsutsui #define     NVRCK	    0x04       /*     NVRAM Clock		     */
     69      1.1  tsutsui #define     NVRDO	    0x02       /*     NVRAM Write Data		     */
     70      1.1  tsutsui #define     NVRDI	    0x01       /*     NVRAM Read  Data		     */
     71      1.1  tsutsui 
     72      1.1  tsutsui /*
     73      1.2  tsutsui  *   Tulip (aka inic-940/950) SCSI Registers
     74      1.1  tsutsui  */
     75      1.1  tsutsui #define TUL_STCNT0	0x80	       /* R/W 24 bit SCSI Xfer Count	     */
     76      1.1  tsutsui #define     TCNT	    0x00ffffff /*     SCSI Xfer Transfer Count	     */
     77      1.1  tsutsui #define TUL_SFIFOCNT	0x83	       /* R/W  5 bit FIFO counter	     */
     78      1.1  tsutsui #define     FIFOC	    0x1f       /*     SCSI Offset Fifo Count	     */
     79      1.1  tsutsui #define TUL_SISTAT	0x84	       /* R   Interrupt Register	     */
     80      1.1  tsutsui #define     RSELED	    0x80       /*     Reselected		     */
     81      1.1  tsutsui #define     STIMEO	    0x40       /*     Selected/Reselected Timeout    */
     82      1.1  tsutsui #define     SBSRV	    0x20       /*     SCSI Bus Service		     */
     83      1.1  tsutsui #define     SRSTD	    0x10       /*     SCSI Reset Detected	     */
     84      1.1  tsutsui #define     DISCD	    0x08       /*     Disconnected Status	     */
     85      1.1  tsutsui #define     SELED	    0x04       /*     Select Interrupt		     */
     86      1.1  tsutsui #define     SCAMSCT	    0x02       /*     SCAM selected		     */
     87      1.1  tsutsui #define     SCMDN	    0x01       /*     Command Complete		     */
     88      1.1  tsutsui #define TUL_SIEN	0x84	       /* W   Interrupt enable		     */
     89      1.1  tsutsui #define     ALL_INTERRUPTS  0xff
     90      1.1  tsutsui #define TUL_STAT0	0x85	       /* R   Status 0			     */
     91      1.1  tsutsui #define     INTPD	    0x80       /*     Interrupt pending		     */
     92      1.1  tsutsui #define     SQACT	    0x40       /*     Sequencer active		     */
     93      1.1  tsutsui #define     XFCZ	    0x20       /*     Xfer counter zero		     */
     94      1.1  tsutsui #define     SFEMP	    0x10       /*     FIFO empty		     */
     95      1.1  tsutsui #define     SPERR	    0x08       /*     SCSI parity error		     */
     96      1.1  tsutsui #define     PH_MASK	    0x07       /*     SCSI phase mask		     */
     97      1.1  tsutsui #define TUL_SCTRL0	0x85	       /* W   Control 0			     */
     98      1.1  tsutsui #define     RSSQC	    0x20       /*     Reset sequence counter	     */
     99      1.1  tsutsui #define     RSFIFO	    0x10       /*     Flush FIFO		     */
    100      1.1  tsutsui #define     CMDAB	    0x04       /*     Abort command (sequence)	     */
    101      1.1  tsutsui #define     RSMOD	    0x02       /*     Reset SCSI Chip		     */
    102      1.1  tsutsui #define     RSCSI	    0x01       /*     Reset SCSI Bus		     */
    103      1.1  tsutsui #define TUL_STAT1	0x86	       /* R   Status 1			     */
    104      1.1  tsutsui #define     STRCV	    0x80       /*     Status received		     */
    105      1.1  tsutsui #define     MSGST	    0x40       /*     Message sent		     */
    106      1.1  tsutsui #define     CPDNE	    0x20       /*     Data phase done		     */
    107      1.1  tsutsui #define     DPHDN	    0x10       /*     Data phase done		     */
    108      1.1  tsutsui #define     STSNT	    0x08       /*     Status sent		     */
    109      1.1  tsutsui #define     SXCMP	    0x04       /*     Xfer completed		     */
    110      1.1  tsutsui #define     SLCMP	    0x02       /*     Selection completed	     */
    111      1.1  tsutsui #define     ARBCMP	    0x01       /*     Arbitration completed	     */
    112      1.1  tsutsui #define TUL_SCTRL1	0x86	       /* W   Control 1			     */
    113      1.1  tsutsui #define     ENSCAM	    0x80       /*     Enable SCAM		     */
    114      1.1  tsutsui #define     NIDARB	    0x40       /*     No ID for Arbitration	     */
    115      1.1  tsutsui #define     ENLRS	    0x20       /*     Low Level Reselect	     */
    116      1.1  tsutsui #define     PWDN	    0x10       /*     Power down mode		     */
    117      1.1  tsutsui #define     WCPU	    0x08       /*     Wide CPU			     */
    118      1.1  tsutsui #define     EHRSL	    0x04       /*     Enable HW reselect	     */
    119      1.1  tsutsui #define     ESBUSOUT	    0x02       /*     Enable SCSI data bus out latch */
    120      1.1  tsutsui #define     ESBUSIN	    0x01       /*     Enable SCSI data bus in latch  */
    121      1.1  tsutsui #define TUL_SSTATUS2	0x87	       /* R   Status 2			     */
    122      1.1  tsutsui #define     SABRT	    0x80       /*     Command aborted		     */
    123      1.1  tsutsui #define     OSCZ	    0x40       /*     Offset counter zero	     */
    124      1.1  tsutsui #define     SFFUL	    0x20       /*     FIFO full			     */
    125      1.1  tsutsui #define     TMCZ	    0x10       /*     Timeout counter zero	     */
    126      1.1  tsutsui #define     BSYGN	    0x08       /*     Busy release		     */
    127      1.1  tsutsui #define     PHMIS	    0x04       /*     Phase mismatch		     */
    128      1.1  tsutsui #define     SBEN	    0x02       /*     SCSI data bus enable	     */
    129      1.1  tsutsui #define     SRST	    0x01       /*     SCSI bus reset in progress     */
    130      1.1  tsutsui #define TUL_SCONFIG0	0x87	       /* W   Configuration		     */
    131      1.1  tsutsui #define     PHLAT	    0x80       /*     Enable phase latch	     */
    132      1.1  tsutsui #define     ITMOD	    0x40       /*     Initiator mode		     */
    133      1.1  tsutsui #define     SPCHK	    0x20       /*     Enable SCSI parity	     */
    134      1.1  tsutsui #define     ADMA8	    0x10       /*     Alternate dma 8-bits mode	     */
    135      1.1  tsutsui #define     ADMAW	    0x08       /*     Alternate dma 16-bits mode     */
    136      1.1  tsutsui #define     EDACK	    0x04       /*     Enable DACK in wide SCSI xfer  */
    137      1.1  tsutsui #define     ALTPD	    0x02       /*     Alternate sync period mode     */
    138      1.1  tsutsui #define     DSRST	    0x01       /*     Disable SCSI Reset signal	     */
    139      1.1  tsutsui #define     SCONFIG0DEFAULT (PHLAT | ITMOD | ALTPD | DSRST)
    140      1.1  tsutsui #define TUL_SOFSC	0x88	       /* R   Offset			     */
    141      1.1  tsutsui #define     PERIOD_WIDE_SCSI	0x80   /*     Enable Wide SCSI               */
    142      1.1  tsutsui #define     PERIOD_SYXPD	0x70   /*     Synch. SCSI Xfer rate          */
    143      1.1  tsutsui #define     PERIOD_SYOFS	0x0f   /*     Synch. SCSI Offset             */
    144      1.1  tsutsui #define TUL_SYNCM	0x88	       /* W   Sync. Xfer Period & Offset     */
    145      1.1  tsutsui #define TUL_SBID	0x89	       /* R   SCSI BUS ID		     */
    146      1.1  tsutsui #define TUL_SID		0x89	       /* W   SCSI ID			     */
    147      1.1  tsutsui #define TUL_SALVC	0x8A	       /* R   FIFO Avail Cnt/Identify Msg    */
    148      1.6      jmc #define     IHA_MSG_IDENTIFY_LUNMASK 0x07
    149      1.1  tsutsui #define TUL_STIMO	0x8A	       /* W   Sel/Resel Time Out Register    */
    150      1.1  tsutsui #define     STIMO_250MS	153	       /*     in units of 1.6385us           */
    151      1.1  tsutsui #define TUL_SDATI	0x8B	       /* R   SCSI Bus contents		     */
    152      1.1  tsutsui #define TUL_SDAT0	0x8B	       /* W   SCSI Data Out		     */
    153      1.1  tsutsui #define TUL_SFIFO	0x8C	       /* R/W FIFO			     */
    154      1.1  tsutsui #define TUL_SSIGI	0x90	       /* R   SCSI signal in		     */
    155      1.1  tsutsui #define     REQ		    0x80       /*     REQ signal		     */
    156      1.1  tsutsui #define     ACK		    0x40       /*     ACK signal		     */
    157      1.1  tsutsui #define     BSY		    0x20       /*     BSY signal		     */
    158      1.1  tsutsui #define     SEL		    0x10       /*     SEL signal		     */
    159      1.1  tsutsui #define     ATN		    0x08       /*     ATN signal		     */
    160      1.1  tsutsui #define     MSG		    0x04       /*     MSG signal		     */
    161      1.1  tsutsui #define     CD		    0x02       /*     C/D signal		     */
    162      1.1  tsutsui #define     IO		    0x01       /*     I/O signal		     */
    163      1.1  tsutsui #define TUL_SSIGO	0x90	       /* W   SCSI signal out		     */
    164      1.1  tsutsui #define TUL_SCMD	0x91	       /* R/W SCSI Command		     */
    165      1.1  tsutsui #define     NO_OP	    0x00       /*     Place Holder for tulip_wait()  */
    166      1.1  tsutsui #define     SEL_NOATN	    0x01       /*     Select w/o ATN Sequence	     */
    167  1.6.6.1    skrll #define     XF_FIFO_OUT	    0x03       /*     FIFO Xfer Information out	     */
    168      1.1  tsutsui #define     MSG_ACCEPT	    0x0F       /*     Message Accept		     */
    169      1.1  tsutsui #define     SEL_ATN	    0x11       /*     Select w ATN Sequence	     */
    170      1.1  tsutsui #define     SEL_ATNSTOP	    0x12       /*     Select w ATN & Stop Sequence   */
    171      1.1  tsutsui #define     SELATNSTOP	    0x1E       /*     Select w ATN & Stop Sequence   */
    172      1.1  tsutsui #define     SEL_ATN3	    0x31       /*     Select w ATN3 Sequence	     */
    173  1.6.6.1    skrll #define     XF_DMA_OUT	    0x43       /*     DMA Xfer Information out	     */
    174      1.1  tsutsui #define     EN_RESEL	    0x80       /*     Enable Reselection	     */
    175  1.6.6.1    skrll #define     XF_FIFO_IN	    0x83       /*     FIFO Xfer Information in	     */
    176      1.1  tsutsui #define     CMD_COMP	    0x84       /*     Command Complete Sequence	     */
    177  1.6.6.1    skrll #define     XF_DMA_IN	    0xC3       /*     DMA Xfer Information in	     */
    178      1.1  tsutsui #define TUL_STEST0	0x92	       /* R/W Test0			     */
    179      1.1  tsutsui #define TUL_STEST1	0x93	       /* R/W Test1			     */
    180      1.1  tsutsui 
    181      1.1  tsutsui /*
    182      1.2  tsutsui  *   Tulip (aka inic-940/950) DMA Registers
    183      1.1  tsutsui  */
    184      1.1  tsutsui #define TUL_DXPA	0xC0	       /* R/W DMA      Xfer Physcl Addr	 0-31*/
    185      1.1  tsutsui #define TUL_DXPAE	0xC4	       /* R/W DMA      Xfer Physcl Addr 32-63*/
    186      1.1  tsutsui #define TUL_DCXA	0xC8	       /* R   DMA Curr Xfer Physcl Addr	 0-31*/
    187      1.1  tsutsui #define TUL_DCXAE	0xCC	       /* R   DMA Curr Xfer Physcl Addr 32-63*/
    188      1.1  tsutsui #define TUL_DXC		0xD0	       /* R/W DMA Xfer Counter		     */
    189      1.1  tsutsui #define TUL_DCXC	0xD4	       /* R   DMA Current Xfer Counter	     */
    190      1.1  tsutsui #define TUL_DCMD	0xD8	       /* R/W DMA Command Register	     */
    191      1.1  tsutsui #define     SGXFR	    0x80       /*     Scatter/Gather Xfer	     */
    192      1.1  tsutsui #define     RSVD	    0x40       /*     Reserved - always reads as 0   */
    193      1.1  tsutsui #define     XDIR	    0x20       /*     Xfer Direction 0/1 = out/in    */
    194      1.1  tsutsui #define     BMTST	    0x10       /*     Bus Master Test		     */
    195      1.1  tsutsui #define     CLFIFO	    0x08       /*     Clear FIFO		     */
    196      1.1  tsutsui #define     ABTXFR	    0x04       /*     Abort Xfer		     */
    197      1.1  tsutsui #define     FRXFR	    0x02       /*     Force Xfer		     */
    198      1.1  tsutsui #define     STRXFR	    0x01       /*     Start Xfer		     */
    199      1.1  tsutsui #define TUL_ISTUS0	0xDC	       /* R/W Interrupt Status Register	     */
    200      1.1  tsutsui #define     DGINT	    0x80       /*     DMA Global Interrupt	     */
    201      1.1  tsutsui #define     RSVRD0	    0x40       /*     Reserved			     */
    202      1.1  tsutsui #define     RSVRD1	    0x20       /*     Reserved			     */
    203      1.1  tsutsui #define     SCMP	    0x10       /*     SCSI Complete		     */
    204      1.1  tsutsui #define     PXERR	    0x08       /*     PCI Xfer Error		     */
    205      1.1  tsutsui #define     DABT	    0x04       /*     DMA Xfer Aborted		     */
    206      1.1  tsutsui #define     FXCMP	    0x02       /*     Forced Xfer Complete	     */
    207      1.1  tsutsui #define     XCMP	    0x01       /*     Bus Master Xfer Complete	     */
    208      1.1  tsutsui #define TUL_ISTUS1	0xDD	       /* R   DMA status Register	     */
    209      1.1  tsutsui #define     SCBSY	    0x08       /*     SCSI Busy			     */
    210      1.1  tsutsui #define     FFULL	    0x04       /*     FIFO Full			     */
    211      1.1  tsutsui #define     FEMPT	    0x02       /*     FIFO Empty		     */
    212      1.1  tsutsui #define     XPEND	    0x01       /*     Xfer pending		     */
    213      1.1  tsutsui #define TUL_IMSK	0xE0	       /* R/W Interrupt Mask Register	     */
    214      1.1  tsutsui #define     MSCMP	    0x10       /*     Mask SCSI Complete	     */
    215      1.1  tsutsui #define     MPXFER	    0x08       /*     Mask PCI Xfer Error	     */
    216      1.1  tsutsui #define     MDABT	    0x04       /*     Mask Bus Master Abort	     */
    217      1.1  tsutsui #define     MFCMP	    0x02       /*     Mask Force Xfer Complete	     */
    218      1.1  tsutsui #define     MXCMP	    0x01       /*     Mask Bus Master Xfer Complete  */
    219      1.1  tsutsui #define     MASK_ALL	    (MXCMP | MFCMP | MDABT | MPXFER | MSCMP)
    220      1.1  tsutsui #define TUL_DCTRL0	0xE4	       /* R/W DMA Control Register	     */
    221      1.1  tsutsui #define     SXSTP	    0x80       /*     SCSI Xfer Stop		     */
    222      1.1  tsutsui #define     RPMOD	    0x40       /*     Reset PCI Module		     */
    223      1.1  tsutsui #define     RSVRD2	    0x20       /*     SCSI Xfer Stop		     */
    224      1.1  tsutsui #define     PWDWN	    0x10       /*     Power Down		     */
    225      1.1  tsutsui #define     ENTM	    0x08       /*     Enable SCSI Terminator Low     */
    226      1.1  tsutsui #define     ENTMW	    0x04       /*     Enable SCSI Terminator High    */
    227      1.1  tsutsui #define     DISAFC	    0x02       /*     Disable Auto Clear	     */
    228      1.1  tsutsui #define     LEDCTL	    0x01       /*     LED Control		     */
    229      1.1  tsutsui #define TUL_DCTRL1	0xE5	       /* R/W DMA Control Register 1	     */
    230      1.1  tsutsui #define     SDWS	    0x01       /*     SCSI DMA Wait State	     */
    231      1.1  tsutsui #define TUL_DFIFO	0xE8	       /* R/W DMA FIFO			     */
    232      1.1  tsutsui 
    233      1.1  tsutsui #define TUL_WCTRL	0xF7	       /* ?/? Bus master wait state control  */
    234      1.1  tsutsui #define TUL_DCTRL	0xFB	       /* ?/? DMA delay control		     */
    235