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

📄 ncrreg.h

📁 国产CPU-龙芯(loongson)BIOS源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/*	$OpenBSD: ncrreg.h,v 1.1 1997/12/01 18:58:49 millert Exp $	*//*	$NetBSD: ncrreg.h,v 1.14 1997/09/23 02:27:46 perry Exp $	*//******************************************************************************  Id: ncrreg.h,v 1.11 1997/08/31 19:42:31 se Exp****  Device driver for the   NCR 53C810   PCI-SCSI-Controller.****  FreeBSD / NetBSD / OpenBSD****-------------------------------------------------------------------------****  Written for 386bsd and FreeBSD by**	wolf@cologne.de		Wolfgang Stanglmeier**	se@mi.Uni-Koeln.de	Stefan Esser****  Ported to NetBSD by**	mycroft@gnu.ai.mit.edu****-------------------------------------------------------------------------**** Copyright (c) 1994 Wolfgang Stanglmeier.  All rights reserved.**** Redistribution and use in source and binary forms, with or without** modification, are permitted provided that the following conditions** are met:** 1. Redistributions of source code must retain the above copyright**    notice, this list of conditions and the following disclaimer.** 2. Redistributions in binary form must reproduce the above copyright**    notice, this list of conditions and the following disclaimer in the**    documentation and/or other materials provided with the distribution.** 3. The name of the author may not be used to endorse or promote products**    derived from this software without specific prior written permission.**** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF** THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.******************************************************************************/#ifndef __NCR_REG_H__#define __NCR_REG_H__/*==========================================================****	OS dependencies.****==========================================================*/#ifdef __OpenBSD__#define	ISSCRIPTRAMMAPPED(np) (np->scriptmapped)#else  /*__OpenBSD__*/#define	ISSCRIPTRAMMAPPED(np) (np->vaddr2)#endif /*__OpenBSD__*//*-----------------------------------------------------------------****	The ncr 53c810 register structure.****-----------------------------------------------------------------*/struct ncr_reg {/*00*/  u_int8_t    nc_scntl0;    /* full arb., ena parity, par->ATN  *//*01*/  u_int8_t    nc_scntl1;    /* no reset                         */        #define   ISCON   0x10  /* connected to scsi		    */        #define   CRST    0x08  /* force reset                      *//*02*/  u_int8_t    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_int8_t    nc_scntl3;    /* cnf system clock dependent       */	#define   EWS     0x08  /* cmd: enable wide scsi         [W]*//*04*/  u_int8_t    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_int8_t    nc_sxfer;	/* ### Sync speed and count         *//*06*/  u_int8_t    nc_sdid;	/* ### Destination-ID               *//*07*/  u_int8_t    nc_gpreg;	/* ??? IO-Pins                      *//*08*/  u_int8_t    nc_sfbr;	/* ### First byte in phase          *//*09*/  u_int8_t    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_int8_t    nc_ssid;/*0b*/  u_int8_t    nc_sbcl;/*0c*/  u_int8_t    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_int8_t    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_int8_t    nc_sstat1;	#define   FF3210  0xf0	/* sta: bytes in the scsi fifo      *//*0f*/  u_int8_t    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   LDSC    0x02  /* sta: disconnect & reconnect      *//*10*/  u_int32_t nc_dsa;	/* --> Base page                    *//*14*/  u_int8_t    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_int8_t    nc_15_;/*16*/	u_int8_t	  nc_16_;/*17*/  u_int8_t    nc_17_;/*18*/	u_int8_t	  nc_ctest0;/*19*/  u_int8_t    nc_ctest1;/*1a*/  u_int8_t    nc_ctest2;	#define   CSIGP   0x40/*1b*/  u_int8_t    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_t nc_temp;	/* ### Temporary stack              *//*20*/	u_int8_t	  nc_dfifo;/*21*/  u_int8_t    nc_ctest4;        #define   BDIS    0x80  /* mod: burst disable               */        #define   MPEE    0x08  /* mod: master parity error enable  *//*22*/  u_int8_t    nc_ctest5;	#define   DFS     0x20  /* mod: dma fifo size               *//*23*/  u_int8_t    nc_ctest6;/*24*/  u_int32_t nc_dbc;	/* ### Byte count and command       *//*28*/  u_int32_t nc_dnad;	/* ### Next command register        *//*2c*/  u_int32_t nc_dsp;	/* --> Script Pointer               *//*30*/  u_int32_t nc_dsps;	/* --> Script pointer save/opcode#2 *//*34*/  u_int32_t nc_scratcha;  /* ??? Temporary register a         *//*38*/  u_int8_t    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_int8_t    nc_dien;/*3a*/  u_int8_t    nc_dwt;/*3b*/  u_int8_t    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            */        #define   IRQM    0x08  /* mod: irq mode (1 = totem pole !) */        #define   STD     0x04  /* cmd: start dma mode              */        #define   IRQD    0x02  /* mod: irq disable                 */	#define	  NOCOM   0x01	/* cmd: protect sfbr while reselect *//*3c*/  u_int32_t nc_adder;/*40*/  u_int16_t   nc_sien;	/* -->: interrupt enable            *//*42*/  u_int16_t   nc_sist;	/* <--: interrupt status            */        #define   STO     0x0400/* sta: timeout (select)            */        #define   GEN     0x0200/* sta: timeout (general)           */        #define   HTH     0x0100/* sta: timeout (handshake)         */        #define   MA      0x80  /* sta: phase mismatch              */        #define   CMP     0x40  /* sta: arbitration complete        */        #define   SEL     0x20  /* sta: selected by another device  */        #define   RSL     0x10  /* sta: reselected by another device*/        #define   SGE     0x08  /* sta: gross error (over/underflow)*/        #define   UDC     0x04  /* sta: unexpected disconnect       */        #define   RST     0x02  /* sta: scsi bus reset detected     */        #define   PAR     0x01  /* sta: scsi parity error           *//*44*/  u_int8_t    nc_slpar;/*45*/  u_int8_t    nc_swide;/*46*/  u_int8_t    nc_macntl;/*47*/  u_int8_t    nc_gpcntl;/*48*/  u_int8_t    nc_stime0;    /* cmd: timeout for select&handshake*//*49*/  u_int8_t    nc_stime1;    /* cmd: timeout user defined        *//*4a*/  u_int16_t   nc_respid;    /* sta: Reselect-IDs                *//*4c*/  u_int8_t    nc_stest0;/*4d*/  u_int8_t    nc_stest1;	#define   DBLEN   0x08	/* clock doubler running		*/	#define   DBLSEL  0x04	/* clock doubler selected		*//*4e*/  u_int8_t    nc_stest2;	#define   ROF     0x40	/* reset scsi offset (after gross error!) */	#define   EXT     0x02  /* extended filtering                     *//*4f*/  u_int8_t    nc_stest3;	#define   TE     0x80	/* c: tolerAnt enable */	#define   HSC    0x20	/* c: Halt SCSI Clock */	#define   CSF    0x02	/* c: clear scsi fifo *//*50*/  u_int16_t   nc_sidl;	/* Lowlevel: latched from scsi data *//*52*/  u_int8_t    nc_stest4;	#define   SMODE  0xc0	/* SCSI bus mode      (895/6 only) */	#define    SMODE_HVD 0x40	/* High Voltage Differential       */	#define    SMODE_SE  0x80	/* Single Ended                    */	#define    SMODE_LVD 0xc0	/* Low Voltage Differential        */	#define   LCKFRQ 0x20	/* Frequency Lock (895/6 only)     *//*53*/  u_int8_t    nc_53_;/*54*/  u_int16_t   nc_sodl;	/* Lowlevel: data out to scsi data  *//*56*/  u_int16_t   nc_56_;/*58*/  u_int16_t   nc_sbdl;	/* Lowlevel: data from scsi data    *//*5a*/  u_int16_t   nc_5a_;/*5c*/  u_int8_t    nc_scr0;	/* Working register B               *//*5d*/  u_int8_t    nc_scr1;	/*                                  *//*5e*/  u_int8_t    nc_scr2;	/*                                  *//*5f*/  u_int8_t    nc_scr3;	/*                                  *//*60*/};/*-----------------------------------------------------------****	Utility macros for the script.****-----------------------------------------------------------*/#define REGJ(p,r) (offsetof(struct ncr_reg, p ## r))#define REG(r) REGJ (nc_, r)#ifndef TARGET_MODE#define TARGET_MODE 0#endiftypedef u_int32_t ncrcmd;#if BYTE_ORDER == BIG_ENDIAN#define SCR_BO(x)	((((x) >> 24) & 0xff) | (((x) >> 8) & 0xff00) | \			 ((x) << 24) | (((x) & 0xff00) << 8))#else#define SCR_BO(x)	(x)#endif/*-----------------------------------------------------------****	SCSI phases****-----------------------------------------------------------*/#define	SCR_DATA_OUT	0x00000000#define	SCR_DATA_IN	0x01000000#define	SCR_COMMAND	0x02000000#define	SCR_STATUS	0x03000000#define SCR_ILG_OUT	0x04000000#define SCR_ILG_IN	0x05000000#define SCR_MSG_OUT	0x06000000#define SCR_MSG_IN      0x07000000/*-----------------------------------------------------------****	Data transfer via SCSI.****-----------------------------------------------------------****	MOVE_ABS (LEN)**	<<start address>>****	MOVE_IND (LEN)**	<<dnad_offset>>****	MOVE_TBL**	<<dnad_offset>>****-----------------------------------------------------------*/#define SCR_MOVE_ABS(l) ((0x08000000 ^ (TARGET_MODE << 1ul)) | (l))#define SCR_MOVE_IND(l) ((0x28000000 ^ (TARGET_MODE << 1ul)) | (l))#define SCR_MOVE_TBL     (0x18000000 ^ (TARGET_MODE << 1ul))struct scr_tblmove {        u_int32_t size;        u_int32_t addr;};/*-----------------------------------------------------------

⌨️ 快捷键说明

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