ncr710_1.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:24k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* ncr710_1.h - NCR 710 Script SCSI Controller header file */
  2. /* Copyright 1984-1994 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 02m,08nov94,jds  renamed for SCSI1 compatability
  7. 02l,26sep92,ccc  ncr710Show() returns STATUS.
  8. 02k,22sep92,rrr  added support for c++
  9. 02j,26jul92,rrr  removed decl ncr710SyncMsgConvert, was made LOCAL in mod 02i
  10. 02i,21jul92,eve  clean an move debug macros to ncr710Lib.c.
  11. 01h,03jul92,eve  merge header with new driver.
  12. 01h,03jul92,eve  merge header with new driver.
  13. 01g,29jun92,ccc  fixed compile errors.
  14. 01f,26jun92,ccc  changed ASMLANGUAGE to _ASMLANGUAGE.
  15. 40c,26may92,rrr  the tree shuffle
  16. 40b,28apr92,wmd  Added defines for LITTLE_ENDIAN architectures, and fixed
  17.  typo for declaration of ncr710CtrlCreate(), ansified.
  18. 40a,12nov91,ccc  SPECIAL VERSION FOR 5.0.2 68040 RELEASE.
  19. 02a,26oct91,eve  Add description of hardware dependant
  20.  registers.
  21. 01a,23oct91,eve  Created driver header
  22. */
  23. #ifndef __INCncr710_1h
  24. #define __INCncr710_1h
  25. #ifdef __cplusplus
  26. extern "C" {
  27. #endif
  28. #ifndef _ASMLANGUAGE
  29. #include "semLib.h"
  30. #include "scsiLib.h"
  31. #include "ncr710Script.h"
  32. /* Structure used in the ncr710SetHwRegister() and ncr710GetHwRegister().
  33.  * This is used to try to handle the possible differents hardware
  34.  * implementation of the chip.This structure must contain the logical value
  35.  * wishes e.g 0 sets register bit to null  and 1 sets to one.
  36.  */
  37. typedef struct
  38.     {
  39.     int ctest4Bit7;             /* Host bus multiplex mode */
  40.     int ctest7Bit7;             /* Disable/enable burst cache capability */
  41.     int ctest7Bit6;             /* Snoop control bit1 */
  42.     int ctest7Bit5;             /* Snoop control bit0 */
  43.     int ctest7Bit1;             /* invert tt1 pin (sync bus host mode only) */
  44.     int ctest7Bit0;             /* enable differential scsi bus capability */
  45.     int ctest8Bit0;             /* Set snoop pins mode */
  46.     int dmodeBit7;              /* Burst Length transfer bit 1 */
  47.     int dmodeBit6;              /* Burst Length transfer bit 0 */
  48.     int dmodeBit5;              /* Function code bit FC2 */
  49.     int dmodeBit4;              /* Function code bit FC1 */
  50.     int dmodeBit3;              /* Program data bit ( FC0) */
  51.     int dmodeBit1;              /* user  programmable transfer type */
  52.     int dcntlBit5;              /* Enable Ack pin */
  53.     int dcntlBit1;              /* Enable fast arbitration on host port */
  54.     } NCR710_HW_REGS;
  55.  /* Allocate one context per device ( 8 ID max and 8 LUN max per ID) */
  56. typedef struct
  57.     {
  58.     NCR_CTL ncrCtl[SCSI_MAX_BUS_ID + 1][SCSI_MAX_LUN + 1];
  59.     } NCR_CTL_CTXT;
  60. /* SCSI controller structure */
  61. typedef struct                  /* NCR_710_SCSI_CTRL - NCR710 */
  62.                                 /* SCSI controller info       */
  63.     {
  64.     SCSI_CTRL scsiCtrl;         /* generic SCSI controller info */
  65.     SEM_ID pMutexData;          /* use to protect global siop data */
  66.     SCSI_PHYS_DEV *pDevToSelect;/* device to select at intr. level or NULL */
  67. /* Hardware implementation dependencies */
  68.     TBOOL slowCableMode; /* TRUE to select slow cable mode */
  69.     int chipType; /* Device type NCR7X0_TYPE */
  70. /* Only 710 Supported today */
  71.     int   devType; /* type of device (see define's below) */
  72.     UINT8 ctrlIdPow2;           /* controller id in power of 2 (1000000=id 7) */
  73.     TBOOL resetReportDsbl; /* TRUE to disable SCSI bus reset reporting */
  74.     TBOOL parityTestMode; /* TRUE enable parity test mode (DO NOT USE) */
  75.     TBOOL parityCheckEnbl; /* TRUE to enable parity checking */
  76.     UINT8 defaultSelTimeOut;    /* default dev. select time-out (units var.) */
  77.     UINT8 clkCvtFactor;     /* value of the clock conversion factor */
  78.     UINT8 saveIstat; /* Save Reg under interrupt */
  79.     UINT8 saveSstat0; /* Save Reg under interrupt */
  80.     UINT8 saveDstat; /* Save Reg under interrupt */
  81.     UINT8 saveIdentMsg;         /* Save Indent message in at interrupt level */
  82. /* when reconnect. */
  83.     TBOOL commandRequest;       /* To check if we are reconnected with a */
  84. /* request pending */
  85.     UINT  saveScriptIntrStat;   /* Save intr script status under interrupt */
  86.     SEMAPHORE singleStepSem; /* use to debug script in single step mode */
  87.     NCR_CTL_CTXT *pNcrCtxt;     /* pointer to Array of data shared by script */
  88. /* and driver */
  89.     NCR_CTL *pNcrCtl;           /* Current context pointer for intr level */
  90.     NCR_CTL *pNcrCtlCmd;        /* current ctxt pointer to the command */
  91. /* pending */
  92.     NCR710_HW_REGS hwRegs; /* values used for hardware dependant regs */
  93.     volatile UINT8    *pSien;        /* SIEN SCSI interrupt enable reg */
  94.     volatile UINT8    *pSdid;        /* SDID SCSI destination ID register */
  95.     volatile UINT8    *pScntl1;      /* SCTNL1 SCSI control register 1 */
  96.     volatile UINT8    *pScntl0;      /* SCTNL0 SCSI control register 0 */
  97.     volatile UINT8    *pSocl;        /* SOCL SCSI output control latch reg */
  98.     volatile UINT8    *pSodl;        /* SCSI output data latch reg */
  99.     volatile UINT8    *pSxfer;       /* SODL SCSI transfer register */
  100.     volatile UINT8    *pScid;        /* SCID SCSI chip ID register */
  101.     volatile UINT8    *pSbcl;        /* SBCL SCSI bus control lines reg */
  102.     volatile UINT8    *pSbdl;        /* SBDL SCSI bus data lines register */
  103.     volatile UINT8    *pSidl;        /* SIDL SCSI input data latch reg */
  104.     volatile UINT8    *pSfbr;        /* SFBR SCSI first byte received reg */
  105.     volatile UINT8    *pSstat2;      /* SSTAT2 SCSI status register 2 */
  106.     volatile UINT8    *pSstat1;      /* SSTAT1 SCSI status register 1 */
  107.     volatile UINT8    *pSstat0;      /* SSTAT0 SCSI status register 0 */
  108.     volatile UINT8    *pDstat;       /* DSTAT DMA status register */
  109.     volatile UINT     *pDsa;         /* DSA data structure address */
  110.     volatile UINT8    *pCtest3;      /* CTEST3 chip test register 3 */
  111.     volatile UINT8    *pCtest2;      /* CTEST2 chip test register 2 */
  112.     volatile UINT8    *pCtest1;      /* CTEST1  chip test register 1 */
  113.     volatile UINT8    *pCtest0;      /* CTEST0 chip test register 0 */
  114.     volatile UINT8    *pCtest7;      /* CTEST7 chip test register 7 */
  115.     volatile UINT8    *pCtest6;      /* CTEST6 chip test register 6 */
  116.     volatile UINT8    *pCtest5;      /* CTEST5 chip test register 5 */
  117.     volatile UINT8    *pCtest4;      /* CTEST4 chip test register 4 */
  118.     volatile UINT     *pTemp;        /* TEMP temporary holding register */
  119.     volatile UINT8    *pLcrc;        /* LCRC longitudinal parity register */
  120.     volatile UINT8    *pCtest8;      /* CTEST8 chip test register */
  121.     volatile UINT8    *pIstat;       /* ISTAT interrupt status register */
  122.     volatile UINT8    *pDfifo;       /* DFIFO DMA FIFO control register */
  123.     volatile UINT8    *pDcmd;      /* DBC SIOP command register 8bits  */
  124.     volatile UINT     *pDbc;      /* DCMD SIOP command reg (24Bits Reg) */
  125.     volatile UINT     *pDnad;        /* DNAD DMA buffer ptr (next address) */
  126.     volatile UINT     *pDsp;         /* DSP SIOP scripts pointer register */
  127.     volatile UINT     *pDsps;        /* DSPS SIOP scripts ptr save reg */
  128.     volatile UINT8    *pScratch3;    /* SCRATCH3 general purpose scratch reg */
  129.     volatile UINT8    *pScratch2;    /* SCRATCH2 general purpose scratch reg */
  130.     volatile UINT8    *pScratch1;    /* SCRATCH1 general purpose scratch reg */
  131.     volatile UINT8    *pScratch0;    /* SCRATCH0 general purpose scratch reg */
  132.     volatile UINT8    *pDcntl;       /* DCTNL DMA control register */
  133.     volatile UINT8    *pDwt;         /* DWT DMA watchdog timer register */
  134.     volatile UINT8    *pDien;        /* DIEN DMA interrupt enable */
  135.     volatile UINT8    *pDmode;       /* DMODE DMA operation mode register */
  136.     volatile UINT     *pAdder;      /* ADDER Adder output Register */
  137.     } NCR_710_SCSI_CTRL;
  138. /* Bit Registers definitions for ncr710 */
  139. /* SCNTL0 */
  140. #define    B_ARB1    0x80 /* Arbitration bit 1 */
  141. #define    B_ARB0    0x40 /* Arbitration bit 0 */
  142. /* 00 Simple/11 full */
  143. #define    B_START   0x20 /* Start sequence */
  144. #define    B_WATN    0x10 /* Select w/wo atn */
  145. #define    B_EPC     0x08       /* Parity checking */
  146. #define    B_EPG     0x04 /* Enable parity generation */
  147. #define    B_AAP     0x02 /* Assert ATN on parity error */
  148. #define    B_TRG     0x01 /* Target/initiator mode */
  149. /* SCNTL1 */
  150. #define    B_EXC     0x80 /* Extra Data Set up */
  151. #define    B_ADB     0x40 /* Assert Data (SODL) onto scsi */
  152. #define    B_ESR     0x20 /* Enable Select & reselect */
  153. #define    B_CON     0x10 /* connected bit status */
  154. #define    B_RST     0x08 /* Assert Rst on scsi */
  155. #define    B_AESP    0x04 /* Assert even parity -force error */
  156. #define    B_SND     0x02 /* Start send scsi operation */
  157. #define    B_RCV     0x01 /* Start receive scsi operation */
  158. /* SIEN (enable int)and SSTAT0 (RO Status) */
  159. /* Enable interrupt */
  160. #define    B_MA      0x80 /* Enable phase mismatch/Atn Active */
  161. #define    B_FCMP    0x40 /* Enable funtion complete */
  162. #define    B_STO     0x20 /* Enable scsi timout */
  163. #define    B_SEL     0x10 /* Enable sel/resel */
  164. #define    B_SGE     0x08 /* Enable scsi gross  error */
  165. #define    B_UDC     0x04 /* Enable unexpected disconnect */
  166. #define    B_RSTE    0x02 /* Enable Rst received */
  167. #define    B_PAR     0x01 /* Enable parity int */
  168. /* SXFER */
  169. #define    B_DHP     0x80 /* Disable Halt on parity err */
  170. #define    B_TP2     0x40 /* Synchronous transfer period 2 */
  171. #define    B_TP1     0x20 /* Synchronous transfer period 1 */
  172. #define    B_TP0     0x10 /* Synchronous transfer period 0 */
  173. #define    B_MO3     0x08 /* Maximun scsi Synchronous transfer offset */
  174. #define    B_MO2     0x04 /* Maximun scsi Synchronous transfer offset */
  175. #define    B_MO1     0x02 /* Maximun scsi Synchronous transfer offset */
  176. #define    B_MO0     0x01 /* Maximun scsi Synchronous transfer offset */
  177. /*  SOCL (RW) and SBCL (RO not latched) */
  178. #define    B_REQ     0x80 /* Assert scsi req */
  179. #define    B_ACK     0x40 /* Assert scsi ack */
  180. #define    B_BSY     0x20 /* Assert scsi busy */
  181. #define    B_SEL     0x10 /* Assert scsi sel */
  182. #define    B_ATN     0x08 /* Assert scsi atn */
  183. #define    B_MSG     0x04 /* Assert scsi msg */
  184. #define    B_CD      0x02 /* Assert scsi c/d */
  185. #define    B_IO      0x01 /* Assert scsi i/o */
  186. /* SSCF (Write only same @ as SBCL) */
  187. #define    B_SSCF1   0x02 /* prescale clock for scsi core bit 1 */
  188. #define    B_SSCF0   0x01 /* prescale clock for scsi core bit 0 */
  189. /* DSTAT (RO) and DIEN (RW enable intr) */
  190. #define    B_DFE     0x80 /* stat :Dma fifo empty */
  191. #define    B_BF      0x20 /* stat :Bus access error */
  192. #define    B_ABT     0x10 /* stat :Abort condition */
  193. #define    B_SSI     0x08 /* stat :Scsi step interrupt */
  194. #define    B_SIR     0x04 /* stat :Script interrupt received */
  195. #define    B_WTD     0x02 /* stat :Watchdog timout */
  196. #define    B_IID     0x01 /* stat :Illegal instruction occur */
  197. /* SSTAT1 RO register */
  198. #define    B_ILF     0x80 /* stat :SDIL register contain scsi data */
  199. /* in async mode only */
  200. #define    B_ORF     0x40 /* stat :SODR output data in sync mode hidden */
  201. #define    B_OLF     0x20       /* stat :SODL Register full (hidden) */
  202. #define    B_AIP     0x10 /* stat :Arbitration in progress */
  203. #define    B_LOA     0x08       /* stat :Lost arbitration */
  204. #define    B_WOA     0x04 /* stat :won arbitration-full arbit mode */
  205. #define    B_RSTNL   0x02 /* stat :current stat of RST line-Not Latched */
  206. #define    B_PARNL   0x01 /* stat :curr stat Parity lines-Not Latched */
  207. /* SSTAT2 RO register */
  208. #define    B_FF3     0x80 /* Fifo flag 3 :number of bytes in fifo */
  209. #define    B_FF2     0x40 /* Fifo flag 2 :number of bytes in fifo */
  210. #define    B_FF1     0x20 /* Fifo flag 1 :number of bytes in fifo */
  211. #define    B_FF0     0x10 /* Fifo flag 0 :number of bytes in fifo */
  212. /* 0000=0 ..... 1000=8 */
  213. #define    B_SPDL    0x08 /* Latched parity line */
  214. #define    B_MSGL    0x04 /* Latched state of MSG line */
  215. #define    B_CDL     0x02 /* Latched state of C/D line */
  216. #define    B_IOL     0x01 /* Latched sate of IO line */
  217. /* DFIFO RW register */
  218. #define    B_BO6     0x40 /* Byte offset counter 6 */
  219. #define    B_BO5     0x20 /* Byte offset counter 5 */
  220. #define    B_BO4     0x10 /* Byte offset counter 4 */
  221. #define    B_BO3     0x08 /* Byte offset counter 3 */
  222. #define    B_BO2     0x04 /* Byte offset counter 2 */
  223. #define    B_BO1     0x02 /* Byte offset counter 1 */
  224. #define    B_BO0     0x01 /* Byte offset counter 0 */
  225. /* ISTAT RW register */
  226. #define    B_ABORT   0X80 /* Abort operation */
  227. #define    B_SOFTRST 0x40 /* Soft chip reset */
  228. #define    B_SIGP    0x20 /* signal process */
  229. #define    B_CONST   0x08 /* stat connected (reset does'nt disconnect) */
  230. #define    B_SIP     0x02 /* Status scsi interrupt pending */
  231. #define    B_DIP     0x01 /* Status Dma portion interrupt pending */
  232. /* DMODE RW register */
  233. #define    B_BL1     0x80 /* Burst Length transfer bit 1 */
  234. #define    B_BL0     0x40 /* Burst Length transfer bit 0 */
  235. /* 00=1,01=2,10=4,11=8 */
  236. #define    B_FC2     0x20 /* Function code bit 1 user defined */
  237. #define    B_FC1     0x10 /* Function code bit 0 user defined */
  238. #define    B_PD      0x08 /* Program data access */
  239. #define    B_FAM     0x04 /* Fixed Address mode */
  240. #define    B_U0TT0   0x02 /* user  programmable transfer type */
  241. #define    B_MAN     0x01 /* Manual start mode ,when set disable */
  242. /* autostart script when writting in DSP */
  243. /* DCTNL */
  244. #define    B_CF1     0x80 /* Prescale bit 1 for scsi core */
  245. #define    B_CF0     0x40 /* Prescale bit 0 for scsi core */
  246. /* involve all timing on scsi */
  247. #define    B_EA      0x20 /* Enable ack (host/chip) */
  248. #define    B_SSM     0x10 /* Enable single step mode */
  249. #define    B_LLM     0x08 /* Enable Low level mode */
  250. #define    B_STD     0x04 /* Start Dma operation used with B_MAN in */
  251. /* DMODE Register and single step mode */
  252. #define    B_FA      0x02 /* Enable fast arbitration on host port */
  253. #define    B_COM     0x01 /* When 0, enable compatible mode with ncr700 */
  254. /* CTEST4 */
  255. #define    B_MUX     0x80 /* Host mux bus mode */
  256. #define    B_ZMOD    0x40 /* Host bus high impedance mode  */
  257. #define    B_SZM     0x20 /* Scsi bus high impedance mode */
  258. #define    B_SLBE    0x10 /* Enable loopback mode */
  259. #define    B_SFWR    0x08 /* Scsi fifo write enable */
  260. #define    B_FBL2    0x04 /* Enable bytes lane */
  261. #define    B_FLB1    0x02 /* Bit one mux byte lane */
  262. #define    B_FLB0    0x01 /* Bit zero mux byte lane */
  263. /* CTEST5 */
  264. #define    B_ADCK    0x80 /* Increment DNAD register */
  265. #define    B_BBCK    0x40 /* Decrement DBC register */
  266. #define    B_ROFF    0x20 /* Clear offset in scsi sync mode */
  267. #define    B_MASR    0x10 /* set/reset values for bit 3:0 */
  268. #define    B_DDIR    0x08 /* control internel DMAWR (scsi to host) */
  269. #define    B_EOP     0x04 /* control internal EOP (DMA/SCSI) */
  270. #define    B_DREQ    0x02 /* control internal DREQ */
  271. #define    B_DACK    0x01 /* control internal DACK (DMA/SCSI) */
  272. /* CTEST7 */
  273. #define    B_CDIS    0x80 /* Disable Burst Cache */
  274. #define    B_SC1     0x40 /* Snoop control bit1 */
  275. #define    B_SC0     0x20 /* Snoop control bit0 */
  276. #define    B_TOUT    0x10 /* disable scsi timout */
  277. #define    B_DFP     0x08 /* Fifo parity bit */
  278. #define    B_EVP     0x04 /* enable even parity on host/fifo */
  279. #define    B_TT1     0x02 /* invert tt1 pin (sync host mode only) */
  280. #define    B_DIFF    0x01       /* Valid differential scsi bus */
  281. /* CTEST8 */
  282. #define    B_V3      0x80 /* Chip Revision Bit 3 */
  283. #define    B_V2      0x40 /* Chip Revision Bit 2 */
  284. #define    B_V1      0x20 /* Chip Revision Bit 1 */
  285. #define    B_V0      0x10 /* Chip Revision Bit 0 */
  286. #define    B_FLF     0x08 /* Flush DMA FIFO */
  287. #define    B_CLF     0x04 /* Clear DMA FIFO */
  288. #define    B_FM      0x02 /* Fetch Pin mode */
  289. #define    B_SM      0x01       /* Snoop pins mode */
  290. /* offset registers */
  291. #if _BYTE_ORDER==_BIG_ENDIAN
  292. #define OFF_SIEN         (0X00)   /* scsi interrupt enable reg */
  293. #define OFF_SDID         (0X01)   /* scsi destination ID reg */
  294. #define OFF_SCNTL1       (0X02)   /* scsi control reg 1 */
  295. #define OFF_SCNTL0       (0X03)   /* scsi control reg 0 */
  296. #define OFF_SOCL         (0X04)   /* scsi output control latch reg */
  297. #define OFF_SODL         (0X05)   /* scsi output data latch reg */
  298. #define OFF_SXFER        (0X06)   /* scsi transfer reg */
  299. #define OFF_SCID         (0X07)   /* scsi chip ID reg */
  300. #define OFF_SBCL         (0X08)   /* scsi bus control lines reg */
  301. #define OFF_SBDL         (0X09)   /* scsi bus data lines reg */
  302. #define OFF_SIDL         (0X0A)   /* scsi input data latch reg */
  303. #define OFF_SFBR         (0X0B)   /* scsi first byte received reg */
  304. #define OFF_SSTAT2       (0X0C)   /* scsi status reg 2 */
  305. #define OFF_SSTAT1       (0X0D)   /* scsi status reg 1 */
  306. #define OFF_SSTAT0       (0X0E)   /* scsi status reg 0 */
  307. #define OFF_DSTAT        (0X0F)   /* dma  status reg */
  308. #define OFF_DSA          (0X10)   /* data structure address */
  309. #define OFF_CTEST3       (0X14)   /* chip test reg 3 */
  310. #define OFF_CTEST2       (0X15)   /* chip test reg 2 */
  311. #define OFF_CTEST1       (0X16)   /* chip test reg 1 */
  312. #define OFF_CTEST0       (0X17)   /* chip test reg 0 */
  313. #define OFF_CTEST7       (0X18)   /* chip test reg 7 */
  314. #define OFF_CTEST6       (0X19)   /* chip test reg 6 */
  315. #define OFF_CTEST5       (0X1A)   /* chip test reg 5 */
  316. #define OFF_CTEST4       (0X1B)   /* chip test reg 4 */
  317. #define OFF_TEMP         (0X1C)   /* Temporary stack reg */
  318. #define OFF_LCRC         (0X20)   /* CRC register */
  319. #define OFF_CTEST8       (0X21)   /* Chip test reg 8 */
  320. #define OFF_ISTAT        (0X22)   /* Interrupt status reg */
  321. #define OFF_DFIFO        (0X23)   /* DMA FIFO reg */
  322. #define OFF_DCMD         (0X24)   /* 8 bit reg DMA command reg */
  323. #define OFF_DBC          (0X24)   /* 24 bit Reg DMA byte counter register */
  324. #define OFF_DNAD         (0X28)   /* DMA next address for data reg */
  325. #define OFF_DSP          (0X2C)   /* DMA scripts pointer reg */
  326. #define OFF_DSPS         (0X30)   /* DMA scripts pointer save reg */
  327. #define OFF_SCRATCH3     (0X34)   /* scratch register */
  328. #define OFF_SCRATCH2     (0X35)   /* scratch register */
  329. #define OFF_SCRATCH1     (0X36)   /* scratch register */
  330. #define OFF_SCRATCH0     (0X37)   /* scratch register */
  331. #define OFF_DCNTL        (0X38)   /* DMA control reg */
  332. #define OFF_DWT          (0X39)   /* DMA watchdog timer */
  333. #define OFF_DIEN         (0X3A)   /* DMA interrupt enable reg */
  334. #define OFF_DMODE        (0X3B)   /* DMA mode reg */
  335. #define OFF_ADDER        (0X3C)   /* internal adder register;don't use */
  336. #else  /* _BYTE_ORDER==_BIG_ENDIAN */
  337. #define OFF_SIEN         (0X03)   /* scsi interrupt enable reg */
  338. #define OFF_SDID         (0X02)   /* scsi destination ID reg */
  339. #define OFF_SCNTL1       (0X01)   /* scsi control reg 1 */
  340. #define OFF_SCNTL0       (0X00)   /* scsi control reg 0 */
  341. #define OFF_SOCL         (0X07)   /* scsi output control latch reg */
  342. #define OFF_SODL         (0X06)   /* scsi output data latch reg */
  343. #define OFF_SXFER        (0X05)   /* scsi transfer reg */
  344. #define OFF_SCID         (0X04)   /* scsi chip ID reg */
  345. #define OFF_SBCL         (0X0B)   /* scsi bus control lines reg */
  346. #define OFF_SBDL         (0X0A)   /* scsi bus data lines reg */
  347. #define OFF_SIDL         (0X09)   /* scsi input data latch reg */
  348. #define OFF_SFBR         (0X08)   /* scsi first byte received reg */
  349. #define OFF_SSTAT2       (0X0F)   /* scsi status reg 2 */
  350. #define OFF_SSTAT1       (0X0E)   /* scsi status reg 1 */
  351. #define OFF_SSTAT0       (0X0D)   /* scsi status reg 0 */
  352. #define OFF_DSTAT        (0X0C)   /* dma  status reg */
  353. #define OFF_DSA          (0X10)   /* data structure address */
  354. #define OFF_CTEST3       (0X17)   /* chip test reg 3 */
  355. #define OFF_CTEST2       (0X16)   /* chip test reg 2 */
  356. #define OFF_CTEST1       (0X15)   /* chip test reg 1 */
  357. #define OFF_CTEST0       (0X14)   /* chip test reg 0 */
  358. #define OFF_CTEST7       (0X1B)   /* chip test reg 7 */
  359. #define OFF_CTEST6       (0X1A)   /* chip test reg 6 */
  360. #define OFF_CTEST5       (0X19)   /* chip test reg 5 */
  361. #define OFF_CTEST4       (0X18)   /* chip test reg 4 */
  362. #define OFF_TEMP         (0X1C)   /* Temporary stack reg */
  363. #define OFF_LCRC         (0X23)   /* CRC register */
  364. #define OFF_CTEST8       (0X22)   /* Chip test reg 8 */
  365. #define OFF_ISTAT        (0X21)   /* Interrupt status reg */
  366. #define OFF_DFIFO        (0X20)   /* DMA FIFO reg */
  367. #define OFF_DCMD         (0X27)   /* 8 bit reg DMA command reg */
  368. #define OFF_DBC          (0X24)   /* 24 bit Reg DMA byte counter register */
  369. #define OFF_DNAD         (0X28)   /* DMA next address for data reg */
  370. #define OFF_DSP          (0X2C)   /* DMA scripts pointer reg */
  371. #define OFF_DSPS         (0X30)   /* DMA scripts pointer save reg */
  372. #define OFF_SCRATCH3     (0X37)   /* scratch register */
  373. #define OFF_SCRATCH2     (0X36)   /* scratch register */
  374. #define OFF_SCRATCH1     (0X35)   /* scratch register */
  375. #define OFF_SCRATCH0     (0X36)   /* scratch register */
  376. #define OFF_DCNTL        (0X3B)   /* DMA control reg */
  377. #define OFF_DWT          (0X3A)   /* DMA watchdog timer */
  378. #define OFF_DIEN         (0X39)   /* DMA interrupt enable reg */
  379. #define OFF_DMODE        (0X38)   /* DMA mode reg */
  380. #define OFF_ADDER        (0X3C)   /* internal adder register;don't use */
  381. #endif  /* _BYTE_ORDER==_BIG_ENDIAN */
  382. /* Mask Values */
  383. #define NCR710_COUNT_MASK    ((UINT)0x00ffffff) /* Mask 24 bit value in block */
  384.                                                 /* move description */
  385. #define INIT_BUS_ID        ((UINT)0x00010000) /* initial value for scsi id */
  386. /* DMA Fifo register */
  387. #define NCR710_MAXDMA_BYTE  /* fifo deep in bytes 64 */
  388. #define NCR710_MAXDMA_LONG /* fifo deep in long 16 */
  389. /* Sync offset */
  390. #define NCR710_MAXSYNC_OFF  0x08 /* Maximum sync offset */
  391. #define NCR710_MAX_XFERP    0x08        /* Maximum sxfer value for TP2-0 */
  392. /* Clock conversion factor */
  393. /* prescale factor for scsi core (dctnl) */
  394. #define NCR710_16MHZ_DIV        0x80    /* 16-25Mhz chip */
  395. #define NCR710_25MHZ_DIV        0x40    /* 25-37.5Mhz chip */
  396. #define NCR710_50MHZ_DIV        0x00    /* 37.5-50Mhz chip */
  397. #define NCR710_66MHZ_DIV        0xC0    /* 50-66Mhz chip */
  398. /* ns x 100 clock period */
  399. #define NCR710_1667MHZ  5998    /* 16.67Mhz chip */
  400. #define NCR710_20MHZ    5000    /* 20Mhz chip */
  401. #define NCR710_25MHZ    4000    /* 25Mhz chip */
  402. #define NCR710_3750MHZ  2666    /* 37.50Mhz chip */
  403. #define NCR710_40MHZ    2500    /* 40Mhz chip */
  404. #define NCR710_50MHZ    2000    /* 50Mhz chip */
  405. #define NCR710_66MHZ    1515    /* 66Mhz chip */
  406. #define NCR710_6666MHZ  1500    /* 66Mhz chip */
  407. /* Chip Type */
  408. #define NCR700_TYPE 0x700   /* not Supported */
  409. #define NCR710_TYPE 0x710   /* supported */
  410. #define NCR720_TYPE 0x720   /* not supported */
  411. /* Macros to acces to ncrShareCtl */
  412. #define SCRIPTADDR( pSiop,index )   ( pSiop->pNcrCtl->scriptPtr[index])
  413. /* Default value to initialize some registers involve
  414.  * in the hardware implementation.Those values could be
  415.  * overwritten by a bsp call with the ncr710HwSetRegister().
  416.  * The ncr710 Data Manual documentation will you give all
  417.  * the light regarding values choose. See also the
  418.  * documentation of ncr710SetHwRegister call.
  419.  * See below the NCR710_HW_REGS for the meaning of the
  420.  * values prefill.
  421.  */
  422. #define DEFAULT_710_HW_REGS { 0,0,0,0,1,0,0,0,0,0,0,0,0,1,0 }
  423. /* function declarations */
  424. #if defined(__STDC__) || defined(__cplusplus)
  425. IMPORT  NCR_710_SCSI_CTRL * ncr710CtrlCreate (UINT8 *siopBaseAdrs,
  426.                                               UINT clkPeriod);
  427. IMPORT  STATUS  ncr710CtrlInit (NCR_710_SCSI_CTRL *pSiop, int scsiCtrlBusId,
  428.                                 int scsiPriority);
  429. IMPORT  STATUS  ncr710Show (SCSI_CTRL *pScsiCtrl);
  430. IMPORT STATUS ncr710SetHwRegister(NCR_710_SCSI_CTRL *pScsiCtrl,
  431.     NCR710_HW_REGS *pHwRegs);
  432. IMPORT  void    ncr710Intr (NCR_710_SCSI_CTRL *pSiop);
  433. #else /* __STDC__ */
  434. IMPORT  NCR_710_SCSI_CTRL * ncr710CtrlCreate ();
  435. IMPORT  STATUS  ncr710CtrlInit ();
  436. IMPORT  STATUS  ncr710SetHwRegister ();
  437. IMPORT  STATUS  ncr710Show ();
  438. IMPORT  void    ncr710Intr ();
  439. #endif  /* __STDC__ */
  440. #endif /* _ASMLANGUAGE */
  441. #ifdef __cplusplus
  442. }
  443. #endif
  444. #endif /* __INCncr710_1h */