📄 ncr53c8xx.h
字号:
#ifndef PCI_DEVICE_ID_NCR_53C875J#define PCI_DEVICE_ID_NCR_53C875J 0x8f#endif#ifndef PCI_DEVICE_ID_NCR_53C885#define PCI_DEVICE_ID_NCR_53C885 0xd#endif#ifndef PCI_DEVICE_ID_NCR_53C895#define PCI_DEVICE_ID_NCR_53C895 0xc#endif#ifndef PCI_DEVICE_ID_NCR_53C896#define PCI_DEVICE_ID_NCR_53C896 0xb#endif/*** NCR53C8XX devices features table.*/typedef struct { unsigned short device_id; unsigned short revision_id; char *name; unsigned char burst_max; unsigned char offset_max; unsigned char nr_divisor; unsigned int features;#define FE_LED0 (1<<0)#define FE_WIDE (1<<1)#define FE_ULTRA (1<<2)#define FE_ULTRA2 (1<<3)#define FE_DBLR (1<<4)#define FE_QUAD (1<<5)#define FE_ERL (1<<6)#define FE_CLSE (1<<7)#define FE_WRIE (1<<8)#define FE_ERMP (1<<9)#define FE_BOF (1<<10)#define FE_DFS (1<<11)#define FE_PFEN (1<<12)#define FE_LDSTR (1<<13)#define FE_RAM (1<<14)#define FE_CLK80 (1<<15)#define FE_CACHE_SET (FE_ERL|FE_CLSE|FE_WRIE|FE_ERMP)#define FE_SCSI_SET (FE_WIDE|FE_ULTRA|FE_ULTRA2|FE_DBLR|FE_QUAD|F_CLK80)#define FE_SPECIAL_SET (FE_CACHE_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|FE_RAM)} ncr_chip;/*** DEL 397 - 53C875 Rev 3 - Part Number 609-0392410 - ITEM 3.** Memory Read transaction terminated by a retry followed by ** Memory Read Line command.*/#define FE_CACHE0_SET (FE_CACHE_SET & ~FE_ERL)/*** DEL 397 - 53C875 Rev 3 - Part Number 609-0392410 - ITEM 5.** On paper, this errata is harmless. But it is a good reason for ** using a shorter programmed burst length (64 DWORDS instead of 128).*/#define SCSI_NCR_CHIP_TABLE \{ \ {PCI_DEVICE_ID_NCR_53C810, 0x0f, "810", 4, 8, 4, \ FE_ERL} \ , \ {PCI_DEVICE_ID_NCR_53C810, 0xff, "810a", 4, 8, 4, \ FE_CACHE_SET|FE_LDSTR|FE_PFEN|FE_BOF} \ , \ {PCI_DEVICE_ID_NCR_53C815, 0xff, "815", 4, 8, 4, \ FE_ERL|FE_BOF} \ , \ {PCI_DEVICE_ID_NCR_53C820, 0xff, "820", 4, 8, 4, \ FE_WIDE|FE_ERL} \ , \ {PCI_DEVICE_ID_NCR_53C825, 0x0f, "825", 4, 8, 4, \ FE_WIDE|FE_ERL|FE_BOF} \ , \ {PCI_DEVICE_ID_NCR_53C825, 0xff, "825a", 6, 8, 4, \ FE_WIDE|FE_CACHE0_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|FE_RAM} \ , \ {PCI_DEVICE_ID_NCR_53C860, 0xff, "860", 4, 8, 5, \ FE_ULTRA|FE_CLK80|FE_CACHE_SET|FE_BOF|FE_LDSTR|FE_PFEN} \ , \ {PCI_DEVICE_ID_NCR_53C875, 0x01, "875", 6, 16, 5, \ FE_WIDE|FE_ULTRA|FE_CLK80|FE_CACHE0_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|FE_RAM}\ , \ {PCI_DEVICE_ID_NCR_53C875, 0xff, "875", 6, 16, 5, \ FE_WIDE|FE_ULTRA|FE_DBLR|FE_CACHE0_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|FE_RAM}\ , \ {PCI_DEVICE_ID_NCR_53C875J,0xff, "875J", 6, 16, 5, \ FE_WIDE|FE_ULTRA|FE_DBLR|FE_CACHE0_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|FE_RAM}\ , \ {PCI_DEVICE_ID_NCR_53C885, 0xff, "885", 6, 16, 5, \ FE_WIDE|FE_ULTRA|FE_DBLR|FE_CACHE0_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|FE_RAM}\ , \ {PCI_DEVICE_ID_NCR_53C895, 0xff, "895", 7, 31, 7, \ FE_WIDE|FE_ULTRA2|FE_QUAD|FE_CACHE_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|FE_RAM}\ , \ {PCI_DEVICE_ID_NCR_53C896, 0xff, "896", 7, 31, 7, \ FE_WIDE|FE_ULTRA2|FE_QUAD|FE_CACHE_SET|FE_BOF|FE_DFS|FE_LDSTR|FE_PFEN|FE_RAM}\}/* * List of supported NCR chip ids */#define SCSI_NCR_CHIP_IDS \{ \ PCI_DEVICE_ID_NCR_53C810, \ PCI_DEVICE_ID_NCR_53C815, \ PCI_DEVICE_ID_NCR_53C820, \ PCI_DEVICE_ID_NCR_53C825, \ PCI_DEVICE_ID_NCR_53C860, \ PCI_DEVICE_ID_NCR_53C875, \ PCI_DEVICE_ID_NCR_53C875J, \ PCI_DEVICE_ID_NCR_53C885, \ PCI_DEVICE_ID_NCR_53C895, \ PCI_DEVICE_ID_NCR_53C896 \}/*** Initial setup.** Can be overriden at startup by a command line.*/#define SCSI_NCR_DRIVER_SETUP \{ \ SCSI_NCR_SETUP_MASTER_PARITY, \ SCSI_NCR_SETUP_SCSI_PARITY, \ SCSI_NCR_SETUP_DISCONNECTION, \ SCSI_NCR_SETUP_SPECIAL_FEATURES, \ SCSI_NCR_SETUP_ULTRA_SCSI, \ SCSI_NCR_SETUP_FORCE_SYNC_NEGO, \ 0, \ 0, \ 1, \ 1, \ SCSI_NCR_SETUP_DEFAULT_TAGS, \ SCSI_NCR_SETUP_DEFAULT_SYNC, \ 0x00, \ 7, \ SCSI_NCR_SETUP_LED_PIN, \ 1, \ SCSI_NCR_SETUP_SETTLE_TIME, \ SCSI_NCR_SETUP_DIFF_SUPPORT, \ 0, \ 1 \}/*** Boot fail safe setup.** Override initial setup from boot command line:** ncr53c8xx=safe:y*/#define SCSI_NCR_DRIVER_SAFE_SETUP \{ \ 0, \ 1, \ 0, \ 0, \ 0, \ 0, \ 0, \ 0, \ 1, \ 2, \ 0, \ 255, \ 0x00, \ 255, \ 0, \ 0, \ 10, \ 1, \ 1, \ 1 \}/*** Define the table of target capabilities by host and target**** If you have problems with a scsi device, note the host unit and the** corresponding target number.**** Edit the corresponding entry of the table below and try successively:** NQ7_Questionnable** NQ7_IdeLike**** This bitmap is anded with the byte 7 of inquiry data on completion of** INQUIRY command.** The driver never see the zeroed bits and will ignore the corresponding** capabilities of the target.*/#define INQ7_SftRe 1#define INQ7_CmdQueue (1<<1) /* Tagged Command */#define INQ7_Reserved (1<<2)#define INQ7_Linked (1<<3)#define INQ7_Sync (1<<4) /* Synchronous Negotiation */#define INQ7_WBus16 (1<<5)#define INQ7_WBus32 (1<<6)#define INQ7_RelAdr (1<<7)#define INQ7_IdeLike 0#define INQ7_Scsi1Like INQ7_IdeLike#define INQ7_Perfect 0xff#define INQ7_Questionnable ~(INQ7_CmdQueue|INQ7_Sync)#define INQ7_VeryQuestionnable \ ~(INQ7_CmdQueue|INQ7_Sync|INQ7_WBus16|INQ7_WBus32)#define INQ7_Default INQ7_Perfect#define NCR53C8XX_TARGET_CAPABILITIES \/* Host 0 */ \{ \ { \ /* Target 0 */ INQ7_Default, \ /* Target 1 */ INQ7_Default, \ /* Target 2 */ INQ7_Default, \ /* Target 3 */ INQ7_Default, \ /* Target 4 */ INQ7_Default, \ /* Target 5 */ INQ7_Default, \ /* Target 6 */ INQ7_Default, \ /* Target 7 */ INQ7_Default, \ /* Target 8 */ INQ7_Default, \ /* Target 9 */ INQ7_Default, \ /* Target 10 */ INQ7_Default, \ /* Target 11 */ INQ7_Default, \ /* Target 12 */ INQ7_Default, \ /* Target 13 */ INQ7_Default, \ /* Target 14 */ INQ7_Default, \ /* Target 15 */ INQ7_Default, \ } \}, \/* Host 1 */ \{ \ { \ /* Target 0 */ INQ7_Default, \ /* Target 1 */ INQ7_Default, \ /* Target 2 */ INQ7_Default, \ /* Target 3 */ INQ7_Default, \ /* Target 4 */ INQ7_Default, \ /* Target 5 */ INQ7_Default, \ /* Target 6 */ INQ7_Default, \ /* Target 7 */ INQ7_Default, \ /* Target 8 */ INQ7_Default, \ /* Target 9 */ INQ7_Default, \ /* Target 10 */ INQ7_Default, \ /* Target 11 */ INQ7_Default, \ /* Target 12 */ INQ7_Default, \ /* Target 13 */ INQ7_Default, \ /* Target 14 */ INQ7_Default, \ /* Target 15 */ INQ7_Default, \ } \}/*** Replace the proc_dir_entry of the standard ncr driver.*/#if LINUX_VERSION_CODE >= LinuxVersionCode(1,3,0)#if defined(CONFIG_SCSI_NCR53C7xx) || !defined(CONFIG_SCSI_NCR53C8XX)#define PROC_SCSI_NCR53C8XX PROC_SCSI_NCR53C7xx#endif#endif/**************** ORIGINAL CONTENT of ncrreg.h from FreeBSD ******************//*-----------------------------------------------------------------**** The ncr 53c810 register structure.****-----------------------------------------------------------------*/struct ncr_reg {/*00*/ u_char nc_scntl0; /* full arb., ena parity, par->ATN *//*01*/ u_char nc_scntl1; /* no reset */ #define ISCON 0x10 /* connected to scsi */ #define CRST 0x08 /* force reset *//*02*/ u_char nc_scntl2; /* no disconnect expected */ #define SDU 0x80 /* cmd: disconnect will raise error */ #define CHM 0x40 /* sta: chained mode */ #define WSS 0x08 /* sta: wide scsi send [W]*/ #define WSR 0x01 /* sta: wide scsi received [W]*//*03*/ u_char nc_scntl3; /* cnf system clock dependent */ #define EWS 0x08 /* cmd: enable wide scsi [W]*/ #define ULTRA 0x80 /* cmd: ULTRA enable *//*04*/ u_char nc_scid; /* cnf host adapter scsi address */ #define RRE 0x40 /* r/w:e enable response to resel. */ #define SRE 0x20 /* r/w:e enable response to select *//*05*/ u_char nc_sxfer; /* ### Sync speed and count *//*06*/ u_char nc_sdid; /* ### Destination-ID *//*07*/ u_char nc_gpreg; /* ??? IO-Pins *//*08*/ u_char nc_sfbr; /* ### First byte in phase *//*09*/ u_char nc_socl; #define CREQ 0x80 /* r/w: SCSI-REQ */ #define CACK 0x40 /* r/w: SCSI-ACK */ #define CBSY 0x20 /* r/w: SCSI-BSY */ #define CSEL 0x10 /* r/w: SCSI-SEL */ #define CATN 0x08 /* r/w: SCSI-ATN */ #define CMSG 0x04 /* r/w: SCSI-MSG */ #define CC_D 0x02 /* r/w: SCSI-C_D */ #define CI_O 0x01 /* r/w: SCSI-I_O *//*0a*/ u_char nc_ssid;/*0b*/ u_char nc_sbcl;/*0c*/ u_char nc_dstat; #define DFE 0x80 /* sta: dma fifo empty */ #define MDPE 0x40 /* int: master data parity error */ #define BF 0x20 /* int: script: bus fault */ #define ABRT 0x10 /* int: script: command aborted */ #define SSI 0x08 /* int: script: single step */ #define SIR 0x04 /* int: script: interrupt instruct. */ #define IID 0x01 /* int: script: illegal instruct. *//*0d*/ u_char nc_sstat0; #define ILF 0x80 /* sta: data in SIDL register lsb */ #define ORF 0x40 /* sta: data in SODR register lsb */ #define OLF 0x20 /* sta: data in SODL register lsb */ #define AIP 0x10 /* sta: arbitration in progress */ #define LOA 0x08 /* sta: arbitration lost */ #define WOA 0x04 /* sta: arbitration won */ #define IRST 0x02 /* sta: scsi reset signal */ #define SDP 0x01 /* sta: scsi parity signal *//*0e*/ u_char nc_sstat1; #define FF3210 0xf0 /* sta: bytes in the scsi fifo *//*0f*/ u_char nc_sstat2; #define ILF1 0x80 /* sta: data in SIDL register msb[W]*/ #define ORF1 0x40 /* sta: data in SODR register msb[W]*/ #define OLF1 0x20 /* sta: data in SODL register msb[W]*/ #define DM 0x04 /* sta: DIFFSENS mismatch (895/6 only) */ #define LDSC 0x02 /* sta: disconnect & reconnect *//*10*/ u_int32 nc_dsa; /* --> Base page *//*14*/ u_char nc_istat; /* --> Main Command and status */ #define CABRT 0x80 /* cmd: abort current operation */ #define SRST 0x40 /* mod: reset chip */ #define SIGP 0x20 /* r/w: message from host to ncr */ #define SEM 0x10 /* r/w: message between host + ncr */ #define CON 0x08 /* sta: connected to scsi */ #define INTF 0x04 /* sta: int on the fly (reset by wr)*/ #define SIP 0x02 /* sta: scsi-interrupt */ #define DIP 0x01 /* sta: host/script interrupt *//*15*/ u_char nc_15_;/*16*/ u_char nc_16_;/*17*/ u_char nc_17_;/*18*/ u_char nc_ctest0;/*19*/ u_char nc_ctest1;/*1a*/ u_char nc_ctest2; #define CSIGP 0x40/*1b*/ u_char nc_ctest3; #define FLF 0x08 /* cmd: flush dma fifo */ #define CLF 0x04 /* cmd: clear dma fifo */ #define FM 0x02 /* mod: fetch pin mode */ #define WRIE 0x01 /* mod: write and invalidate enable *//*1c*/ u_int32 nc_temp; /* ### Temporary stack *//*20*/ u_char nc_dfifo;/*21*/ u_char nc_ctest4; #define BDIS 0x80 /* mod: burst disable */ #define MPEE 0x08 /* mod: master parity error enable *//*22*/ u_char nc_ctest5; #define DFS 0x20 /* mod: dma fifo size *//*23*/ u_char nc_ctest6;/*24*/ u_int32 nc_dbc; /* ### Byte count and command *//*28*/ u_int32 nc_dnad; /* ### Next command register *//*2c*/ u_int32 nc_dsp; /* --> Script Pointer *//*30*/ u_int32 nc_dsps; /* --> Script pointer save/opcode#2 *//*34*/ u_int32 nc_scratcha; /* ??? Temporary register a *//*38*/ u_char nc_dmode; #define BL_2 0x80 /* mod: burst length shift value +2 */ #define BL_1 0x40 /* mod: burst length shift value +1 */ #define ERL 0x08 /* mod: enable read line */ #define ERMP 0x04 /* mod: enable read multiple */ #define BOF 0x02 /* mod: burst op code fetch *//*39*/ u_char nc_dien;/*3a*/ u_char nc_dwt;/*3b*/ u_char nc_dcntl; /* --> Script execution control */ #define CLSE 0x80 /* mod: cache line size enable */ #define PFF 0x40 /* cmd: pre-fetch flush */ #define PFEN 0x20 /* mod: pre-fetch enable */ #define SSM 0x10 /* mod: single step mode */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -