⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sym895.h

📁 LoPEC Early Access VxWorks BSP
💻 H
📖 第 1 页 / 共 3 页
字号:
/* STEST2 SCSI Test Two (RW) */#define SYM895_STEST2_SCE           0x80 /* SCSI Control Enable */#define SYM895_STEST2_ROF           0x40 /* Reset SCSI OFfset */#define SYM895_STEST2_DIF           0x20 /* SCSI Differential Mode */#define SYM895_STEST2_SLB           0x10 /* SCSI Loopback Mode */#define SYM895_STEST2_SZM           0x08 /* SCSI High-Impedance Mode */#define SYM895_STEST2_AWS           0x04 /* Always Wide SCSI */#define SYM895_STEST2_EXT           0x02 /* Extend SREQ/SACK filtering -  */                                         /* Should not be set during FAST */                                         /* SCSI> 5MB/s */#define SYM895_STEST2_LOW           0x01 /* SCSI LOW level mode; no DMA  */                                         /* operation occur and no SCRIPTS */                                          /* execute *//* STEST3 SCSI Test Three (RW) */#define SYM895_STEST3_TE            0x80 /* Tolerant Enable */ #define SYM895_STEST3_STR           0x40 /* SCSI FIFO Test Read */#define SYM895_STEST3_HSC           0x20 /* Halt Scsi Clock */#define SYM895_STEST3_DSI           0x10 /* Disable Single Initiator */                                         /* response (SCSI-1) */#define SYM895_STEST3_S16           0x08 /* 16-bit System */#define SYM895_STEST3_TTM           0x04 /* Timer Test Mode */#define SYM895_STEST3_CSF           0x02 /* Clear Scsi Fifo */#define SYM895_STEST3_STW           0x01 /* SCSI Fifo Test Write *//* STEST4 SCSI Test Four (R) */#define SYM895_STEST4_SMODE_MASK    0xc0 /* SCSI Mode Detect */#define SYM895_STEST4_LOCK          0x20 /* Detect Clock Quadrupler Lockup *//* Byte Offsets of On-Chip Registers from the base address *//*  * The registers can be accessed in two ways.One is using Memory IO base addr * plus the offset and the other by using PCI config base addr plus offset.  * These registers are part of PCI configuration space for the device. */#define MEMIO_REG_BASE      (0x00)#define PCI_CONFIG_REG_BASE (0x80)#define BASE                MEMIO_REG_BASE/* Little Endian offsets */#define SYM895_OFF_SCNTL0  (BASE)          /* SCTNL0 SCSI control register 0 */#define SYM895_OFF_SCNTL1  (BASE + 0x01)   /* SCTNL1 SCSI control register 1 */#define SYM895_OFF_SCNTL2  (BASE + 0x02)   /* SCTNL2 SCSI control register 2 */#define SYM895_OFF_SCNTL3  (BASE + 0x03)   /* SCTNL3 SCSI control register 3 */#define SYM895_OFF_SCID    (BASE + 0x04)   /* SCID SCSI chip ID register */#define SYM895_OFF_SXFER   (BASE + 0x05)   /* SXFER SCSI chip ID register */#define SYM895_OFF_SDID    (BASE + 0x06)   /* SDID SCSI destination ID  */#define SYM895_OFF_GPREG   (BASE + 0x07)   /* GPREG General Purpose register */#define SYM895_OFF_SFBR    (BASE + 0x08)   /* SFBR SCSI first byte received  */#define SYM895_OFF_SOCL    (BASE + 0x09)   /* SOCL SCSI output control latch */#define SYM895_OFF_SSID    (BASE + 0x0a)   /* SSID SCSI selector ID */#define SYM895_OFF_SBCL    (BASE + 0x0b)   /* SBCL SCSI bus control lines */#define SYM895_OFF_DSTAT   (BASE + 0x0c)   /* DSTAT DMA status register */#define SYM895_OFF_SSTAT0  (BASE + 0x0d)   /* SSTAT0 SCSI status register 0 */#define SYM895_OFF_SSTAT1  (BASE + 0x0e)   /* SSTAT1 SCSI status register 0 */#define SYM895_OFF_SSTAT2  (BASE + 0x0f)   /* SSTAT2 SCSI status register 0 */#define SYM895_OFF_DSA     (BASE + 0x10)   /* 32-bit DSA data structure */                                           /* address */#define SYM895_OFF_ISTAT   (BASE + 0x14)   /* 8-bit ISTAT interrupt status  */#define SYM895_OFF_CTEST0  (BASE + 0x18)   /* CTEST0 chip test register 0 */#define SYM895_OFF_CTEST1  (BASE + 0x19)   /* CTEST1 chip test register 1 */#define SYM895_OFF_CTEST2  (BASE + 0x1a)   /* CTEST2 chip test register 2 */#define SYM895_OFF_CTEST3  (BASE + 0x1b)   /* CTEST3 chip test register 3 */#define SYM895_OFF_TEMP    (BASE + 0x1c)   /* 32-bit TEMP temporary holding */                                           /* register */#define SYM895_OFF_DFIFO   (BASE + 0x20)   /* DFIFO DMA FIFO control register */#define SYM895_OFF_CTEST4  (BASE + 0x21)   /* CTEST4 chip test register 4 */#define SYM895_OFF_CTEST5  (BASE + 0x22)   /* CTEST5 chip test register 5 */#define SYM895_OFF_CTEST6  (BASE + 0x23)   /* CTEST6 chip test register 6 */#define SYM895_OFF_DBC     (BASE + 0x24)   /* 24-bit DBC SIOP command reg.*/#define SYM895_OFF_DCMD    (BASE + 0x27)   /* 8-bit DCMD SIOP command register */#define SYM895_OFF_DNAD    (BASE + 0x28)   /* 32-bit DNAD DMA buffer ptr */                                           /* (next addr) */#define SYM895_OFF_DSP     (BASE + 0x2c)   /* 32-bit DSP SIOP scripts pointer */                                           /* register */#define SYM895_OFF_DSPS    (BASE + 0x30)   /* 32-bit DSPS SIOP scripts ptr */                                           /* save register */#define SYM895_OFF_DMODE   (BASE + 0x38)   /* DMODE DMA operation mode */                                           /* register */#define SYM895_OFF_DIEN    (BASE + 0x39)   /* DIEN DMA interrupt enable */#define SYM895_OFF_DWT     (BASE + 0x3a)   /* DWT DMA watchdog timer register */#define SYM895_OFF_DCNTL   (BASE + 0x3b)   /* DCTNL DMA control register */	#define SYM895_OFF_ADDER   (BASE + 0x3c)   /* 32-bit ADDER Adder output */                                           /* Register */	#define SYM895_OFF_SIEN0   (BASE + 0x40)   /* SIEN0 SCSI interrupt enable 0 */                                           /* register */#define SYM895_OFF_SIEN1   (BASE + 0x41)   /* SIEN1 SCSI interrupt enable 1 */                                           /* register */#define SYM895_OFF_SIST0   (BASE + 0x42)   /* SIST0 SCSI interrupt status 0 */                                           /* register */#define SYM895_OFF_SIST1   (BASE + 0x43)   /* SIST1 SCSI interrupt status 1 */                                           /* register */#define SYM895_OFF_SLPAR   (BASE + 0x44)   /* SLPAR SCSI longitudinal Parity*/                                           /* register */#define SYM895_OFF_SWIDE   (BASE + 0x45)   /* SWIDE SCSI Wide Residue */#define SYM895_OFF_MACNTL  (BASE + 0x46)   /* MACNTL Memory Access Control */                                           /* register */#define SYM895_OFF_GPCNTL  (BASE + 0x47)   /* GPCNTL General Purpose Pin */                                           /* Control */#define SYM895_OFF_STIME0  (BASE + 0x48)   /* STIME0 SCSI Timer Zero reg */#define SYM895_OFF_STIME1  (BASE + 0x49)   /* STIME1 SCSI Timer One reg */#define SYM895_OFF_RESPID0 (BASE + 0x4a)   /* RESPID Response ID register 0 */#define SYM895_OFF_RESPID1 (BASE + 0x4b)   /* RESPID Response ID register 1 */#define SYM895_OFF_STEST0  (BASE + 0x4c)   /* STEST0 SCSI Test 0 register */#define SYM895_OFF_STEST1  (BASE + 0x4d)   /* STEST1 SCSI Test 1 register */#define SYM895_OFF_STEST2  (BASE + 0x4e)   /* STEST2 SCSI Test 2 register */#define SYM895_OFF_STEST3  (BASE + 0x4f)   /* STEST3 SCSI Test 3 register */#define SYM895_OFF_SIDL    (BASE + 0x50)   /* 16-bit SIDL SCSI input data */                                           /* latch register */#define SYM895_OFF_STEST4  (BASE + 0x52)   /* STEST4 SCSI Test 4 register */#define SYM895_OFF_SODL    (BASE + 0x54)   /* 16-bit SCSI output data latch */                                           /* register */#define SYM895_OFF_SBDL    (BASE + 0x58)   /* 16-bit SBDL SCSI bus data lines */                                           /* register */#define SYM895_OFF_SCRATCHA0	(BASE + 0x34)	/* SCRATCHA0 gen purpose */                                                /* scratch register A0 */#define SYM895_OFF_SCRATCHA1	(BASE + 0x35)	/* SCRATCHA1 gen purpose */                                                 /* scratch reg A1 */#define SYM895_OFF_SCRATCHA2	(BASE + 0x36)	/* SCRATCHA2 gen purpose */                                                /* scratch reg A2 */#define SYM895_OFF_SCRATCHA3	(BASE + 0x37)	/* SCRATCHA3 gen purpose */                                                /* scratch reg A3 */#define SYM895_OFF_SCRATCHB0	(BASE + 0x5c)	/* SCRATCHB0 gen purpose */                                                /* scratch reg B0 */#define SYM895_OFF_SCRATCHB	(BASE + 0x5c)	/* SCRATCHB Scratch Register B */#define SYM895_OFF_SCRATCHC0	(BASE + 0x60)	/* SCRATCHC Scratch Register C */#define SYM895_OFF_SCRATCHC1	(BASE + 0x61)	/* SCRATCHC Scratch Register C */#define SYM895_OFF_SCRATCHC2	(BASE + 0x62)	/* SCRATCHC Scratch Register C */#define SYM895_OFF_SCRATCHC	(BASE + 0x60)	/* SCRATCHC Scratch Register C */#define SYM895_OFF_SCRATCHD	(BASE + 0x64)	/* SCRATCHD Scratch Register D */#define SYM895_OFF_SCRATCHE	(BASE + 0x68)	/* SCRATCHE Scratch Register E */#define SYM895_OFF_SCRATCHF	(BASE + 0x6c)	/* SCRATCHF Scratch Register F */#define SYM895_OFF_SCRATCHG	(BASE + 0x70)	/* SCRATCHG Scratch Register G */#define SYM895_OFF_SCRATCHH	(BASE + 0x74)	/* SCRATCHH Scratch Register H */#define SYM895_OFF_SCRATCHI	(BASE + 0x78)	/* SCRATCHI Scratch Register I */#define SYM895_OFF_SCRATCHJ	(BASE + 0x7C)	/* SCRATCHJ Scratch Register J *//*  * The Device Id's (required for finding the device on PCI Bus) * for the SYM895 Chip. Note that NCR895 and SYM895 are both the same. * the SCSI division of NCR is now Symbios, which is taken over by LSI logic */#define NCR810_DEVICE_ID    0x0001#define NCR825_DEVICE_ID    0x0003#define NCR875_DEVICE_ID    0x000f#define NCR895_DEVICE_ID    0x000c#define NCR895A_DEVICE_ID   0x0012#define SYM895_DEVICE_ID    NCR895_DEVICE_ID#define PCI_ID_SYMBIOS      0x1000/*  * The Block Move Counter Mask. * The DBC register in sym895 holds the number of bytes transferred in  * a Block Move instruction. It is also used to hold the least significant  * 24 bits of the first dword of a SCRIPTS fetch. For more details, please  * refer to chap 5, of the 895 data manual. * The maximum value that it can store is 0x00ffffff (24 bits only).  */#define SYM895_COUNT_MASK   ((UINT)0x00ffffff)/*  * As a part of the SCSI Thread, the target parameters are to be set * in the thread context. These parameters are  encoded. Device (target)id  * and a copy of the sxfer register are to be encoded in a single 32 bit word.  * Bits 23-16 specify the target bus id(mapped to SDID register) and bits 15-08  * specify the copy of sxfer register. Refer to 8-8 of PCI-SCSI Programming  * guide. */#define SYM895_TARGET_BUS_ID_SHIFT  16#define SYM895_XFER_PARAMS_SHIFT    8/*  * Allowable SCSI Synchronous Offset and Transfer period values. * Please refer to chap 2, the Functional description and chap 5, Operating  * registers of sym895 data manual, for more details. */#define SYM895_MIN_SYNC_OFFSET      1#define SYM895_MAX_SYNC_OFFSET      31#define SYM895_ASYNC_OFFSET         0   /* Sync. Offset should be 0x00 */                                        /* for asynchronous xfers *//* Allowable values for SCSI Sync. transfer period in XFERP register */#define SYM895_MIN_XFERP            4#define SYM895_MAX_XFERP            11  /* Not recommended.see the manual */#define SYM895_IDEAL_XFERP          4#define SYM895_SYNC_XFER_PERIOD_SHIFT   5 /* PERIOD is Bits 7-5 of XFER reg *//* The Value of sxfer register for asynchronous transfers */#define SYM895_ASYNC_SXFER          0x00/*  * Synchronous Transfer : Clock division factor  * Refer to chap 5, Operating Registers, SCNTL3 register bits SCF2-0 */#define SYM895_SYNC_MIN_CLK_DIV	    1#define SYM895_SYNC_MAX_CLK_DIV     7#define SYM895_SYNC_CLK_DIV_1       1       /* SCLK / 1 */#define SYM895_SYNC_CLK_DIV_1_5     2       /* SCLK / 1.5 */#define SYM895_SYNC_CLK_DIV_2       3       /* SCLK / 2 */ #define SYM895_SYNC_CLK_DIV_3       4       /* SCLK / 3 */#define SYM895_SYNC_CLK_DIV_4       5       /* SCLK / 4 */#define SYM895_SYNC_CLK_DIV_6       6       /* SCLK / 6 */#define SYM895_SYNC_CLK_DIV_8       7       /* SCLK / 8 *//*  * Asynchronous Transfer : Clock conversion factor  * Refer to chap 5, Operating Registers, SCNTL3 register * Bits CCF2-0. */#define SYM895_ASYNC_MIN_CLK_DIV    1       /* 16.67 - 25 MHz */#define SYM895_ASYNC_MAX_CLK_DIV    7       /* 160 MHz : The clock quadrupler  */                                            /* bit must be set *//* prescale factor for asynchronous scsi core (scntl3) */#define SYM895_16MHZ_ASYNC_DIV      0x01    /* 16.67-25.00Mhz input clock */#define SYM895_25MHZ_ASYNC_DIV      0x02    /* 25.01-37.50Mhz input clock */#define SYM895_3750MHZ_ASYNC_DIV    0x03    /* 37.51-50.00Mhz input clock */#define SYM895_50MHZ_ASYNC_DIV      0x04    /* 50.01-75.00Mhz input clock *//*  * Note: 70MHz & 160MHz value has Ultra Enable bit set (b7). * When Ultra enable bit is set, the Tolerant Enable bit must also be set .  * It is STEST3:TE (bit 7). */#define SYM895_75MHZ_ASYNC_DIV      0x85    /* 75.01-80.00Mhz input clock *//* 160.00 Mhz input clock with clock quadrupler and 40 Mhz input clock */#define SYM895_160MHZ_ASYNC_DIV	    0x87    /* Nano Seconds x 100 clock period */#define SYM895_1667MHZ      6000    /* 16.67Mhz chip */#define SYM895_20MHZ        5000    /* 20Mhz chip */#define SYM895_25MHZ        4000    /* 25Mhz chip */#define SYM895_3750MHZ      2667    /* 37.50Mhz chip */#define SYM895_40MHZ        2500    /* 40Mhz chip */#define SYM895_50MHZ        2000    /* 50Mhz chip */#define SYM895_66MHZ        1515    /* 66Mhz chip */#define SYM895_6666MHZ      1500    /* 66Mhz chip */#define SYM895_75MHZ        1333    /* 75Mhz chip */#define SYM895_80MHZ        1250    /* 80Mhz chip */#define SYM895_160MHZ        625    /* 40Mhz chip with Quadrupler *//* Timer values for General Purpose Timer (STIME1) */#define SYM895_GEN_DISABLED 0x00    /* Disabled */#define SYM895_GEN_128MS    0x0B    /* 128 MS */#define SYM895_GEN_64MS	    0x0A    /* 64 MS *//* Various Bus Modes supported by 895 */#define SYM895_BUSMODE_LVD     3#define SYM895_BUSMODE_SE      2#define SYM895_BUSMODE_HVD     1#define SYM895_BUSMODE_SHIFT   6#define SYM895_MAX_XFER_WIDTH  1    /* in transfer width exponent units.*/                                    /* 16bits. */#define SYM895_TYPE     0x895       /* Chip Type; *//* sym895 PCI Resources  */#define SYM895_MEMBASE         0xf5200000	#define SYM895_MEMSIZE         0x00001000      /* memory size for Int.RAM, 4KB */#define SYM895_RAM_ADR         (SYM895_MEMBASE)#define SYM895_MEM_ADR         (SYM895_MEMBASE + SYM895_MEMSIZE)#define SYM895_IO_ADR          0xf800	#define SYM895_INT_LVL         0x0a#define SYM895_INIT_STATE_MASK (VM_STATE_MASK_FOR_ALL)#define SYM895_INIT_STATE      (VM_STATE_FOR_IO)#define SYM895_DEV_MMU_MSK      (~(VM_PAGE_SIZE - 1))   /* Mask MMU page */#define SYM895_DEV_ADRS_SIZE    VM_PAGE_SIZE * 2        /* two pages *//* Controller Options, while creating the Controller Structure */#define SYM895_ENABLE_PARITY_CHECK      0x01#define SYM895_ENABLE_SINGLE_STEP       0x02#define SYM895_COPY_SCRIPTS             0x04/* SCRIPT ram Size for various controllers */#define SYM895_SCRIPT_RAM_SIZE 4*1024	/* bytes *//* Chip register access mode (memory mapped / IO) */#define SYM895_IO_MAPPED   /* IO mapped access by default *//* Loopback diagnostics */#define LOOPBACK_MSG_BYTE  0xa5#define LOOPBACK_DATA      0x5a5a/* *  Structure , used as an interface between the C Code and the Scripts. *  used for storing data in Block Move instructions. */typedef struct moveParams    {    ULONG  size;              /* # bytes to move to/from SCSI */    UINT8 *addr;              /* where in memory they go/come */    } MOVE_PARAMS;/*

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -