DataMuseum.dk

Presents historical artifacts from the history of:

Regnecentalen RC-900

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Regnecentalen RC-900

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦f2ad1bb7b⟧ TextFile

    Length: 7319 (0x1c97)
    Types: TextFile
    Notes: UNIX file
    Names: »scsi.h«

Derivation

└─⟦22cab2c1b⟧ Bits:30004042/kcaddon.imd SW95705I 386/ix Multi-user Release 1.2
└─⟦22cab2c1b⟧ UNIX Filesystem
    └─⟦this⟧ »KC/new/usr/include/sys/scsi.h« 

TextFile

/*
 *
 *      SCSI driver declarations.
 *
 */

/*
 * 871221 RC900 version created from RC39 scsi driver
 *        SCSITIMEVAL changed from 15000 to 30000
 */
#define SPL			spl5		/* for driver mutex               */
#define SCSITIMEVAL		30000		/* timesteps used for timeout     */


#define LOW(x)			((x)&0xFF)			/* "low" byte  */
#define HIGH(x)			(((x)>>8)&0xFF)			/* "high" byte */


/*
 * Host adapter configuration.
 *
 */
#define DMABYTES      6                                 /* number of bytes to write   */
                                                        /* to enable dma for AT bus   */
                                                        /* access                     */
struct  scsihcfg {
	unsigned hs_ioa;				/* Physical io address        */
	unsigned hs_level;				/* what interrupe level       */
        unchar   dma_addrs[DMABYTES];                   /* io addresses of dma regs   */
        unchar   dma_vals[DMABYTES];                    /* values to be written       */
};


/*
 * SCSI Command Block. 
 */

struct  scsicb {
	char		cb_opcode;			/*bit 7-5 command, 4-0 opcode     */
	char		cb_lun;				/*bit 7-5 LUN, bit 4-0 LAD2       */
	char		cb_lad1;			/* LAD 1                          */
	char		cb_lad0;			/* LAD 0                          */
	char		cb_blk;				/*     */
	char		cb_contl;			/* CONTROL                        */
};

/*
 * Error Status-Structure, Returned on request sense.
 */

struct  scsierr {
	char		sc_status;	/* sense byte                     */
	char		sc_lun;		/* bit 7-5 LUN, bit 4-0 LAD 2     */
	char		sc_lad1;	/* LAD 1                          */
	char		sc_lad0;	/* LAD 0/INF 3                    */
	char		sc_inf2;	/* INF 2                          */
	char		sc_inf1;	/* INF 1                          */
	char		sc_inf0;	/* INF 0                          */
};
/*
 * Host Adapter dynamic data.
 */

struct scsihost {
        ushort          h_inst;                          /* 0 if the hostadapter isn't installed*/
	unsigned 	h_ioa;				/* Physical IO address    */
	unsigned 	hs_timeid;			/* host adapter id from timeout call */
	struct scsidev	*h_dd;				/* current minor dev      */
	struct iobuf	*h_bufh;			/* -> buffer header       */
        ushort          opened;                         /* true/false             */
	char		hs_buf[32];			/* set mode buffer          */
	char		hs_state;			/* what just finished     */
        char            hs_dev;                         /* current minor          */
	int		hs_init;			/* status init operation  */
	caddr_t		hs_addr;			/* virtuel addr. of do   */
	struct  scsicb	hs_cb;				/* command block          */
	struct  scsierr	hs_error;			/* block for error answer */
	char		hs_last_opcode;			/* used in SENSE to store opcode */
};



/*
 * Per minor dev "dynamic" data.
 */
struct  scsidev {
	short			scsidid;		/* scsiDsetinationID    */
        short                   unit;                   /* unit number of the dev       */
	unsigned short		secsiz;		        /* sector-size (bytes)          */
        unsigned short          bsf;                    /* Block Shift Factor sector    */
                                                        /* power of 2                   */
/* params for set read/write parameters cmd - see t100 manual                           */
	unsigned short		nhead;		        /* number of heads-1            */
        unsigned short          drvman;                 /* drive manufactor code        */
        unsigned short          min_tsiz;               /* minimum transfer size        */
        unsigned short          drv_ctrl;               /* drive control                */
/* params for opening device                                                            */
        unsigned short          reten;                  /* retension if 1. load fails?  */
/* params for closing the device                                                        */
        unsigned short          unload;                 /* action in close  unload/load */
};


