📄 i91uscsi.h
字号:
/************************************************************************** * Initio 9100 device driver for Linux. * * Copyright (c) 1994-1998 Initio Corporation * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. * * -------------------------------------------------------------------------- * * 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, * without modification, immediately at the beginning of the file. * 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. The name of the author may not be used to endorse or promote products * derived from this software without specific prior written permission. * * Where this Software is combined with software released under the terms of * the GNU General Public License ("GPL") and the terms of the GPL would require the * combined work to also be released under the terms of the GPL, the terms * and conditions of this License will apply in addition to those of the * GPL with the exception of any terms or conditions of this License that * conflict with, or are expressly prohibited by, the GPL. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. * **************************************************************************/#include <linux/config.h>#include <linux/types.h>#define ULONG unsigned long#define USHORT unsigned short#define UCHAR unsigned char#define BYTE unsigned char#define WORD unsigned short#define DWORD unsigned long#define UBYTE unsigned char#define UWORD unsigned short#define UDWORD unsigned long#define U32 u32#ifndef NULL#define NULL 0 /* zero */#endif#ifndef TRUE#define TRUE (1) /* boolean true */#endif#ifndef FALSE#define FALSE (0) /* boolean false */#endif#ifndef FAILURE#define FAILURE (-1)#endif#define TOTAL_SG_ENTRY 32#define MAX_SUPPORTED_ADAPTERS 8#define MAX_OFFSET 15#define MAX_TARGETS 16#define INI_VENDOR_ID 0x1101 /* Initio's PCI vendor ID */#define I950_DEVICE_ID 0x9500 /* Initio's inic-950 product ID */#define I940_DEVICE_ID 0x9400 /* Initio's inic-940 product ID */#define I935_DEVICE_ID 0x9401 /* Initio's inic-935 product ID */#define _I91USCSI_Htypedef struct { unsigned short base; unsigned short vec;} i91u_config;/***************************************//* Tulip Configuration Register Set *//***************************************/#define TUL_PVID 0x00 /* Vendor ID */#define TUL_PDID 0x02 /* Device ID */#define TUL_PCMD 0x04 /* Command */#define TUL_PSTUS 0x06 /* Status */#define TUL_PRID 0x08 /* Revision number */#define TUL_PPI 0x09 /* Programming interface */#define TUL_PSC 0x0A /* Sub Class */#define TUL_PBC 0x0B /* Base Class */#define TUL_PCLS 0x0C /* Cache line size */#define TUL_PLTR 0x0D /* Latency timer */#define TUL_PHDT 0x0E /* Header type */#define TUL_PBIST 0x0F /* BIST */#define TUL_PBAD 0x10 /* Base address */#define TUL_PBAD1 0x14 /* Base address */#define TUL_PBAD2 0x18 /* Base address */#define TUL_PBAD3 0x1C /* Base address */#define TUL_PBAD4 0x20 /* Base address */#define TUL_PBAD5 0x24 /* Base address */#define TUL_PRSVD 0x28 /* Reserved */#define TUL_PRSVD1 0x2C /* Reserved */#define TUL_PRAD 0x30 /* Expansion ROM base address */#define TUL_PRSVD2 0x34 /* Reserved */#define TUL_PRSVD3 0x38 /* Reserved */#define TUL_PINTL 0x3C /* Interrupt line */#define TUL_PINTP 0x3D /* Interrupt pin */#define TUL_PIGNT 0x3E /* MIN_GNT */#define TUL_PMGNT 0x3F /* MAX_GNT *//************************//* Jasmin Register Set *//************************/#define TUL_HACFG0 0x40 /* H/A Configuration Register 0 */#define TUL_HACFG1 0x41 /* H/A Configuration Register 1 */#define TUL_HACFG2 0x42 /* H/A Configuration Register 2 */#define TUL_SDCFG0 0x44 /* SCSI Device Configuration 0 */#define TUL_SDCFG1 0x45 /* SCSI Device Configuration 1 */#define TUL_SDCFG2 0x46 /* SCSI Device Configuration 2 */#define TUL_SDCFG3 0x47 /* SCSI Device Configuration 3 */#define TUL_GINTS 0x50 /* Global Interrupt Status Register */#define TUL_GIMSK 0x52 /* Global Interrupt MASK Register */#define TUL_GCTRL 0x54 /* Global Control Register */#define TUL_GCTRL_EEPROM_BIT 0x04#define TUL_GCTRL1 0x55 /* Global Control Register */#define TUL_DMACFG 0x5B /* DMA configuration */#define TUL_NVRAM 0x5D /* Non-volatile RAM port */#define TUL_SCnt0 0x80 /* 00 R/W Transfer Counter Low */#define TUL_SCnt1 0x81 /* 01 R/W Transfer Counter Mid */#define TUL_SCnt2 0x82 /* 02 R/W Transfer Count High */#define TUL_SFifoCnt 0x83 /* 03 R FIFO counter */#define TUL_SIntEnable 0x84 /* 03 W Interrupt enble */#define TUL_SInt 0x84 /* 04 R Interrupt Register */#define TUL_SCtrl0 0x85 /* 05 W Control 0 */#define TUL_SStatus0 0x85 /* 05 R Status 0 */#define TUL_SCtrl1 0x86 /* 06 W Control 1 */#define TUL_SStatus1 0x86 /* 06 R Status 1 */#define TUL_SConfig 0x87 /* 07 W Configuration */#define TUL_SStatus2 0x87 /* 07 R Status 2 */#define TUL_SPeriod 0x88 /* 08 W Sync. Transfer Period & Offset */#define TUL_SOffset 0x88 /* 08 R Offset */#define TUL_SScsiId 0x89 /* 09 W SCSI ID */#define TUL_SBusId 0x89 /* 09 R SCSI BUS ID */#define TUL_STimeOut 0x8A /* 0A W Sel/Resel Time Out Register */#define TUL_SIdent 0x8A /* 0A R Identify Message Register */#define TUL_SAvail 0x8A /* 0A R Availiable Counter Register */#define TUL_SData 0x8B /* 0B R/W SCSI data in/out */#define TUL_SFifo 0x8C /* 0C R/W FIFO */#define TUL_SSignal 0x90 /* 10 R/W SCSI signal in/out */#define TUL_SCmd 0x91 /* 11 R/W Command */#define TUL_STest0 0x92 /* 12 R/W Test0 */#define TUL_STest1 0x93 /* 13 R/W Test1 */#define TUL_SCFG1 0x94 /* 14 R/W Configuration */#define TUL_XAddH 0xC0 /*DMA Transfer Physical Address */#define TUL_XAddW 0xC8 /*DMA Current Transfer Physical Address */#define TUL_XCntH 0xD0 /*DMA Transfer Counter */#define TUL_XCntW 0xD4 /*DMA Current Transfer Counter */#define TUL_XCmd 0xD8 /*DMA Command Register */#define TUL_Int 0xDC /*Interrupt Register */#define TUL_XStatus 0xDD /*DMA status Register */#define TUL_Mask 0xE0 /*Interrupt Mask Register */#define TUL_XCtrl 0xE4 /*DMA Control Register */#define TUL_XCtrl1 0xE5 /*DMA Control Register 1 */#define TUL_XFifo 0xE8 /*DMA FIFO */#define TUL_WCtrl 0xF7 /*Bus master wait state control */#define TUL_DCtrl 0xFB /*DMA delay control *//*----------------------------------------------------------------------*//* bit definition for Command register of Configuration Space Header *//*----------------------------------------------------------------------*/#define BUSMS 0x04 /* BUS MASTER Enable */#define IOSPA 0x01 /* IO Space Enable *//*----------------------------------------------------------------------*//* Command Codes of Tulip SCSI Command register *//*----------------------------------------------------------------------*/#define TSC_EN_RESEL 0x80 /* Enable Reselection */#define TSC_CMD_COMP 0x84 /* Command Complete Sequence */#define TSC_SEL 0x01 /* Select Without ATN Sequence */#define TSC_SEL_ATN 0x11 /* Select With ATN Sequence */#define TSC_SEL_ATN_DMA 0x51 /* Select With ATN Sequence with DMA */#define TSC_SEL_ATN3 0x31 /* Select With ATN3 Sequence */#define TSC_SEL_ATNSTOP 0x12 /* Select With ATN and Stop Sequence */#define TSC_SELATNSTOP 0x1E /* Select With ATN and Stop Sequence */#define TSC_SEL_ATN_DIRECT_IN 0x95 /* Select With ATN Sequence */#define TSC_SEL_ATN_DIRECT_OUT 0x15 /* Select With ATN Sequence */#define TSC_SEL_ATN3_DIRECT_IN 0xB5 /* Select With ATN3 Sequence */#define TSC_SEL_ATN3_DIRECT_OUT 0x35 /* Select With ATN3 Sequence */#define TSC_XF_DMA_OUT_DIRECT 0x06 /* DMA Xfer Infomation out */#define TSC_XF_DMA_IN_DIRECT 0x86 /* DMA Xfer Infomation in */#define TSC_XF_DMA_OUT 0x43 /* DMA Xfer Infomation out */#define TSC_XF_DMA_IN 0xC3 /* DMA Xfer Infomation in */#define TSC_XF_FIFO_OUT 0x03 /* FIFO Xfer Infomation out */#define TSC_XF_FIFO_IN 0x83 /* FIFO Xfer Infomation in */#define TSC_MSG_ACCEPT 0x0F /* Message Accept *//*----------------------------------------------------------------------*//* bit definition for Tulip SCSI Control 0 Register *//*----------------------------------------------------------------------*/#define TSC_RST_SEQ 0x20 /* Reset sequence counter */#define TSC_FLUSH_FIFO 0x10 /* Flush FIFO */#define TSC_ABT_CMD 0x04 /* Abort command (sequence) */#define TSC_RST_CHIP 0x02 /* Reset SCSI Chip */#define TSC_RST_BUS 0x01 /* Reset SCSI Bus *//*----------------------------------------------------------------------*//* bit definition for Tulip SCSI Control 1 Register *//*----------------------------------------------------------------------*/#define TSC_EN_SCAM 0x80 /* Enable SCAM */#define TSC_TIMER 0x40 /* Select timeout unit */#define TSC_EN_SCSI2 0x20 /* SCSI-2 mode */#define TSC_PWDN 0x10 /* Power down mode */#define TSC_WIDE_CPU 0x08 /* Wide CPU */#define TSC_HW_RESELECT 0x04 /* Enable HW reselect */#define TSC_EN_BUS_OUT 0x02 /* Enable SCSI data bus out latch */#define TSC_EN_BUS_IN 0x01 /* Enable SCSI data bus in latch *//*----------------------------------------------------------------------*//* bit definition for Tulip SCSI Configuration Register *//*----------------------------------------------------------------------*/#define TSC_EN_LATCH 0x80 /* Enable phase latch */#define TSC_INITIATOR 0x40 /* Initiator mode */#define TSC_EN_SCSI_PAR 0x20 /* Enable SCSI parity */#define TSC_DMA_8BIT 0x10 /* Alternate dma 8-bits mode */#define TSC_DMA_16BIT 0x08 /* Alternate dma 16-bits mode */#define TSC_EN_WDACK 0x04 /* Enable DACK while wide SCSI xfer */#define TSC_ALT_PERIOD 0x02 /* Alternate sync period mode */#define TSC_DIS_SCSIRST 0x01 /* Disable SCSI bus reset us */#define TSC_INITDEFAULT (TSC_INITIATOR | TSC_EN_LATCH | TSC_ALT_PERIOD | TSC_DIS_SCSIRST)#define TSC_WIDE_SCSI 0x80 /* Enable Wide SCSI *//*----------------------------------------------------------------------*//* bit definition for Tulip SCSI signal Register *//*----------------------------------------------------------------------*/#define TSC_RST_ACK 0x00 /* Release ACK signal */#define TSC_RST_ATN 0x00 /* Release ATN signal */#define TSC_RST_BSY 0x00 /* Release BSY signal */#define TSC_SET_ACK 0x40 /* ACK signal */#define TSC_SET_ATN 0x08 /* ATN signal */#define TSC_REQI 0x80 /* REQ signal */#define TSC_ACKI 0x40 /* ACK signal */#define TSC_BSYI 0x20 /* BSY signal */#define TSC_SELI 0x10 /* SEL signal */#define TSC_ATNI 0x08 /* ATN signal */#define TSC_MSGI 0x04 /* MSG signal */#define TSC_CDI 0x02 /* C/D signal */#define TSC_IOI 0x01 /* I/O signal *//*----------------------------------------------------------------------*//* bit definition for Tulip SCSI Status 0 Register *//*----------------------------------------------------------------------*/#define TSS_INT_PENDING 0x80 /* Interrupt pending */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -