11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*********************************************************************** 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds;* File Name : TMSCSIM.H * 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds;* TEKRAM DC-390(T) PCI SCSI Bus Master Host Adapter * 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds;* Device Driver * 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds;***********************************************************************/ 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* $Id: tmscsim.h,v 2.15.2.3 2000/11/17 20:52:27 garloff Exp $ */ 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef _TMSCSIM_H 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define _TMSCSIM_H 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/types.h> 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SCSI_IRQ_NONE 255 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MAX_ADAPTER_NUM 4 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MAX_SG_LIST_BUF 16 /* Not used */ 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MAX_SCSI_ID 8 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MAX_SRB_CNT 50 /* Max number of started commands */ 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SEL_TIMEOUT 153 /* 250 ms selection timeout (@ 40 MHz) */ 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds;----------------------------------------------------------------------- 241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds; SCSI Request Block 251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds;----------------------------------------------------------------------- 261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds*/ 271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct dc390_srb 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds//u8 CmdBlock[12]; 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct dc390_srb *pNextSRB; 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct dc390_dcb *pSRBDCB; 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct scsi_cmnd *pcmd; 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct scatterlist *pSegmentList; 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct scatterlist Segmentx; /* make a one entry of S/G list table */ 371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3846e5ba2b644d1c7be1253ec32e7cd6ab1dcdf790Guennadi Liakhovetskiunsigned long SGBusAddr; /*;a segment starting address as seen by AM53C974A 3946e5ba2b644d1c7be1253ec32e7cd6ab1dcdf790Guennadi Liakhovetski in CPU endianness. We're only getting 32-bit bus 4046e5ba2b644d1c7be1253ec32e7cd6ab1dcdf790Guennadi Liakhovetski addresses by default */ 411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsunsigned long SGToBeXferLen; /*; to be xfer length */ 421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsunsigned long TotalXferredLen; 431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsunsigned long SavedTotXLen; 441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsunsigned long Saved_Ptr; 451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu32 SRBState; 461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 SRBStatus; 481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 SRBFlag; /*; b0-AutoReqSense,b6-Read,b7-write */ 491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /*; b4-settimeout,b5-Residual valid */ 501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 AdaptStatus; 511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 TargetStatus; 521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 ScsiPhase; 541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldss8 TagNumber; 551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 SGIndex; 561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 SGcount; 571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 MsgCnt; 591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 EndMessage; 601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 MsgInBuf[6]; 621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 MsgOutBuf[6]; 631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds//u8 IORBFlag; /*;81h-Reset, 2-retry */ 651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds;----------------------------------------------------------------------- 701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds; Device Control Block 711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds;----------------------------------------------------------------------- 721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds*/ 731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct dc390_dcb 741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct dc390_dcb *pNextDCB; 761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct dc390_acb *pDCBACB; 771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Queued SRBs */ 791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct dc390_srb *pGoingSRB; 801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct dc390_srb *pGoingLast; 811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct dc390_srb *pActiveSRB; 821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 GoingSRBCnt; 831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu32 TagMask; 851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 TargetID; /*; SCSI Target ID (SCSI Only) */ 871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 TargetLUN; /*; SCSI Log. Unit (SCSI Only) */ 881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 DevMode; 891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 DCBFlag; 901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 CtrlR1; 921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 CtrlR3; 931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 CtrlR4; 941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 SyncMode; /*; 0:async mode */ 961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 NegoPeriod; /*;for nego. */ 971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 SyncPeriod; /*;for reg. */ 981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 SyncOffset; /*;for reg. and nego.(low nibble) */ 991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds;----------------------------------------------------------------------- 1041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds; Adapter Control Block 1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds;----------------------------------------------------------------------- 1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds*/ 1071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct dc390_acb 1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct Scsi_Host *pScsiHost; 1101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu16 IOPortBase; 1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 IRQLevel; 1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 status; 1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 SRBCount; 1151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 AdapterIndex; /*; nth Adapter this driver */ 1161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 DCBCnt; 1171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 TagMaxNum; 1191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 ACBFlag; 1201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 Gmode2; 1211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 scan_devices; 1221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct dc390_dcb *pLinkDCB; 1241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct dc390_dcb *pLastDCB; 1251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct dc390_dcb *pDCBRunRobin; 1261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct dc390_dcb *pActiveDCB; 1281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct dc390_srb *pFreeSRB; 1291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct dc390_srb *pTmpSRB; 1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 msgin123[4]; 1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 Connected; 1331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 pad; 1341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#if defined(USE_SPINLOCKS) && USE_SPINLOCKS > 1 && (defined(CONFIG_SMP) || DEBUG_SPINLOCKS > 0) 1361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsspinlock_t lock; 1371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 1381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 sel_timeout; 1391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 glitch_cfg; 1401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 MsgLen; 1421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 Ignore_IRQ; /* Not used */ 1431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct pci_dev *pdev; 1451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 146f274a02e52213bbeaf02adfea5f27aaed8a696c8Hannes Reineckeunsigned long last_reset; 1471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsunsigned long Cmds; 1481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu32 SelLost; 1491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu32 SelConn; 1501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu32 CmdInQ; 1511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu32 CmdOutOfSRB; 1521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct dc390_srb TmpSRB; 1541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct dc390_srb SRB_array[MAX_SRB_CNT]; /* 50 SRBs */ 1551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*;-----------------------------------------------------------------------*/ 1591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT31 0x80000000 1621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT30 0x40000000 1631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT29 0x20000000 1641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT28 0x10000000 1651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT27 0x08000000 1661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT26 0x04000000 1671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT25 0x02000000 1681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT24 0x01000000 1691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT23 0x00800000 1701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT22 0x00400000 1711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT21 0x00200000 1721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT20 0x00100000 1731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT19 0x00080000 1741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT18 0x00040000 1751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT17 0x00020000 1761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT16 0x00010000 1771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT15 0x00008000 1781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT14 0x00004000 1791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT13 0x00002000 1801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT12 0x00001000 1811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT11 0x00000800 1821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT10 0x00000400 1831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT9 0x00000200 1841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT8 0x00000100 1851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT7 0x00000080 1861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT6 0x00000040 1871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT5 0x00000020 1881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT4 0x00000010 1891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT3 0x00000008 1901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT2 0x00000004 1911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT1 0x00000002 1921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BIT0 0x00000001 1931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*;---UnitCtrlFlag */ 1951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define UNIT_ALLOCATED BIT0 1961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define UNIT_INFO_CHANGED BIT1 1971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FORMATING_MEDIA BIT2 1981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define UNIT_RETRY BIT3 1991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*;---UnitFlags */ 2011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DASD_SUPPORT BIT0 2021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SCSI_SUPPORT BIT1 2031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ASPI_SUPPORT BIT2 2041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*;----SRBState machine definition */ 2061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SRB_FREE 0 2071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SRB_WAIT BIT0 2081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SRB_READY BIT1 2091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SRB_MSGOUT BIT2 /*;arbitration+msg_out 1st byte*/ 2101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SRB_MSGIN BIT3 2111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SRB_MSGIN_MULTI BIT4 2121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SRB_COMMAND BIT5 2131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SRB_START_ BIT6 /*;arbitration+msg_out+command_out*/ 2141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SRB_DISCONNECT BIT7 2151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SRB_DATA_XFER BIT8 2161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SRB_XFERPAD BIT9 2171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SRB_STATUS BIT10 2181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SRB_COMPLETED BIT11 2191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SRB_ABORT_SENT BIT12 2201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DO_SYNC_NEGO BIT13 2211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SRB_UNEXPECT_RESEL BIT14 2221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*;---SRBstatus */ 2241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SRB_OK BIT0 2251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ABORTION BIT1 2261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define OVER_RUN BIT2 2271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define UNDER_RUN BIT3 2281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PARITY_ERROR BIT4 2291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SRB_ERROR BIT5 2301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*;---ACBFlag */ 2321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define RESET_DEV BIT0 2331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define RESET_DETECT BIT1 2341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define RESET_DONE BIT2 2351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*;---DCBFlag */ 2371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ABORT_DEV_ BIT0 2381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*;---SRBFlag */ 2401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DATAOUT BIT7 2411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DATAIN BIT6 2421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define RESIDUAL_VALID BIT5 2431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ENABLE_TIMER BIT4 2441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define RESET_DEV0 BIT2 2451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ABORT_DEV BIT1 2461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define AUTO_REQSENSE BIT0 2471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*;---Adapter status */ 2491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define H_STATUS_GOOD 0 2501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define H_SEL_TIMEOUT 0x11 2511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define H_OVER_UNDER_RUN 0x12 2521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define H_UNEXP_BUS_FREE 0x13 2531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define H_TARGET_PHASE_F 0x14 2541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define H_INVALID_CCB_OP 0x16 2551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define H_LINK_CCB_BAD 0x17 2561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define H_BAD_TARGET_DIR 0x18 2571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define H_DUPLICATE_CCB 0x19 2581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define H_BAD_CCB_OR_SG 0x1A 2591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define H_ABORT 0x0FF 2601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* cmd->result */ 2621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define RES_TARGET 0x000000FF /* Target State */ 2631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define RES_TARGET_LNX STATUS_MASK /* Only official ... */ 2641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define RES_ENDMSG 0x0000FF00 /* End Message */ 2651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define RES_DID 0x00FF0000 /* DID_ codes */ 2661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define RES_DRV 0xFF000000 /* DRIVER_ codes */ 2671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MK_RES(drv,did,msg,tgt) ((int)(drv)<<24 | (int)(did)<<16 | (int)(msg)<<8 | (int)(tgt)) 2694a904a65fab83bcdd6b00470ac6c4aa80518e6a9Guennadi Liakhovetski#define MK_RES_LNX(drv,did,msg,tgt) ((int)(drv)<<24 | (int)(did)<<16 | (int)(msg)<<8 | (int)(tgt)) 2701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SET_RES_TARGET(who, tgt) do { who &= ~RES_TARGET; who |= (int)(tgt); } while (0) 2721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SET_RES_TARGET_LNX(who, tgt) do { who &= ~RES_TARGET_LNX; who |= (int)(tgt) << 1; } while (0) 2731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SET_RES_MSG(who, msg) do { who &= ~RES_ENDMSG; who |= (int)(msg) << 8; } while (0) 2741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SET_RES_DID(who, did) do { who &= ~RES_DID; who |= (int)(did) << 16; } while (0) 2751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SET_RES_DRV(who, drv) do { who &= ~RES_DRV; who |= (int)(drv) << 24; } while (0) 2761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*;---Sync_Mode */ 2781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SYNC_DISABLE 0 2791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SYNC_ENABLE BIT0 2801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SYNC_NEGO_DONE BIT1 2811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define WIDE_ENABLE BIT2 /* Not used ;-) */ 2821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define WIDE_NEGO_DONE BIT3 /* Not used ;-) */ 2831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define EN_TAG_QUEUEING BIT4 2841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define EN_ATN_STOP BIT5 2851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SYNC_NEGO_OFFSET 15 2871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*;---SCSI bus phase*/ 2891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SCSI_DATA_OUT 0 2901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SCSI_DATA_IN 1 2911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SCSI_COMMAND 2 2921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SCSI_STATUS_ 3 2931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SCSI_NOP0 4 2941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SCSI_NOP1 5 2951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SCSI_MSG_OUT 6 2961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SCSI_MSG_IN 7 2971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*;----SCSI MSG BYTE*/ /* see scsi/scsi.h */ /* One is missing ! */ 2991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ABORT_TAG 0x0d 3001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 3021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * SISC query queue 3031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 3041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct { 3051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds dma_addr_t saved_dma_handle; 3061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} dc390_cmd_scp_t; 3071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 3091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds;========================================================== 3101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds; EEPROM byte offset 3111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds;========================================================== 3121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds*/ 3131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct _EEprom 3141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 3151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 EE_MODE1; 3161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 EE_SPEED; 3171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 xx1; 3181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsu8 xx2; 3191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} EEprom, *PEEprom; 3201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define REAL_EE_ADAPT_SCSI_ID 64 3221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define REAL_EE_MODE2 65 3231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define REAL_EE_DELAY 66 3241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define REAL_EE_TAG_CMD_NUM 67 3251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define EE_ADAPT_SCSI_ID 32 3271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define EE_MODE2 33 3281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define EE_DELAY 34 3291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define EE_TAG_CMD_NUM 35 3301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define EE_LEN 40 3321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*; EE_MODE1 bits definition*/ 3341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PARITY_CHK_ BIT0 3351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SYNC_NEGO_ BIT1 3361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define EN_DISCONNECT_ BIT2 3371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SEND_START_ BIT3 3381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define TAG_QUEUEING_ BIT4 3391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*; EE_MODE2 bits definition*/ 3411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MORE2_DRV BIT0 3421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define GREATER_1G BIT1 3431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define RST_SCSI_BUS BIT2 3441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACTIVE_NEGATION BIT3 3451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NO_SEEK BIT4 3461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define LUN_CHECK BIT5 3471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ENABLE_CE 1 3491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DISABLE_CE 0 3501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define EEPROM_READ 0x80 3511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 3531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds;========================================================== 3541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds; AMD 53C974 Registers bit Definition 3551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds;========================================================== 3561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds*/ 3571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 3581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds;==================== 3591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds; SCSI Register 3601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds;==================== 3611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds*/ 3621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*; Command Reg.(+0CH) (rw) */ 3641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMA_COMMAND BIT7 3651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NOP_CMD 0 3661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CLEAR_FIFO_CMD 1 3671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define RST_DEVICE_CMD 2 3681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define RST_SCSI_BUS_CMD 3 3691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define INFO_XFER_CMD 0x10 3711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define INITIATOR_CMD_CMPLTE 0x11 3721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MSG_ACCEPTED_CMD 0x12 3731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define XFER_PAD_BYTE 0x18 3741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SET_ATN_CMD 0x1A 3751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define RESET_ATN_CMD 0x1B 3761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SEL_WO_ATN 0x41 /* currently not used */ 3781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SEL_W_ATN 0x42 3791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SEL_W_ATN_STOP 0x43 3801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SEL_W_ATN3 0x46 3811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define EN_SEL_RESEL 0x44 3821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIS_SEL_RESEL 0x45 /* currently not used */ 3831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define RESEL 0x40 /* " */ 3841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define RESEL_ATN3 0x47 /* " */ 3851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DATA_XFER_CMD INFO_XFER_CMD 3871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*; SCSI Status Reg.(+10H) (r) */ 3901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define INTERRUPT BIT7 3911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ILLEGAL_OP_ERR BIT6 3921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PARITY_ERR BIT5 3931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define COUNT_2_ZERO BIT4 3941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define GROUP_CODE_VALID BIT3 3951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SCSI_PHASE_MASK (BIT2+BIT1+BIT0) 3961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* BIT2: MSG phase; BIT1: C/D physe; BIT0: I/O phase */ 3971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 3981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*; Interrupt Status Reg.(+14H) (r) */ 3991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SCSI_RESET BIT7 4001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define INVALID_CMD BIT6 4011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DISCONNECTED BIT5 4021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SERVICE_REQUEST BIT4 4031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SUCCESSFUL_OP BIT3 4041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define RESELECTED BIT2 4051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SEL_ATTENTION BIT1 4061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SELECTED BIT0 4071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*; Internal State Reg.(+18H) (r) */ 4091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SYNC_OFFSET_FLAG BIT3 4101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define INTRN_STATE_MASK (BIT2+BIT1+BIT0) 4111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 0x04: Sel. successful (w/o stop), 0x01: Sel. successful (w/ stop) */ 4121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*; Clock Factor Reg.(+24H) (w) */ 4141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CLK_FREQ_40MHZ 0 4151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CLK_FREQ_35MHZ (BIT2+BIT1+BIT0) 4161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CLK_FREQ_30MHZ (BIT2+BIT1) 4171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CLK_FREQ_25MHZ (BIT2+BIT0) 4181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CLK_FREQ_20MHZ BIT2 4191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CLK_FREQ_15MHZ (BIT1+BIT0) 4201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CLK_FREQ_10MHZ BIT1 4211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*; Control Reg. 1(+20H) (rw) */ 4231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define EXTENDED_TIMING BIT7 4241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIS_INT_ON_SCSI_RST BIT6 4251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PARITY_ERR_REPO BIT4 4261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SCSI_ID_ON_BUS (BIT2+BIT1+BIT0) /* host adapter ID */ 4271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*; Control Reg. 2(+2CH) (rw) */ 4291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define EN_FEATURE BIT6 4301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define EN_SCSI2_CMD BIT3 4311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*; Control Reg. 3(+30H) (rw) */ 4331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ID_MSG_CHECK BIT7 4341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define EN_QTAG_MSG BIT6 4351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define EN_GRP2_CMD BIT5 4361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FAST_SCSI BIT4 /* ;10MB/SEC */ 4371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FAST_CLK BIT3 /* ;25 - 40 MHZ */ 4381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*; Control Reg. 4(+34H) (rw) */ 4401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define EATER_12NS 0 4411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define EATER_25NS BIT7 4421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define EATER_35NS BIT6 4431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define EATER_0NS (BIT7+BIT6) 4441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define REDUCED_POWER BIT5 4451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CTRL4_RESERVED BIT4 /* must be 1 acc. to AM53C974.c */ 4461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NEGATE_REQACKDATA BIT2 4471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NEGATE_REQACK BIT3 4481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define GLITCH_TO_NS(x) (((~x>>6 & 2) >> 1) | ((x>>6 & 1) << 1 ^ (x>>6 & 2))) 4501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NS_TO_GLITCH(y) (((~y<<7) | ~((y<<6) ^ ((y<<5 & 1<<6) | ~0x40))) & 0xc0) 4511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 4531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds;==================== 4541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds; DMA Register 4551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds;==================== 4561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds*/ 4571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*; DMA Command Reg.(+40H) (rw) */ 4581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define READ_DIRECTION BIT7 4591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define WRITE_DIRECTION 0 4601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define EN_DMA_INT BIT6 4611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define EN_PAGE_INT BIT5 /* page transfer interrupt enable */ 4621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MAP_TO_MDL BIT4 4631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DIAGNOSTIC BIT2 4641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMA_IDLE_CMD 0 4651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMA_BLAST_CMD BIT0 4661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMA_ABORT_CMD BIT1 4671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMA_START_CMD (BIT1+BIT0) 4681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*; DMA Status Reg.(+54H) (r) */ 4701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PCI_MS_ABORT BIT6 4711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BLAST_COMPLETE BIT5 4721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SCSI_INTERRUPT BIT4 4731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMA_XFER_DONE BIT3 4741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMA_XFER_ABORT BIT2 4751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMA_XFER_ERROR BIT1 4761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define POWER_DOWN BIT0 4771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*; DMA SCSI Bus and Ctrl.(+70H) */ 4791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define EN_INT_ON_PCI_ABORT BIT25 4801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define WRT_ERASE_DMA_STAT BIT24 4811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PW_DOWN_CTRL BIT21 4821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SCSI_BUSY BIT20 4831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SCLK BIT19 4841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SCAM BIT18 4851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SCSI_LINES 0x0003ffff 4861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 4871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 4881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds;========================================================== 4891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds; SCSI Chip register address offset 4901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds;========================================================== 4911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds;Registers are rw unless declared otherwise 4921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds*/ 4931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CtcReg_Low 0x00 /* r curr. transfer count */ 4941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CtcReg_Mid 0x04 /* r */ 4951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CtcReg_High 0x38 /* r */ 4961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ScsiFifo 0x08 4971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ScsiCmd 0x0C 4981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define Scsi_Status 0x10 /* r */ 4991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define INT_Status 0x14 /* r */ 5001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define Sync_Period 0x18 /* w */ 5011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define Sync_Offset 0x1C /* w */ 5021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define Clk_Factor 0x24 /* w */ 5031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CtrlReg1 0x20 5041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CtrlReg2 0x2C 5051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CtrlReg3 0x30 5061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CtrlReg4 0x34 5071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMA_Cmd 0x40 5081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMA_XferCnt 0x44 /* rw starting transfer count (32 bit) */ 5091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMA_XferAddr 0x48 /* rw starting physical address (32 bit) */ 5101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMA_Wk_ByteCntr 0x4C /* r working byte counter */ 5111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMA_Wk_AddrCntr 0x50 /* r working address counter */ 5121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMA_Status 0x54 /* r */ 5131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMA_MDL_Addr 0x58 /* rw starting MDL address */ 5141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMA_Wk_MDL_Cntr 0x5C /* r working MDL counter */ 5151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMA_ScsiBusCtrl 0x70 /* rw SCSI Bus, PCI/DMA Ctrl */ 5161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define StcReg_Low CtcReg_Low /* w start transfer count */ 5181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define StcReg_Mid CtcReg_Mid /* w */ 5191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define StcReg_High CtcReg_High /* w */ 5201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define Scsi_Dest_ID Scsi_Status /* w */ 5211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define Scsi_TimeOut INT_Status /* w */ 5221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define Intern_State Sync_Period /* r */ 5231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define Current_Fifo Sync_Offset /* r Curr. FIFO / int. state */ 5241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DC390_read8(address) \ 5271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds (inb (pACB->IOPortBase + (address))) 5281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DC390_read8_(address, base) \ 5301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds (inb ((u16)(base) + (address))) 5311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DC390_read16(address) \ 5331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds (inw (pACB->IOPortBase + (address))) 5341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DC390_read32(address) \ 5361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds (inl (pACB->IOPortBase + (address))) 5371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DC390_write8(address,value) \ 5391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds outb ((value), pACB->IOPortBase + (address)) 5401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DC390_write8_(address,value,base) \ 5421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds outb ((value), (u16)(base) + (address)) 5431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DC390_write16(address,value) \ 5451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds outw ((value), pACB->IOPortBase + (address)) 5461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DC390_write32(address,value) \ 5481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds outl ((value), pACB->IOPortBase + (address)) 5491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 5511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* _TMSCSIM_H */ 552