/*
 * Macros to make things easier to read/code/maintain/etc...
 */

#define IO_OP(bp) ((bp->b_flags&B_READ)?READ_OP:WRITE_OP) 


/*
 * Values of buffer-header b_active, used for mutual-exclusion of
 * opens and other IO requests.
 */

#define IO_IDLE			0			/* idle -- anything goes   */
#define IO_OPEN_WAIT		1			/* open waiting            */
#define IO_BUSY			2			/* something going on      */

/*
 * Values of scsihost.hs_state, internal driver state.
 */

#define READ_WRITE	0		/* normal situation, RW               */
#define GET_BAD_STATUS	1		/* retrieveing status; last cmd got er*/
#define INTERNAL    	2		/* internal driver operations         */
#define BAD_INTERNAL    3              /* retrieving status after internal   */

/*
 * Host adapter register addresses
 */
#define BUFLO			0		/* Data Address Register LOW   bit 0-7*/
#define BUFHI			1		/* Data Address Register HIGH bit 8-15*/
#define BUFTO			2		/* Data Address Register TOP bit 16-23*/
#define HAMOD			3		/* Host Adapter MODe register */
#define UOPT                    5               /* User OPTion register */
#define SBICA			6		/* Scsi Bus Interface Controler Address register */
#define SBICR			7		/* Scsi Bus Interface Controler base Register */


/*
 * Host adapter Commands
 */

#define RESET_BOARD		0x81	/* reset board bit and enable int */
#define DISDMA			0x80    /* disable dma */
#define DMAWR			0xFE    /* setup dma write mode  */    
#define DMARD			0xEE    /* setup dma read mode*/

/*
 * SCIB registers
 */

#define	OWNID			0
#define CTRL			1
#define	TIMOUT			2
#define	CDB1			3
#define	CDB2			4
#define	CDB3			5
#define	CDB4			6
#define	CDB5			7
#define	CDB6			8
#define	CDB7			9
#define	CDB8			10
#define	CDB9			11
#define	CDB10			12
#define	CDB11			13
#define	CDB12			14
#define TLUN			15
#define CMDPH			16
#define SYNCTR			17
#define TCTO			18
#define	TCHI			19
#define TCLO			20
#define DID			21
#define SID			22
#define SCSIS			23
#define SCSIC			24
#define SCSID			25
		
/*
 * SCIB commands
 */
#define	RESCMD			0
#define SELTR 			8
#define DISC			4
#define NACK			3
#define TPAD			0x21


#define	SELTROK			0x16 

/*
 * Controller Command Codes.
 */

#define DRIVE_READY				0x00
#define REWIND  				0x01
#define SENSE					0x03
#define READ_BLIM				0x05
#define SETRW_PARM				0x06
#define READ_OP					0x08
#define WRITE_OP				0x0A
#define WRITE_FM_OP				0x10
#define SPACE_OP				0x11
#define INQUIRY_OP				0x12
#define VERIFY_OP                               0x13
#define RECOVER_OP                              0x14
#define MOD_SEL_OP				0x15
#define RES_OP                                  0x16
#define REL_OP                                  0x17
#define ERASE_OP                                0x19
#define MOD_SENSE                               0x1A
#define LOAD_OP					0x1B

/*
 * Reasons for host adaptor interrupts
 */
#define RESINT                  0       /* reset cmd complete */
#define COMPINT                 0x16    /* cmd complete with success */
#define TR0INT			0x1F    /* transfer pad terminated */
#define PAINT                   0x20    /* pause or abort */
#define TERMINT                 0x4B    /* cmd terminated */
#define SREQINT                 0x80    /* servive required */
#define DISCINT			0x85   /* disconnect interrupt */

#define CHECK_SENSE     2               /* status phase = check sense */