The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/esp/ncr53c9xreg.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*      $NetBSD: ncr53c9xreg.h,v 1.16 2009/09/07 13:31:44 tsutsui Exp $ */
    2 
    3 /*-
    4  * SPDX-License-Identifier: BSD-4-Clause
    5  *
    6  * Copyright (c) 1994 Peter Galbavy.  All rights reserved.
    7  *
    8  * Redistribution and use in source and binary forms, with or without
    9  * modification, are permitted provided that the following conditions
   10  * are met:
   11  * 1. Redistributions of source code must retain the above copyright
   12  *    notice, this list of conditions and the following disclaimer.
   13  * 2. Redistributions in binary form must reproduce the above copyright
   14  *    notice, this list of conditions and the following disclaimer in the
   15  *    documentation and/or other materials provided with the distribution.
   16  * 3. All advertising materials mentioning features or use of this software
   17  *    must display the following acknowledgement:
   18  *      This product includes software developed by Peter Galbavy.
   19  * 4. The name of the author may not be used to endorse or promote products
   20  *    derived from this software without specific prior written permission.
   21  *
   22  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   23  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   24  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   25  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
   26  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
   27  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   28  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   29  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   30  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   31  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   32  */
   33 
   34 /* $FreeBSD$ */
   35 
   36 #ifndef _NCR53C9XREG_H_
   37 #define _NCR53C9XREG_H_
   38 
   39 /*
   40  * Register addresses, relative to some base address
   41  */
   42 
   43 #define NCR_TCL         0x00            /* RW - Transfer Count Low      */
   44 #define NCR_TCM         0x01            /* RW - Transfer Count Mid      */
   45 #define NCR_TCH         0x0e            /* RW - Transfer Count High     */
   46                                         /*      NOT on 53C90            */
   47 
   48 #define NCR_FIFO        0x02            /* RW - FIFO data               */
   49 
   50 #define NCR_CMD         0x03            /* RW - Command (2 deep)        */
   51 #define  NCRCMD_DMA     0x80            /*      DMA Bit                 */
   52 #define  NCRCMD_NOP     0x00            /*      No Operation            */
   53 #define  NCRCMD_FLUSH   0x01            /*      Flush FIFO              */
   54 #define  NCRCMD_RSTCHIP 0x02            /*      Reset Chip              */
   55 #define  NCRCMD_RSTSCSI 0x03            /*      Reset SCSI Bus          */
   56 #define  NCRCMD_RESEL   0x40            /*      Reselect Sequence       */
   57 #define  NCRCMD_SELNATN 0x41            /*      Select without ATN      */
   58 #define  NCRCMD_SELATN  0x42            /*      Select with ATN         */
   59 #define  NCRCMD_SELATNS 0x43            /*      Select with ATN & Stop  */
   60 #define  NCRCMD_ENSEL   0x44            /*      Enable (Re)Selection    */
   61 #define  NCRCMD_DISSEL  0x45            /*      Disable (Re)Selection   */
   62 #define  NCRCMD_SELATN3 0x46            /*      Select with ATN3        */
   63 #define  NCRCMD_RESEL3  0x47            /*      Reselect3 Sequence      */
   64 #define  NCRCMD_SNDMSG  0x20            /*      Send Message            */
   65 #define  NCRCMD_SNDSTAT 0x21            /*      Send Status             */
   66 #define  NCRCMD_SNDDATA 0x22            /*      Send Data               */
   67 #define  NCRCMD_DISCSEQ 0x23            /*      Disconnect Sequence     */
   68 #define  NCRCMD_TERMSEQ 0x24            /*      Terminate Sequence      */
   69 #define  NCRCMD_TCCS    0x25            /*      Target Command Comp Seq */
   70 #define  NCRCMD_DISC    0x27            /*      Disconnect              */
   71 #define  NCRCMD_RECMSG  0x28            /*      Receive Message         */
   72 #define  NCRCMD_RECCMD  0x29            /*      Receive Command         */
   73 #define  NCRCMD_RECDATA 0x2a            /*      Receive Data            */
   74 #define  NCRCMD_RECCSEQ 0x2b            /*      Receive Command Sequence*/
   75 #define  NCRCMD_ABORT   0x04            /*      Target Abort DMA        */
   76 #define  NCRCMD_TRANS   0x10            /*      Transfer Information    */
   77 #define  NCRCMD_ICCS    0x11            /*      Initiator Cmd Comp Seq  */
   78 #define  NCRCMD_MSGOK   0x12            /*      Message Accepted        */
   79 #define  NCRCMD_TRPAD   0x18            /*      Transfer Pad            */
   80 #define  NCRCMD_SETATN  0x1a            /*      Set ATN                 */
   81 #define  NCRCMD_RSTATN  0x1b            /*      Reset ATN               */
   82 
   83 #define NCR_STAT        0x04            /* RO - Status                  */
   84 #define  NCRSTAT_INT    0x80            /*      Interrupt               */
   85 #define  NCRSTAT_GE     0x40            /*      Gross Error             */
   86 #define  NCRSTAT_PE     0x20            /*      Parity Error            */
   87 #define  NCRSTAT_TC     0x10            /*      Terminal Count          */
   88 #define  NCRSTAT_VGC    0x08            /*      Valid Group Code        */
   89 #define  NCRSTAT_PHASE  0x07            /*      Phase bits              */
   90 
   91 #define NCR_SELID       0x04            /* WO - Select/Reselect Bus ID  */
   92 #define  NCR_BUSID_HMEXC32      0x40    /*      HME xfer counter is 32bit */
   93 #define  NCR_BUSID_HMEENCID     0x10    /*      HME encode reselection ID */
   94 
   95 #define NCR_INTR        0x05            /* RO - Interrupt               */
   96 #define  NCRINTR_SBR    0x80            /*      SCSI Bus Reset          */
   97 #define  NCRINTR_ILL    0x40            /*      Illegal Command         */
   98 #define  NCRINTR_DIS    0x20            /*      Disconnect              */
   99 #define  NCRINTR_BS     0x10            /*      Bus Service             */
  100 #define  NCRINTR_FC     0x08            /*      Function Complete       */
  101 #define  NCRINTR_RESEL  0x04            /*      Reselected              */
  102 #define  NCRINTR_SELATN 0x02            /*      Select with ATN         */
  103 #define  NCRINTR_SEL    0x01            /*      Selected                */
  104 
  105 #define NCR_TIMEOUT     0x05            /* WO - Select/Reselect Timeout */
  106 
  107 #define NCR_STEP        0x06            /* RO - Sequence Step           */
  108 #define  NCRSTEP_MASK   0x07            /*      the last 3 bits         */
  109 #define  NCRSTEP_DONE   0x04            /*      command went out        */
  110 
  111 #define NCR_SYNCTP      0x06            /* WO - Synch Transfer Period   */
  112                                         /*      Default 5 (53C9X)       */
  113 
  114 #define NCR_FFLAG       0x07            /* RO - FIFO Flags              */
  115 #define  NCRFIFO_SS     0xe0            /*      Sequence Step (Dup)     */
  116 #define  NCRFIFO_FF     0x1f            /*      Bytes in FIFO           */
  117 
  118 #define NCR_SYNCOFF     0x07            /* WO - Synch Offset            */
  119                                         /*      0 = ASYNC               */
  120                                         /*      1 - 15 = SYNC bytes     */
  121 
  122 #define NCR_CFG1        0x08            /* RW - Configuration #1        */
  123 #define  NCRCFG1_SLOW   0x80            /*      Slow Cable Mode         */
  124 #define  NCRCFG1_SRR    0x40            /*      SCSI Reset Rep Int Dis  */
  125 #define  NCRCFG1_PTEST  0x20            /*      Parity Test Mod         */
  126 #define  NCRCFG1_PARENB 0x10            /*      Enable Parity Check     */
  127 #define  NCRCFG1_CTEST  0x08            /*      Enable Chip Test        */
  128 #define  NCRCFG1_BUSID  0x07            /*      Bus ID                  */
  129 
  130 #define NCR_CCF         0x09            /* WO - Clock Conversion Factor */
  131                                         /*      0 = 35.01 - 40MHz       */
  132                                         /*      NEVER SET TO 1          */
  133                                         /*      2 = 10MHz               */
  134                                         /*      3 = 10.01 - 15MHz       */
  135                                         /*      4 = 15.01 - 20MHz       */
  136                                         /*      5 = 20.01 - 25MHz       */
  137                                         /*      6 = 25.01 - 30MHz       */
  138                                         /*      7 = 30.01 - 35MHz       */
  139 
  140 #define NCR_TEST        0x0a            /* WO - Test (Chip Test Only)   */
  141 
  142 #define NCR_CFG2        0x0b            /* RW - Configuration #2        */
  143 #define  NCRCFG2_RSVD   0xa0            /*      reserved                */
  144 #define  NCRCFG2_FE     0x40            /*      Features Enable         */
  145 #define  NCRCFG2_DREQ   0x10            /*      DREQ High Impedance     */
  146 #define  NCRCFG2_SCSI2  0x08            /*      SCSI-2 Enable           */
  147 #define  NCRCFG2_BPA    0x04            /*      Target Bad Parity Abort */
  148 #define  NCRCFG2_RPE    0x02            /*      Register Parity Error   */
  149 #define  NCRCFG2_DPE    0x01            /*      DMA Parity Error        */
  150 
  151 #define  NCRCFG2_HMEFE  0x10            /*      HME feature enable      */
  152 #define  NCRCFG2_HME32  0x80            /*      HME 32 extended         */
  153 
  154 /* Config #3 only on 53C9X */
  155 #define NCR_CFG3        0x0c            /* RW - Configuration #3        */
  156 #define  NCRCFG3_RSVD   0xe0            /*      reserved                */
  157 #define  NCRCFG3_IDM    0x10            /*      ID Message Res Check    */
  158 #define  NCRCFG3_QTE    0x08            /*      Queue Tag Enable        */
  159 #define  NCRCFG3_CDB    0x04            /*      CDB 10-bytes OK         */
  160 #define  NCRCFG3_FSCSI  0x02            /*      Fast SCSI               */
  161 #define  NCRCFG3_FCLK   0x01            /*      Fast Clock (>25MHz)     */
  162 
  163 /*
  164  * For some unknown reason, the ESP406/FAS408 looks like every
  165  * other ncr53c9x, except for configuration #3 register.  At any
  166  * rate, if you're dealing with these chips, you need to use these
  167  * defines instead.
  168  */
  169 
  170 /* Config #3 different on ESP406/FAS408 */
  171 #define NCR_ESPCFG3             0x0c    /* RW - Configuration #3        */
  172 #define  NCRESPCFG3_IDM         0x80    /*      ID Message Res Check    */
  173 #define  NCRESPCFG3_QTE         0x40    /*      Queue Tag Enable        */
  174 #define  NCRESPCFG3_CDB         0x20    /*      CDB 10-bytes OK         */
  175 #define  NCRESPCFG3_FSCSI       0x10    /*      Fast SCSI               */
  176 #define  NCRESPCFG3_SRESB       0x08    /*      Save Residual Byte      */
  177 #define  NCRESPCFG3_FCLK        0x04    /*      Fast Clock (>25MHz)     */
  178 #define  NCRESPCFG3_ADMA        0x02    /*      Alternate DMA Mode      */
  179 #define  NCRESPCFG3_T8M         0x01    /*      Threshold 8 Mode        */
  180 
  181 /* Config #3 also different on NCR53CF9x/FAS100A/FAS216/FAS236 */
  182 #define NCR_F9XCFG3             0x0c    /* RW - Configuration #3        */
  183 #define  NCRF9XCFG3_IDM         0x80    /*      ID Message Res Check    */
  184 #define  NCRF9XCFG3_QTE         0x40    /*      Queue Tag Enable        */
  185 #define  NCRF9XCFG3_CDB         0x20    /*      CDB 10-bytes OK         */
  186 #define  NCRF9XCFG3_FSCSI       0x10    /*      Fast SCSI               */
  187 #define  NCRF9XCFG3_FCLK        0x08    /*      Fast Clock (>25MHz)     */
  188 #define  NCRF9XCFG3_SRESB       0x04    /*      Save Residual Byte      */
  189 #define  NCRF9XCFG3_ADMA        0x02    /*      Alternate DMA Mode      */
  190 #define  NCRF9XCFG3_T8M         0x01    /*      Threshold 8 Mode        */
  191 
  192 /* Config #3 on FAS366 */
  193 #define  NCRFASCFG3_OBAUTO      0x80    /*      auto push odd-byte to DMA */
  194 #define  NCRFASCFG3_EWIDE       0x40    /*      Enable Wide-SCSI     */
  195 #define  NCRFASCFG3_IDBIT3      0x20    /*      Bit 3 of HME SCSI-ID */
  196 #define  NCRFASCFG3_IDRESCHK    0x10    /*      ID message checking */
  197 #define  NCRFASCFG3_QUENB       0x08    /*      3-byte msg support */
  198 #define  NCRFASCFG3_CDB10       0x04    /*      group 2 scsi-2 support */
  199 #define  NCRFASCFG3_FASTSCSI    0x02    /*      10 MB/S fast scsi mode */
  200 #define  NCRFASCFG3_FASTCLK     0x01    /*      fast clock mode */
  201 
  202 /* Config #4 only on ESP406/FAS408 */
  203 #define NCR_CFG4        0x0d            /* RW - Configuration #4        */
  204 #define  NCRCFG4_CRS1   0x80            /*      Select register set #1  */
  205 #define  NCRCFG4_RSVD   0x7b            /*      reserved                */
  206 #define  NCRCFG4_ACTNEG 0x04            /*      Active negation         */
  207 
  208 /*
  209    The following registers are only on the ESP406/FAS408.  The
  210    documentation refers to them as "Control Register Set #1".
  211    These are the registers that are visible when bit 7 of
  212    register 0x0d is set.  This bit is common to both register sets.
  213 */
  214 
  215 #define NCR_JMP         0x00            /* RO - Jumper Sense Register   */
  216 #define  NCRJMP_RSVD    0xc0            /*      reserved                */
  217 #define  NCRJMP_ROMSZ   0x20            /*      ROM Size 1=16K, 0=32K   */
  218 #define  NCRJMP_J4      0x10            /*      Jumper #4               */
  219 #define  NCRJMP_J3      0x08            /*      Jumper #3               */
  220 #define  NCRJMP_J2      0x04            /*      Jumper #2               */
  221 #define  NCRJMP_J1      0x02            /*      Jumper #1               */
  222 #define  NCRJMP_J0      0x01            /*      Jumper #0               */
  223 
  224 #define NCR_PIOFIFO     0x04            /* WO - PIO FIFO, 4 bytes deep  */
  225 
  226 #define NCR_PSTAT       0x08            /* RW - PIO Status Register     */
  227 #define  NCRPSTAT_PERR  0x80            /*      PIO Error               */
  228 #define  NCRPSTAT_SIRQ  0x40            /*      Active High of SCSI IRQ */
  229 #define  NCRPSTAT_ATAI  0x20            /*      ATA IRQ                 */
  230 #define  NCRPSTAT_FEMPT 0x10            /*      PIO FIFO Empty          */
  231 #define  NCRPSTAT_F13   0x08            /*      PIO FIFO 1/3            */
  232 #define  NCRPSTAT_F23   0x04            /*      PIO FIFO 2/3            */
  233 #define  NCRPSTAT_FFULL 0x02            /*      PIO FIFO Full           */
  234 #define  NCRPSTAT_PIOM  0x01            /*      PIO/DMA Mode            */
  235 
  236 #define NCR_PIOI        0x0b            /* RW - PIO Interrupt Enable    */
  237 #define  NCRPIOI_RSVD   0xe0            /*      reserved                */
  238 #define  NCRPIOI_EMPTY  0x10            /*      IRQ When Empty          */
  239 #define  NCRPIOI_13     0x08            /*      IRQ When 1/3            */
  240 #define  NCRPIOI_23     0x04            /*      IRQ When 2/3            */
  241 #define  NCRPIOI_FULL   0x02            /*      IRQ When Full           */
  242 #define  NCRPIOI_FINV   0x01            /*      Flag Invert             */
  243 
  244 #define NCR_CFG5        0x0d            /* RW - Configuration #5        */
  245 #define  NCRCFG5_CRS1   0x80            /*      Select Register Set #1  */
  246 #define  NCRCFG5_SRAM   0x40            /*      SRAM Memory Map         */
  247 #define  NCRCFG5_AADDR  0x20            /*      Auto Address            */
  248 #define  NCRCFG5_PTRINC 0x10            /*      Pointer Increment       */
  249 #define  NCRCFG5_LOWPWR 0x08            /*      Low Power Mode          */
  250 #define  NCRCFG5_SINT   0x04            /*      SCSI Interrupt Enable   */
  251 #define  NCRCFG5_INTP   0x02            /*      INT Polarity            */
  252 #define  NCRCFG5_AINT   0x01            /*      ATA Interrupt Enable    */
  253 
  254 #define NCR_SIGNTR      0x0e            /* RO - Signature               */
  255 
  256 /* Am53c974 Config #3 */
  257 #define NCR_AMDCFG3             0x0c    /* RW - Configuration #3        */
  258 #define  NCRAMDCFG3_IDM         0x80    /*      ID Message Res Check    */
  259 #define  NCRAMDCFG3_QTE         0x40    /*      Queue Tag Enable        */
  260 #define  NCRAMDCFG3_CDB         0x20    /*      CDB 10-bytes OK         */
  261 #define  NCRAMDCFG3_FSCSI       0x10    /*      Fast SCSI               */
  262 #define  NCRAMDCFG3_FCLK        0x08    /*      Fast Clock (40MHz)      */
  263 #define  NCRAMDCFG3_RSVD        0x07    /*      Reserved                */
  264 
  265 /* Am53c974 Config #4 */
  266 #define NCR_AMDCFG4             0x0d    /* RW - Configuration #4        */
  267 #define  NCRAMDCFG4_GE          0xc0    /*      Glitch Eater            */
  268 #define  NCRAMDCFG4_GE12NS      0x00    /*      Signal window 12ns      */
  269 #define  NCRAMDCFG4_GE25NS      0x80    /*      Signal window 25ns      */
  270 #define  NCRAMDCFG4_GE35NS      0x40    /*      Signal window 35ns      */
  271 #define  NCRAMDCFG4_GE0NS       0xc0    /*      Signal window 0ns       */
  272 #define  NCRAMDCFG4_PWD         0x20    /*      Reduced power feature   */
  273 #define  NCRAMDCFG4_RSVD        0x13    /*      Reserved                */
  274 #define  NCRAMDCFG4_RAE         0x08    /*      Active neg. REQ/ACK     */
  275 #define  NCRAMDCFG4_RADE        0x04    /*      Active neg. REQ/ACK/DAT */
  276 
  277 /*
  278  * FAS366
  279  */
  280 #define NCR_RCL         NCR_TCH /* Recommand counter low */
  281 #define NCR_RCH         0xf     /* Recommand counter high */
  282 #define NCR_UID         NCR_RCL /* fas366 part-uniq id */
  283 
  284 
  285 /* status register #2 definitions (read only) */
  286 #define NCR_STAT2       NCR_CCF
  287 #define NCRFAS_STAT2_SEQCNT   0x01         /* Sequence counter bit 7-3 enabled */
  288 #define NCRFAS_STAT2_FLATCHED 0x02         /* FIFO flags register latched */
  289 #define NCRFAS_STAT2_CLATCHED 0x04         /* Xfer cntr & recommand ctr latched */
  290 #define NCRFAS_STAT2_CACTIVE  0x08         /* Command register is active */
  291 #define NCRFAS_STAT2_SCSI16   0x10         /* SCSI interface is wide */
  292 #define NCRFAS_STAT2_ISHUTTLE 0x20         /* FIFO Top register contains 1 byte */
  293 #define NCRFAS_STAT2_OSHUTTLE 0x40         /* next byte from FIFO is MSB */
  294 #define NCRFAS_STAT2_EMPTY    0x80         /* FIFO is empty */
  295 
  296 #endif /* _NCR53C9XREG_H_ */

Cache object: 05dbaefe769a0f028ee0877698d17f5f


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.